
游戏后台深度剖析 - APEX英雄

现任 Respawn 技术总监的 Samy Duc 揭开了《Apex 英雄》后端的神秘面纱:维持每场比赛运行的的服务器、网络代码和基础设施。
自第 6 赛季以来,游戏内的性能叠加层可实时显示上传/下载速率、Ping 值、丢包率和阻塞情况,将模糊的卡顿投诉转化为精确、可操作的指标。
每周的批量分析可在大范围内标记出故障硬件或网络瓶颈,而即将推出的实时警报(带有唯一的服务器 ID)将使调查和修复时间缩短约一半。
诸如 RPROF 性能分析和基于倒带的网络延迟补偿系统等先进工具,有助于精准定位 CPU 瓶颈、调和抖动、丢包以及不同的 Ping 值,并在玩家之间公平地分配“无意义”的延迟。
Apex 的 20 Hz 服务器滴答率(tickrate)在带宽、CPU 成本与模拟保真度之间取得了平衡,以几帧的输入延迟换取了完整世界状态的复制以及更丰富、全球化的游戏体验。
Samy Duc,现任 Respawn Entertainment 技术总监,在 2021 年分享了对 Apex 英雄后台的深刻见解,重点介绍了《Apex 英雄》的服务器、网络代码和基础设施在每场比赛背后是如何运作的。深入剖析了 Respawn 在线基础设施的蓝图。
间接地,这突出了任何游戏工作室(无论大小)都可以应用到其多人游戏中的最佳实践,以帮助提高其性能。
面向玩家的性能仪表盘
从第 6 赛季(2020 年 11 月)开始,《Apex 英雄》团队添加了性能覆盖图。这个游戏内仪表盘以千字节/秒为单位显示上传和下载速率,以毫秒为单位显示往返延迟,以及丢包和堵塞百分比,将模糊的抱怨转化为玩家和工程师都可以采取行动的精确数据点。这使玩家能够监控连接峰值。
通过将主观体验转化为量化指标,开发团队还可以利用这些信息在网络卡顿破坏比赛之前,锁定带宽瓶颈或抖动等问题。可以将其视为即时的玩家反馈,而当从宏观层面为开发团队看时,则是可以就性能采取行动的见解。它还有一个额外的好处,那就是消除了猜测,因为用户可以报告“15% 的丢包和 200 毫秒的延迟”,这极大地加快了故障排除和补丁部署的速度。
请注意,这也是 Edgegap 客户所采用的策略,即 Rivals of Aether 2。除了突出比赛期间的延迟以及比赛前的潜在延迟外,该策略还允许玩家收藏首选的服务器位置,并在比赛期间报告服务器,以帮助调查问题。
采取行动——构建监控有助于生成洞察
在幕后,《Apex 英雄》的数据科学部门会对一周的比赛进行分析。每场比赛的性能数据,从单独的丢包率到服务器 CPU 帧时间,都会被汇总和分析,以发现人类团队可能会遗漏的模式,例如特定数据中心中发生故障的网络交换机。这种方法具有扩展性。它让团队能够在系统性问题演变成全玩家范围的停机之前检测到它们,并与硬件合作伙伴合作更换故障机器。这是主动的。通过分享匿名的、选择性加入的指标,玩家可以帮助推动这些见解,因为他们知道在数百场比赛中可以精准定位并修复单个糟糕的服务器。
实时监控管道会在指标突破阈值的瞬间触发通知,并附带唯一的服务器标识符,使工程师无需关联时间戳即可找到并诊断确切的机器。这意味着不再需要手动翻阅日志。
通过更快的修复,较慢的服务器和网络微调应该通过简单的迭代和改进过程降为边缘情况,使比赛随着时间的推移变得越来越流畅和反应迅速。
慢动作服务器
慢动作服务器现在仍然(并且将来也会)继续发生。
当服务器的 CPU 无法完成其 20 Hz 的模拟循环(每 tick 50 毫秒)时,它就会开始落后,导致整个比赛在系统等待物理、动画和状态复制赶上时出现卡顿。这种延迟是痛苦的。
Respawn 积极移除性能不佳的硬件,例如遭受过热、降频处理器或故障组件困扰的机器,以维持一个始终达到性能目标的服务器集群。未来的更新旨在减少这些事件。实时警报和预测性分析将在性能下降影响游戏玩法之前捕获它们,因此慢动作比赛将成为罕见的异常现象,而不是每周都让人沮丧的事情。
WiFi——延迟的最大敌人
抖动和延迟峰值可能难以捉摸。虽然 Wi-Fi 用户可能会看到不可预测的 ping 值波动,但即使是有线玩家也可能会在服务器进程引入延迟时受到影响,在此之前,工程师必须在测试平台上重建条件才能识别瓶颈。
随着 RPROF 剖析工具的使用,情况发生了变化。通过捕获每个服务器任务(弹道计算、网络 I/O、物理模拟)的详细日志,RPROF 文件可以准确显示哪些操作占用了 CPU 周期,以便开发人员可以在新功能降低性能之前对其进行优化。这就像一张 X 光片。它帮助团队从代码的每个角落减少延迟,确保新的传奇、武器和技能在到来时不会出现意外的减速。
尽管如此,并非所有游戏都有机会克服 WiFi,因为像 VR 这样的硬件设计就是在 WiFi 上使用的。如果您是 VR 开发人员,请务必阅读 Edgegap 关于如何减少多人 VR 游戏和 XR 项目中的延迟的指南。
丢包
丢包并不总是开发人员的错。
互联网流量穿过多个 ISP 和对等互联点,当数据包丢失时(无论是在您的家庭网络、骨干网提供商之间,还是在数据中心链路内),它都会中断保持所有人同步的输入和更新流。
正如 Respawn 团队所强调的那样,追踪问题需要做大量的工作。该团队收集玩家的网络追踪数据以及来自数据中心的探测数据,然后与第三方提供商协商以修复薄弱的对等互联链路或拥塞的路由器。
幸运的是,有像 Edgegap 这样的游戏服务器托管编排服务为您处理这些“管道”工作。通过在 17+ 提供商中按需向其全球 615+ 个地点(全球最大且首个无区域限制的网络)编排多人游戏服务器托管。实现平均降低 58%+ 的延迟,并提高 28% 的公平性。
虽然 Respawn 凭借与 Electronic Arts 的关系,有能力负担 DevOps、工程师和销售经理来与提供商进行谈判,但现在所有工作室也都可以做到这一点。
Ping值
协调不同的 ping 值是一门艺术。《Apex 英雄》的延迟补偿系统为每次射击回溯世界状态,将高 ping 和低 ping 玩家在射击瞬间看到的内容进行合并,以决定命中,这种方式平等地分摊了“荒谬的偏差”,而不是偏袒低延迟用户。没有完美的解决方案。300 毫秒 ping 值的玩家可能会在掩体后被击中,就像低 ping 值的玩家有时在延迟歪曲其视野时会感到不公平地脆弱一样,但该系统确保了这些奇特现象随着时间的推移而达到平衡。这是一个刻意的选择。这意味着农村或国际玩家不会被只优先考虑最快连接的网络代码所抛弃。
回滚
射击有时仍会出现“无判定”的情况。无论是由于预测错误、物理引擎奇特现象还是暂时的网络不同步,您都可能会在本地看到流血和声音效果,但服务器上却没有显示任何伤害。这很伤人。
Respawn 正在构建自动检测工具,用于标记碰撞箱和轨迹中的差异,同时也依靠玩家提交的视频来发现仅在实战比赛中出现的漏洞。反馈循环非常重要。当您在报告无判定的同时附带您的性能指标时,就会加速为每个人隔离并修复根本原因的过程。
如果您正在考虑添加回滚功能,请务必在我们的回滚专题文章中阅读更多内容。
Tickrate(滴答率)与优化
Tickrate 是一个平衡举措,因为虽然将 20 Hz 提高到 60 Hz 可以将输入延迟从大约五帧减少到三帧,但它也会使带宽使用量(即网络流出)增加三倍,从大约 60 kB/s 增加到 180 kB/s,并且需要更多的 CPU 资源来模拟和复制完整的世界状态。
那笔额外的成本绝非小数目。
《Apex 英雄》基于快照的模型在每个 tick 保存完整的游戏状态,支持全局技能和丰富的互动,如果带宽受到更高 tickrate 的限制,这些技能和互动将会受到影响。边际收益感觉很小。该团队认为,这两帧的改进并不能超过完整保真度模拟以及为多样化的全球玩家群体提供更低网络要求的优势。
本文基于并引用了 Sammy Duc 发表在 EA 官方博客上的原创文章。原创内容的所有权利归其各自所有者所有。
书写者
加布里埃尔·帕伦特(总监)及雅各布·莫蒂尔(产品)的笔记









