
权威服务器、中继和对等网络 - 理解网络类型及其对每种游戏类型的好处

权威服务器:由一台服务器保存真实的游戏状态并验证每位玩家的操作。当它在玩家无法控制的基础设施上运行时,它就是专用服务器,这是大多数竞技类游戏采用的模型。
中继:中继在无法直接连接的玩家之间转发数据包。它能解决连接问题并隐藏 IP 地址,但不运行任何游戏逻辑,因此玩家的本地设备仍然控制着整场比赛。
点对点(P2P):玩家的设备直接进行连接,要么连接到托管比赛的一位玩家,要么连接到其他所有同行玩家。它不需要服务器成本,但主机可以修改游戏,且 NAT 会阻止某些连接。
本文涵盖的其他见解
两个独立的问题:“谁拥有游戏状态”(权威性)与“谁的硬件运行它”(托管)是不同的选择,而中继无法回答这两个问题中的任何一个。
中继比原始 P2P 更安全,但并非绝对安全:主机仍然可以修改比赛,而且权威逻辑存在于任何玩家都可以反编译的构建版本中。
专用服务器有不同规模:从轻量级的中继型或多房间服务器,到完整的模拟,每种服务器都将权威性保留在玩家无法控制的设备上。
点对点模式适用于极少数游戏:仅限好友的对局和确定性同步(lockstep)游戏,且没有需要保护的排名赛或经济系统。
选择多人游戏如何连接玩家取决于几个很容易混淆的决定。本篇解释将这些决定拆开,然后将每个决定映射到其适合的游戏类型。有关更广泛的网络代码(Netcode)图景(延迟、嘀嗒率、预测),请从 Edgegap 的网络代码基础开始。
主导权与托管之间有什么区别?
每种多人游戏架构都要回答两个问题。哪台机器对发生的事情拥有最终决定权?以及谁的硬件在运行这台机器?
Unreal Engine 的网络文档清楚地阐述了第一部分:"服务器作为游戏的托管方,拥有唯一、真实的权威游戏状态。" 同样的文档定义了运行该服务器的两种方式。专用服务器是 "没有本地玩家的服务器。" 监听服务器是 "同时也拥有托管游戏的本地玩家的服务器。"
两者都具有主导权(权威性)。但只有一个是专用的。
这就是为什么 "主导的(权威的)" 和 "专用的" 不是同义词,尽管它们经常被这样混用。无头(Headless)是第三个、独立的术语。它描述的是没有渲染、音频或输入的构建版本,而不是该版本运行在何处。
模式 | 谁拥有游戏状态 | 在何处运行 | 数据包如何传输 |
|---|---|---|---|
专用服务器 | 服务器 | 玩家无法控制的基础设施 | 每个玩家到服务器 |
监听服务器(主机-客户端) | 托管玩家 | 该玩家的机器 | 每个玩家到主机 |
中继后方的监听服务器 | 托管玩家 | 该玩家的机器 | 每个玩家到中继,再到主机 |
全网状对等网络(Full-mesh P2P) | 每个对等节点,运行相同的确定性模拟 | 每个玩家的机器 | 每个对等节点到所有其他对等节点 |
什么是专用服务器?
专用服务器在玩家无法控制的机器上运行游戏。客户端发送输入。服务器决定发生了什么,并将结果发回。
《火箭联盟》(Rocket League)是一个有据可查的例子。2015 年,Psyonix 创始人 Dave Hagewood 解释说:"我们决定使用专用服务器的原因之一,是为了控制权威的物理模拟。" 当球体物理决定比赛结果时,任何人的客厅电脑都不能充当裁判。
将主导权移出玩家机器会同时改变以下四件事:
无主机优势。 没有玩家在零延迟的情况下连接到权威服务器,而其他所有人都在等待往返时间。
无主机迁移。 玩家退出只是掉线,而不是整场局的结束。
无主机硬件瓶颈。 嘀嗒率、玩家数量和带宽由工作室设置,而不是由被选中托管的玩家决定。
服务器端系统的立足之地。 输入验证、持久化、遥测和回放需要一台工作室信任的机器。
然而,主导权只能保护实际在服务器上运行的内容。Bungie 在《命运》(Destiny)的克洛塔突袭中吸取了这一教训,该副本中构建在客户端系统上的 Boss 逻辑允许玩家通过拔掉网线来强制获得有利结果。Edgegap 的 《命运2》网络架构深度剖析 涵盖了这一案例。自瞄和透视挂也运行在客户端,因此它们仍然需要独立的防作弊层。我们的 《守望先锋》深度剖析 展示了服务器主导的游戏如何在不信任客户端的情况下仍然在客户端进行预测。
专用服务器:类型、游戏、优缺点
关键游戏类型: 第一人称射击游戏、战术竞技(吃鸡)、英雄射击、体育、格斗游戏、生存和持久世界,以及任何具有排位赛或游戏内经济系统的模式。
使用工作室运行的专用服务器的游戏示例: 《堡垒之夜》(Fortnite)、Roblox、《英雄联盟》(League of Legends)、《无畏契约》(VALORANT)、《Apex 英雄》(APEX Legends)、《绝地求生》(PUBG: BATTLEGROUNDS)、《守望先锋》、《火箭联盟》、Dota 2、《盗贼之海》(Sea of Thieves)、《黎明杀机》(Dead by Daylight)、《使命召唤》(据动视称其 "使用客户端-服务器模型来托管比赛")、《反恐精英 2》(Counter-Strike 2)的官方對局配對以及 《以太之战 2》(Rivals of Aether 2)。
拥有社区托管专用服务器的游戏示例: 工作室提供服务器构建版本,玩家或托管公司来运行它。《反恐精英 2》社区服务器、《腐蚀》(Rust,与 Facepunch 的官方服务器并存)、《我的世界》(Minecraft,Java版服务器软件和基岩专用服务器,并以 Mojang 托管的 Realms 作为官方选项)以及 《瓦海姆》(Valheim)的免费专用服务器二进制文件。
从玩家托管转为专用服务器的游戏示例: 《黎明杀机》取代了由杀手托管的监听服务器。Behaviour Digital 的技术负责人 Fadi Beyrouti 在 2019 年表示:"现在的平均延迟时间不到 60 毫秒,而以前使用监听服务器时为 120 毫秒。"
核心优势: 服务器端主导权、无主机优势、无主机迁移、每个玩家性能表现一致,以及用于验证、持久化和遥测的可信场所。
主要缺点: 每场对局的计算成本、需要与客户端共同维护的服务器构建版本,以及取决于服务器部署位置的延迟。
什么是对等(Peer-to-Peer)网络?
对等网络(P2P)涵盖两种不同的设计。
基于主机的 P2P 就是上表中的监听服务器。一个玩家的游戏充当服务器,其他所有人连接到它。主机的连接状况、硬件性能和诚实度共同决定了这场比赛。如果主机离开,则游戏局结束或尝试进行主机迁移。Edgegap 的 《光环:致远星》深度剖析 展示了 Bungie 在使这种交接可行上投入了多少工程技术。
全网状 P2P 没有主机拥有模拟。每个对等节点从相同的输入运行相同的确定性模拟。当时在 Ensemble Studios 的 Paul Bettner 和 Mark Terrano 在他们 2001 年的 GDC 论文《1500 Archers on a 28.8》中描述了这种方法,介绍了《帝国时代》(Age of Empires)如何通过交换指令而不是单位状态,在调制解调器连接上保持大型战斗同步。其代价是连接数。n 个玩家的全网状网络需要 n(n-1)/2 个连接,这使得游戏大厅规模保持在较小水平。
这两种设计都遇到了相同的障碍。大多数玩家都处于 NAT 之后,并且比例越来越高的玩家处于运营商级 NAT 之后,这可能会完全阻止直接的入站连接。标准工具集包含三个部分:STUN 用于发现玩家的公网地址,TURN(RFC 8656)在直接路径失败时中继流量,以及 ICE(RFC 8445)协调这些尝试。
对等网络:类型、游戏、优缺点
关键游戏类型: 仅限好友的合作模式、本地与局域网游戏,以及确定性锁步(Lockstep)策略游戏。
使用对等网络的游戏示例: 《光环:致远星》(基于主机,具有主机迁移)、《帝国时代》(全网状锁步)、《真人快打 X》和《不义联盟 2》(两台机器之间的回滚)、《超级马力欧兄弟:惊奇》、《GTA 在线模式》和《荒野大镖客 在线模式》(玩家托管局)、《艾尔登法环》(玩家托管的合作和入侵)、《怪物猎人》(玩家托管的任务)、PC 对 PC 对决中的《街头霸王 6》,以及当玩家在游戏内托管世界时的《瓦海姆》。
混合模式示例: 《命运 2》。"《命运 2》中的每一项活动都由我们的一个服务器托管," Bungie 的工程负责人 Matt Segur 在 2017 年写道,同时将该游戏描述为 "客户端-服务器和对等网络技术的混合体。"
核心优势: 无服务器计算成本,以及完全在游戏客户端内运行的单一代码库。
主要缺点: 主机可以篡改比赛、主机具有延迟优势、主机离开时游戏局结束或需要迁移、玩家 IP 地址暴露,以及 NAT 会阻碍一部分直接连接。
而在这种退路方案中,中继就派上用场了。
什么是中继服务器?
中继服务器在无法直接建立连接的玩家之间转发流量。它解决了网络连接问题。它不运行游戏。
Unity 针对其中继(Relay)服务的文档描述了这种设置:"您可以使用 Unity Relay 在多个客户端和一台主机之间发起连接。" 主机仍然存在。中继承载其流量。
当时在 Highwire Games 担任首席网络工程师的 Michal Buras 在 2024 年 9 月的实时服务游戏峰会(Live Service Game Summit)的演讲(视频)中谈到了中继。他将隐私方面的优势总结为:"除了在您和其他玩家之间中继信息的服务器之外,您的私有地址不会与任何人共享。" Valve 的 Steam Datagram Relay 文档也表达了同样的观点:"中继流量可以保护您的服务器和玩家免受 DoS 攻击,因为 IP 地址永远不会暴露。"
折中之处在于多了一跳。"中继服务器为您的游戏数据包添加了一个必须通过的额外节点,这会引入延迟," Buras 解释说。只有当中继的网络路径优于公共互联网路径时,中继才会减少延迟,Valve 指出,在其自己的网络上,有些玩家确实会遇到这种情况。部署位置决定了它的走向。《瓦海姆》的跨平台联机模式在微软的 PlayFab 后端上运行,并通过中继路由流量,Iron Gate 自己的文档警告称,这些玩家更有可能遇到延迟、超时和断开连接,正如 Edgegap 的 《瓦海姆》深度剖析 中所述。
中继:类型、游戏、优缺点
关键游戏类型: 玩家托管的合作和休闲游戏(其玩家处于 NAT 或防火墙后),以及跨平台网络的联机对局。
使用中继的游戏示例: 根据 Innersloth 首席开发人员的说法,《太空杀》(Among Us)"始终使用中继服务器";构建在 Diarkis 网络中间件上的《铁拳 8》;《街头霸王 6》、《深岩银河》(Deep Rock Galactic)和《战锤:末世鼠疫 2》,这些游戏在无法建立直接连接时会回退到 Steam Datagram Relay(GameNetworkingSockets issue #398);以及在跨平台模式下启动的《瓦海姆》服务器,根据 Iron Gate 的服务器指南,"该服务器通过中继服务器传输数据,因此不需要端口转发。"
核心优势: 穿透 NAT 和防火墙、隐藏玩家 IP 地址、防止玩家之间遭受拒绝服务攻击,以及无需服务器构建版本的快速集成。
主要缺点: 额外的网络跳数、无法验证游戏玩法、主机的优势和硬件限制依然存在、仍需要主机迁移,并且路由取决于中继提供商部署节点的位置。
中继能防止作弊吗?
不能。与原始的对等网络相比,它们只是缩小了暴露面,这就是其全部好处了。
在一方面,中继比直接 P2P 更好。没有人会知道其他人的 IP 地址,因此玩家不会被与他们進行對局配對的人当作拒绝服务攻击的目标。
游戏本身仍然是玩家托管的。托管玩家拥有比赛状态,并且可以通过内存编辑或延迟开关来改变它,无论路径中是否有中继。主导逻辑也包含在每个玩家下载的游戏构建版本中。任何人都可以反编译该版本来研究主机如何验证比赛,然后对其进行修改。中继永远看不到这些。它只是转发数据包。
围绕该局的数据也可能会泄露。Buras 展示了在一款已发行的游戏上使用现成的调试工具读取大厅数据,从而以 "纯文本暴露所有其他玩家的隐私信息。" 他的结论是:"对于一款商业游戏来说,这需要承担巨大的风险。"
在中继上增加检查并不能改变其类别。当 Buras 的团队考虑一个可以 "序列化数据包,甚至分析它们以防止作弊" 的中继时,它并没有站得住脚。"如果你正在进行计算,它就不再是中继服务器了," 他说。"它变成了专用服务器的一种形式。"
这同样适用于游戏内经济。购买、库存和进度需要在工作室控制的机器上进行验证,而中继不是这样的机器。
哪种模式适合哪种游戏?
一旦主导权落户于服务器,剩下的问题就是该服务器需要做多少工作。Edgegap 的 专用服务器词汇表 描述了四个范围,每个范围消耗的每玩家 CPU 都比前一个多。
专用服务器范围 | 服务器的作用 | 典型适用对象 |
|---|---|---|
中继样式 | 在玩家之间转发消息并检查少数规则。"极少 CPU,极少内存。" | 需要中立主机而不是玩家机器的合作和休闲局 |
结果裁判 | 客户端进行模拟;服务器验证结果,例如得分、库存变化和购买 | 具有经济或进度系统,但实时模拟较轻的游戏 |
一个进程并排托管多个小型游戏局 | 拥有许多小大厅的卡牌、回合制和休闲游戏 | |
完整模拟 | 为每个玩家运行整个游戏循环,从 2 人到 100 人或更多 | 射击、体育、战术竞技、竞技和排位模式 |
《太空杀》(Among Us)展示了中继样式范围可以走多远。Innersloth 的首席开发者在 2020 年解释说,其中继服务器 "具有部分主导权,这样我可以避免在服务器上进行昂贵的物理计算(使我能够更便宜地扩展),但仍然可以处理大多数外挂、主机迁移等。" 用 Buras 的话来说,一个检查游戏的中继已经变成了一个小型专用服务器。
由于回滚(Rollback)技术,格斗游戏通常被认为需要直接的对等连接。《以太之战 2》在专用服务器上运行回滚网络代码,正如 Edgegap 的 《以太之战 2》剖析 中所涵盖的那样。
带有连接中继的对等网络仍然适用于狭窄的场景:没有排位模式、没有经济系统且大厅中没有陌生人的仅限好友的游戏局,以及每个对等节点已经运行完整模拟的确定性锁步游戏。在这些之外,问题在于选择多大规格的专用服务器,而不是是否使用专用服务器。
每个模式的成本是多少?
由于玩家提供硬件,对等网络避免了计算成本。但它并没有避免所有成本。中继带宽通常按使用量计费,而主机迁移是一项实打实的工程工作。Buras 直接指出了这种权衡:"虽然中继的预付费用很便宜,但您必须构建的主机迁移解决方案会变得极其昂贵。" 他的完整成本细分可在 Edgegap 对 该演讲的简报 中找到。
专用服务器过去意味着按区域预留容量,无论玩家是否出现都要付费,并配备 DevOps 人员以维持其运行。按需编排改变了这一点。Edgegap 的 编排平台 在建立對局配對时启动服务器,在 615 多个部署位置 平均耗时约 3 秒,且 每个位置实行单一价格。中继样式或多房间服务器可以运行在极小部分的 vCPU 上,这使其成本接近中继,同时使主导权脱离玩家机器。在一家 AAA 工作室的部署中,与公共云相比,服务器部署使平均延迟减少了 58%,78% 的玩家延迟低于 50 毫秒(案例研究)。
各部分如何拼合在一起
主导权决定谁被信任。托管决定谁的硬件运行受信任的模拟。中继决定在直接路径失败时数据包如何到达那里。
把它们分开来看,权衡利弊就很明显了。中继使玩家托管的游戏可以连接,并保护 IP 地址私密。任何规格的专用服务器都能将主机移出游戏局。在其之上构建的网络代码(从预测到回滚)在 Edgegap 的 网络代码基础 和 《使命召唤》网络代码洞察 中有详细介绍。
—
本文引用了“来源”中列出的作品。原始内容的所有权利归其各自所有者所有。
Epic Games,Unreal Engine 网络概述,Unreal Engine 文档。
Dave Hagewood,Psyonix 创始人,接受 GamesBeat 采访,2015 年 7 月 20 日。
Paul Bettner 和 Mark Terrano,当时任职于 Ensemble Studios,1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond,GDC 2001。
Michal Buras,当时任职于 Highwire Games 担任首席网络工程师,实时服务游戏峰会演讲,2024 年 9 月 10 日(完整文字记录)。
Valve,Steam Datagram Relay,Steamworks 文档。
Valve,GameNetworkingSockets issue #398,GitHub,2026。
Unity Technologies,Relay,Netcode for GameObjects 文档。
Iron Gate Studio,专用服务器指南,《瓦海姆》支持。
Matt Segur,当时任职于 Bungie 担任工程负责人,《命运 2》每周更新,2017 年 5 月 26 日(通过 Stevivor)。
Roblox,客户端-服务器运行时,Roblox Creator 文档。
AWS for Games,Epic Games 利用 AWS Local Zones 部署《堡垒之夜》北美中部服务器,2023 年 2 月 14 日。
Call of Duty,使命召唤更新:深入探究對局配對,2024 年 1 月。
Fadi Beyrouti,Behaviour Digital 技术负责人,发表于 《黎明杀机》如何利用 AWS 经受住时间的考验,AWS for Games,2019 年 12 月 17 日。
Innersloth 首席开发人员 (u/fwfb),r/gamedev 上关于《太空杀》服务器架构的评论,2020 年。
IETF,RFC 8656 (TURN) 和 RFC 8445 (ICE)。
书写者
文森特·阿尚博 (首席科学官)
与来源和/或内容协作
由 Gabriel Parent(总监)进行格式和准确性检查。






