Java 如何创建一个侧滚游戏?

Java 如何创建一个侧滚游戏?,java,applet,initialization,Java,Applet,Initialization,我想创建一个游戏,用户可以进入屏幕最右边的部分,如果他们继续,他们将滑入一个新的视图 所以基本上,如果他们有3个怪物在屏幕1上追赶他们,他们一直向右走,然后继续前进,他们将进入屏幕2,那里将有5个新怪物和一个新地形 当游戏开始时,我应该立即初始化每个屏幕的所有NPC怪物和地形特征,还是应该在他们进入屏幕时初始化每个屏幕?存储进入每个屏幕的内容的最佳格式/方式是什么 我应该立即初始化每个屏幕的所有NPC怪物和地形特征吗 你可以,当然没有什么能阻止你这么做: 不过,这取决于你的关卡有多大,以及游戏中

我想创建一个游戏,用户可以进入屏幕最右边的部分,如果他们继续,他们将滑入一个新的视图

所以基本上,如果他们有3个怪物在屏幕1上追赶他们,他们一直向右走,然后继续前进,他们将进入屏幕2,那里将有5个新怪物和一个新地形

当游戏开始时,我应该立即初始化每个屏幕的所有NPC怪物和地形特征,还是应该在他们进入屏幕时初始化每个屏幕?存储进入每个屏幕的内容的最佳格式/方式是什么

我应该立即初始化每个屏幕的所有NPC怪物和地形特征吗

你可以,当然没有什么能阻止你这么做:

不过,这取决于你的关卡有多大,以及游戏中加载时间和延迟之间的权衡(例如,当下一个屏幕加载时)

我建议如下:

第一:线程 创建两个并发运行的线程,一个线程负责实际游戏,另一个线程负责加载新地形。
gameplay
线程是主要线程,当玩家进入下一个屏幕时,将触发
加载程序
线程加载新的地形数据

第二:减少一个地形和另一个地形之间的滞后 避免在进入下一地形时加载下一地形。相反,您应该做的是(对于侧滚器),加载位于左侧的地形,然后加载位于当前位置右侧的地形。这样一来,您就不必一次将整个关卡保存在内存中,同时在进入相邻地形时也不会出现延迟。这与第一点相当吻合

这也很符合你的要求,让NPC怪物在一个地形中能够“跟随”你到下一个地形(如果你没有杀死他们);需要注意的是,如果玩家连续通过两个屏幕,而NPC怪物没有通过一个屏幕,他们就无法进一步跟踪你;这就是我玩过的侧卷轴中有多少看起来仍然有效

还要注意的是,这意味着当你开始一个关卡时,你必须一次加载2个或3个地形(取决于你是从关卡的边缘还是中间开始),但随后,你每次只需加载一个地形,因为每次玩家进入下一个地形时,你所要做的就是将当前地形与相邻地形互换

存储进入每个屏幕的内容的最佳格式/方式是什么

连载 考虑到您选择的平台是Java,我认为保存级别数据的最有效的加载时间方式是序列化。使存储有关中的级别和对象的信息的类实现可序列化的
接口

如果您选择此选项,当您第一次创建关卡时,您必须创建特殊方法来硬编码每个关卡的初始化,然后在加载游戏之前序列化它们;或者您必须构建一个级别编辑器

XML 与反序列化对象相比,此选项大大增加了加载时间,但它更健壮,并且很容易进行更改。如果你的等级不是很复杂,这可能是最好的选择

事实上,没有什么能阻止你将两者结合起来