2012-03-23 94 views
0

即時創建一個遊戲,有多個級別和水平包含多個紋理和形狀。在iPhone上存儲遊戲數據的最佳方式是什麼?

在iphone/ipad上存儲這些數據的最佳方式是什麼?

我正在考慮使用SQLite或coredata來存儲它。但是我也需要實現一個功能來更新來自遠程服務器的遊戲數據(在遊戲購買中)。 SQLite是存檔這個最好的方法嗎?如何更新SQLite內容時更新內容(下載.zip解壓縮並導入到db /目錄中)?如果任何人有任何指針,我會非常感激!

回答

2

最簡單的方法是將它們存儲在plist(這是一個xml文件)中。 SQLite會要求您將它存儲在應用程序沙箱之外的文檔目錄中(因爲在原始應用程序中包括一個sqlite是隻讀的)。

除此之外,你可以使用coredata。

+0

提及sql沙箱+1。 plists的問題在於,如果每次更新都有自己的plist,則將每個plist加載到遊戲中都會很麻煩。而且在plist中尋找關係會很慢並且很痛苦。 – blejzz 2012-03-23 10:04:31

+0

(順便說一句,它的應用程序沙箱,而不是SQL沙盒 - 但:))爲什麼不序列化您的對象,並將它們反序列化在您的服務器。技巧部分將不會使用標準的ios例程序列化它們。然後,您可以將數據存儲在服務器端,數據庫中,並在用戶請求數據(刷新,或重新安裝應用程序或僅供查詢)時重新創建數據。這似乎是重新發明輪子,但有時候這是必要的。 – Panagiotis 2012-03-23 10:33:00

+0

嗯,我真的很喜歡客戶端存儲更新附帶的項目。我真正想要歸檔的東西類似於憤怒的小鳥如何處理這件事(你可以通過更新獲得新的關卡)。 – blejzz 2012-03-23 10:42:53

1

想想SQLite和Core Data會帶來什麼好處。兩者都非常適合查詢,但您大多隻需要爲給定ID獲取對象?在這種情況下,你也可以考慮一個簡單的文件存儲。我們使用了plist索引和常規文件來存儲一些遊戲數據,這是一個簡單的解決方案,具有較低的技術開銷。

+0

我將需要獲取所有級別和所有級別的元素和構造對象(精靈和物理形狀)。這就是爲什麼我使用SQLite。並且從遠程服務器更新內容將不那麼痛苦(如果我將所有數據存儲在文件中,我將不得不爲每個更新創建一個新文件 - 如果將有大量更新,這將是一個混亂) – blejzz 2012-03-23 09:46:37

+0

我不認爲SQLite會讓你更容易加載。至於更新,我不能完全想象你的用例,所以我不能對此發表評論。 – zoul 2012-03-23 09:59:12

+0

好吧,如果我使用SQL,加載會很簡單,因爲與遊戲相關的所有內容都將存儲在單個數據庫中,因此遊戲將從此數據庫中初始化。而且更新只是通過將更新數據庫內容應用到本地數據庫(而不是從N個文件)來完成。 – blejzz 2012-03-23 10:08:45

相關問題