昨天当我玩电子游戏的时候突然出现了一个问题,游戏保存机制是如何实现的?
大多数情况下,保存需要游戏的所有数据。在这种情况下,程序员是否必须制作一个参考每一个游戏数据的神对象?
我在这里发布问题而不是游戏开发,因为我想要一个基于软件设计而不是游戏开发本身的答案。
答案 0 :(得分:1)
您应该记住的一件事是您只需要存储重要的数据。例如,这可能包括库存内容(可能是ID列表和数量),玩家位置和关键任务位(您是否已经从禁用的冰箱中获得了魔法芹菜?)。这可以用Memento模式实现,但实际上它通常只是一个序列化到磁盘的结构(或等价物)。
您不需要保存整个世界状态,因为关卡加载器通常会处理世界中的项目/实体放置。如果你仔细观察,你会发现恢复保存并不需要恢复世界上所有东西的确切状态 - 只有重要的位。这是一种经常在游戏中使用的心理学黑客。
保存文件的其他一些注意事项可能包括检测保存文件篡改的哈希值或校验和,或者存储运行时RNG在游戏加载后用于创建相同系列事件/实体的种子值。 / p>
基本上,你实际上并不需要保存世界各地的状态 - 只是玩家可能关心的部分: - )