如何创建侧卷轴游戏?

Cli*_*ote 4 java applet initialization

我想创建一个用户可以转到屏幕最右边的游戏,如果他们再往前走,他们会滑入新视图.

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

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

bgu*_*uiz 9

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

你可以,肯定没有什么能阻止你这样做:

然而,这取决于你的等级有多大以及在游戏中加载时间和滞后之间的权衡(例如,当加载下一个屏幕时).

我建议如下:

第一:主题

创建两个并发运行的线程,一个可以实际玩游戏的线程,另一个负责加载新地形的线程.该gameplay线是主要的一个,并且将触发loader线程当玩家进入到下一个屏幕装载新地形数据.

第二:减少一个地形与另一个地形之间的滞后

进入时避免加载下一个地形.你应该做的是(对于一个sidescroller),加载一个左边的地形,并加载当前位置右边的地形.这样,您不需要立即将整个级别保留在内存中,同时在进入相邻地形时也不会遇到延迟.这与第一点非常相配.

这也很好地符合你的要求,让你在一个地形中的NPC怪物能够"跟随"你到下一个地形(如果你还没有杀死它们); 需要注意的是,如果玩家在没有NPC怪物通过的情况下连续通过两个屏幕,他们就无法进一步追踪你; 无论如何,我玩过多少次侧面滚轮似乎都在工作.

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

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

连载

鉴于您选择的平台是Java,我认为持久化级别数据的最有效负载时间方式是序列化.使存储有关级别和对象的信息的类实现Serializable接口.

如果你确实选择了这个选项,当你第一次创建关卡时,你要么必须创建特殊方法来硬编码每个关卡的初始化,然后在加载游戏之前序列化它们; 或者你必须建立一个关卡编辑器.

XML

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

事实上,没有什么可以阻止你做两者的结合.