每秒有多少游戏更新?

Tod*_*Tod 5 frame-rate

我应该运行固定速率游戏逻辑的更新速率是多少?

我过去每秒使用60次更新,但这很难,因为它不是每秒偶数次更新(16.666666).我目前的游戏使用100,但对于大多数事情来说这似乎有些过分.

64B*_*Bob 11

以上都不是.为了实现最流畅的游戏体验,您的游戏应该是基于时间的,而不是帧锁定的.帧锁定适用于简单的游戏,您可以调整逻辑并锁定帧速率.对于现有的3D标题,帧速率全面跳跃并且屏幕可能不是VSynced,它不能很好地完成.

您需要做的就是弄清楚对象应该多快(即每秒虚拟单位),计算自上一帧以来的时间量,缩放虚拟单位数以匹配已经过去的时间量,然后将这些值添加到对象的位置.瞧!基于时间的运动.

  • 这通常不适用于(例如)物理学.许多游戏(例如Half Life 2 for one)使用固定的时间步长游戏循环,并且将在单个帧中多次运行游戏逻辑以覆盖帧的持续时间. (3认同)
  • Bob:Doom会尽可能快地绘制帧.但它并没有在它绘制的每一帧中运行游戏逻辑,只是在之前和当前游戏更新之间插入世界状态. (2认同)

Ori*_*rds 6

我过去常常维护一个Quake3 mod,这是用户问题的常见来源.

Q3默认使用20'每秒刻度数 - 图形子系统进行插值,以便在屏幕上获得平滑的运动.我最初认为这种方式很低,但事实证明它很好,并且确实没有很多游戏可以比q3更快地采取行动

我个人会选择"足够好的约翰卡马克,对我来说足够好"


Jef*_*eff 5

我喜欢 50 的固定费率电脑游戏。我真的分不清 50 和 60 之间的区别(如果你正在制作一个可以/关心的游戏,你应该是 100)。

您会注意到问题是“固定利率游戏逻辑”而不是“绘制循环”。为清楚起见,代码将类似于:

while(1) 
{ 
  while(CurrentTime() < lastUpdate + TICK_LENGTH) 
  { 
     UpdateGame(); 
     lastUpdate += TICK_LENGTH;
  } 

  Draw();
}
Run Code Online (Sandbox Code Playgroud)

问题是 TICK_LENGTH 应该是什么?