保存多线程游戏

时间:2013-04-29 10:55:08

标签: java multithreading save

我在java中写了一个2d平台游戏,我想知道如何保存游戏。我看了一下使用XMLEncoder或ObjectOutputStream序列化整个游戏,但是那些没有正确保存线程。当我再次开始游戏时,线程没有运行。所以我在游戏加载后尝试在所有线程上调用start,但这造成了一个主要问题,线程处于无效状态并且游戏开始出现故障。将整个游戏写入保存文件的最佳方法是什么。

2 个答案:

答案 0 :(得分:3)

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

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

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

可悲的是,在Q / A网站上不能轻易应对保存/加载游戏的确切方法,因为它在很大程度上取决于您使用的确切数据结构以及游戏的整体性质。

答案 1 :(得分:2)

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