如何使用2D游戏引擎创建多个对象以随机时间间隔周期性移动的游戏



在SDE的一次采访中,我被问到了一个游戏设计问题。面试官想让我设计一个简单的2D游戏,让很多蠕虫在2D网格中移动。每条蠕虫占据4个细胞,并有一个头。它在三个方向中的一个方向上移动到下一个单元格,并以随机的时间间隔移动,比如50毫秒。问题是如何更新网格,因为许多蠕虫以不同的速度移动我给出的答案是,每个蠕虫都是一个线程,在预定义的时间之后移动。显然,这是一个非常糟糕的答案,可能有数千个线程交错。现在我认为网格可以每1ms更新一次,每个蠕虫都有新的职业。这也可能耗费资源。有谁能给这个问题一个更有效的解决方案吗。提前谢谢。

您只需给每个蠕虫一个下一次移动的超时时间。然后,在每帧上,将超时时间减少帧时间。当超时达到0时,移动蠕虫并给它一个新的超时时间。

在这里,您的多线程算法显然是大材小用。一个线程就足够了(除非必须针对多核系统进行优化)。

所以你创建了一个蠕虫列表。每个蠕虫都是一个保持其当前位置的对象,以及下一次何时何地移动的知识等。然后,您需要以一定的频率迭代蠕虫列表,并只重新绘制上次屏幕/窗口刷新后移动的蠕虫。

可能的优化之一
您可以询问每个蠕虫下次何时移动。然后你会发现蠕虫移动的最近时刻。然后你启动一个计时器,它会在那一刻(蠕虫移动的最近时刻)启动。当计时器启动时,刷新屏幕/窗口(如我之前所述)并重复算法
在这种情况下,您的程序将不会在蠕虫的各个移动之间执行任何操作(即节省CPU周期)。CPU负载将是最小的。

最新更新