2012-03-23 98 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

相关问题