目前本问题下除了@大城小胖 的回答之外, 其他回答都比较让人无语, 刚好前几天跟别人聊过这个问题, 没想到还有这么多人不懂, 就顺手来答一下, 内容主要来自聊天记录, 稍加补充.
历史原因
早期主机游戏锁帧非常常见.
因为当时的不少游戏的帧数和现实时间不是绑定关系, 自己做过游戏的都知道, 用间隔固定帧数来处理逻辑比用固定时间来处理要方便多了.
假设游戏的目标帧数是每秒30帧, 我要每隔10帧让这个人物移动1个像素点, 实际上相当于每1/3秒让人物移动1个像素点, 如果你锁定帧数, 而且保证平时帧数是稳定的, 那么只需要在每隔10帧的位置将人物位置移动一下就可以了, 又或者是每一帧移动1/10个像素(小于1像素是无法显示的, 这只是逻辑上的坐标变动).
如果不锁定帧数, 那么就需要在游戏内部的每一次循环里计算距离上一次循环所经过的时间, 并用这个时间来计算出当前内容应该怎样变化, 由于帧数存在波动的可能性, 所以这个计算增加的量不再是一个固定的数值, 而是需要通过加入时间这个变量来计算, 这也显著增加了程序的计算量.
锁住帧数, 一来减轻了开发人员的开发难度, 二来减轻了主机的负担(由于主机的硬件固定, 采用固定帧数的方法不会有太大问题, 即使帧数超了也只用计算帧数而不是计算时间, 相对简单), 何乐而不为. 这也是为什么当时很多从主机移植到PC的游戏在强行解锁帧数限制会后游戏运行会加速(或者其他不正常现象)的原因.
现在主机的机能虽然上来了, 但还有一些不思进取的公司没有改善自家的游戏引擎, 仍然采用固定帧数的计算方式, 所以还是会有解锁帧数导致游戏加速等bug(比如B社引擎的上古卷轴5和辐射4).
显示器同步
一般液晶显示器的刷新率是60Hz, 游戏的帧数再高最终通过显示器显示出来还是60帧, 这就是为什么很多游戏锁60帧的原因.
超过60帧会怎么样呢? 有的显示器处理不了这个情况, 它一秒钟只能出60个画面, 你这时候给它推了61个画面, 我们就当它是在这一秒的最后从显卡那里接收到了最后2个画面, 即第60个画面和第61个画面, 它该怎么决定显示第60个画面还是第61个画面呢? 你知道, 无论怎么选择, 都会丢掉一个画面, 而这个画面一般来说肯定是与上一帧不同的, 那么就会造成一些眼尖的玩家感到游戏不连贯. 这还只是61帧的情况, 如果你是100帧, 在60Hz的情况下, 即使是平均分配, 100/60=1.6666..., 无论怎么显示都会让画面变得不连贯, 再加上显示器的画面显示方式是从屏幕的最顶部一路发射到最底部, 强制显示往往会导致画面撕裂, 你说应该怎么办?
答案是垂直同步技术, 最基本的理解是, 这会让显示器的信号接管游戏的帧率, 于是开了垂直同步后游戏的FPS就会强制被限制到与显示器刷新率一致, 就没有了同步方面的问题. A卡和N卡后来都有了自己更高端的垂直同步技术, 很复杂, 有的还需要配套的显示器提供动态刷新率来达到最佳效果, 这个话题和问题无关, 就不多说了.
反过来, 画面无法达到60帧, 该怎么办? 比方说游戏能输出的FPS是40, 你是没法平均分配到显示器的60Hz里的, 肯定会导致画面滞后, 也就是我们说的"卡", 虽然高于30帧的时候这种感觉不明显, 但不管怎样还是可以感觉得到的. 答案是锁30帧, 这样你就可以将输出的画面平均分配到显示器的60Hz里.
这就是为什么游戏要么锁60帧要么锁30帧.
输入延迟
之前说到一般液晶显示器是60帧, 那不一般的显示器, 比如我们知道电竞显示器的频率通常都是144Hz, 为什么要搞更高频率的显示设备呢? 人眼明明很难分辨这么高的帧数了啊?
答案是人眼虽然分辨不出, 但是你的双手能感觉到. 人的触觉比视觉在反应速度上要更胜一筹, 电竞选手在触觉的反应速度往往比普通人更加迅速. 当你的双手已经输出了操作, 但显示画面却还没能反应过来的时候, 你会觉得有延迟, 这种延迟是怎么产生的呢? 因为游戏在60FPS的时候, 每1/60=0.0166...秒处理一次玩家的输入, 虽然对于人眼来说这已经很快了, 但对于触觉来说还不够快, 如果你的输入非常迅速(想象一下那些APM很高的选手), 触觉发射出的动作是得不到准确的反馈的, 这会导致眼睛看到的和你的双手按出的操作不能够同步, 也必然影响选手的发挥.
30帧的时候0.0333秒处理一次输入, 60帧的时候0.016秒处理一次输入, 144帧的时候0.0069秒就可以处理一次输入, 再加上帧生成速度的不稳定性(有的游戏渲染和逻辑处理是分离的, 同步起来就更加麻烦), 显示设备和输入设备的那几毫秒延迟, 更高的帧数必然会更加贴近玩家的输入体验. 这就是为什么电竞选手要追求更高性能的设备, 因为在更高帧数下, 游戏对于操作的反馈会更加符合玩家的操作预期. 就当你的人眼只有60帧的处理能力, 在更高帧数的情况下从显示设备接受到的每一帧画面, 也都更加吻合你之前的输入, 自然也就减少了画面滞后的感觉. 这也是为什么部分玩家不愿意被锁60帧, 宁可在屏幕撕裂的情况下玩游戏, 因为他们在60帧时也能明显感受到输入延迟, 在更高帧数下玩起来才能感觉到"流畅", 在144Hz下也没有画面撕裂的问题, 自然更爽.
所以到了电竞显示器, 刷新率就升至了144Hz(而且往往还有高端垂直同步技术的加持), 帧数越高输入的反馈精确度也就越高, 适合那些非常激烈的对抗游戏.
优化难度的上升
如果你很关注3A级游戏, 又恰好有一张不是那么跟得上主流游戏的显卡, 你会发现新出的游戏优化都很差. 这是因为现在引擎需要计算的东西太多了, 而这些部分是很难进行优化的, 跟以前那种靠引擎技术垂直提升来达到"神优化"的时代不同, 现在优化的手段基本是3个套路: 1. 砍材质分辨率, 2. 砍局部帧数, 3. 干脆一点连特效也砍了.
GTA5的PC版是公认优化很强的作品, 但你仔细观察游戏就会发现, 游戏的局部内容帧数并不能达到预期, 有些你不会注意到的运动物体或者是不太重要的阴影, FPS可能只有10~20. 即使是最新的COD你也可以发现很多贴图材质清晰度甚至不如CS1.5, 这就是本世代优化的代价.
有很多游戏都比以前更加依赖于游戏引擎, 所以能改的部分越来越少, 想要让帧数稳定就难上加难, 这种时候锁帧数成了为数不多的辅助优化的方案, 因为减少游戏帧数的波动本身就是一种优化. 同时锁定帧数后可以根据目标帧数调整局部帧数, 割让出一些不重要的计算量给重点内容, 也算是一种方法.
这就是为什么很多游戏仍然是锁帧数的——开发者已经认定了这个帧数才能达到最好的体验.
动态模糊技术的登场
游戏和电影电视在画面上的最显著区别便是游戏的每一帧画面都是清晰的, 而电影电视的视频画面是模糊的. 由于现实中的摄影设备有快门时间即感光元件的曝光速度这一物理限制, 所以拍摄出来的运动物体是带有模糊的. 人对于定格画面的处理速度是有上限的, 画面会在人的视觉残留一段时间, 这种模糊由与上一个画面和下一个画面都有联系, 于是就可以轻而易举地被我们脑补出连贯性(这也是为什么帧数更低的动画作品总是要在画面上搞一些动作残影), 所以电影往往只需要24帧就可以让人感到流畅, 而游戏可能到了60帧还感觉不流畅, 就是缺少这种前后帧之间的模糊效果(当然现在也有更高帧数的电影, 模糊量也减少了, 动作量大的场面看起来会更爽). 可以去看看摆拍的定格动画, 由于缺失了这种模糊, 它和游戏生成的画面是一样的, 在低帧数下会明显感觉出异样.
早期游戏不能运用动态模糊, 一方面是受机能限制, 另一方面是技术限制, 很难生成出高质量的模糊效果, 显得比较假, 大家都不愿意用.
如今游戏厂商的技术水涨船高, 都纷纷用起了动态模糊技术, 于是不少30帧的游戏你都会觉得流畅无比, 加上之前所说的优化难度上升的问题, 锁30帧就成了一种曲线救国的解决方案, 它可以在帧数达不到60帧的时候让你觉得画面更加流畅. 当然这也很大程度取决于游戏厂商的技术水平, 有的游戏即使加上动态模糊还是挺烂的, 我个人认为动态模糊做得比较好的有《极品飞车2015》和《巫师3》, 锁30帧还是可以丝般顺滑.
不过即使动态模糊这么强无敌, 也还是解决不了游戏掉帧时造成的明显卡顿, 这锅当然只能让厂商来背. 另外, 超过60帧时动态模糊就没有什么必要了, 反而会造成粘滞感, 有的玩家就是在60帧以上还开启了动态模糊, 才对动态模糊留下了不好的印象.
===========================================
我本来...只是想写一点的, 怎么就3000多字了...
为什么很多游戏要锁30帧运行?
0 条评论