Respawn 证实,“一行代码”导致数月的《Apex 英雄》音频问题

Respawn 证实,“一行代码”导致数月的《Apex 英雄》音频问题

源节点: 2627193

今天的“制作视频游戏很难”新闻:Respawn 的旅程是为了追踪导致《Apex 英雄》中数月音频问题的错误。 不会爆炸的手榴弹、不会射击的枪支、没有来源的伤害,以及数月的痛苦调查——所有这些显然都是由《Apex 英雄》第 16 季更新中添加的一行代码造成的。

如概述 彻底的 Reddit 帖子 (在新标签页中打开) Respawn 社区经理 Amy Thiessen 表示,麻烦始于 16 月第 XNUMX 季开始时。 该工作室已经开始收到有关 Apex 中“消失的裸体”的报告。 Respawn 很快确定手榴弹并没有完全“消失”,但它们有时会在对玩家造成伤害的情况下无法爆炸。

“这在我们的第 16 季游戏测试期间没有发生,在初步报告后无法在内部重现,并且很难使用现场游戏视频确定,因为根本原因并不总是在玩家的 POV 中显示,”帖子中写道。

Respawn 在收到类似的关于缺少枪声 FX 和粒子效果的报告后,更好地解决了这个问题。 “经过初步调查,发现主要嫌疑人是我们的服务器用来为各种效果(例如某些声音、粒子系统、物理影响、子弹追踪器、爆炸)发送‘开始’/‘停止’命令的系统。”

开发团队更新:音频更新R / apexlegends

从本质上讲,比赛期间发生的某些事情可能会超出服务器对声音 FX 或粒子的限制,从而导致某些声音和 FX 丢失。

“从那里,理论上可能有什么东西淹没了这个引擎限制,每秒请求数千种效果!” 帖子说。 “但这是一个系统性问题,还是可能是一个单一的实体在起作用? 每个季节的更新都包含对资产、代码、脚本和关卡的数千次更改。 这意味着大海捞针。”

Respawn 求助于指标来帮助解决问题,但遥测中没有任何迹象表明存在明显的问题。 这向 Respawn 表明,这个错误是他们的系统以前从未见过的独特情况。

“这给我们留下了一个复杂的问题,我们知道这个问题正在影响我们的社区,但尽管有详细的报告,但很难重现,内部线索很少,而且没有任何指标可以明确证明这个限制正在被触及。”

你从那里去哪里? Respawn 决定通过故意破坏 Apex Legends 服务器来测试其超载效果理论。 该团队启动了一个测试版本并生成了 50 个角色,这些角色都同时开枪并无限使用各种能力来将服务器效果负载推到极限。 它奏效了——团队最终可以重现与错误报告类似的音频丢失,但它是如何发生在实际玩家身上的仍然是个谜。

“这为我们提供了 FX 会被丢弃的证据,但仅限于完全不切实际的测试用例。 我们对服务器性能的各个方面进行了调查,但没有发现任何确定的东西。”

随着第 16 季的火热进行,Respawn 密切关注了这个问题。 该团队最终注意到掉线的音频报告往往来自高水平的比赛。 这给了他们部署服务器更新的想法,让 Respawn 在较小的比赛子集中跟踪新指标,这立即带来了突破。

“当服务器更新完成时,我们找到了它。 一行代码被确定为问题的根本原因。 第 16 季的新武器。”

那把武器就是 Apex 最新的连射能量突击步枪 Nemesis。 Nemesis 有一个独特的机制,造成伤害会为枪“充电”并使其射击速度更快(如 证明 (在新标签页中打开) 由上面的 YouTuber Dazs 提供)。 这种充电效果通过枪管内的电弧在枪上直观地表现出来。 Respawn 表示,当枪支未装填或收起枪套时,一行代码旨在告诉这种效果“停止”,实际上是无限期地重复所有持有 Nemesis 在其库存中的玩家。

“这意味着每个拥有未充能的 Nemesis 的玩家都会在每一帧在服务器上创建一个‘停止粒子’效果,并且即使在武器被收起时也会调用这行代码。”

有趣的是,这也解释了为什么音频丢失在高水平游戏中更频繁地发生。 “14 个以 180 fps 运行 Nemesis 的客户端足以导致 FX 开始下降。” 这一次,顶级 PC 播放器拥有 坏处.

Respawn 表示,这也解释了为什么其内部测试没有遇到该错误。

“用于测试的构建可能没有足够的枪套 Nemesis 在玩,与缺失的 FX 相关性较少,或者在那个 fps 下没有足够的客户端——我们要记住这一点,并在未来的测试中改进。”

上周部署的一个补丁终于彻底解决了这个漏洞。 就是这样——一个麻烦的音频错误,其根本原因很复杂,从长远来看,这将帮助 Respawn 在类似错误到达玩家之前发现它们。 Respawn 在这篇帖子的结尾加上了一段关于测试的旁白,提醒玩家“玩 Apex 的玩家一分钟相当于 10 名测试员玩了一年的游戏!”

时间戳记:

更多来自 PC玩家