可能重复: 如何选择如何存储数据?
我正在设计的游戏主要是用高级脚本语言编写的(倾向于Lua或松鼠),带有C++内核。除了脚本,我还需要不同的数据文件。许多数据文件将用于静态信息,如图形资产和怪物类型。我还希望在运行时为用户信息创建和更新数据文件,如选项设置和游戏保存。
对于我的数据文件,我可以使用普通脚本文件(即.lua或.nut文件)吗?还是使用诸如XML或YAML这样的专用标记格式更好呢?
如果我使用独立于真实脚本加载的脚本文件,那么我就不需要额外的库来读取这些文件。像Lua这样的脚本语言也有表语法,这些语法有助于数据定义。另一方面,我必须编写自己的模式检查代码。这些语言似乎也不像标记格式库那样支持“开箱即用”的序列化。
发布于 2012-12-04 18:30:06
我建议使用标记格式,而不是将所有数据放在脚本文件中。主要原因是,由于JSON和XML库的可用性,编辑和生成JSON或XML将比生成类似的Lua或松鼠代码更容易。另一个原因是,它通过将数据保持在自己的格式中,并且脚本保持自己的格式,从而使您具有更大的灵活性:
事实上,你可以把事情发展到另一个极端,甚至把Lua或松鼠代码块存储在你的数据文件中--但是为了保持数据和脚本的整洁,这可能是你想要避免的。
关于JSON和松鼠的说明:松鼠3.0支持类似于JSON的对象声明,因此您实际上可以使用原始的JSON字符串,松鼠VM可以将它们解析为表。我认为这是同时使用这两种技术的一个优势。
发布于 2012-12-05 01:07:27
我是否可以使用普通脚本文件(即.lua或.nut文件)来处理数据文件.
当然,这是个有效的选择。
我做过一个游戏,其中很大一部分数据文件是用Lua写的,没有人受伤,而且它有一些好处:
...or使用像XML或YAML这样的专用标记格式更好吗?
这是你的事,没有最好的选择。
当然,作为脚本的数据方法也有一些缺点,扎克人类在他的回答中提到了其中的一些。我想补充的是,在采用这种方式之前,工具支持是非常重要的。有一些很好的工具可以编辑常规数据格式(XML、JSON),但是如果您计划使用脚本语言,您可能不得不使用自己的工具。
像往常一样,最后的选择是你的,只要走的方式,似乎适合你的项目最好。
https://gamedev.stackexchange.com/questions/44965
复制