1

I have written a 2d platformer in java, and i was wondering how i would save the game. I looked at just serializing the whole game using XMLEncoder or ObjectOutputStream, however those didn't save threads correctly. When i started the game again the thread weren't running. So then i tried calling start on all of the threads after the game loaded, but that created a major problem with the threads being in invalid states and the game started glitching up. What is the best way to just write the whole game to a save file.

4

2 回答 2

3

保存游戏很少会像在退出/保存时将所有对象完全保存在内存中一样简单,然后再将它们加载回其确切状态。

您更有可能需要/想要创建一个数据结构来表示您的游戏状态,然后将其写入磁盘。多线程不太可能是您的主要关注点。当您加载游戏状态时,您需要重新启动这些线程。

考虑到许多游戏通过菜单保存/加载。如果您的游戏以启动画面或至少一个主菜单开始,那么您无论如何都不想在启动时从它们的确切状态加载对象。找到重建关于游戏状态的所有重要内容所需的最小重要元素并将其保存到磁盘。游戏的大部分状态都可以从非常少量的数据中隐式地重新创建。

遗憾的是,如何保存/加载游戏的确切方法在 Q/A 网站上并不容易回答,因为它在很大程度上取决于您使用的确切数据结构和游戏的整体性质。

于 2013-04-29T11:02:27.970 回答
2

您应该只序列化您的业务领域数据,而不是线程。重新加载数据时需要再次创建线程。假设您的域类是可序列化的,ObjectOutputStream 就可以了。

于 2013-04-29T11:02:35.230 回答