设计一个非常大型游戏世界的存储方式
我又开始学习游戏编程了。十年前我用qbasic做过游戏,但之后就没再做过,所以现在有点生疏。不过我一直在编程,现在是个网页开发者、数据库管理员和系统管理员。我有几个问题,但我决定每次只问一个。
我正在开发的游戏会是一个非常大的世界,类似于URW,但会更大,更像一个角色扮演游戏(RPG)。
我在考虑的一个问题是,怎样布局地图、保存地图和访问地图是最好的方法。我想到了用sqlite来存储数据。这样我甚至可以把sqlite数据库当作游戏的存档文件,简单又方便。
有没有人能给我一些建议,或者其他存储方法的想法?
这是我游戏的需求:
- 我需要能够随时随机访问游戏世界中的任何地方(游戏中的NPC、怪物和动物都会一直活动)。
- 我使用的是Stackless Python 3.1,选择不多,除非我做很多工作。
- 需要能够处理一个非常大的世界。
- 支持并发是个加分项,但我觉得我可能不需要这个功能。
3 个回答
11
除非外部因素逼着你,否则别去碰关系型数据库。
看看Python的 pickle
和 shelve。
Shelve 运行速度快,扩展性好。它避免了在Python和其他格式之间转换时的麻烦。
补充一下。
更重要的建议是,不要在技术选择上纠结。先把地点、物品、角色、规则等搞定,让它们在Python中正常运作。尽量简单、准确。
不要浪费脑力在除了核心模型、正确性和基本功能集以外的事情上,这些是用来证明东西能工作的。
一旦你有了一个真正能工作的模型,并且可以用一些复杂的单元测试来验证它,那么你再去做技术选择。
有了模型后,你可以有效地扩展到数百万个地点,看看需要什么样的存储。模型是不能改变的——它是应用的核心。只有访问层和持久层可以调整,以提高性能。