1

我们的游戏是 MMO 游戏,我们的逻辑服务器当然有游戏循环。为了使这些逻辑模块易于编写,我们提供了一个定时器模块,它支持注册一个真正的定时器并在可能的时候触发它。在游戏循环中,我们将系统时间(以毫秒为单位)传递给定时器模块,定时器管理器将检查是否有一些定时器可以被触发。例如,要更新玩家/怪物的位置,当玩家开始移动时,我们每 200 毫秒更新一次玩家位置。

但是当游戏循环运行过多的逻辑时,它会在单帧中使用过多的时间,并且下一帧,一些计时器会比实际时间慢。这实际上会导致一些错误。例如,如果在一帧中花费了 1 秒,而在下一帧中,实际时间为 1000 毫秒,而移动定时器已在 800 毫秒内调度,因此定时器已在 1000 毫秒触发,比预期的时间慢。

那么有没有更好的解决方案来解决这个问题呢?比如我们可以实现一个定时器,只依赖于我们的游戏,不依赖于真实的电脑时间?

4

0 回答 0