了解Edgegap的工作原理

了解Edgegap的工作原理

Netcode for GameObjects

Boss Room

部署至 Edgegap

已发布

已发布

已发布

Boss Room:在 Edgegap 专属服务器上运行 Unity 的多人协作示例,支持對局配對

Boss Room:在 Edgegap 专属服务器上运行 Unity 的多人协作示例,支持對局配對

Boss Room 是 Unity 的多人合作地牢示例,最多支持 8 名玩家,基于 Netcode for GameObjects (NGO) 构建。Edgegap 的分支版本将其运行在专用游戏服务器上,并添加了可选的撮合功能,让玩家可以进入同一个地牢。

Boss Room 本身几乎未作改动:相同的场景、相同的 Prefab、相同的角色选择(Character Select)以及相同的 Direct IP 加入方式。撮合系统所需的所有内容都位于 Assets/Edgegap/ 中,并在运行时自行添加。

无需玩家主持(Host)对局。无头(Headless)Boss Room 服务器负责运行地牢,不需要 Unity Gaming Services、Relay 或 Lobby,并且在对局变空时会自动停止自身部署。

Edgegap 的网络覆盖 615 多个边缘云节点(了解更多)。每台服务器都会部署在最适合其玩家的可用位置,并且仅在对局运行期间计费。

平台:Windows、macOS 和 Linux 桌面客户端 (UDP)。已在 Windows 客户端上经过测试。原始示例由 Unity Technologies 提供,遵循 Unity Companion License。

工作原理

  1. 玩家在主菜单面板中点击 Find Match。每个客户端都会向 Edgegap 撮合系统发送一个凭据(Ticket)。

  2. 撮合系统将 2 到 8 名玩家分为一组,并为他们启动 Edgegap 部署。

  3. 服务器启动,通过 Boss Room 自身的 ConnectionManager 在 0.0.0.0 和 gameport 端口上运行,并记录预期的匹配玩家数量。

  4. 当 Ticket 显示为 HOST_ASSIGNED 时,每个客户端通过 ConnectionManager.StartClientIp 连接到服务器的公共 IP 和外部端口。所有玩家进入同一台服务器的角色选择界面,然后一起进入地牢。

  5. 当场内无人时(最后一名玩家离开 30 秒后,或者 120 秒内无人加入),服务器将停止自身部署。

分支所做的更改:

路径

作用说明

Assets/Edgegap/EdgegapBootstrap.cs

在第一个场景之前运行,并添加以下组件。无需修改场景。

Assets/Edgegap/EdgegapMatchmakingClient.cs, EdgegapMatchmakingDTOs.cs

Find Match 面板:生成 Ticket,等待 HOST_ASSIGNED,通过 Boss Room 的 ConnectionManager 加入。

Assets/Edgegap/EdgegapServerLifecycle.cs

服务器构建:记录匹配和连接的玩家,在对局变空时停止部署。

Assets/Edgegap/Resources/EdgegapSettings.asset

撮合系统的开关、URL、认证令牌(Auth Token)、配置文件、本地端口、超时时间。

Assets/Scripts/EdgegapServerStarter.cs

在 Edgegap 端口或本地 9998 端口上通过 StartHostIp("SERVER", "0.0.0.0", port) 启动服务器。

ConnectionManagement/ 更改

使用服务器代替主机(StartServer),无主机有效负载,移除了构建类型检查(列于分支的 README 中)。

matchmaker-config.json, Dockerfile

要上传的撮合系统配置文件以及服务器镜像。

无需信用卡。免费版包含部署真实游戏服务器所需的资源。

无需信用卡。免费版包含部署真实游戏服务器所需的资源。

Two Boss Room heroes, Brave Healer and Silly Rusher, in a blue-lit dungeon in Unity's co-op sample.

两名玩家在Boss Room的地牢中,位于由Edgegap托管的一个Netcode for GameObjects服务器上。

分步指南

运行示例

1. 开始之前

  • 一个免费的 Edgegap 账户。

  • Unity 6000.0.54f1 (Unity 6.0 LTS),附带 Linux Build Support (Mono) 和 Linux Dedicated Server Build Support,以及适用于您客户端平台的模块。

  • 正在运行的 Docker Desktop。

  • Git LFS:在克隆之前运行 git lfs install,否则美术资源和 Edgegap 设置资源将无法下载。

  • 克隆该 fork。

Git:Unity 需要在您的 PATH 中配置 Git 客户端(2.14.0 或更高版本),以便从 Git URL 安装软件包(例如 Edgegap 插件)。macOS 通常已自带一个(Xcode Command Line Tools);在 Windows 上,请安装 Git。

2. 在 Edgegap 上获取 Boss Room 服务器

對局配對需要一个已在 Edgegap 上运行的服务器。Netcode for GameObjects 指南的第 4 步和第 5 步涵盖了其构建、容器化和部署。此分支特有的内容如下:

  • 通过 Tools → Edgegap → Build Linux Dedicated Server 构建服务器。位于仓库根目录的该分支 Dockerfile 会打包 Builds/EdgegapServer/。

  • 在应用版本上,配置一个端口:名称为 gameport,端口号为 7777,协议为 UDP。名称必须为 gameport:服务器从中读取其端口。

  • 在本地(以及在 docker run 中),服务器改为侦听 9998 端口。

  • 手动检查部署:在两个客户端中依次点击 Start with Direct IP → Join,并输入部署的公网 IP(非主机名)以及 gameport 的外部端口。

要在本地运行服务器镜像:

docker run --rm -p 9998:9998/udp ngo-bossroom:local

一台 PC 上的两个副本需要各自独立的配置文件,否则服务器会因视为同一玩家而拒绝第二个副本:

Game.exe -AuthProfile p1

Game.exe -AuthProfile p2

3. 将其添加到您自己的非政府组织游戏中

该分支是一个可用的参考:您的代码智能体可以直接复制其经过测试的文件,而无需从头编写。只需进行四处修改,即可让 NGO 游戏在 Edgegap 上配合对局配对运行:

  1. 服务器自动启动。在服务器构建中,在 0.0.0.0 和 gameport 端口上调用 StartServer,切勿调用 StartHost(Assets/Scripts/EdgegapServerStarter.cs、StartingHostState.cs)。

  2. 服务器自动停止。当没有人在规定时间内加入或最后一名玩家离开时,它会停止部署,从而停止计费(Assets/Edgegap/EdgegapServerLifecycle.cs)。

  3. 客户端寻找对局。它发送一张票据,等待 HOST_ASSIGNED,然后加入分配的 IP 和端口(Assets/Edgegap/EdgegapMatchmakingClient.cs)。如果您的游戏具有自己的连接流程(例如 Boss Room 的 ConnectionManager),请通过它加入,以确保有效载荷和批准机制仍然正常工作。

  4. 场景中的内容无需任何改动。Assets/Edgegap/EdgegapBootstrap.cs 会在启动时添加组件,并由 EdgegapSettings.asset 进行配置。

配合您的智能体使用:

“加载 edgegap 技能,然后加载 edgegap-ngo。以 github.com/edgegap/netcode-game-sample-unity-ngo-bossroom 作为参考,让我的 Netcode for GameObjects 游戏在 gameport 端口上启动无头专用服务器,在对局为空时停止部署,并通过我游戏本身的连接流程添加一个‘寻找对局’按钮以加入 Edgegap 撮合器分配的服务器。”

有关手动完成每个步骤的详细信息,请参阅 Netcode for GameObjects 集成指南。

4. 在首领房间开启匹配功能

對局配對 默认处于关闭状态。直接连接正常工作后即可将其开启:

  1. 在分支的 matchmaker-config.json 中,将 application.name 和 version 设置为您的应用程序和版本。

  2. 在控制台中,打开 Matchmaker → Create Matchmaker,上传文件,然后点击 Create and Start。复制其 API URL 和 Auth Token。Auth Token 在游戏客户端中是安全的:它仅允许 matchmaking 调用。

  3. 选择 Assets/Edgegap/Resources/EdgegapSettings.asset。勾选 Use Edgegap Matchmaker,并粘贴 Matchmaker Url 和 Matchmaker Auth Token。

  4. 重新构建客户端并启动两次。在两个客户端的主菜单左侧面板中均点击 Find Match。状态将显示为 searching → match found → joining,随后两名玩家都会进入同一服务器上的角色选择界面。

casual 配置文件可创建 2 到 8 名玩家的对局,最多可达 Boss Room 的 8 个英雄席位。它会尽量凑满 8 人;15 秒后,只要至少有 2 人就会开始。请保留该扩充阶段:如果没有它,少于 8 人的对局只有在票据于 5 分钟后过期时才会开始。

若要进行免点击测试,请在命令行中传递设置(步骤 2 中的 <url> 和 <token>),为第二个客户端附带 -AuthProfile p2 和 -edgegapAutoReady 1:

Game.exe -AuthProfile p1 -edgegapMatchmaker true -edgegapMatchmakerUrl <url> -edgegapAuthToken <token> -edgegapFindMatch -edgegapAutoReady 0

当您发布新的服务器构建时:新镜像标签 → 新应用版本 → 在 matchmaker 中依次点击 Stop、编辑 application.version、Start。否则对局将继续部署旧的构建版本。

已知限制

  • 仅限桌面客户端。Boss Room 通过 UDP 连接,而浏览器无法打开 UDP。WebGL 构建需要 Unity Transport 的 WebSocket 以及带有 TLS 升级的 WS 端口:不属于本示例的一部分。

  • “寻找比赛”面板是一个简单的浮层,不属于 Boss Room 菜单的一部分。对于真实游戏,请从您自己的按钮调用 EdgegapMatchmakingClient.FindMatch() 和 CancelMatchmaking(),并将 ShowGUI 设置为关闭。

  • 服务器端无票据检查。任何拥有 IP 和端口的人都可以通过 Direct IP 加入。在连接审批中根据 MM_TICKET_IDS 检查每个客户端的票据 ID 是下一步操作。

  • 无法加入进行中的比赛。稍后点击“寻找比赛”的玩家将获得一台新服务器;未设置回填 (backfill)。

  • 无害的服务器错误。无头服务器会在 ClientCharacter.OnAnimEvent 中记录 NullReferenceException,并记录来自 Boss Room 客户端视觉效果的 Transform child out of bounds。它们不会影响游戏体验。

  • 免费层级:一次只能进行一次部署,且对局配对器每 3 小时重启一次(相同的 URL 和令牌)。

测试了什么

于 2026 年 10 月 19 日在 Edgegap 上进行了端到端测试,配置环境为 Unity 6000.0.54f1、Netcode for GameObjects 1.13.0、Unity Transport 2.5.2 (UDP) 以及 Edgegap Unity SDK 3.5.6:

  • 直接连接:两个 Windows 客户端通过 IP 加入了同一个 Edgegap 服务器,并在地下城中进行了游戏。

  • 匹配系统:两个 Windows 客户端点击“寻找匹配”,完成匹配,并在启动后 40 秒内连接到同一服务器并进入“角色选择”界面,随后在地下城中进行了游戏。

  • 自动停止:每次玩家离开后,服务器都会自动停止其自身的部署。

macOS 和 Linux 客户端应该也可以正常运行,但尚未经过测试。该分支的命令行测试标志(-edgegapConnect、-edgegapFindMatch、-edgegapAutoReady、-edgegapScreenshots、-edgegapQuitAfter)列在 EDGEGAP.md 中。

常见问题

关于结合使用 Edgegap 专用服务器和匹配系统运行 Unity Boss Room 的常见问题。

Boss Room 可以在不使用 Unity Gaming Services 的情况下进行匹配吗?

是的。Edgegap 的分支添加了一个可选的“寻找比赛”面板,该面板使用 Edgegap 匹配系统。它不需要 UGS 匹配系统、中继或大厅:匹配系统会启动一个 Edgegap 服务器,每个匹配成功的客户端都会加入该服务器。

在 Edgegap 上,一场 Boss Room 比赛最多可以容纳多少名玩家?

该分支的配对系统配置可匹配 2 到 8 名玩家,与 Boss Room 的 8 个英雄席位数量相同。它最多等待 15 秒来凑满对局,之后至少有 2 名玩家即可开始。

这个 Boss Room 分支需要哪个 Unity 版本?

Unity 6000.0.54f1(Unity 6.0 LTS),包含 Linux 专用服务器(Dedicated Server)构建模块。Unity 尚未针对更高版本更新 Boss Room,因此更新的版本可能会导致其出现故障。

当没有玩家游玩时,首领战房间服务器还会继续运行吗?

不会。在最后一名玩家离开 30 秒后,或者如果在 120 秒内没有人加入,服务器就会停止其自身的 Edgegap 部署,因此空闲服务器不会产生任何费用。

客户

了解更多已接入 Edgegap 的客户案例

提供 31 个从其他平台迁移至 Edgegap 的工作室案例研究。

他们选择 Edgegap 的关键原因

了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。

费用

定价

定价

通过混合编排优化成本与性能

通过混合编排优化成本与性能

通过混合编排优化成本与性能

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

专属物理机集群 (裸金属)

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

专属物理机集群 (裸金属)

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

使用我们的预估计算器模拟您的用量 ->

使用我们的预估计算器模拟您的用量 ->

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。