配置升级了吗?然后时间就会开始加快。
在Steam上收到四分之三的负面评论后,roguelike大作《雨中冒险2》的新DLC 《风暴探寻者》无疑是失败的。
好评率最低降至24%,全国仅为8%。
如果只是DLC 更新的关卡、幸存者和敌人有问题,那就不要购买DLC。
然而,《雨中冒险2》的主体随着DLC的推出而遭到强制更新,同时也收到了无数的Bug和错误,包括但不限于:随机突然死亡、掉帧、纹理缺失、物品不再突出显示等。关卡变得更加难以攻克,最终boss“米斯利克斯”莫名无敌……
如此一来,本体近期好评度《雨中冒险2》也被拖累至“褒贬不一”的程度。
8月30日,《风暴探寻者》上线两天后,Gearbox发布了开发博客。日志列出的海量问题中,第一个也是最致命的一个如下:
“游戏中的许多元素都受到错误的影响,导致它们的行为根据玩家的帧速率而改变。其中包括物理系统、攻击速度和移动。”
“它将在下一个补丁中修复”
官方花了一周时间才修复这个bug。本周,他们建议的解决方法是在设置中将游戏的运行帧速率锁定为60 帧。只有60帧的时候,《雨中冒险2》的宇宙才会按照原来的节奏流畅运行。
在不同配置的电脑带来的不同帧率下,游戏中发生的一切也会被加速或减速。如果取消帧数的限制,任由帧数随意增加,宇宙将在熵加速中制造无尽的混乱和灾难。气得无法反抗重新开始的玩家和幸存者一次又一次捶胸顿足——
将帧率和机制强行绑定在一起会给游戏带来严重的灾难。理解这个道理并不容易,但这个bug 版本《雨中冒险2》 提供了一个很好的例子。
1
一般来说,由于玩家角色的表现受到帧率的影响,很多角色在高帧率下得到了增强。乍一看,《雨中冒险2》 看起来像是一个伪装的“P2W”(氪金获胜)游戏。电脑配置越好,性格就越强。
高帧率下,角色的武器射速和技能冷却时间也得到普遍增强。例如,武器的射击速度会更快,位移闪光技能会飞得更远。 “工程师”的追踪鱼叉增加了锁定速度,“窒息大师”的吸血技能也加快了吸血速度。
《指挥官》R技能30帧和450帧射速对比Youtube@Neon Shockz
“Loader”以高帧率运行Youtube@Neon Shockz
与“队长”霰弹枪一样,你需要蓄力来减少射弹的传播范围。但在高帧率下,弹丸的分散区域比以前更加集中。据推测,减少色散的公式也受时间影响,数据随着帧率的增加而变化。
图片来源Reddit:u/bataloof
当锁定在30帧时,这些技能就会变弱,弱到滑稽的程度。
《雇佣兵》的起飞变“陆地旅行” Youtube@Neon Shockz
按理说,《雨中冒险2》并不是一个很新的游戏;虽然是数据计算量巨大的肉鸽子,但如果不刻意刷道具、堆角色属性,它也不会成为“显卡杀手”。高帧率带来的高角色表现应该算是一种普遍的增强。
但受帧速率影响的不仅仅是玩家。
有些敌人在高帧速率下会变得更加愚蠢,并且只会跳起来并反复停留在原地。也许有一行代码决定了敌人每隔几秒就起飞,过高的帧率大大缩短了敌人的起飞间隔。
Youtube@NeonShockz
然而,敌人的数量(生成率)和质量正在发生质的飞跃,让玩家措手不及。 ——是猝死。
许多敌人的激光会在锁定玩家后立即发射,并且在高帧速率下,激光锁定得非常快,几乎不可能躲避。早期的boss“石巨人”还有激光攻击,是每帧计算的连续伤害。在高帧速率下,伤害速度也会增加,立即蒸发玩家角色的生命值。
悲惨死亡Youtube@Neon Shockz
另一位飞行boss“流浪者”在濒临死亡时会释放超新星爆炸,对附近目标造成致命伤害。它在前期会造成巨大的威胁,但在爆发前会给玩家留下一段躲避的时间。高帧率会缩短这个时间,使得这种自毁攻击不可避免。
充电效果还没完全展现就爆炸了,Youtube@Neon Shockz
类比这两个boss,敌人也会随着帧率的提升而获得属性增强,而且增强的强度远大于玩家。立即杀死玩家是很常见的。
不仅如此,地图上的一些中立设施也会因为帧率问题而无法正常工作。
“Springboard 无法在高帧速率下工作”
如果因为各种因素(比如堆叠几十层数值道具、后台运行的程序太多)导致帧率降低,虽然敌人的性能也会下降,但玩家的性能也会下降到离谱的程度,并且甚至跑步也是不可能的。跑不了。总之,如果不锁定60帧,bug版本《雨中冒险2》就太难玩了。
问题出在《雨中冒险2》使用的Unity引擎上。简而言之,Unity引擎下有两个函数:Update和FixedUpdate。 Update函数中的所有操作都是按帧调用的,而FixedUpdate是在固定的、预设的实时时间(或固定时间步长)调用的。默认是每0.02秒调用一次,即每秒50次。频率可以修改。
60帧时,每帧调用一次Update(约0.01666秒),FixedUpdate不受帧数影响。
Gearbox本打算在这次重大更新中将《雨中冒险2》升级到Unity的最新版本,但本意是好的却是坏事。在更改代码的过程中,程序员主动插入了很多额外的功能。通过更改它们,原本应该由FixedUpdate调用并基于实时计算的数据被混淆为使用Update并与帧数相结合。
“为什么”
因为了解Update和FixedUpdate的区别是Unity开发者必学的基础课;解开游戏帧数和机制,或者解开游戏画面上显示的“渲染帧”和程序计算的“逻辑帧”应该是当今每个游戏开发者的必修课。
2
Unity是一个足够成熟的引擎。具有完整的游戏逻辑与渲染、机制、帧率解耦相关的功能。网上也有很多教程。
然而,几十年前的游戏开发商并没有现成的引擎和如此理想的开发条件。他们也无法意识到将游戏机制与帧速率绑定可能导致的灾难。由于帧是程序运行和屏幕渲染的基本单位,因此将游戏中发生的一切都与帧数联系起来是很自然且符合逻辑的。
网上能找到的建议开发者将帧率与机制解耦的英文教程可以追溯到2004年。那一代属于PS2、初代Xbox和NGC(任天堂Gamecube),PC游戏也在当时。上升。
“调整好你的时间步数!”
这一代及之前的大多数游戏始终将帧速率与游戏机制联系在一起。就像臭名昭著的“千年虫”(Y2K)问题一样,游戏开发者更关心当前的需求而不是未来的需求,而玩家还没有显着提高游戏帧率的设备。
FC等复古游戏机,或者同时代的街机,功能相对有限。一旦游戏画面上的移动物体过多,游戏画面就会卡顿,帧数直线下降;不仅如此,物理时间里,物体的移动速度也会减慢,进入“子弹时间”。
这是由于帧数占用了游戏机制造成的,同时游戏速度很慢。不过,玩家们并没有因此受到太大的影响。 “子弹时间”偶尔会帮助玩家及时做出反应,进行救生行动。
FC掉帧王《魂斗罗力量》,即使控制器连续射击,也会因掉帧而损失一些伤害。
进入21世纪初,玩家可以使用的硬件设备,特别是PC设备,经历了快速的发展。运行60帧以上的游戏不再是梦想。可以在这些设备上运行的“旧”游戏开始遇到无数问题。
从30帧到100帧,问题其实并没有那么大。一些按照当时的标准拥有高端电脑的玩家很早就利用了高帧率或固定帧率。
例如,在2000年代初期的FPS游戏中,角色的移动速度受到帧数的影响。在CS1.6的经典地图之一,后来被称为“核危机”的《de_nuke》中,T营出生点的右侧有一个非常陡峭的斜坡。只有60帧以上的电脑才能爬上去;如果电脑只给你移动30帧,你这辈子都爬不上去。
都市传说是真的
《雷神之锤》和更早的《使命召唤》属于另一类:当帧速率锁定在特定值时,角色会比平时跳得更高更远。
这是由游戏的公式决定的,该公式用于计算玩家的速度和矢量以及重力。以《雷神之锤3》为例,当帧数设置为125时,玩家可以跳转到60帧环境下无法到达的平台。由于本游戏的速度计算公式需要在每一帧结束时进行一次舍入,因此125帧时得到的数据会进行更多的舍入,导致误差略高于预期。
无限帧,否; 125帧,还好
根据公式,玩家角色跳得最高为333帧,但这不是必需的。来源:Youtube@Matt 的随笔
从100帧到300帧,游戏会像bug版本《雨中冒险2》那样整体运行速度更快,偶尔会陷入混乱而无法征服。就像旧的GTA三部曲运行数百帧一样,主角的移动速度、造成和受到的伤害都会增加,任务倒计时也会加快。再加上一系列的bug,会给玩家带来麻烦。
大跳身亡的冷面杀手,Youtube@nikitozz
无法正常垂降的精英特警,B站@R星老青子
消防车水压不足,B站@R星老青子
从300帧到3000帧,因为逐帧菜单动画也加速了,屏幕前的玩家甚至无法选择“开始新游戏”选项,更不用说玩了。
《东方红魔乡》 平均4000帧运行且无法跳出演示动画
包括一些在主机上运行30帧的老游戏,如果强行转移到PC模拟器上,然后以60帧运行,就会出现各种Bug。
想要让游戏正常,要么想办法重写代码,先把一些重要的机制和帧率解耦,这样游戏至少还能玩。但这样的优化成本太高;或者你可以在游戏内外使用各种方法。强制锁定游戏运行帧,例如官方的硬锁和垂直同步功能,以及私人开发的模块,都可以低成本甚至零成本实现。
由于过时引擎底层代码留下的永恒限制,期望一些老游戏能够以60 帧运行已经成为一种奢侈。
例如,《命令与征服》和《红色警戒》系列使用的引擎会逐帧推断时间的流逝,最多运行30帧,而不是更多。如果强行使用某些工具来突破帧数限制,单位的动画和AI的操作都会变得怪异。如果玩家还没有创建第一个动员单位,对方就会派出坦克将玩家的基地送上天。
最快速度=锁定30帧
3
即使十几年后的今天,游戏行业仍然无法逃脱帧数这只看不见的手。只要不影响极限配置下的游戏体验,闹出《雨中冒险2》这样的笑话即可;或者可以通过帧锁定等手段掩盖可能出现的问题,大多数游戏开发者都会对这个问题视而不见。
大多数非大师或速通玩家可能不会太在意《怪物猎人:世界》里塔的登龙或弩炮的穿甲弹在某些帧数下的伤害数字,或者《生化危机2重制版》里昂的刀在120帧时比在60帧时造成的伤害更高。
超速网站必须单独留出120帧选项,以示严谨。
Capcom在最近的3A大作中使用的RE引擎也是常见的引擎,由于帧数影响游戏机制。该引擎中的大部分代码实际上是基于实时而不是帧来工作的,但Capcom 仍然将最重要的动作和伤害确定部分留给了帧数。
《怪物猎人:世界》 穿透弹跳伤害的数量也随着帧数的变化而变化,Discord:Moonbunnie0001
事实上,很多游戏引擎都采用了类似的双轨系统,将一些与游戏逻辑相关的机制交给实时处理,而将另一部分需要严格忠实地渲染在画面中的机制交给实时处理。帧号。
无论是在欧美还是亚洲,游戏开发商普遍不愿意放弃帧数对游戏机制的影响。这不一定是因为他们懒惰。
首先,“祖宗之法是亘古不变的”。很多十几年前的引擎至今仍在使用,代码修改的难度和成本太高。比如《命令与征服》进入3D时代所使用的SAGE引擎、Capcom的RE引擎,甚至Bethesda的Creation引擎、Rockstar的RAGE引擎、FromSoftware自研的祖传引擎都会因为框架的变化而产生物理机制上的变化数字。
《黑暗之魂2》 老版本的武器耐久度会在60帧时加速消耗,但这可以修复。
此外,这个世界上从来不只有电脑游戏玩家。主机帧率稳定,主机玩家没有理由考虑运行60帧以上的游戏。一些以主机玩家为主要用户的游戏根本不需要考虑解耦的步骤。
而这一步听起来很简单,但实际上意味着要求开发人员再编写成百上千行代码。这些代码会给硬件带来额外的负担,占用大量性能,增加单平台或多平台优化的难度,甚至拖累游戏渲染,造成画面撕裂。
那些注重动作渲染的游戏,包括像《街头霸王6》这样的格斗游戏,更不可能冒着破坏动作同步性和流畅性的风险,将逐帧动作强行绑定到实时。与其浪费时间优化代码,开发者宁愿采用更简单粗暴的锁帧技术,防止高帧率设备破坏游戏的平衡。
因此,即使Unity明确区分了帧数和实时调用的两个函数,但用Unity构建的《原神》和《永劫无间》最终成为“高帧数等于高攻击速度”的典型代表。
《原神》 不同帧数下的攻击速度对比,B站@海藻蛇皮汤
另一款使用Unity的知名作品《绝地求生》,其实很多年前就有一句话,帧率影响武器的射速。幸运的是,通过不断的优化和调整,这个问题最终得到了修复。
什么时候不需要修复这个问题?当然,帧速率对游戏机制的影响是游戏设计的一部分。目前看来,只有那些玩花样的Meta游戏才想着反其道而行之,利用这个系统来强制玩家降低帧率。
在2020年比萨互联网节游戏大赛上,一款名为《让我卡顿》(Make Me LAG)的小游戏获得了一等奖。在这款横版卷轴游戏中,主角只有在帧率低于60时才会开始行动,需要玩家采取措施控制游戏运行的帧数,并进行移动、跳跃、攻击等操作。
45-59帧移动,25-44帧跳跃,1-24帧攻击
在今年推出的更新中,国产Roguelike游戏《清零计划2》还加入了“帧数越低,伤害加成越高”的入门设计。
帧速率和游戏机制之间持续且令人困惑的关系并不一定是一个让游戏开发者数十年头疼的噩梦。它还可以成为一种巧妙的设计,鼓励玩家积极使用它。对于开发者来说是一个挑战,但对于某些情况来说也是机遇。
我告诉你,《雨中冒险2》也是肉鸽。与其掩盖过去的错误,不如保留Bug 代码的备份。《雨中冒险2》有神器机制。该神器相当于《雨中冒险2》的内置修改器,可以彻底改变一款游戏的体验。将游戏机制与游戏帧率绑定的bug,以及这个bug带来的混沌宇宙,相当适合制作成官方神器,既好玩又有诚意。
但你愿不愿意做和能不能做是两件不同的事情。古往今来很多游戏开发者都无法解决帧率和游戏机制的问题;对于能够花一周时间修复这个bug的Gearbox程序员来说,最好不要给他们增加太多的工作量。
他们可以让《雨中冒险2》摆脱代码错误和bug无处不在的困境,玩家会感到满意。
一些参考:
https://gafferongames.com/post/fix_your_timestep/
https://gameprogrammingpatterns.com/game-loop.html
https://docs.unity3d.com/Manual/ExecutionOrder.html
https://docs.unity3d.com/Manual/TimeFrameManagement.html
https://www.reddit.com/r/Cynicalbrit/comments/3dqwga/the_fps_lock_what_it_is_why_should_you_avoid_it/
https://www.youtube.com/watch?v=he02vjvkars
标签:
用户评论
将游戏机制与帧率绑定,听起来挺新鲜的。我个人觉得这能增加游戏的紧张感,但同时也可能让电脑配置不够高的玩家头疼。
有8位网友表示赞同!
这种绑定方式挺有意思的,不过我不确定它能不能平衡好乐趣和麻烦。希望开发者能处理好这个度。
有19位网友表示赞同!
绑定帧率和游戏机制?感觉像是在玩心跳加速的游戏,不过我担心这会影响到游戏的公平性。
有20位网友表示赞同!
这个做法挺大胆的,不过我有点担心这会导致玩家为了帧率而不断升级设备。
有14位网友表示赞同!
绑定帧率可能会让游戏体验更连贯,但同时也可能给玩家带来额外的压力。
有14位网友表示赞同!
我觉得这种绑定方式挺有创意的,不过我不确定它是否适合所有类型的游戏。
有15位网友表示赞同!
有点好奇这个绑定会带来什么样的效果,不过我担心它会变成一种新的游戏难题。
有11位网友表示赞同!
绑定帧率和游戏机制,听起来像是在追求极致的玩家体验。但我更关心这会对普通玩家造成什么影响。
有10位网友表示赞同!
这个绑定方式可能会让游戏更具挑战性,但也可能让新手玩家感到无助。
有10位网友表示赞同!
我一直觉得帧率是影响游戏体验的重要因素,这种绑定方式可能会带来新的可能性。
有16位网友表示赞同!
绑定帧率和游戏机制,感觉像是在给玩家设置新的门槛。不知道这是好事还是坏事。
有13位网友表示赞同!
我猜这个绑定方式会让游戏更加真实,但同时也可能让玩家感到不适应。
有19位网友表示赞同!
绑定帧率和游戏机制,这会是一个有趣的尝试。但我更关心它会不会影响游戏的兼容性。
有20位网友表示赞同!
这种绑定方式可能会让游戏更具竞争力,但也可能让玩家陷入无尽的追求帧率中。
有14位网友表示赞同!
我觉得这个绑定方式可能会给玩家带来新的乐趣,但也可能增加游戏的门槛。
有10位网友表示赞同!
绑定帧率和游戏机制,感觉像是在挑战玩家的耐心。不知道这是不是开发者想要的。
有18位网友表示赞同!
这个做法挺有意思的,但我希望开发者能考虑到不同玩家的需求。
有8位网友表示赞同!
绑定帧率和游戏机制,我觉得这是一个值得尝试的创意。希望它不会成为玩家们的负担。
有14位网友表示赞同!
这个绑定方式可能会让游戏更具深度,但也可能让玩家感到力不从心。
有6位网友表示赞同!