游话好好说:游戏锁帧是否真的很重要?
前几年,一些FPS游戏引入了锁帧技术,被许多玩家狂喷。那么,开发者为什么锁帧?锁帧是否真的有必要?关于游戏锁帧的说法,孰真孰假?Reddit成员Pyronar发表了关于锁帧这件事自己的看法。虽然Pyronar不在任何一家游戏公司工作,但他曾参与过游戏引擎的开发建设。
《恶灵附身》PC版提供了调整帧率选项,官方建议默认30FPS获得最佳游戏体验
据Pyronar介绍,游戏引擎是整个游戏的核心,是游戏的心脏。他简要地用三个步骤概括游戏引擎是如何工作的:
第一步:获取并处理输入(get and process input):这些输入包括来自于交互设备(游戏控制器、键盘鼠标等)的输入,以及来自于网络的输入;
第二步:系统更新(update game state):根据输入或者自发地对各个子系统进行更新,以决定当前的游戏状态;
第三步:帧渲染(render frame):对整个游戏场景进行渲染。
这是游戏的一个主要循环,如果开发者只按照这三步编写代码,他们可能得到一个帧率不够稳定的游戏。因此开发者研究出三种方法应对这一问题。
《极品飞车18》锁30帧,有玩家在游戏中添加了一段代码,将帧率提至60FPS
第一招:锁帧。我们大多数人已经领教了这一招。它让游戏全程都按照同一个速度运行。
第二招:delta time。delta time在代码中表示上一帧所用的时间。通过这种方法,开发者可以不锁帧率,转而对上一帧以及基于上一帧的操作所消耗的时间记时。
第三招:双循环。这种方式是现在很多游戏引擎采用的方式。其中一个循环以毫秒为单位,另一个以帧为单位。前者负责更新逻辑,后者负责渲染帧。
这三种方案中,锁帧是最简单、最偷懒也是最糟糕的解决方案。
Pyronar驳斥了那些诸如“某某引擎不能解锁帧”、“将游戏锁在30FPS有利于游戏美感”、“不锁帧将让工作变得更困难花费更高”等游戏开发商的主流借口和谬论。内容如下:
第一条:由于游戏优化工作难度较高。一些开发者没有时间和资源让他们的游戏维持在60FPS
游戏优化在技术上有门槛是真的,但和锁帧与否无关。如果我的电脑不能将你的游戏运行在30FPS以上,这是优化问题。如果你的游戏锁帧在30FPS,这是设计问题。你至少可以提供玩家是否锁帧的选项或者设置一个帧数上限。
第二条:由于游戏早期制定的“设计决策”(design decisions),游戏将无法达到60FPS
技术上的确如此。只是在软件工程领域我们不叫这个为“设计决策”,这叫“设计失误”。
第三条:不是所有的引擎都可以解锁帧限制
首先,游戏引擎不是封闭的系统,至少绝大部分不是。如果你想增加点什么功能,写代码就行了。可能会有难度,但总比从零起步好得多。其次,没有引擎会自加锁帧限制,如果它真的有,一开始你干嘛用它?第三,现今大大部分引擎都为此提供有专门的工具。最有名的比如Unity,就已经内置了双循环的设置。
著名游戏引擎Unity内置了帧率设置
第四条:将帧率锁定在30帧,是一种艺术化的处理
我不是艺术家,所以我并不打算就艺术这一点作争论。然而,有一件事情我是知道的,如果你的游戏设计得好,提供一个开放帧限制或至少将游戏锁定在60FPS的功能选项,也不是什么难事。就算你想让你的游戏跑在30FPS,粗暴地强制锁定是个糟糕的主意。
《刺客信条:大革命》关卡设计总监为30FPS辩护,称这样的帧率可以带来“电影级体验”
第五条:这项工作难度高、开销大
真没那么烧钱,有点难倒是真的。这就是Unity等引擎为什么早就内置了此类功能的原因。
这下你知道为什么有些游戏要锁定在30帧了吧。这也可以解释为什么有些大神不用大费周章就可以解锁游戏的帧率限制(当然,可能带来一些令人啼笑皆非的副作用)。有的玩家认为游戏大多已经步入次世代,如果还因为各种原因锁住帧率,实在是悲哀。60FPS是最舒服的帧数,有品质的游戏就应该达到这一要求,不能缩水。
不过也有的玩家认为锁帧这件事儿并无所谓。现在很多3A大作都选择了锁帧,一定有它自己的考量。况且锁帧与否,如果别人不说,确定你每次都能觉察出来60帧与30帧的区别有多大?
关于锁帧,你的看法呢?
热门相关:雪中悍刀行 天道之下 豪门崛起:重生校园商女 砺剑繁华 重生九零之军长俏娇妻