Java 关于游戏序列化的建议
我正在编写一个游戏。我知道序列化对于保存和多人游戏很有用。如果我在客户端选择多人游戏时强制更新,我看不出有任何理由使用serialversionuid 对于保存,我有一个问题:id是否会影响我将保存的游戏数据转换为新的游戏更新版本的能力?或者,所有这些都是基于逻辑的,将id作为手边游戏版本的简单参考 提前感谢所有人。如果我的代表更高,我会投票:PJava 关于游戏序列化的建议,java,serialization,game-engine,Java,Serialization,Game Engine,我正在编写一个游戏。我知道序列化对于保存和多人游戏很有用。如果我在客户端选择多人游戏时强制更新,我看不出有任何理由使用serialversionuid 对于保存,我有一个问题:id是否会影响我将保存的游戏数据转换为新的游戏更新版本的能力?或者,所有这些都是基于逻辑的,将id作为手边游戏版本的简单参考 提前感谢所有人。如果我的代表更高,我会投票:P 编辑:两个答案都很有帮助。从他们那里,我收集了关于序列化和游戏编程的信息:拥有一个s-uid将是有益的,因为游戏中不同事物的不同版本将需要对其版本的引
编辑:两个答案都很有帮助。从他们那里,我收集了关于序列化和游戏编程的信息:拥有一个s-uid将是有益的,因为游戏中不同事物的不同版本将需要对其版本的引用,以便能够在不同版本之间具有兼容性或不兼容性。一个“游戏版本id”是不够的信息。谢谢你们的澄清 是,
serialVersionUid
是一个哈希或版本,用于准确标识输出数据的Serializable
类的哪个版本
不幸的是,它主要作为序列化的一个障碍——导致每一个微小的更改都会破坏序列化。任何不同的版本都会引发异常
推荐的做法是在java源代码中生成或分配一个serialVersionUid
常量,以避免不必要的不兼容性。从Javadoc:
要保证不同java之间的SerialVersionId值一致
在编译器实现中,可序列化类必须声明
显式SerialVersionId值
如果深入研究Java源代码,您可能会找到实现/重写的方法,这可以让您更好地控制序列化
见:
- java.io.ObjectInputStream
- java.io.ObjectOutputStream
- java.io.Externalizable