java - 保存多线程游戏

标签 java multithreading save

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

最佳答案

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

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

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

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

关于java - 保存多线程游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276887/

相关文章:

java - DAO接口(interface): Implementation for 2 entities (Java, hibernate )

image - Flutter:如何将 Canvas/CustomPainter 保存到图像文件中?

python - GTK3 python 中的线程

c++ - 删除 std::lock_guard 相对于其他堆栈分配对象的顺序/速度?

java - 如何在一个线程中发生异常后停止可调用线程进程?

c# - 将 BitmapImage 保存到文件

java - 如何在覆盖文件之前检查文件是否为空?

java - 如何为图像模糊设置动画?

java解析日志文件

java - 使用 TextAreaRenderer 在 JTable 单元格中居中对齐文本