Java 保存多线程游戏

Java 保存多线程游戏,java,multithreading,save,Java,Multithreading,Save,我已经用java写了一个2d平台,我想知道如何保存这个游戏。我只考虑了使用XMLEncoder或ObjectOutputStream序列化整个游戏,但是这些并没有正确地保存线程。当我再次开始游戏时,线程没有运行。因此,在加载游戏后,我尝试调用所有线程的start,但这造成了一个主要问题,线程处于无效状态,游戏开始出现故障。将整个游戏写入保存文件的最佳方式是什么。保存游戏很少像在退出/保存时将所有对象完全保存在内存中,然后将其加载回其确切状态那样简单 您更可能需要/希望创建一个数据结构来表示游戏状

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

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

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

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


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

保存游戏很少像保存退出/保存时内存中的所有对象那样简单,然后之后将它们加载回正确的状态

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

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


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

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

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

是否可以保存线程的状态,然后创建一个新线程,将其状态设置为保存的内容,然后启动它?如果没有一点代码,甚至没有提示问题所在,就很难给出好的建议。因为代码有1000行,但是如果我创建了一个新线程,那么如果我创建了一个新线程,它将不会处于其执行的同一部分。您是否可以使用线程组或跟踪并保存不同线程之间的所有依赖关系?是否可以保存线程的状态,然后再创建一个新线程,将其状态设置为您保存的内容,然后启动它?如果没有一点代码,甚至没有提示问题所在,就很难给出好的建议。因为代码有1000行,但是,如果我创建了一个新线程,那么如果我创建了一个新线程,它将不会处于其执行的同一部分。您可以使用线程组或跟踪并保存不同线程之间的所有依赖关系吗?抱歉,我帮不上忙;对于你的问题,真的没有一个简单的一刀切的解决方案;对于你的问题,真的没有一个简单的一刀切的解决方案。