【发布时间】:2013-06-27 17:51:24
【问题描述】:
是否有任何可以免费使用的即用型和长期维护的“通用”二进制格式?我正在用 Java 编写游戏,并考虑编写自己的二进制格式来保存地图,但后来我想:也许有一些现成的解决方案?
“通用二进制格式”是指允许我保存任何常见结构(String、int、float、double、自定义结构,如 Vector3f - 3 个浮点值作为一个对象等)的格式,将是空格, RAM 和 CPU 效率高,并且将使用 Java 编写解析器(和保护程序)。
有这样的东西吗?还是我必须编写自己的格式?
【问题讨论】:
-
为什么使用“二进制”格式而不是 XML?
-
我将使用该格式来存储我的 3D 游戏的地图。可能有成百上千个对象——每个对象都包含一些属性。 XML 效率低下,提供的文件很大(XML 文件不节省空间);解析也不会很快(记住我必须解析很多浮点数和整数;将它们存储为文本不是一个好主意)。这就是为什么我在这里更喜欢二进制格式而不是 XML。
-
" (XML 文件不节省空间);" 如果您压缩它们,它们就是。此外,硬盘空间便宜。 “解析也不会很快..” 你是通过分析还是盯着茶叶来确定?不要陷入“过早优化”的陷阱。
-
"如果你压缩它们,它们就是。"是的,加载和保存地图时要执行 1 个更昂贵的操作。 :) 请记住我正在写游戏。我不想让用户等待一个“小时”来加载地图。我不想让用户在地图编辑器中按下 Ctrl+S 时等待一个“小时”。我想要一个尽可能快的解决方案。你喜欢玩每张地图都需要大量负载的游戏吗?你认为将整数和浮点值存储为纯文本真的那么有效吗?我不这么认为... :) 顺便说一句,我在这个项目中使用 XML,但用于更便宜的东西。
-
@m4tx 你可能是对的,xml 可能会更慢,但重要的是(a)你检查那是真的(b)你检查它是缓慢的主要原因,否则你可能做所有这些工作都是徒劳的(第 (b) 点对及早检查尤为重要)
标签: java binaryfiles file-format