2010-11-05 68 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