
本指南向您展示如何将 Edgegap 的分布式中继(Distributed Relays)添加到使用 Mirror 构建的对等网络(P2P)Unity 游戏中:由一名玩家主持,其他玩家通过靠近他们的中继加入,无需端口转发,也没有 NAT 问题。
中继不是游戏服务器。它在房主玩家的游戏运行比赛的同时在玩家之间转发流量。Edgegap 通过简单的 API 调用为玩家分配最佳可用中继以用于每个会话,并在会话开启期间计费。如果您更愿意在没有任何玩家控制的权威服务器上运行比赛,请参阅 Mirror Networking。
本指南涵盖:
获取中继令牌
将编程智能体(Coding Agent)连接到 Edgegap(可选)
将 Edgegap 的中继传输(Relay Transport)添加到 Mirror
从后端创建中继会话
连接房主和玩家
分组玩家并添加中途加入者
使用两名玩家进行测试
您可以通过两种方式进行操作,也可以将它们结合使用:
使用编程智能体。任何 AI 编程助手都可以根据以下提示编写后端调用和连接代码。连接到 Edgegap MCP 服务器后,它还可以为您的测试创建、读取和删除中继会话。
手动操作。以下每个步骤在没有智能体的情况下也同样适用。
在这里,我们使用 Edgegap 的 Mirror 中继示例。该中继还可以通过各自的传输协议与 Netcode for GameObjects 和 Fish-Networking 一起使用。
1. 开始之前
一个免费的 Edgegap 账户。请验证您的电子邮箱。测试无需信用卡。
一个使用 Mirror 的 Unity 项目,其中一名玩家作为主机(在同一游戏中既是主机又是客户端)。推荐使用 Unity LTS 版本。
中继配置文件令牌(Relay profile token)。在控制面板中,打开中继(Relays),创建一个中继配置文件并复制其令牌。这不是您的 Edgegap API 令牌:标准 API 令牌无法用于中继 API。
一个将该令牌保存在玩家设备之外的地方:您的大厅系统、匹配系统或小型后端服务。任何持有该令牌的人都可以在您的账户上创建会话。
对于代理路径:从控制面板 → 用户设置 → 令牌(Dashboard → User Settings → Tokens)获取 Edgegap API 令牌。该令牌适用于整个组织,因此请像对待密码一样对待它:切勿将其放入您的项目、游戏客户端或聊天中。
Git:克隆示例需要 Git 客户端。macOS 通常已自带(Xcode 命令行工具);在 Windows 上,请安装 Git。
2. 将您的代码代理连接到 Edgegap
如果您完全手动操作,请跳过此步骤。
Edgegap MCP 服务器允许您的智能体(Agent)在您的账户上运行。对于中继(relays),它可以为玩家 IP 列表创建测试会话、读取该会话、为后加入的玩家授权并删除该会话。它还可能会指出何时权威服务器更适合您的游戏:这是正常的,中继适用于采用主机-客户端(host-client)架构构建的游戏。
Claude Code:安装 Edgegap 插件。它会同时添加 MCP 服务器和技能,并在安装过程中要求输入您的 API 令牌(存储在系统的凭据存储中):
/plugin marketplace add edgegap/edgegap-agent-skills,然后运行 /plugin install edgegap@edgegap。重启会话。
只想要 MCP 服务器,不需要插件?请改在您自己的终端中运行以下命令:claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user。不要两种都做,否则会出现两个 edgegap 服务器。
Cursor、VS Code 和其他支持发送标头(headers)的客户端:添加 https://mcp.edgegap.dev/mcp 并附带标头 Authorization: token YOUR_EDGEGAP_API_TOKEN,然后使用 npx skills add edgegap/edgegap-agent-skills --skill "*" 安装技能。
Claude Desktop:自定义连接器无法发送该标头,因此请改用本地服务器(Node 18+):{ "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }。首次使用时会要求输入令牌。
检查是否正常工作:
你有用于中继会话的哪些 Edgegap 工具?
它应该列出用于创建、读取、授权和删除中继会话的工具。
3. 将 Edgegap 的中继传输添加到 Mirror
从 distributed-relay-examples 下载 Edgegap 的 transport 组件,并将
Edgegap文件夹复制到Assets/Mirror/Transports中。选择您的 NetworkManager 游戏对象并添加 EdgegapKcpTransport 组件。
将该组件拖入 NetworkManager 的 Transport 字段中。
如果该组件显示 Relay GUI,请将其禁用:它会干扰中继连接。
正在使用示例项目?它已经配置完毕:克隆 https://github.com/edgegap/unity-mirror-relay-sample 并在 Unity Hub 中打开该文件夹即可。
4. 从后端创建中继会话
您的后端会通过一次简单的 API 调用,为每场比赛、每个玩家的公网 IP 创建一个会话(房主优先):
POST https://api.edgegap.com/v1/relays/sessions,附带请求头 Authorization: Token YOUR_RELAY_PROFILE_TOKEN 以及请求体 { "users": [ { "ip": "1.1.1.1" }, { "ip": "2.2.2.2" } ] }。
中继分配需要稍等片刻。每 2 秒轮询一次 GET https://api.edgegap.com/v1/relays/sessions/{session_id},直到 ready 为 true;或者在创建会话时传入 webhook_url,一旦中继分配完成或分配失败,Edgegap 就会调用该地址。
准备就绪后,响应中会包含玩家所需的一切信息:
relay.ip和relay.ports:中继地址,包含面向房主的 server(服务端)端口和面向其他所有人的 client(客户端)端口。authorization_token:会话令牌,所有玩家均相同。session_users[].authorization_token:每个玩家专属的令牌。
仅向每个玩家发送属于他们自己的值:中继地址、其对应端口、会话令牌以及他们自己的令牌。中继配置文件令牌(relay profile token)绝不能离开您的后端。
使用您的 Agent 提示词:
在我的后端编写一个用于创建 Edgegap 中继会话的端点:POST https://api.edgegap.com/v1/relays/sessions,带上从环境变量 RELAY_PROFILE_TOKEN 中读取的 Authorization: Token 请求头,并按玩家 IP 添加用户(房主优先)。每 2 秒轮询一次 GET /v1/relays/sessions/{session_id},最多 5 次,直到 ready 为 true。按 IP 匹配,向每个玩家返回中继 IP、房主的服务端端口或其他人的客户端端口、会话 authorization_token 以及 session_users 中属于该玩家自己的 authorization_token。绝不要返回中继配置文件令牌。
还没有后端?可以让您的 Agent 针对玩家的公网 IP 创建一个测试会话:它会返回相同的值。完成后请记得删除它,因为会话在开启期间是计费的。
以下是我们关于在 Unity 中结合 Mirror 使用 Edgegap 中继的视频教程:
5. 连接主机和玩家
在你的游戏中,将步骤 4 中的值设置在 EdgegapKcpTransport 上,然后启动 Mirror:
中继地址(Relay address):中继
ip。会话 ID(Session ID):会话
authorization_token。用户 ID(User ID):该玩家自己的
authorization_token。中继端口(Relay port):主机使用服务器端口,其他所有人使用客户端端口。
示例通过一次调用 ChangeValue 进行设置,然后主机调用 StartHost(),其他人调用 StartClient()。
在我的 Mirror 项目中,当我的后端返回中继值后,将它们设置在 EdgegapKcpTransport 上(中继地址、来自会话 authorization_token 的会话 ID、来自此玩家 authorization_token 的用户 ID,如果我是主机则使用服务器端口作为中继端口,否则使用客户端端口),然后调用 StartHost() 或 StartClient()。向我展示在哪里设置了传输字段并返回完整文件。
主机和客户端都向外连接到中继,因此没有人需要开放端口,也没有玩家能看到其他玩家的 IP 地址。
6. 给玩家分组并添加迟到加入者
中继会话是为你已分好组的玩家创建的,因此分组发生在第 4 步之前:在你自己的大厅、Steam 大厅、Epic Online Services 大厅或 Unity 的 Lobby 服务中。无论使用哪种方式对他们进行分组,都会使用他们的公网 IP 调用你的后端。
有玩家在会话开始后加入?从你的后端在现有会话上授权其 IP,然后向他们发送相同的值。若要进行测试,可以询问你的 Agent:
Authorize this public IP on my Edgegap relay session {session_id}.
比赛结束时,从你的后端删除该会话:DELETE https://api.edgegap.com/v1/relays/sessions/{session_id}。玩家将断开中继连接,该会话的计费也将停止。
7. 双人测试
克隆 Mirror relay sample 并在 Unity Hub 中打开该文件夹。
仅用于此次本地测试:将您的中继配置文件令牌粘贴到 NetworkManager 游戏对象的 HelloWorldManager 组件上的 RelayProfileToken 中。发布之前请将其移除:在构建版本中,玩家可能会读取到它。
使用 Unity 的 Multiplayer Play Mode 或编辑器加构建版本运行两个实例。在第一个实例中启动主机 (host),然后从第二个实例加入。
两名玩家通过中继进行同一场比赛。完成后删除测试会话。
更倾向于权威服务器?无主机优势,且房主离开后对局依然继续:请参阅 Mirror Networking,并通过 Unity 匹配 SDK 添加匹配功能。
遇到问题?在 Edgegap Discord 上向我们的团队和其他工作室咨询。
常见问题
关于将 Edgegap 中继添加到点对点 Unity 多人游戏的常见问题。
什么是多人游戏中的中继服务器?
当玩家之间无法直接连接时(例如处于严格的 NAT 或防火墙之后),中继会在玩家之间转发流量。其中一名玩家的游戏主持比赛,而中继仅传递消息,因此无需开放端口,玩家也绝不会看到彼此的 IP 地址。
我应该使用中继还是专用服务器?
中继(relay)会保留您原有的点对点(peer-to-peer)网络代码,但主机拥有游戏状态:主机可以作弊、无延迟进行游戏,并且除非您的游戏支持主机迁移,否则当主机离开时比赛就会结束。Edgegap 上的权威游戏服务器消除了这些限制。当您的游戏已经采用主机-客户端架构构建,且无法迁移到专用服务器时,请使用中继。
Edgegap 的中继是否支持 Netcode for GameObjects 和 Fish-Networking?
是的。Edgegap 为 Mirror、Netcode for GameObjects 和 Fish-Networking 提供中继传输。其他网络代码可以遵循中继实施手册:中继承载不可靠的 UDP,而您的网络代码负责处理可靠性。
我可以将中继令牌放在我的游戏客户端中吗?
不。任何持有它的人都可以在您的账户上创建会话。请将其保存在您的大厅、匹配系统或后端,并且仅向每位玩家发送中继地址、其端口、会话令牌以及他们自己的令牌。
中继会话是如何计费的?
会话处于开启状态时会计费,将其删除后计费即停止。请在比赛结束时删除各个会话,并在测试完成后删除测试会话。

客户
了解更多已接入 Edgegap 的客户案例
提供 31 个从其他平台迁移至 Edgegap 的工作室案例研究。

《以太之战 2》完美的全球发布
Aether Studios
了解Aether Studios是如何快速添加Edgegap并向他们的社区交付完美的启动和后启动服务的。
Case Study

克服因虚拟现实在竞技Multiplay中使用WiFi而引入的延迟
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
Case Study

MENA的社交应用添加了在线游戏
WOLF
了解这款在中东和北非地区广受欢迎的社交应用如何轻松地将 matchmaking 和多人游戏编排添加到 WOLF Qanawat。
Case Study

混合编排让开球策略随时应对任何流量做好准备
Birch Games
混合编排如何帮助 Birch Games 应对流量——将免流出费用的 Fleets 与无区域限制云相结合。
Case Study

7天血月
The Fun Pimps & iLLOGIKA
了解 Illogika 如何大幅降低服务器成本,并确保提供《七日杀 (7 Days to Die)》玩家所期望的在线体验。
Case Study

真实的在线战争需要终极的协调
Highwire Games
了解Highwire对性能的需求如何需要只有Edgegap才能提供的编排。
Case Study

22,000 条评价、4.8 颗星以及自动扩展的基础架构
Sinn Studios
一个由 Slack 提供支持的简单集成,如何让 Sinn Studio 的热门 VR 游戏快速上线并保持稳定运行。
Case Study

动态服务器编排
Under NDA - AAA Studio
了解世界上最大的AAA工作室之一如何通过边缘计算改善其对等多人游戏体验。
Case Study

对于 AAA 格斗游戏的近零延迟
AAA Studio - Under NDA
一个未宣布的项目如何实现了最低延迟,并改善了其1v1游戏中的公平性。
Case Study

Play Gods with Multiplayer Physics
Squido Studio
Learn how Squido uses Edgegap's highligh optimized game servers to deliver mind-bending & chaotic VR gameplay.
Case Study

全面托管的解决方案为独立游戏节省时间 多人VR恐怖游戏
Dirty Pearl Studios
了解Dirty Pearl Studios如何通过Edgegap的轻松集成和自动编排,以及其Nakama集成,节省了开发时间。
Case Study

即时全球服务器部署以促进协作式XR医学教育
AlensiaXR
AlensiaXR如何利用Edgegap为全球医学生提供低延迟、始终可用的共享解剖课程。
Case Study

守光人:具有专用服务器的 VR 社交合作游戏
Spectral Games
Spectral Games 如何在无需任何服务器经验的情况下,利用 Edgegap Matchmaking 和 Server Browser 为其 VR 社交大厅启动专用服务器。
Case Study

全球范围内快速可靠的部署,适用于PvPvE挑战者Gravebound
Crater Studios
Edgegap 的调度和配对如何帮助 Crater Studios 使他们能够将重心从基础设施转移到游戏玩法上。
Case Study

快速扩展网络元宇宙
Hiber
了解Hiber如何通过Edgegap消除服务器容量规划中的猜测。
Case Study

高硬件要求和自定义游戏服务器池
Alderon Games
了解Alderon Games如何瞬间利用全球多个供应商的自定义游戏服务器池来支持其热门MMO。
Case Study

独立开发者的简单集成
WhaleFood Games
阅读关于WhaleFood Games如何使用Edgegap解决其网络代码问题的文章。
Case Study

推动东南亚首款电子竞技游戏的尖端技术。
Anantarupa Studios
了解Edgegap如何通过一个无缝解决方案简化复杂基础设施和尖端技术,从而改变东南亚的游戏格局。
Case Study

一次打击。全球抵达。
Triple Hill Interactive
Triple Hill Interactive如何利用Edgegap的编排来提供低延迟,并提高在每毫秒都至关重要的游戏类型中的公平性。
Case Study

快节奏团队大逃杀...带着枪的动物毛绒玩具!
SANDYFLOOR
了解一家韩国独立工作室是如何将其多人游戏发布到全球的。
Case Study

移动端赛马游戏凭借即时、高效能的服务器走向全球
Mirai Labs
看 Mirai Labs 如何通过即时服务器部署和细分 vCPU 来运行 Pegaxy Blaze 的全球多人竞速游戏,从而将单个玩家的成本保持在极低水平。
Case Study

服务器管理与分发
Matrioshka Games
阅读关于Matrioshka Games如何在资源有限的情况下发布早期访问的战斗 Royale。
Case Study

听我的信号,释放地狱!
TyGames
探索独立工作室TyGames如何让玩家沉浸在第三人称角斗士战斗的多人游戏中。
Case Study

瞬时全球编排
Soliton Interactive
探索Soliton Interactive如何做到了不可能……首次推出可多人玩的版本!
Case Study

竞技游戏具有服务器端物理引擎,确保理想的低于50毫秒的延迟
NS7
了解为什么仅有Edgegap能够使独立工作室通过服务器端物理和权限实现其AAA质量的免费游戏体育玩法愿景。
Case Study

iGaming的区域部署
X1 Contra 1
X1 Contra 1 通过经济高效的托管和区域部署,为其巴西玩家提供实时 PvP 休闲游戏,确保数据和法律合规。
Case Study

仅在玩家游玩时付费:经济实惠的多人游戏基础设施
Meltdown Interactive
Edgegap 如何帮助独立开发商 Meltdown Interactive Media 在无需复杂方案的情况下,以高性价比解决扩缩容和匹配问题,从而让他们能够专注于游戏开发。
Case Study

同一个 Edgegap 平台,三种截然不同的网络配置
Warped Games
了解 Warped Games 如何在同一个 Edgegap 部署 API 和同一个容器管线上运行社交中心、实时合作以及回合制合作。
Case Study

台球大师巡回赛Max
RETA Games
Case Study

韩国的Web3 POP提取射击游戏走向全球,即刻启程
NDUS Entertainment
XOCIETY 如何轻松地添加 Edgegap 编排并集成自定义 matchmaking,与 Edgegap Ping Beacons 一起优化延迟。
Case Study

Multiplayer in Every Dimension
Arcadia.tv
Discover how Arcadia.tv uses Edgegap's edge network to deliver an innovative, team and location-based athletic VR sport.
Case Study

F2P 移动格斗游戏利用即时(Just-In-Time)服务器降低基础设施成本
Game Changers Worldwide
Game Changer Worldwide 如何在全球移动端托管 Rumble Rush 的实时 3v3 PvP 游戏。
Case Study
他们选择 Edgegap 的关键原因
了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。









