首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用XML/JSON/Text还是数据库来存储游戏内容会更好吗?

使用XML/JSON/Text还是数据库来存储游戏内容会更好吗?
EN

Game Development用户
提问于 2010-10-20 16:48:55
回答 8查看 22.7K关注 0票数 30

我正在考虑如何实现一个基于组件的游戏,因为这似乎是最热门的事情,我喜欢这种灵活设计的想法。这种设计的一个特点是可以通过数据向游戏添加新的内容,通常是通过XML等文本文件加载内容。这具有在任何文本编辑器中都具有可读性和易于编辑的优点。在缺点方面,文本处理速度可能较慢,您必须管理大量的数据文件集合。类似的基于文本的格式,如JSON或配置文件,也有类似的好处。

另一方面,有一些小型的、可移植的数据库,如SQLite或东京内阁。虽然这些文件不是人类直接可读的,但它们很容易与人交互,而且我认为某种编辑工具对于游戏内容的设计也是比较好的。使用DB可以一致地存储配置信息并便于检索。您也可以将数据序列化到DB中以保存游戏。

就性能而言,我认为XML对于小文件来说通常更快,但是数据库可以更好地扩展到大量的数据。我想任何真正的游戏都会有很多游戏对象。

那么问题是:哪一种方法更可取?我倾向于使用DB,但我想知道文本文件是否存在隐藏的缺陷或真正的强大优势。或者除了这些之外还有其他的选择(我想是二进制格式的序列化?)

EN

回答 8

Game Development用户

回答已采纳

发布于 2010-10-20 17:03:57

对于一个小型的个人游戏来说,它可能不会出现那么多,但是当涉及到游戏数据时,一个困难的问题是多用户编辑/版本控制。我们使用了大量的小文本文件,这些文件通过构建过程被分解成少量的二进制文件。这使得设计人员的生活更容易,因为他们在工作流程中有很大的灵活性。CCP作为一个反例,使用所有设计人员连接的中央编辑数据库。这使得构建步骤不需要(或者至少简单得多),但这意味着您需要自己实现所有版本控制和工作流特性,因此它们肯定比其他工具更简单。在这两种情况下,您都可以处理性能问题,所以真正的问题是,设计人员工作流需要什么,以及如何实现?

票数 18
EN

Game Development用户

发布于 2015-11-25 20:36:36

我在这里的聚会迟到了,但我花了很多时间研究这个问题。

首先,我为什么不使用以下内容:

XML:过于冗长。大量的冗余。重复字段名?毛额

JSON:我认为JSON对于UI布局来说很棒,但是对于数据库来说则不然。它将遇到与XML、冗余和深度嵌套相同的问题。恶心。

SQL:如果您管理好设置它的麻烦,这是一个很好的选择。我制作了移动游戏,我们将游戏数据在线存储在SQL数据库中。桌子的格式很好。问题是,我们必须从网上获取数据库,建立数据库可能是一件麻烦的事情。但是SQL是一个不错的解决方案。统一本身并不支持这一点,而且我尝试过的插件有很大的问题(尤其是在试图让它与版本控制一起工作时)。

最后,这里是我选择使用的解决方案(我很喜欢它)。

CSV:简单。让我使用表格格式,当我需要更新它时,我有一个简单的参考点。我可以为我的所有武器设置一个表,为所有属性设置列,并为每种类型的武器设置行。

您可以使用Microsoft,但每次需要保存时,它都会发出这些愚蠢的警告。您可以使用宏来覆盖它,但是我说,省去麻烦,得到LibreOffice。它是免费的,支持CSV编辑,当您打开文件时,它加载列的宽度以匹配名称(Excel没有这样做,它使我发疯了)。

然后你只需要将CSV文件解析到你的游戏中。我使用统一,所以我所要做的就是使用这个漂亮的C# CSV解析器,我发现:

CSV解析器示例

您将CSV文件转换为您在游戏中的数据对象,这样就可以了。有了统一,您就可以将这些转换为ScriptableObjects。因此,我的工作流程是:更新CSV ->,将CSV解析为可编写脚本的对象,->为我的游戏使用来自ScriptableObjects的数据。

票数 10
EN

Game Development用户

发布于 2010-11-08 06:17:13

JSON非常轻巧,易于理解。我觉得这更适合玩游戏。cJSON真的很好。它还将以与SQLlite相同的方式合并到您的源代码中。

对于用户来说,XML文件比您想象的更难编辑。如果你走这条路,你可能想要为人们做一个编辑器来帮助他们避免常见的陷阱。

票数 7
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/4666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档