游戏的「掉帧」是什么原理?有哪些方法可以缓解?

游戏的「掉帧」是什么原理?有哪些方法可以缓解?

不一定是120以上骤降,广义上只要与平稳运行相比出现大幅度的帧数不足就可以被称为掉帧。何为平稳运行根据游戏的设置而定,例如车枪球基本为30,动作游戏和格斗游戏大多为60,怪物猎人3G~4G为40上下。

现代游戏的帧数并不是定死的,因为游戏的画面与游戏的逻辑采用分开处理的方式。在处理部分复杂的画面运算时,作画帧数无法保持稳定输出,单帧作画的时间变长了,一秒能输出的帧数变少了。

老游戏也是存在“掉帧”现象的,最经典的就是《metal slug(合金弹头)》系列,不过这种“掉帧”一般称为拖慢。拖慢的成因和跳帧基本相同,都是因为画面要素太复杂无法保持原本的作画频率使得每秒的帧数下降。拖慢和掉帧的不同在于对帧数不足这一现象发生后的处理。如前述,现代游戏的逻辑和作画实际上是分开的,而老游戏则二者捆绑在一起。现代游戏发生掉帧后会采用跳过一部分“应当被作画”的内容,直接绘制当前时间应当绘制的内容;而老游戏则是傻傻的等到作画完成后才开始计算之后逻辑,拿到下一帧该显示的内容后再作画,作画和逻辑交替进行,不存在先算了下两帧的逻辑的情况。

要减少掉帧现象,关键是软件方面减少单帧作画的内容的复杂程度,提升硬件反倒应该是其次。关闭各种特效,降低贴图质量,关闭抗锯齿来减轻硬件负担。不过瞬间的作画工作量爆炸在现代游戏里是稀松平常的事情,所以一旦遇上各种爆破,画面内容物骤增,肯定会出现帧数下降的情况。所以上述的方法主要还是以提高帧数、降低负担为主要目的。

一种简单暴力但是很好用的减少掉帧现象的方法,便是锁帧上限。如果全力运行,帧数在70~100之间游走,那我锁了帧上限60,想让帧数维持在60是很轻松的事,便不存在掉帧。平时工作只需要10个人就够了,但是实际上还有5~6个人没事做,这样等到工作量突然增大时,这5~6个人可以马上顶上来,保证工作按时完成。

至于提升硬件来减少“掉帧”现象,这个说法存在问题。提升硬件改善的是硬件的作画能力,把同等质量下原来只能每秒画30张变成每秒能画60张,但是作画一旦复杂起来照样要降低每秒能作画的张数。难倒300FPS变成250FPS就不叫掉帧了吗?