为什么很多游戏要锁30帧运行?

0 条评论


  • 78

    BlackGlory儒雅随和

    黑狗布雷特乱码HRSKNK 等 78人赞同

    目前本问题下除了@大城小胖‍ 的回答之外, 其他回答都比较让人无语, 刚好前几天跟别人聊过这个问题, 没想到还有这么多人不懂, 就顺手来答一下, 内容主要来自聊天记录, 稍加补充.

    历史原因

    早期主机游戏锁帧非常常见.

    因为当时的不少游戏的帧数和现实时间不是绑定关系, 自己做过游戏的都知道, 用间隔固定帧数来处理逻辑比用固定时间来处理要方便多了.

    假设游戏的目标帧数是每秒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多字了...

    更新于 2016-10-15 00:34:14 4 条评论


  • 18

    大城小胖不给自己点赞就是一种犯罪,会被打成小胖

    琪露诺白糖Diwarisi 等 18人赞同

    不稳定的60帧(在45到60之间随机波动) 要比 稳定的30帧 更让人不舒服,尤其在长时间游戏时。

    另外,受制于玩家的硬件,尤其是主机平台(性能低,而且主机的风格是不提供游戏画面的各种细节设置),为了那不稳定的60帧,设计师可能要抛弃很多设计,程序员要花很多时间优化,得不偿失。


    ======================

    更新 & 补充 ( 2016-10-15 ) 

    虽然 @BlackGlory‍  的回答在开头就认可了我的部分观点,  但我还是要指出来, 他有一个很重要的概念上的错误: 他把 "锁帧频" 和 "固定流逝时间"  (流逝时间 的说法不好, 英文是 time step / elapsed time ,更好理解一些) 混为一谈了.

    锁帧, 锁的是 sleep time (在有的引擎里叫做 timeout ) , 固定流逝时间 , 是指 不管帧频的波动, 游戏内都使用固定的time step进行计算.

    两者没有必然联系. 可以说游戏有4种:

    • 动态帧频 + 动态流逝时间.
    • 锁帧频 + 动态流逝时间
    • 动态帧频 + 固定流逝时间
    • 锁帧频 + 固定流逝时间


    使用哪种, 不仅要考虑性能, 复杂度, 甚至还和玩法有关.比如需要精确回放(RTS那种回放不属于精确回放)的游戏, 一定要用"固定流逝时间" , 锁不锁帧再另行考虑.


    ======================

    更新:

    简单聊聊 帧频 和 动态、固定流逝时间 的关系.

    一般我们在开发游戏之前, 会先制定一个『期望帧频』, 比如30 , 60 等 .

    但是不会制定 40 45 50 这种帧数,  而是60或者 60的 n分之一 , n是正整数. 原因与硬件的特点有关, 就不展开说了。

    这个帧频的制定依据要结合 游戏的复杂性、画面精度、目标平台、正常情况下希望达到的流畅度、对用户体验的要求等。

    所以, 一般『期望帧频』主要要考虑的是最终带给用户的体验。

    而  选择 动态流逝时间 还是固定流逝时间 时, 考虑的主要因素是『游戏计算结果的确定性』,通常不会『受限制于游戏的帧数表现』, 与『帧频』也没有必然联系。

    比如 一款 帧频10FPS的游戏, 有可能使用动态、固定流逝时间中的任何一种。

    一款 帧频60FPS的游戏, 也有可能使用动态、固定流逝时间中的任何一种。


    动态和固定流逝时间分别能给游戏带来什么影响和不同,这个以后有机会再单独写文章来展开说吧。

    不过这不是技术论坛, 说这些可能没啥意思, 所以这个文章也许永远不会写。。。

    更新于 2016-10-16 01:14:56 15 条评论


  • 4

    黑狗布雷特专注模拟竞速游戏

    Yoge音之幻风B_devolin 等 4人赞同

    锁帧的理由有很多,有的是为了节省机能,有的则是为了游戏电影化而营造的效果。

    但说实话锁30帧就能让游戏变得更加流畅这个真的不敢苟同。

    因为题主提到的这种锁帧事实上不是因为锁30帧而让游戏变得流畅,而是为了保证每一秒的游戏画面都是30帧而不让游戏出现“卡顿”的状况,让游戏全程保证流畅。

    ======================以上是回答,以下是评论。=====================

    在机能不受限的时候,锁帧反而是个坏事,尤其还是锁到了低帧数的时候。我举个例子。

    2007年《命令与征服3》发售的时候,我用的电脑CPU是双核速龙,显卡是7600GS,这在当时是相当主流的平民配置,价格合理,带的起大部分游戏,因此当时想都没想就装了这台电脑。结果在跑C&C3的时候,悲剧发生了,因为锁了30帧,游戏又不能开垂直同步,因此游戏在拖到大后期大兵团作战的时候,游戏为了让各个单位的动作帧数与锁定的30帧同步将所有单位的动作帧数放慢,因此所有单位移动速度都变得非常非常缓慢,以至于我的部队硬生生移动了将近3分钟才到达敌人的第一道防线前。而且这个问题EA至今没有给出一个更好的解决方案,而是就这样放那儿了。

    这他妈哪儿是为了游戏流畅而锁30帧啊!这他妈就是为了延误战机而锁30帧啊!

    这也是我尽管非常喜欢C&C3但一直不玩它的理由,这种恶意拖慢游戏节奏的方式非常非常不厚道,尽管出现这种情况并不是EA故意的。

    再说个题外话,在人类发明144Hz显示器之前,经验以为人眼最大只能捕捉到24hz的画面,但事实上在144hz的刷新率出现之后,人们发现他们还能区分120FPS和60FPS之间的流畅度,也就是说,人们会感知到120FPS的画面要比60FPS更加流畅。如果你不相信的话我建议尝试一下144Hz的显示器,并将游戏帧数调到144FPS,再与60FPS做一个对比就知道了。

    发布于 2016-10-14 18:53:16 4 条评论


  • 3

    高鸣数字时代的民间手艺人

    大家的回答都很专业了,我现身说法一个。

    《蜡烛人》在X1和PS4上是锁30帧的,我们这样做的原因,@大城小胖‍ 已经准确概况:

    不稳定的60帧要比稳定的30帧更让人不舒服

    例如在《蜡烛人》1-1关中,全程可达60帧。但是一旦角色靠近存档点附近的水坑,帧数就会突降到40左右,离开后又会升高到60。

    2899767c53a474806a048a32ece53389.jpg

    因为是平台跳跃游戏,在环境中连贯行走跳跃的时候,类似这样帧率的变化会让人感觉不舒服,甚至增加眩晕感。

    所以《蜡烛人》在主机上锁30,但在即将推出的Steam版中则不会锁帧。


    觉得我这个广告打得好的请点赞。

    更新于 2018-01-24 10:55:48 0 条评论


  • 3

    狄逖

    本回答比较让人无语,且本人不懂,特此删除原答案。

    更新于 2016-10-15 18:58:04 2 条评论


  • 2

    816三个数字专打FPS,人见人骂挂

    高鸣怯夜 赞同

    我认为一般有三种原因,

    第一种是:流畅运行

    一般情况下有些游戏为了运行流畅,而牺牲60帧。

    因为有时候游戏不锁帧会不稳定,可能会跳帧。


    第二种:防止画面撕裂

    类似设置里的垂直同步,大多数在第一人称游戏,视角移动过快,超过了显示器更新的速度,就会造成上半部是新一帧,下半部是前一帧的情况。

    为了和显示器更新率同步,游戏才会锁帧。

    (当然如果你的显示器更新率够快,这点可以忽略)


    第三种:电影既视感

    有些游戏并不需要特别流畅的画面,帧数变高反而会造成游戏过程不佳,甚至对玩家造成一定的症状,例如眩晕症等...

    在大多数情况下,游戏会为了美观、安全等情况下限定24帧、30帧、45帧等...


    温馨提示1:

    如果你的电脑配置差或游戏优化不好而造成跳帧的话

    请一定要锁帧,不停变化的帧数可能会伤害眼睛,造成眩晕等状况。

    而且玩起来肯定也不舒服......


    题外话:

    一般的第一人称射击游戏,60FPS和100+FPS的更新速度差别还是比较大的,

    虽然一般(我家的)显示器的更新率只有60hz,但是帧数高可以避免更新延迟。

    假设:

    在60帧画面下,用鼠标从点A移动到点B则需要6秒,

    那么:

    在120帧画面下,用鼠标从点A移动到点B则只需要4秒。

    所以,只有60帧也是会对游戏造成很大的影响的。

    发布于 2018-01-23 22:12:32 3 条评论


  • 1

    Shitake自赞臭,友赞跛,别人赞,响当当

    Shitake 赞同

    aa65cdd6ea0930519fb0894c50e42ce7.jpg

    所以为什么不能是30帧呢

    发布于 2018-01-24 11:54:22 0 条评论


  • 0

    EVan...

    30帧不会让游戏更流畅

    只是比起严重掉帧和帧数不稳定

    30帧还是能让人接受的

    发布于 2019-05-24 21:29:11 0 条评论

  • 登录奶牛关账号即可参与讨论