iPhone游戏开发,用文件或sqlite保存状态?

时间:2009-09-18 18:42:45

标签: iphone objective-c

用于iPhone游戏开发。大多数人如何保留国家?使用sqlite?或某种文件。

游戏是一款RPG游戏。

3 个答案:

答案 0 :(得分:3)

如果您需要经常搜索/排序游戏数据,或者您通常只加载一部分数据,那么您应该考虑使用SQLite。

如果您只需将对象图存储到磁盘并在启动时重新加载整个内容,请使用NSCoder将游戏对象存档到文件中(默认情况下将其存储为二进制plist)。

如果您需要与服务器或其他系统交换游戏数据,您可能会查看XML或JSON等序列化格式。

答案 1 :(得分:2)

这实际上取决于你想要什么。两者都完全可以接受。如果您的游戏状态非常复杂,那么使用文件可能会更容易(使用您的游戏状态并使用NSKeyedArchiver或其他东西对其进行编码)。但是,如果你有一个简单的游戏(玩家在这个位置上这个级别),那么SQLite将是一个很好的选择。

如果您想要两全其美,您可能还需要考虑使用CoreData。

答案 2 :(得分:1)

对于RPG,您可能需要搜索并检索大型数据集中的元素,作为游戏本身内部功能的一部分,因此您应该使用SQLite(如果定位OS 2.x)或核心数据(如果针对OS 3.x)。因为无论如何您将使用数据库来加载游戏资产,所以只有使用它来保存状态才有意义。同样,对于RPG,您可能正在为游戏状态加载和保存大量数据,对于这些数据,数据库将比普通数据文件更快。

核心数据可让您管理复杂的对象图,比调整的SQLite更快,可以使用更少的内存,并且可以更容易编码,但仅适用于iPhone OS 3.x.如果你仍然希望以2.x为目标,那么SQLite将是你的目标。

根据我的经验,除了最简单的需要数据持久性的情况之外,Core Data和SQLite都比普通文件快得多。