《使命召唤》的网络代码 - 多人游戏开发的见解

《使命召唤》的网络代码 - 多人游戏开发的见解
《使命召唤》的网络代码 - 多人游戏开发的见解
《使命召唤》的网络代码 - 多人游戏开发的见解

网络代码无疑是任何多人游戏中最关键的组成部分之一。

之前,我们已经详细介绍了《使命召唤》的基于技能的匹配机制的白皮书中适用于所有多人游戏开发者的见解。

在本文中,我们将讨论适用于所有多人游戏开发者的关键见解,关于世界上最受欢迎的在线游戏之一《使命召唤》及其网络代码。这些见解源于动视2019年的解释,由当时的无尽战争制作总监保罗·海尔和在线工程总监米奇·桑伯恩提供。

基础:理解客户端-服务器架构

现代战争采用客户端-服务器模型,多个客户端与一个中央的、权威的服务器进行交互。每个玩家的设备充当客户端,持续向服务器发送输入数据,同时接收世界状态更新。服务器对游戏状态拥有最终权威,处理所有玩家输入并将结果广播回所有连接的客户端。

这种权威的方法确保了所有玩家之间的一致性。当你开火或移动角色时,你的客户端和服务器都会同时处理该输入。然而,只有服务器的版本才成为所有其他玩家看到的官方游戏状态。

在线游戏的网络代码是什么?

网络代码涵盖了在实时多人体验中同步多个玩家游戏状态的所有网络系统。它处理数据传输、预测算法、延迟补偿以及当不同客户端报告冲突信息时的冲突解决。

现代网络代码远远超出了简单的数据交换。它包括复杂的预测系统、回滚机制和动态适应策略,尽管存在网络缺陷,仍然保持可玩体验。该术语最初描述游戏引擎中的网络代码,但现在代表了使在线多人游戏能够运作的整个技术生态系统。

有效的网络代码必须平衡多个相互竞争的优先事项:响应性、一致性、公平性和可扩展性。

网络代码的功能是什么?

网络代码执行几项关键功能,使多人游戏成为可能。它在所有连接的客户端之间同步玩家位置、操作和游戏状态变化,同时保持一致性,尽管存在网络延迟和数据丢失。

该系统会根据当前趋势预测未来的游戏状态,使游戏即使在数据包延迟或顺序错误时也能继续顺利运行。当预测被证明不正确时,回滚机制将游戏状态回溯到分歧点,并使用正确的信息重播事件。

网络代码还实现了延迟补偿技术,在确定命中注册和玩家互动时考虑网络延迟。这些系统确保具有不同连接质量的玩家能够公平竞争,而没有显著的劣势。

此外,现代网络代码包括作弊检测和验证系统,验证客户端数据是否符合服务器期望。这防止恶意玩家操纵其本地游戏状态以获得不公平的优势。

当网络失败时:数据包丢失的挑战

网络中断主要以两种方式表现出来。第一种情况是客户端未能接收服务器数据,使得玩家无法获得至关重要的世界状态信息。没有这一数据流,客户端的游戏根本不知道接下来该渲染什么。

第二种情况涉及服务器缺失客户端输入数据。传统方法只是将受影响的玩家冻结,直到数据到达,然后瞬间将其传送到新的位置。这造成了令游戏无法正常进行的视觉伪影。

无线干扰、ISP流量整形、CPU峰值和路由器缓冲都会导致数据包交付的差异。这些因素导致客户端和服务器之间的数据传输时间出现不可预测的延迟。

三管齐下的解决策略

Infinity Ward根据网络状况采用三种不同的策略。

  • 缓冲实时分析数据包交付率,将客户端尽可能靠近服务器的最新数据,而不冒险造成视觉抖动。系统动态调整客户端更新率,以保持这个精准的平衡。

  • 外推采用最后接收到的输入,并假设玩家继续执行相同操作,直到新的数据到达。这对于一致的移动表现良好,但当玩家突然改变方向时可能会造成视觉上的“跳动”。

  • 预测将外推输入视为权威服务器数据,为所有玩家创造平稳的运动。然而,过多的预测会使在网络问题上遇到的客户端无法玩下去。

现代战争的引擎同时支持这三种方法,根据对每个个人客户端的实时网络分析混合策略。这避免了连接不良的单个玩家降低整个比赛的质量。

“在掩体后死亡”现象解释

在掩体后死亡的经典挫败感体现了网络代码原则的实际应用。当你暴露并看到狙击手的反光时,你决定奔跑产生了一连串复杂的网络事件。

你的暴露位置传递到服务器,服务器更新你的位置信息并将其广播给其他玩家。狙击手在开阔地看到你并开火,将该动作发送回服务器进行权威处理。然后,服务器将击杀结果发送回你。

总的系统延迟决定了你在掩体后死亡的显现时间。外推实际上可以通过提前预测玩家位置来减少这种效果,有效地打破往返数据包的时间。

数据驱动的优化

Infinity Ward的方法不仅限于初始开发,还通过基于现实世界数据收集的持续优化来扩展。团队持续监测服务器和客户端行为,从个别玩家的体验中收集遥测数据,以识别改进机会。

测试数据确认了他们的缓冲方法的有效性,系统在不频繁超限的情况下始终在最佳阈值下运行。这种基于数据的方法在发射后继续进行,定期与实时玩家群体进行测试。

结论

《使命召唤:现代战争》的网络代码代表了在保持全球数百万玩家可玩体验的技术限制方面的一些有趣见解。该系统在缓冲、预测和动态策略混合方面的复杂方法展示了现代多人游戏如何应对实时网络的固有挑战。

Infinity Ward工程团队的见解表明,良好的网络代码并不是消除网络问题,而是优雅地处理问题在不可避免地出现时。

他们的做法是以坚实的低延迟基础为起点,在其上构建坚韧的容忍系统,为即便是在需求最高的多人环境中保持质量提供蓝图。这种网络代码是定制构建的,使大多数开发者无法使用。

幸运的是,Edgegap的配对系统是唯一广泛可用的集成延迟规则的配对系统。由于它完全融入Edgegap的调度器,它还接入了世界上最大的边缘网络——这使得你的多人游戏能够将其游戏服务器部署到离用户最近的地方。平均降低延迟58%,并为78%的玩家提供低于50ms的延迟。

---

本文基于并引用了动视的原始文章他们的官方解释。原始内容的所有权利均归各自所有者。

书写者

Edgegap团队