二进制解析器还是序列化?

M. *_*AYA 8 c++ binary serialization parsing protocols

我想为游戏存储不同对象的图形,它们的类可能相关也可能不相关,它们可能包含也可能不包含简单结构的向量.

  • 我希望解析操作快,数据可能很大.
  • 添加新东西应该不难,也不应该破坏向后兼容性.
  • 较小的文件大小很重要
  • 可读性很重要

通过序列化我的意思是,让对象自己序列化,这是有效的,但我需要为不同的对象编写不同的序列化方法.

通过二进制解析/组合我的意思是,创建一个新的解析器/组合器树,它保存和读取这些对象的数据,并传递它以让我的对象推/拉他们的数据.

我也可以使用json,但它的读取速度可能相当慢,而且当涉及到相当大的矩阵和数字时它的效果不是很大.

Set*_*eth 3

逐点:

  • 快速解析:二进制(因为你不一定要“解析”,所以你可以反序列化)
  • 添加新内容:文本
  • 较小:文本(即使 gzip 压缩后的文本比二进制大,也不会大很多)。
  • 可读性:文本

因此,文本为三票,二进制为一票。就我个人而言,除了图像(以及“自然”二进制的其他数据)之外,我会使用文本来表示所有内容。然后,将所有内容存储在一个大的 zip 文件中(我可以想到有几个游戏会这样做或类似的事情)。

好读物:文本的重要性纯文本的力量