救救键盘吧!游戏画面卡顿原因的甩锅大会
1帧率是口锅,什么都能装回顶部
【PConline 杂谈】对于广大玩家们而言,影响游戏体验的一大元凶,就当属卡顿和画面撕裂了,特别是在玩动作游戏时,卡顿影响发挥的情况让人想要砸键盘——我依稀记得,曾经玩《阿卡姆之城》最高难度因为机能不行掀桌子砸键盘的黑历史,那种按下按键过了将近一秒才能得到回应的体验让人无比的光火(但最后还是硬着头皮打穿了,二十多帧的游戏体验,为什么要跟键盘过不去呢,不如去换电脑...)。
其实,造成这一切的,不单单只是硬件水平的问题,比如说,同样的硬件,驱动版本有问题的话,也会影响性能的发挥,而卡顿的表现也不只有帧率低的情况,高帧率卡顿的情况也会影响游戏的表现,辨别卡顿的方法,除了看帧率外,还可以通过帧时间鉴别。
帧率是口锅,什么都能装
“哎呀,又掉帧了”,一般遇到游戏卡顿大家都会这么说,但对另一些同学来说,帧率却仍然是一个非常陌生的名词——游戏卡顿帧数不稳定,和掉帧有什么关系呢?
事实上,帧率指的是平均一秒内,游戏更新显示了多少张“画面”——同动画和电影一样,游戏呈现给玩家的方式,也是通过快速的画面更迭来实现动态的画面的——这是利用了视觉暂留现象实现的,由于人类眼睛的生理结构,如果每秒能更新超过16张连续的画面的话,就会给人一种“画面连贯”的错觉。
其实这是一个16帧的动画,但换成3D游戏就会觉得已经卡的不行了
但不同的是,3D图形渲染的机制,就决定了动画和电影中一些能够造成“动态视觉”的设计方法难以同样地应用——因而在3D游戏当中,就需要更高地帧率来实现动态的画面,这也是为什么人们常说需要至少30帧的原因(当然,30帧只是最低要求,如果有足够刷新率的显示器,能够以更高的帧率来运行游戏,自然是更好的)。
一般来说,帧率已经足以反映游戏体验是否流畅了,不过,它其实是不能详实可信地反映游戏运行过程中实际情况的——如前面所说,动画和游戏实际上是通过视觉暂留现象来实现动态画面的,而具体到游戏而言,则需要至少每秒30张画面(也就是30fps)才能保证人眼不会明显地感受到卡顿,但帧率作为计算方式计算的实际上是每秒的平均帧率,它并不能准确地反映这一秒内硬件渲染画面的真实情况。
你需要帧时间来救场
这个时候,就可以求助于帧时间来更为详细地分析卡顿的情况了——帧时间指的是硬件渲染每帧画面的时间(也可以说是每一帧画面的绘制时间),它的计量单位是毫秒(ms),理想情况下,当我们游玩某一游戏获得每秒60帧的帧率时,它每帧画面在1秒钟(1000毫秒)内停留的时间应当精确于16.7毫秒。但实际上,游戏在实时运算时,随着画面的变化,显卡、CPU、内存等硬件由于需要互相协调运作,因而每帧生成的时间间隔,并不一定稳定地在一个理想的数值。
比如说,极端情况下,一秒钟内,如果前500毫秒渲染了60帧,在后500毫秒没有渲染任何帧,这样虽然帧率测量结果将仍将显示为平均60fps,但在那没有渲染的500毫秒内,人眼是会感受到图像信息没有变化的,这样的体验基本就可以称之为卡顿了。当然,这只是个极端的例子,但在实际情况中,30fps的理想帧时间是33.3ms,如果高于这个数字,人眼就有可能感受到卡顿。
简单来说,较高帧数下出现的卡顿问题正是帧生成时间不稳定导致的,当硬件无法及时处理游戏数据的实时运算时,就会出现一些生成时间惊人的帧,这时即使硬件已经处理好这一帧后面的数十个帧了,因此,为了获得流畅的游戏体验,高帧率和稳定的低水平帧时间就缺一不可了。
你们猜,下面这种情况,你们觉得实际游戏体验有没有出现卡顿呢?
2真相只有一个!卡顿却不是回顶部
硬件是造成卡顿和掉帧的第一元凶?
硬件当然是出现卡顿时人们通常能想到的原因——执行游戏后台进行的计算工作的,是处理器,将数据传输给处理器的,则是内存,面对日益复杂精美的图形画面,显卡多年来一直都在风中摇摆,·价位的差异,基本上就是计算机硬件水平的划分,五千的游戏本,自然和一万的游戏本能完成的工作是有着天壤之别的(台式机同理)。
更好的计算机硬件,能同时处理更多的数据,应对更为复杂的工作,支持更新的图像技术——从DX8到DX12,这几年游戏画面的进步也是有目共睹的——需要占用至少3.5GB显存的游戏用4GB显存的显卡运行,出现卡顿也是正常的了。
因而,人们面对卡顿第一时间怀疑是自己硬件的锅,也是很正常的帧数不稳定,毕竟——没那能力硬揽瓷器活是会翻车的。
驱动也来凑热闹!
另外,驱动程序也在很大程度上影响着硬件的性能发挥,我就曾经遇到过某一版本的驱动导致游戏帧数下降了一大半不到二十帧的情况——吓得我赶紧回滚至前一个版本了(其实一开始玩新游还以为是硬件不行,后来发现玩之前的游戏也这样...)。
但这又是因为什么呢?我们先来了解一下驱动是什么——设备驱动程序(英语:device driver),简称驱动程序(driver),是一个允许高端(High level)计算机软件(computer software)与硬件(hardware)交互的程序,这种程序创建了一个硬件与硬件,或硬件与软件沟通的接口,经由主板上的总线(bus)或其它沟通子系统(subsystem)与硬件形成连接的机制,以使得硬件设备(device)上的数据交换成为可能。
由于驱动程序需要对硬件功能进行低级访问才能运行,因此驱动程序通常也是在高特权的环境中运行的,如果出现问题,几乎可以肯定会导致系统的运行出现问题——这也是为什么编写驱动程序的任务通常软件工程师或计算机工程师来完成的,这是因为他们比大多数人有更好的信息来设计他们的硬件。
因此,驱动程序的表现直接决定了硬件的实际效能输出,如果某个版本的驱动更新出现了问题,就会遇到我之前遇到的性能问题——好在,一流的软件工程师和计算机工程师也不是吃素的,因而,一般在后续的版本更新里也会修复这些问题。
落井下石的游戏负优化
那我大几万买的笔记本/台式机为什么有时候玩一款游戏也会卡顿呢?这就不得不说到游戏公司有时候令人惊讶的“负优化”的,事实上,除了负责硬件数据输出效率的驱动,在制作游戏时,游戏中要出现多少素材,怎样优化硬件数据传输的效率,也都会影响到最终的游戏体验(比如寒霜朋克玩到后期就会出现这个问题)。
比如说,2007年的二战即时战略游戏《英雄连》,如果正常游玩的话,用现在的游戏本来运行就能保持到一个很高的帧率水平。
但是在开启了修改器取消人口上限后,几百个小分队挤在屏幕中央的画面的确看起来虽然十分的壮观,但同时也会因为占用过多的系统资源而不可避免地发生卡顿的情况——事实上,许多游戏在设计时就是通过减少场景内不必要的素材来提高游戏的效能表现的,而一些取巧的设计思路也能产生不错的效果——著名的射击游戏《使命召唤》系列,就是以区域内素材的使用见长的——它将游戏使用的素材集中于设计好的“必经道路”上,不仅避免了浪费机能的情况,还给玩家们带来了一流的电影化体验(事实上,有一段时间里,一些玩家是把COD当互动电影来对待的)。
而另一种常见的解决方案,大概就属游戏设计当中的纸片山纸片人了——这种设计大大减少了硬件的数据处理量,还在一定程度上保证了视觉效果的体验。
而硬件应用效率的问题,则分别和游戏所使用的引擎和开发人员的技术功底有关——前者主要是引擎本身采用的算法可能导致的效能问题,而后者,则在于对游戏运行过程中对硬件使用的优化——如何更加高效地运用内存、显存还有处理器,是开发人员在技术层面一直试图不断突破的一种能力。
而负优化的情况,基本上就是反面教材了。
总之?
总而言之,面对游戏画面卡顿的情况,硬件和软件都有可能是造成这一切的元凶,升级硬件,降低画面设置诚然是一种不错的选择,不过识别卡顿的真正原因,对对症下药,更新驱动或是放弃一款游戏,也是游玩过程中需要注意的,用帧时间来分析游戏运行状况,就能更为清晰地了解实情,是升级硬件,还是更换驱动,怎样选择也就一目了然了。在追求极致游戏体验的道路上,怎样能少花钱多办事,玩得舒心,还是一门值得研究的学问呢!