介绍
大家好,我是 Apex Legends 的首席工程师 @ricklesauceur。今天我想带大家深入了解一下支持《Apex 英雄》的在线基础设施。
过去,我们很少公开讨论《Apex 英雄》的服务器、网络代码或在线基础设施。今天,我们希望开始改变这种状况。简而言之,我们今天想做的是:
- 分享一些关于我们如何致力于提升您的《Apex 英雄》在线体验的信息
- 承认并解释您在游玩过程中可能遇到的一些常见在线问题或连接故障
- 特别解答关于慢动作服务器、击中注册(hit-registration)以及滞后补偿系统如何运作等常见问题
- 提供一些关于服务器刷新率(tickrate)的综合笔记,并解释我们就其影响范围及非影响范围的思考
警告:这篇文章很长,因为它旨在对《Apex 英雄》的在线基础设施进行深度解析——这是我们长期以来看到许多玩家一直要求的。
我们将其视为长期对话的起点。因此,尽管我们在这里涵盖了很多内容,但肯定还有许多话题(如 DDoS 攻击、服务器崩溃错误等!)值得我们花更多时间去探讨。如果大家喜欢这篇博客,请务必告诉我们你们下次想了解什么,我们会继续分享。
对于那些已经准备好潜心钻研网络代码、服务器、刷新率等内容的玩家……欢迎!让我们首先从最近上线的一些改进开始谈起。
通过性能指标提升响应速度
在第六赛季中,我们引入了性能显示界面。它看起来是这样的,并为您提供有关游戏性能的基本信息。
“In”(输入)和“Out”(输出)是游戏消耗的带宽(以 kB/s 为单位)。您还可以看到延迟(以毫秒为单位)。丢包和数据阻塞(packet choke)以每秒数据包的百分比呈现。
这些数字能帮助您,也能帮助我们了解您在游玩时的游戏状态。换句话说,我们可以将您的感受转化为可操作的技术信息。
在此功能加入之前,我们经常从玩家那里听到“感觉有点不对劲”,但他们往往无法详细描述。现在,您可以准确地反馈:“我有 10% 的丢包,300 毫秒的延迟”等等。这彻底改变了一切,因为这些数字往往是判断问题根源的最佳指标。这一点我稍后会再提到。
在开发性能显示界面的同时,我们也开始追踪针对玩家和服务器的关键性能指标。这意味着如果有人反馈问题,我们可以调取他们的比赛记录,查看当时游戏中每个人的数据,包括托管该场比赛的服务器相关信息。
这是我们第一次采取大规模行动,为我们的团队提供个性化且有针对性的调查手段。这种方法取得了一些成功,但我们认为从长远来看,它难以规模化。首先,我们必须先收到您的反馈,然后派遣一名工程师去查看问题来源,接着(取决于问题所在)尝试进行修复。
在最近几个赛季中,我们开始寻求优秀的科学数据团队帮助,以每周为单位对数据进行批量汇总和处理(即收集和分析),从而检测过度的丢包和服务器性能问题。这种方法已经初见成效。例如,我们发现数据中心内有一台网络设备故障,导致托管在少数服务器上的每场游戏网络性能都极其糟糕。服务器本身没问题,但连接玩家与这些服务器的硬件导致了严重的丢包。我们遇到了很多类似的例子。
系统性分析数据的主要好处在于,它让我们能够交叉比对衡量标准和玩家数据以发现规律。因此,我们可以自信地说,我们的服务器群健康状况在逐周改善或恶化。数据分析也是一个很好的工具,当问题超出我们的控制范围时,可以帮助我们的合作伙伴修复问题。与其笼统地说“有问题”,我们现在可以说“具体什么地方有问题”,这节省了所有相关人员的时间。(顺便提一下,如果您愿意,可以在设置菜单的“游戏”选项中选择关闭“使用分享”。)
所以,自动化确实大有裨益。但还不够。
事实上,采用这种方法,我们在应对问题时仍然有些缓慢。我们需要等待一周时间,以便收集到可靠的数据并向上汇报,之后往往还需要一周时间来进行全面调查。从您开始察觉到问题时起,我们可能需要长达两周的时间才能找到修复方案,如果需要服务器补丁,部署解决方案就花费更多时间。
我们可以做得更好。我们也 一定 会做得更好。 让我们来谈谈解决方案。
首先,除了每周报告,我们已经转向实时预警。它将为我们提供与现在相同水平的信息,但速度会更快。我们将能够立即修复硬件问题,或立刻开始调查并研发补丁。我们理解等待的挫败感,我们正积极尝试缩短从预警到修复之间的时间。
其次,我们将向性能显示界面引入一个新的服务器唯一 ID(“SID”),这将使我们能更快地找到您所在的服务器。目前,您提供日期和时间,我们需要将其与现有数据进行关联才能找到您所在的服务器。很快,我们将不再需要这样做。
我们预计以上两种解决方案都将在接下来的赛季《Apex 英雄:遗产》中开始推广。对于玩家而言,结果将是服务器问题的处理速度更快,有时能比现在缩短两倍的时间。
深入剖析常见问题
现在进入有趣部分,让我们对您可能遇到的服务器问题进行大概分类。下面的列表并不详尽,但我希望它能解答您的大部分疑惑。
服务器运行缓慢(慢动作)。
大家都喜欢这个。我们的服务器运行在 20Hz。这意味着它们每 50 毫秒(1 秒/1000 毫秒除以 20)模拟一次完整的世界状态。
在讨论服务器性能时,我们不谈论 FPS(每秒帧数),因为服务器不显示图像。相反,服务器计算的是“状态”,但基本原理是一样的。它接收用户输入(来自网络)、运行物理模拟、向客户端发回新的世界状态,然后循环往复。如果这个过程持续时间超过 50 毫秒,游戏就会为了让服务器完成模拟而减慢速度。因此,您就会遇到慢动作服务器。

服务器帧时间概览。第 5 列是 50 毫秒的目标值。在此之下的所有数据都更快。您可以看到这台服务器很稳定,且速度高于要求。

相比之下,这台服务器从未达到帧时间目标,且大部分时间运行在 200 毫秒左右的帧时间(慢了 4 倍)。这就是典型的慢动作服务器。
导致这种情况的原因有很多,有时与数据中心中运行不正常的机器有关。比如 CPU 降频、过热等。
当我们检测到这些时,通常会移除这些机器。这意味着我们在字面上会致电服务提供商,指出该机器的问题,并要求将其下线。
本博客前面提到的实时检测解决方案在下个赛季推出时,应该会大大减少此类问题。我们非常致力于解决这个问题,因此我们会密切关注。
我的延迟时高时低。
如果您在使用 WiFi 玩游戏,那我们也没多大办法!除此之外,延迟的剧烈波动有时可能与我们的服务器性能有关。
我们都知道,即使游戏通常以 60fps 运行,当屏幕上发生大量事件时,这个数值也可能改变。即使只是丢失了几帧,您也能感觉到。服务器也是一样。在这里,自动检测对于确定问题的根本原因帮助不大。过去,我们不得不回到开发服务器上重现场景,但这非常耗时,且总是像盲人摸象——您的机器可能运行在不同的服务器硬件上,或者具有不同的设置,所以很难一对一地进行复刻。
值得庆幸的是,我们的运营团队制作了一个工具,让我们能够获取所谓的 RPROF 文件。这基本上是服务器在每一帧内正在做什么的概览(弹道模拟、网络出入、玩家移动等)。有了 RPROF 文件,我们就能够知道是什么在降低运行速度,工程师也可以开始优化。通常,问题与赛季更新带来的新特性所增加的性能需求有关。
例如,您可能记得在第 7 和第 8 赛季开始时,冠军展示界面的卡顿。这是因为比赛中的所有玩家都在同一地点生成,并且重叠在一起。(而且由于 UI 的遮挡,您甚至看不到他们!)物理模拟非常讨厌同一位置存在重叠对象,我们的物理引擎试图将所有模型互相推开,从而导致服务器 CPU 激增。

各地区受服务器低性能(不一定指慢动作)影响的比赛百分比。您可以看出某些地区随时间推移而改善,而另一些则有所退化(X 轴为时间)。

US 西区的详细视图,让我们能够检测故障机器(X轴为时间)。图表中的中断非常清晰。一些机器受到影响,而另一些则保持稳定。
我们预计, RPROF 文件的使用将更好地帮助我们优化游戏中加入的新特性,并在未来普遍降低延迟。为所有玩家降低延迟是我们的重点,而像这样的更好工具对于实现这一目标至关重要。
我有很多丢包/数据阻塞。
这是一个极其棘手的问题。这大概率不是您的错,同时也通常不是我们的错!
这与互联网流量从您的设备到我们的数据中心再返回给您的路径有关。起初,您的网络流量处于您的 ISP(互联网服务提供商)网络中。您的 ISP 可能出现了故障,导致您的信息连同其他客户的信息一并丢失。这会导致游戏客户端不知道周围玩家发生了什么,或者游戏服务器不知道您想要射击或向特定方向移动。在此过程中,您的 ISP 网络与我们的数据中心网络之间也存在连接。沿途的任何地方都可能出现问题。
事情进展顺利时,我们称这一过程为“对等互联(Peering)”。很多时候,当两个网络之间的连接存在薄弱环节时,就会出现对等互联问题。这种情况在沿途可能会发生多次跳转。当然,所有来自《Apex 英雄》服务器的信息都需要传回给您,通常还会走不同的路线。您应该能理解为什么这变得如此复杂。
如果我们想帮忙解决这个问题,我们要做的第一件事就是检测中断点在哪里。这很难自动化,因为我们需要从您那里获取数据,也需要从服务器获取数据,以便我们从两个“视角”观察问题,并沿途进行探测,查看问题出在哪里。
截至目前,我们请求玩家通过某种方式提供网络追踪数据,我们也会在数据中心端做同样的事情,以尝试检测拥塞点所在。这是极其耗时且难以解决的,因为根据我们的发现,我们不得不与世界各地的不同商业合作伙伴进行协商。我们希望自动化能帮助改善此流程,目前我们也在研究一些尚处于早期阶段的改进措施。
当谈到我们正在讨论这类网络流量问题时,好的一点是这些问题往往是大面积发生的,而不是针对任何特定个人的。这意味着为一名受影响的玩家修复问题通常也能缓解许多其他人的问题。我们也在积极减少游戏使用的带宽,这有助于缓解问题。
主机/节点
本地 ISP - 最好:22,平均:31,最差:264
ISP 1 - 最好:27,平均:185,最差:515
ISP 2 - 最好:24,平均:194,最差:652
游戏服务器 - 最好:31,平均:263,最差:522
这是一位职业玩家的网络追踪(显示延迟)数据,从他的互联网调制解调器到我们的某台服务器。我们进行了多次探测以评估互联网连接的真实健康状况。您可以看到他在最好的条件下以 31ms 的延迟享受游戏。但最差时达到了 522ms 左右。在这种情况下,他的游戏体验极差,因为他的连接波动了 500ms 以上。连接在他的本地 ISP 网络上有点不稳,但平均值说明这是一个罕见的特例(平均 31ms 而最差 264ms,应该是个别突发事件)。但随后我们看到本地 ISP 和 ISP1 之间存在延迟峰值,ISP1 是玩家和游戏服务器之间的一个节点。我们可以几乎肯定两者之间存在丢包和路由问题。这超出了我们的控制范围,但我们可以将此问题通知这些合作伙伴。通常,解决这种情况符合所有人的利益。
我在门/墙后面被杀,有时还会回退到我之前的位置。
这是一个敏感话题。这与滞后补偿有关。
在网游诞生以来的每一款游戏中,开发者需要解决的主要问题是如何在非实时运行的环境中模拟实时动作。本质上,您在网游中所做的一切都会因为与服务器往返的延迟而产生滞后。许多因素都会增加这种延迟:输入、渲染,当然,还有服务器刷新率。
更糟的是,您的对手几乎肯定以不同于您的延迟水平进行游戏。为了解决这个问题,我们的服务器不仅要不断地观察此时此刻您和对手身上发生了什么,还要观察双方输入操作时,从各自视角看曾发生了什么。滞后补偿是将略微不同的体验合并到一个共享现实中的艺术。
没有完美的解决方案。不存在唯一真理。归根结底,服务器就是一种时间机器。它不断地将世界状态回滚,以查看您的射击是否击中目标,然后相应地为所有人更新世界状态。
为了更好地说明这一原理,我的同事 Earl Hammon 写了一篇关于公平和滞后补偿,以及它在《Apex 英雄》中如何运作的短文。我在下面与大家分享:
让我们来看看《Apex 英雄》中名为 高延迟(HIGH) 和 低延迟(LOW) 的两名玩家在各种场景下的表现。假设 HIGH 的 ping 值很高(300ms),而 LOW 的 ping 值很低(50ms)。他们的 ping 值差异为 250ms。
如果他们在同一个现实时间互相射击会发生什么?好吧,LOW 的射击会比 HIGH 的射击更早到达服务器,所以 LOW 占据优势。
如果其中一人转过一个拐角,突然看到对方会发生什么?好吧,LOW 在这里同样占据优势。LOW 的状态更“靠近现在”,所以他们能先看到 HIGH。再一次地,由于 ping 值,LOW 占据了优势。这与 LOW 的子弹更快到达服务器的优势叠加在一起。
这些情况在 LOW 占据优势的意义上是“不公平的”,但从在这个情境下预计低 ping 玩家会获得优势是合理地角度来说,它们又是“公平的”。
那么,如果 LOW 躲进角落掩护呢?嗯,当 LOW 还没进入遮蔽物时,HIGH 仍处于过去的状态,所以 HIGH 可以在 Low 完成掩体躲避前射击 HIGH,但 LOW 直到 HIGH 的数据包传到服务器再传回给 LOW 之前都不会知道。此时,LOW 已经认为自己安全地躲在掩体后了,却还是被击中了。从 LOW 的角度来看,这简直毫无道理。
然而,这与之前那些有利于 LOW 的不合理情况完全对称!当 LOW 从掩体探出攻击 HIGH 时,LOW 可以看到并射击 HIGH,而在 HIGH 看来 LOW 仍躲在掩体后。从 HIGH 的角度来看,被一个仍躲在掩体后的人射击,简直毫无道理。这种荒谬感无法消除,只能在一名玩家与另一名玩家之间转移,因为 ping 值是真实的,而玩家的延迟各不相同。
有些人会认为,由于 ping 值差,当 LOW 认为自己躲在掩体后却被 HIGH 击中,这对 LOW 是不公平的。他们建议的替代方案是 HIGH 必须自行补偿他们的高 ping。这将要求我们实施一种不平等且非对称的方式来处理延迟。
因为糟糕的 ping 而认为自己躲在掩体后却被击中,这种感觉很糟糕,这正是 LOW 可能遭遇的情况。因为糟糕的 ping 而在还没看到人之前就被击中,这种感觉也很糟糕,这正是 HIGH 可能遭遇的情况。但这种荒谬感是对称分布的。
我们想明确一点:并非所有在线游戏都以《Apex 英雄》这种方式运作。有些游戏总是给予低 ping 玩家优势,但在我们的系统中,我们主动选择了不这样做。这是我们在权衡利弊并认真思考在线竞争中的公平性后,有意采取的立场。
用简单的话来解释我们的系统:低 ping 玩家并不总是比高 ping 玩家更有优势,有时也会经历“不合理的情况”(对我们来说,这是个技术术语)。
这是我们系统中有意设计的权衡取舍。但好处是,即使您的延迟高于平均水平,您也可以游玩《Apex 英雄》并表现良好,这对偏远地区的玩家,或在连接不稳定的地区玩的玩家非常重要。我们认为我们应该在每一个机会通过减少“不合理的情况”来提升体验,但当我们必须面对不理想的情况时,我们希望以对所有玩家平等且公平的方式进行处理。
这就是为什么几乎每当您遇到被墙后击中或拐角刚转出来就被击中这类不合理情况时,通常可能都是由于玩家之间不可避免的延迟差异,以及我们系统处理这种差异的方式所致。尽管如此,我们仍致力于在每一个机会减少此类情况。我们不仅希望每个人都能获得公平的体验,还希望大家都玩得开心。
我的一些射击没有被注册。
谈谈击中注册。一次“没注册(no reg)”或射击未注册意味着您认为自己击中了目标,但服务器本质上不同意。从您的角度看,您获得了各种形式的确认,如血花喷溅和声音反馈,但没有出现伤害计数。在《Apex 英雄》这样的射击游戏中,这极其令人不悦。
这可能由多种原因引起。有时,高延迟或丢包会导致您的本地模拟与服务器略微不同步。您朝您看到的方向射击,但实际上您射击的是他们之前所在的位置。不幸的是,直到您的游戏版本赶上世界状态时,您才发现这一点。
有时,这仅仅是游戏物理模拟的一个错误。为了给您即时反馈,我们非常依赖一个叫做预测的概念。当您射击时,我们知道武器的弹道,因此我们可以预测子弹在本地会飞向哪里,而无需服务器告诉您。这让游戏感觉响应更快。
通常,客户端和服务器达成一致,子弹飞向预测位置。过去,我们在计算弹道和子弹轨迹的方式上遇到过一些漏洞(针对所有子弹大小不是一个点的武器,例如狙击步枪)。这种漏洞很难检测,所以我们为内部测试设置了一个可视化工具,帮助测试人员第一时间发现问题。遗憾的是,这些诊断代码在现网运行太繁重(由于带宽限制),因此我们只能依赖内部测试。

每次发生没注册时,我们都会绘制命中框和子弹轨迹(大约,轨迹应该弯曲一点,但这样足够了!)。这对我们来说是一个辅助识别工具,能让我们知晓问题发生,并帮助我们查阅服务器日志。
我们在两方面取得进展:
首先是不停地深挖导致命中检测问题的各种漏洞。我们也一直在开发工具来自动化检测,以便帮助开发者避免引入任何新的问题。这将是我们持续不懈的努力。
第二点是与您合作! 当玩家发给我们相关的击中检测问题片段时,它可以帮助我们判断是否有我们需要解决的漏洞。通常,我们意识到收到的片段其实与延迟问题有关,而非击中检测问题,所以在反馈击中注册问题前,请务必查看您的性能显示界面。不过,如上所述,我们过去通过这种方式发现并解决了漏洞,因此您的反馈有助于我们让游戏变得更好。提前致谢!
那些导致我无法登录的错误,比如“code:net”怎么办?
“Code:net”是一个通用错误消息,当您的游戏与服务器超时后,游戏就会显示该信息。它可能由我们或您端的无数问题引起。事实上,我们发现一些最严重的 code:net 错误(以及相关错误,如 code:leaf 等)可能更多与支持游戏的 Respawn 服务有关,需要进一步调查。
我们已经采取了许多措施来降低 code:net 错误发生的可能性,许多玩家在联系我们的支持团队后问题都得到了解决。如果您无法登录且收到了 code:net 或类似的消息,请考虑使用 EA 帮助网站 进行反馈。
由于 code:net 是一个通用消息,它可能指代无数不同的问题。最近几周我们在解决其中一些问题上取得了一些成效,但我们知道还有很多工作要做。请向我们反馈问题,我们会尽力尽快解决它们。相信我们,我们和您一样讨厌这个错误。
关于服务器刷新率
重头戏来了。我们想透明地处理这个问题。很多玩家问过我们关于服务器刷新率的问题,为什么不干脆像其他在线射击游戏那样从 20Hz 增加刷新率。
我们解释过刷新率如何影响屏幕所见内容的总刷新率,所以这是一个非常合理的问题。然而,将一款游戏的刷新率与另一款相比较,比您想象的要复杂得多。我们会尝试解释原因。
服务器的刷新率是服务器每秒运行模拟的次数。这是一个固定数字(参考有关慢动作服务器的章节)。Apex 使用基于快照的复制模型。这主要是指在每次刷新结束时,服务器保存世界状态并将其复制到所有客户端。这包括了大量信息,使我们的武器、地图和传奇设计能够保持最高保真度。
要在《Apex 英雄》中获得成功,您必须关注地图各处发生的各种信息。战术技能的使用、被动技能的激活、终极技能的释放、空投补给、或者有小队进入了 Crypto 无人机的范围。我们不希望玩家错过其中的任何一点。我们的设计师能够创造出本质上真正全局的道具和工具。许多游戏不会在每次刷新时计算完整的世界状态,因此试图基于“20Hz”对比“30Hz”这样的单一数字来比较两款游戏是具有误导性的。
问题在于:每次刷新时到底发生了什么? 我们希望世界状态尽可能准确,这就是为什么我们的服务器在每次刷新时都会保存完整世界状态的原因。如果我们不这样做,虽然能在服务器上节省一些 CPU 开支,但我们会损失模拟的准确性,而这不值得冒险。
简单来说,刷新率越高,发送给所有玩家的带宽就越大。如果我们从 20Hz 服务器迁移到 60Hz 服务器,意味着游戏使用的带宽将增加两倍。截至今天,《Apex 英雄》在游戏开始时大约消耗 60kB/s。60Hz 服务器将消耗 180kB/s。这听起来可能不多,但实际上不少,我们一直在寻找减少所需带宽的方法。
但带宽稍微增加一点有什么关系吗? 保持游戏带宽成本处于低位比视频流媒体等应用更为关键。对于高带宽应用(流媒体、下载等),通过缓冲几分钟的流、降低流质量等手段,抖动或卡顿很容易隐藏。您可能不会在下载中看出抖动,而且通常不在乎速度是否有几百毫秒的波动。
游戏没这种奢侈条件。哪怕跳过几次 50 毫秒的间隔可能就会开始感到糟糕。再跳过几次,您就会进入一个恶性循环,必须发送越来越大的更新包来赶上进度。没有例外,因为您的客户端需要一个完美的全局状态才能保持准确。
上面的例子说明了跨游戏比较刷新率是多么复杂,因为每次刷新包含的信息各不相同。还有另一个复杂因素,即便服务器有相同的刷新率,服务器可以接收和发出的输入限制也并不总是相同。具体来说:在许多游戏中,如果服务器以 60Hz 运行,这意味着客户端只能发送 60Hz 的输入。如果您以 60fps 运行没问题,但如果您的客户端以 120fps 运行,您将损失一半的输入。《Apex 英雄》并非如此。我们处理各种可变速率的输入表现良好。(顺便提一下,在 Apex 中,您的 FPS 越高,带宽消耗就相应越高。)
好吧,我们讨论了增加服务器刷新率可能带来的一些负面影响。但是,从 20Hz 提升到 60Hz 有什么好处呢?拜托,Respawn!那样服务器不就快了三倍,好三倍了吗?做就是了!
基于我们的发现,这并不会带来明显不同的体验,我们想解释原因。
为了探讨这个问题,假设您的 ping 或延迟平均约为 50 毫秒。请记住,您的 ping 衡量的是您的机器与服务器之间完整往返的速度。因此,假设没有波动延迟或硬件滞后等其他问题(例如,显示设备引入了 20-50 毫秒的延迟),服务器将在您按下按钮或移动鼠标后 25 毫秒(半个 ping)接收到您的输入。
由于我们的服务器是 20Hz 的,它们每 50 毫秒更新一次世界状态(每秒 1000 毫秒 / 每秒 20 次刷新 = 每次刷新 50 毫秒)。因此,在最坏的情况下,您的输入将在 75 毫秒后由服务器处理(25 毫秒 + 50 毫秒)。
要弄清楚这 75 毫秒的延迟对您的实际体验意味着什么,您必须考虑您的帧率。这里的数学计算可能很复杂,但请记住,在 60fps 的游戏中,每一帧需要约 16.67 毫秒(每秒 1000 毫秒 / 每秒 60 帧 = 每帧 16.67 毫秒)。如果您的输入在 75 毫秒后由服务器处理,如我们上面的例子,而您的游戏以 60fps 运行,这意味着您的输入与对游戏产生影响之间的滞后大约是五帧(每次更新 75 毫秒 / 每帧 16.67 毫秒 = 约 4.5 帧,进位为 5 帧,因为不存在半帧)。
如果您对 60Hz 服务器进行同样计算,输入与服务器处理的最大延迟将是 41.67 毫秒(25 毫秒 ping + [每秒 1000 毫秒 / 每秒 60 次刷新 = 每次刷新 16.67 毫秒] = 41.67 毫秒)。
41.67 毫秒肯定比 75 毫秒好,但以帧率来看会产生什么结果呢?让我们再次假设运行在 60fps。每帧占用 16.67 毫秒,那么您的输入与服务器识别它们之间的滞后大约是三帧(每次更新 41.67 毫秒 / 每帧 16.67 毫秒 = 约 2.5 帧,进位为 3 帧,同样没有半帧)。
综合所有这些计算,您会发现 20Hz 服务器导致约 5 帧的延迟,而 60Hz 服务器导致 3 帧的延迟。所以,为了三倍的带宽和 CPU 开支,您在 最佳 场景下只能节省两帧左右的延迟。 好处确实存在,但并不巨大,且无法解决那些与纯粹的滞后(如躲在掩体后被击中)、ISP 级别问题或漏洞(如击中注册和慢动作服务器)相关的问题。
我们的例子分析了从 20Hz 提升到 60Hz 的好处。您可以按照同样的计算逻辑推导其他跃升,比如 20Hz 到 30Hz 甚至 40Hz,会发现帧率方面的提升同样非常微小。您需要非常大幅度地增加刷新率才能真正开始感觉到变化——即使是 20Hz 到 60Hz 的飞跃,感觉也就像 58 FPS 和 60 FPS 之间的差异。这种差异并非一无是处,但我们衷心认为,它不足以让我们将刷新率更改的优先级排在我们可以做的其他更高效的改进之上。
结语
我们想以此结束,承认在线问题给玩家带来的真实且巨大的挫败感。当您必须处理滞后、没注册或慢动作服务器时,这糟透了。它让您抽离了游戏,而且当您试图冲排位分,或者与朋友进行精彩操作,或者只是想度过一个放松的夜晚时,这会让人感到非常沮丧。
谈论在线问题的挑战在于,当我们开始解释我们的系统,或者我们对诸如滞后补偿或刷新率等问题的立场时,对于那些只想让游戏表现更好的玩家来说,这可能会开始让人感到非常沮丧。如果您在使用《Apex 英雄》时遇到延迟、服务器崩溃错误、账户损坏问题或任何其他挑战,您可能并不想听关于我们“不去做什么”的话。
归根结底,我们只想让这个游戏变得更好。在线体验越好,玩家就越多,这让我们能够继续做我们热爱的工作。
这就是为什么在这篇博客中,我们分享了我们在不久的将来追求的一些改进,包括:
- 使用实时预警,使我们能够识别问题并更迅速地做出响应
- 实施标识服务器的工具,以便我们可以迅速移除和替换问题服务器
- 聚焦于慢动作服务器问题——移除问题服务器只是第一步,我们的目标是随着代码更改从根本上大幅减少此类情况
- 通过对新特性进行更好的优化来降低延迟
- 修复击中注册漏洞并构建自动化检测工具,帮助我们避免引入新的漏洞
但我们希望您知道,这些并不是我们正在做的全部。我们正与从服务器级到 ISP 级的合作伙伴协作,以改善我们的在线基础设施并加大投入,最终目标是让玩家反馈更少的问题并获得更好的整体体验。我们计划在未来的博客中分享更多有关这些努力的进展,届时这些努力将开始见到成效。
我们的希望在于,如果我们开始与您更多地沟通关于我们关心的议题,我们将开始共享更多共同语言来探讨我们所处理问题的根本原因。这就是我们写这篇博客的原因。我们希望它解释了我们的思维过程,并揭开了运行一款在线射击游戏的技术细节。我们希望这是未来更多对话的起点。
感谢阅读!
- Samy (Ricklesauceur) 及 Apex Legends 团队
免费游玩《Apex 英雄》 现已登陆 PlayStation 4、PlayStation 5、Xbox One、Xbox Series X|S、Nintendo Switch,以及通过 Origin 和 Steam 登陆 PC。
关注 Apex Legends 的 Twitter 和 Instagram,订阅我们的 YouTube 频道,并查看我们的 论坛。
立即注册我们的 通讯 ,通过电子邮件获取最新《Apex 英雄》的新闻、更新、幕后内容、独家优惠及更多信息(包括其他 EA 新闻、产品、活动和促销信息)。
本公告内容可能会随着我们听取社区反馈并持续开发和演进实时服务与内容而有所变化。我们将始终努力让社区尽可能知情。有关更多信息,请参阅 EA 的在线服务更新: https://www.ea.com/service-updates。
*可能需要适用的平台账户和平台订阅(需另行购买)。需要持续的互联网连接和 EA 账户。适用年龄限制。包含游戏内购买。
