游戏数据库理论



我希望得到一些关于Android游戏数据管理理论的帮助。我正在开发一款角色扮演游戏,我希望角色可以使用不同的装备进行定制:帽子、动力盔甲、武器等。玩家可以从商店购买这些道具,然后选择佩戴或更换装备,但要将道具保存在"衣柜"中,以便在不同的时间佩戴。

到目前为止,我的大部分数据都是通过SharedPreferences保存的。但我知道这是不可持续的,因为玩家可以购买100种不同类型的道具,然后保存起来在不同的场合佩戴。

通过研究,我开始相信SQLite在Android Studio中是最好的。有人同意这个观点或者有更好的建议吗?

我知道SQLite将允许我有数据预装一个"未购买"的状态。当"购买"时,这种状态会发生变化,玩家可以"穿"或"不穿"这些衣服。

如果SQLite是最好的,我怎么做最好?此外,SQLite是否需要很长时间来加载,从而减慢了活动的打开速度?你能把SQLite和SharedPreferences结合起来记住最近选择的装备吗?

最后,SQLite是什么其他应用程序使用存储数据(特别是如果通过Android Studio构建)?《Clash of Clans》或《Tapped Out》等游戏如何将数据保存为拥有的道具或网格中的位置?

谢谢你的部分支持或理论

TL;博士是的,SQLite很好。

让我从Clean Code的角度来回答这个问题。

下面的答案对于初学者来说可能太复杂了,但我希望它能对长期的学习有帮助。

我认为你真正的问题是——我如何保存我以后需要的东西?嗯,在大多数情况下,只要以后能够可靠地读取数据,如何存储数据并不重要。因此,与其担心"我应该使用X吗?",不如从定义类的接口开始,它将解决您的问题。

例如,我们叫它PlayerItemsRepository,它负责保存你的东西并读取它。如何?我还不知道,我们可以以后再想办法。

public interface PlayerItemsRepository {
    void saveItems(List<Item> items);
    List<Item> readItems();
}

现在我们可以集成SQLite了?让我们稍等一下——这是一个与SQLite一起工作的样板代码,所以我们将创建这个接口的一些简单实现,它将只是序列化列表并将其保存到文件中(假设您的ItemSerializable)。或者如果我们懒得做,我们将List<Item>转换为JSON并将其保存到SharedPreferences(使用类似Gson库的东西,使用起来很简单)怎么样?

现在,如果你只存了100件物品(这是一个相当小的数量),我很确定所有这些"简单"的解决方案都会很好地工作,你将能够忘记整个故事。

如果您将开始遇到需要某种关系模型的情况,或者序列化的性能对您来说是不可接受的,或者您需要更快更复杂的搜索机制- 那么您可能会考虑切换到SQlite。对于Android应用程序来说,这是很常见的,尽管(正如我之前提到的)API有点麻烦,需要你编写相当多的样板文件——这最终需要你花更多的时间在上面,对于一个小的数据集来说,这可能不值得花时间。

最新更新