如果有固定的时间步长和插值,则进行多个游戏更新的目的

Posted

技术标签:

【中文标题】如果有固定的时间步长和插值,则进行多个游戏更新的目的【英文标题】:Purpose of having multiple game updates if there's a fixed timestep and interpolation 【发布时间】:2016-08-07 02:06:13 【问题描述】:

我正在尝试创建一个游戏,并按照文章中的描述实现了一个固定的时间步:http://www.koonsolo.com/news/dewitters-gameloop/comment-page-3/#comment-18678

为了在游戏开发中获得确定性,这是一种相当常见的策略。我的问题与您将拥有的更新数量有关。我已经阅读了许多变化(在文章中它设置为每秒 25 次更新),但我已经阅读了大约 20 甚至 10 次。如果无论如何都要使用插值,为什么不每秒更新一次游戏并简单地进行插值?多次更新有什么意义?您可以轻松地每秒进行一次大更新并在它们之间进行插值,或者实际上任何数字都足够了,因为插值将简单地匹配任何数字。游戏开发者如何选择该数字为 25、20、10、15、18 或其他?谢谢!

【问题讨论】:

【参考方案1】:

游戏通常遵循input -> processing -> output 的原则,几乎所有软件都这样做。因此,每当您的内部游戏状态发生变化或需要对某些输入或事件做出反应时,您都会将相应的更改输出给用户。 触发更新的输入取决于实际游戏。在基于物理行为的游戏中,您宁愿经常更新或重新计算游戏的内部状态以反映对象的移动、碰撞等。例如,在纸牌或棋盘游戏中,您只需要在玩家与游戏元素交互时(例如点击一张牌)更新游戏状态,根本不需要定期更新游戏状态。 因此,您更新游戏状态的频率将遵循特定游戏中输入交互和事件的要求:

如果不是基于事件的,您需要多久轮询一次玩家输入? 您需要多久在内部更新一次游戏元素的内部状态以流畅地反映动画?

You might also be interested in this question.

【讨论】:

第二点,更新频率与动画看起来的平滑程度无关,因为使用了动画插值。所以如果我理解正确的话,除了我刚才提到的动画的流畅度之外,更新的频率还与我希望处理输入的频率有关(所以对于实时游戏来说,频率应该高于回合制游戏)?

以上是关于如果有固定的时间步长和插值,则进行多个游戏更新的目的的主要内容,如果未能解决你的问题,请参考以下文章

快节奏多人在线游戏网络入门系列教程:实体插值

固定时间步长游戏循环中的帧速率上限 - Java

游戏编程精粹学习 - 使用定点颜色插值模拟实时光照

在沿 x 轴定义的点处沿 y 轴插值数据

列表和元组

P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)