作为一个爱好项目,我正在使用Android 中的自定义游戏引擎构建2D游戏。目前我可以渲染一个 json 地图,并让用户与地图上的对象进行交互。游戏应该是一个开放的世界地图,有多个地图。我目前的一张地图有一个 150 x 150 的平铺图案,每个平铺上都有一个或多个对象。因此,该地图具有22.500、多个图层和更多属性。玩家可以编辑对象(如水中的鱼、土壤中的种子等),因此每个对象都需要单独存储。有些对象,比如正在生长的植物,需要随着时间的推移而更新,即使玩家没有玩游戏。
我的问题是关于有效地保存和加载游戏状态。我想我需要存储地图的所有属性,以及对象、玩家进度、npc 进度等。由于这是移动设备的大量数据,因此我想不出将其存储在手机(或云中)的好方法。
我尝试了以下方法: - 将整个游戏状态存储在序列化文件中。这个文件的解析在加载过程中花费了很长时间,当一个对象的状态发生变化时,整个游戏都必须被加载。- 将每个对象存储在sqlite 数据库中,每个属性都有一个列。这甚至比第一个选项慢,所以也不是一个选项。- 将序列化为blob的每个对象存储在数据库中。这个选项并不比前一个快多少。
我一直在查看ObjectBox,但是为了为这个数据库创建实体值,我需要将很多参考值更改为 ToOne<> 或 ToMany<> 对象,这将花费很多时间,因为我是使用地图属性来渲染地图,对象的包装和展开会导致(不必要的)延迟。(这是一个假设)
如何保存游戏状态而不造成 20 分钟的加载延迟?