“Super Meat Boy”是最近推出的 PC 难度平台游戏,需要出色的控制和像素级完美跳跃。游戏中的物理代码依赖于帧率,锁定为60fps;这意味着如果您的计算机无法全速运行游戏,物理会变得疯狂,导致(除其他外)您的角色运行速度变慢并跌倒在地。此外,如果关闭垂直同步,游戏运行速度非常快。
那些有 2D 游戏编程经验的人能否帮助解释为什么游戏是这样编码的?以恒定速率运行的物理循环不是更好的解决方案吗?(实际上,我认为物理循环用于游戏的某些部分,因为某些实体会继续正常移动,而不管帧速率如何。另一方面,您的角色运行速度正好 [fps/60]。)
这个实现困扰我的是游戏引擎和图形渲染之间的抽象损失,这取决于特定于系统的东西,如显示器、显卡和 CPU。如果,无论出于何种原因,您的计算机无法处理垂直同步,或者无法以 60fps 的速度运行游戏,它就会严重崩溃。为什么渲染步骤会以任何方式影响物理计算?(现在的大多数游戏要么减慢游戏速度,要么跳帧。)另一方面,我知道 NES 和 SNES 上的老式平台游戏在大部分控制和物理方面都依赖于固定的帧速率。为什么会这样,是否有可能在不依赖帧率的情况下以这种方式创建一个patformer?如果将图形渲染与引擎的其余部分分开,是否必然会损失精度?
谢谢,如果问题令人困惑,对不起。