2010-11-05 74 views
1

假设我有写在C/C游戏++保留了许多变量的轨道。为了简单起见,我有:C/C++/Java的设计问题:通过保存到文件和解析之后

struct masterStruct 
{ 
     Coords player1; 
     Weapon player1; 
     Gravity player1; 
     ... 
}; 

假设这个结构包含1000个与玩家有关的变量。我希望能够在所有这些变量的时间t = 10s时创建玩家状态的“快照”。快照应该保存在文件中。

现在,假设我的硬核开发小组决定有必要到1001th变量添加到结构。现在,我的游戏期待有1000个变量,因此无法正确加载“快照”(因为最后一个变量)。

我的问题:我该如何解决这样的尴尬?我应该使用版本号和快照文件与游戏加载器之间的握手创建这些“快照”,以便只加载批准的版本文件?

---------------------附注: 我使用Lua作为脚本语言来解析所有这些数据,这很不错。它只是读取变数,这是一个痛苦。

谢谢

回答

1

使用具有版本支持的好序列化库。 Boost.Serialization是一个非常好的类库。

特定您感兴趣的应该是这个功能(从文档的引用)作者:

为每一类 定义的独立版本。也就是说,当一个类定义 改变,旧的文件可以 仍然被导入到类的新 版本。

+0

如果我读Java中这个序列化的数据,才有可能?我试图看看是否有可能支持C++和Java – 2010-11-08 14:36:06