是否有一个库或好的方法可以在Java上更轻松或更快地制作二进制保存游戏?

时间:2012-03-16 01:33:05

标签: java serialization io binary

我需要为我的游戏编写保存/加载逻辑,但我是Java的新手并且从未使用二进制i / o。由于我还没有开始写作,是否有任何库使其更容易或更快(如写/读速度)?或者保存下面数据的任何好方法?

保存数据由大约2000个单位组成(Array-Int(2000),Array-String(100),Array-Boolean(500),Array-Float(500))。

我知道这是非常巨大的。我曾经使用xstream来序列化它,文件大小在原始xml数据中可能会变成100-200mb,并且保存起来也很慢。

1 个答案:

答案 0 :(得分:2)

对于I / O,存储设备通常是限制因素,使时间与文件大小成比例。使用二进制格式而不是XML肯定是朝着正确方向迈出的一步,因为它将减少文件大小和处理开销。

然而,可能值得进一步研究减小尺寸。例如,你真的需要整数或做短裤吗?字符串是使用整个unicode字母表还是使用单字节字符编码可以逃脱?

编写二进制数据文件的最简单方法是使用Java Serialization,所以我先尝试一下(当然,请务必使用BufferedOutputStream)。使用简单的DataOutputStream会使执行时间稍微快一点,并导致文件略短(由于缺少类型描述符),但您必须自己编写字段。

完成后,值得测量CPU或I / O是否是限制因素(例如,通过在写入文件时观察CPU使用情况)。如果您有备用CPU和非常常规的数据,您可以通过动态压缩文件来加快编写速度,例如使用GZipOutputStream。