“ Super Meat Boy”是一个困难的平台游戏,最近出现在PC机上,需要出色的控制和像素完美的跳跃。游戏中的物理代码取决于帧速率,该帧速率被锁定为60fps;这意味着,如果您的计算机无法全速运行游戏,则物理会变得疯狂,从而(除其他事项外)使您的角色运行速度变慢并掉落地面。此外,如果关闭了vsync,游戏将运行得非常快。
有2D游戏编程经验的人可以帮助解释为什么用这种方式编码游戏吗?以恒定速率运行的物理循环不是更好的解决方案吗?(实际上,我认为游戏的某些部分使用了物理循环,因为某些实体无论帧速率如何都可以继续正常移动。另一方面,您的角色运行[fps / 60]的速度也一样快。)
我对这种实现方式感到困扰的是游戏引擎和图形渲染之间的抽象性的丧失,它依赖于特定于系统的事物,例如监视器,图形卡和CPU。如果由于某种原因,您的计算机无法处理垂直同步,或者无法以60fps的速度正常运行游戏,那么它的性能将大打折扣。为什么渲染步骤会以任何方式影响物理计算?(如今,大多数游戏会减慢游戏速度或跳过帧。)另一方面,我了解到NES和SNES上的老式平台游戏在很大程度上取决于其固定的控制和物理帧率。为什么会这样,并且有可能在不依赖帧率的情况下在这种情况下创建patformer?如果将图形渲染与引擎的其余部分分开,是否必然会降低精度?
谢谢您,如果问题令人困惑,我们深表歉意。