【问题标题】:XML vs YAML vs JSON for a 2D RPG [duplicate]用于 2D RPG 的 XML、YAML 和 JSON [重复]
【发布时间】:2012-01-14 01:37:41
【问题描述】:

我不知道是否将 XML、YAML 或 JSON 用于 C++ 2D RPG。

以下是我的想法:

  • 我需要一些简单的东西,不仅可以保存玩家数据,还可以保存环境数据,例如对象 (x, y) 坐标;加载时间;日期;图形配置等

  • 我需要一些灵活、易于使用、绝对重量轻、但功能强大的东西来处理上述问题。

哪个是最好的选择?我有 JavaScript 中 JSON 的经验,但没有 C++ 经验。如果这是要走的路,在 C++ 中解析 JSON 有什么好的参考吗?

编辑

老实说,如果一个文本文件似乎是解决此类问题的最简单和最有效的解决方案(尤其是如果我可以将其写入二进制文件),那么我会全力以赴。

编辑 2

也欢迎提供其他建议。

【问题讨论】:

  • 只有这些吗?并且二进制序列化格式(如 Google Protocol Buffers)完全不可能?
  • 我不知道这些格式 - 不过,我很乐意将这些格式包括在内。

标签: c++ xml json yaml


【解决方案1】:

我会使用满足您要求的最简单的东西。

如果您不需要分层存储,那么平面表格文件比其他任何东西都更容易处理。您所要做的就是从磁盘读取行并在选项卡上拆分。

如果您正在寻找更多的键/值对类型存储(而不是列表),那么INI files 可能是合理的。这种格式具有很大的灵活性,尽管当您开始做比它设计的更复杂的事情时,对其进行推理就不太容易了。

如果您需要分层,JSON 可能会更简单。有多种语言的 JSON 库,听起来您已经很熟悉了。

https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser

sqlite 可能是另一种选择。 SQL 中有龙,但有了一个很好的围绕 sqlite 的 C++ 包装器,它可以 易于管理。在我看来,主要的好处是 ACID。

YAML 规范看起来有些冗长,所以我猜它有更多的厨房水槽。浏览一下 libyaml 文档,API 看起来有点像我过去使用的 SAX 接口。我对它没有后验知识,但如果没有充分的理由,我会不愿开始使用它。

XML 处理起来很糟糕,不要选择使用它。这有很多原因。我认为在我看来最相关的一个是它很容易使使用它的代码比其他情况更复杂。我见过的任何使用 XML 设计的系统,关于 XML 的推理都比它试图支持的设计兴趣更复杂。它有很多有效用途,但很少有其他存储系统不能满足要求。

无论您选择哪一个,编写尽可能少的代码来管理它。您真的想编写引擎将首先使用的类。然后担心序列化它们。如果你让你的序列化影响你的类设计,你可能会后悔。 :)

【讨论】:

  • +1 表示第一段和最后一段。
  • 请详细了解 XML 糟糕的原因。 TinyXML2 库可以很好地处理它。
猜你喜欢
  • 2012-02-19
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2017-09-28
  • 1970-01-01
相关资源
最近更新 更多