我正在使用一个级别编辑工具,它将其数据另存为XML。
这是开发过程中的理想选择,因为不费吹灰之力即可对数据格式进行少量更改,并且可以很好地处理树状数据。
但是,不利的是XML文件过大,主要是由于标记和属性名称的重复。同样由于数字数据比使用本机数据类型占用的空间大得多。较小的级别很容易最终达到1Mb +。我想大幅减小这些尺寸,特别是如果该系统用于iPhone或内存相对有限的其他设备上的游戏时。
针对内存和性能的最佳解决方案是将XML转换为二进制级别的格式。但是我不想这样做。我想保持格式相当灵活。XML使得向对象添加新属性非常容易,如果加载了旧版本的数据,则可以为它们提供默认值。因此,我想保留节点的层次结构,并将属性作为名称/值对。
但是我需要以更紧凑的格式存储它-消除标记/属性名称的大量重复。也许还为属性提供了本机类型,因此,例如,浮点数据存储为每个float 4个字节,而不是文本字符串。
Google / Wikipedia透露“二进制XML”几乎不是一个新问题-已经解决了很多次。这里有没有人有使用任何现有系统/标准的经验?-是否有适合游戏使用的理想选择-拥有免费,轻量级和跨平台的解析器/加载器库(C / C ++)?
还是我应该自己重新发明这个轮子?
还是我会忘记理想,而只是压缩我的原始.xml数据(它应该与zip类压缩一起很好地压缩),而让内存/性能受到重载呢?