"Super Meat Boy"是一款难度较高的平台游戏,最近在PC上推出,需要极佳的控制和像素完美的跳跃。游戏中的物理代码依赖于帧率,帧率被锁定为60fps;这意味着如果你的电脑无法以全速运行游戏,物理效果会变得疯狂,导致(除其他问题外)你的角色奔跑得更慢并穿过地面。此外,如果vsync关闭,游戏将运行得非常快。
那些有2D游戏编程经验的人能否解释一下为什么要以这种方式编写游戏?一个以恒定速率运行的物理循环不是更好的解决方案吗? (实际上,我认为游戏的某些部分使用了物理循环,因为其中一些实体继续以正常速度移动,而不受帧率的影响。另一方面,你的角色确切地以[fps / 60]的速度奔跑。)
这种实现让我感到困扰的是游戏引擎与图形渲染之间的抽象丧失了,它依赖于系统特定的东西,如显示器、显卡和CPU。如果由于任何原因,你的电脑无法处理vsync,或者无法以恰好60fps运行游戏,它将会出现明显的问题。为什么渲染步骤要以任何方式影响物理计算呢?(现在大多数游戏要么减慢游戏速度,要么跳帧。)另一方面,我了解到NES和SNES上的老派平台游戏在很大程度上依赖于固定的帧率来控制和物理效果。为什么这样做,有没有可能创建一个不依赖于帧率的平台游戏?如果将图形渲染与引擎的其余部分分开,是否必然会丧失精度?
谢谢,如果问题有点混乱,请见谅。
那些有2D游戏编程经验的人能否解释一下为什么要以这种方式编写游戏?一个以恒定速率运行的物理循环不是更好的解决方案吗? (实际上,我认为游戏的某些部分使用了物理循环,因为其中一些实体继续以正常速度移动,而不受帧率的影响。另一方面,你的角色确切地以[fps / 60]的速度奔跑。)
这种实现让我感到困扰的是游戏引擎与图形渲染之间的抽象丧失了,它依赖于系统特定的东西,如显示器、显卡和CPU。如果由于任何原因,你的电脑无法处理vsync,或者无法以恰好60fps运行游戏,它将会出现明显的问题。为什么渲染步骤要以任何方式影响物理计算呢?(现在大多数游戏要么减慢游戏速度,要么跳帧。)另一方面,我了解到NES和SNES上的老派平台游戏在很大程度上依赖于固定的帧率来控制和物理效果。为什么这样做,有没有可能创建一个不依赖于帧率的平台游戏?如果将图形渲染与引擎的其余部分分开,是否必然会丧失精度?
谢谢,如果问题有点混乱,请见谅。