了解Edgegap的工作原理

了解Edgegap的工作原理

/

Mirror Networking

Mirror Networking

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

Mirror Networking:如何集成和托管专用服务器,并为您的多人游戏添加對局配對

Mirror Networking:如何集成和托管专用服务器,并为您的多人游戏添加對局配對

本指南将向您展示如何在 Edgegap 的专用游戏服务器上托管使用 Mirror Networking 构建的游戏,然后添加对局配对功能,以便玩家能够自动分组并连接到离他们最近的服务器。

一旦您的游戏服务器完成容器化,Edgegap 即可通过简单的 API 调用将其按需部署到全球 615 多个边缘云位置,并完全按使用量计费:无需租用、配置整台服务器,也无需在比赛间隔期间保持其运行。对于需要预留容量的持久性服务器,Edgegap 提供了 Private Fleets。Edgegap 的對局配對以此为基础构建,且为可选功能。

本指南包含以下内容:

  1. 准备 Unity、您的 Edgegap 账户和容器化工具

  2. 将您的编码智能体连接到 Edgegap(可选)

  3. 让您的 Mirror 游戏做好用于专用服务器的准备

  4. 构建并容器化您的游戏服务器

  5. 部署测试服务器并进行连接

  6. 添加对局配对(可选)

  7. 使用两名玩家测试完整流程

您可以通过两种方式进行操作,也可以将它们结合使用:

  • 使用编码智能体。将 Claude Code、Cursor 或其他智能体连接到 Edgegap MCP 服务器及其 智能体技能。智能体会编辑您的项目、构建并容器化服务器、进行部署并编写对局配对代码。您只需负责在 Unity 和 Edgegap 控制面板中进行点击操作并进行游戏测试。

  • 手动操作。以下每个步骤在没有智能体的情况下也同样适用。

在构建和容器化服务器方面,Edgegap 的 Unity 自动化游戏服务器构建工具插件是可选的。它可以通过 Unity 编辑器中的按钮构建您的服务器、将其容器化并部署到云端,这是首次查看服务器上线的快捷方式(步骤 4,选项 A)。

在此,我们使用 Mirror 的 Tanks 示例,该示例本身已作为专用服务器运行。任何 Mirror 项目的操作方式都是相同的。

Mirror Networking

x

Edgegap

得到 Mirror Networking 创建者的完全认可

Mirror Networking 的创作者

Mirror Networking 的创作者

“Mirror 解决了网络代码问题,Edgegap 解决了低延迟基础设施问题。我们双管齐下。”

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

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

1. 开始之前

  • 一个免费的 Edgegap 账户。请验证您的电子邮箱。测试无需信用卡。

  • 已安装 Linux 构建模块的 Unity 引擎。Edgegap 建议使用 LTS 版本。

    • 通过 Unity Hub 添加以下模块:Linux Build Support (Mono)、Linux Build Support (IL2CPP) 以及 Linux Dedicated Server Build Support。添加完成后请重启 Unity。

    • 我们使用的是 Unity 6.3 LTS。最新的非 LTS 版本可能会导致网络代码包(包括 Mirror)损坏,因此对于您发布的任何内容,请务必保留在 LTS 版本上。

  • 正在运行的容器化工具。我们建议使用 Docker Desktop,并在构建期间保持其处于安装并运行状态。

    • 其他容器工具也可与 Edgegap 配合使用,但本指南仅介绍 Docker。

  • 对于 Agent 路径:需要一个 Edgegap API 令牌,可从 仪表板 → 用户设置 → 令牌 获取。该令牌在整个组织范围内有效,因此请像对待密码一样对待它:切勿将其放入您的项目、游戏客户端或聊天中。

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

2. 将您的代码代理连接到 Edgegap

如果您全程手动操作,请跳过此步骤。

Edgegap MCP 服务器允许您的 Agent 在您的账户上创建应用程序和版本、部署服务器、读取日志并生成撮合(matchmaker)配置。Agent 技能为其提供了经过测试的 Unity 工作流、C# 模板、Dockerfile 以及已知注意事项。

Claude Code(在您自己的终端中运行,以确保令牌不会经过聊天传输):

claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user

然后安装技能:/plugin marketplace add edgegap/edgegap-agent-skills,接着运行 /plugin install edgegap@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 应用。”

返回空列表是正常的。关于令牌的错误通常意味着标头被解析成了 token token ...。

3. 为专用主机托管准备好您的 Mirror 服务器

在 Edgegap 上,没有玩家充当比赛主机。由无头(headless)专用服务器掌控游戏,因此专用服务器必须自行启动、监听固定端口,并在比赛结束时停止。

使用您的智能体:

“加载 edgegap-unity skill 并使此 Mirror 项目支持专用服务器:服务器构建版本以无头模式启动服务器,客户端连接时生成玩家,比赛结束时服务器自行停止。添加 Edgegap 服务器生命周期和带有 Mirror 适配器的匹配客户端脚本。然后通过一个服务器和一个客户端检查它在本地是否仍能正常工作。”

手动操作,在您的 Network Manager 中:

  • 将 Headless Start Mode 设置为 Auto Start Server,并保持勾选 Don't Destroy on Load。

  • 保留传输端口。Mirror 默认的 KCP Transport 监听 7777/UDP。WebGL 项目使用 SimpleWebTransport,通常为 7778,并采用安全的 WebSocket(请参阅常见问题解答)。

  • 确保在 Build Settings 中启用了包含 Network Manager 的场景。只有启用的场景才会被构建。

  • 在服务器构建版本中,调用 StartServer,切勿调用 StartHost,并在客户端连接时生成玩家(OnServerAddPlayer),而不是为本地玩家生成。

  • 在服务器上设置 Application.targetFrameRate(30 到 60),否则无头构建版本会使单个 CPU 核心满载至 100%。

首先在本地测试:借助 Unity 的 Multiplayer Play Mode,让一个编辑器(或构建版本)作为服务器,另一个作为客户端。切勿对在本地主机上无法运行的游戏进行容器化。

4. 构建并容器化您的服务器

Edgegap 会在容器内运行您的 Linux 服务器构建版本。您可以任选一种方式,或两者结合使用:例如,首次部署使用插件,后续的每次构建使用您的智能体(Agent)。

选项 A(可选):适用于 Unity 的 Edgegap 自动化游戏服务器构建工具插件。这是实现首次云端部署最快的方式,完全通过按钮点击即可完成。它使用 Docker 对您的服务器进行容器化。以下视频展示了此流程。

  1. 在 Unity 中,选择 Window → Package Manager,点击 +,然后选择 Add package from git URL,并粘贴 https://github.com/edgegap/edgegap-unity-plugin.git。

  2. 打开 Tools → Edgegap Server Hosting,登录,并在 Connect your Edgegap Account 下粘贴获取到的令牌。选择 Validate Token。

  3. 选择 Build Server。构建产物将保存在 Builds/EdgegapServer/ServerBuild 中。

  4. 在 Docker 运行的情况下,选择 Validate,然后选择 Containerize with Docker。可按需选择 Deploy Local Container 并将客户端连接到该容器。

  5. 选择 Upload Image and Create App Version。在浏览器中,设置与您的传输协议匹配的端口:7777,UDP,命名为 gameport。提交。

选项 B:向您的智能体(Agent)下达指令。

“构建 Linux 专用服务器,使用适用于 linux/amd64 的 edgegap-unity Dockerfile 将其容器化,推送到带有新标签的 Edgegap 容器镜像仓库(Container Registry),然后创建应用及应用版本,端口为 7777 UDP,命名为 gameport。”

智能体会要求您自行运行 docker login registry.edgegap.com,并使用来自 Container Registry 页面的用户名和令牌,从而确保这些凭据不会出现在聊天记录中。请确保应用版本已配置镜像仓库凭据:若未配置,部署将失败并提示“Unable to pull image from registry”。

每次构建请使用新的镜像标签,切勿使用 latest。

以下是我们关于 Edgegap 的 Unity 插件实操集成的视频教程:

5. 部署测试服务器并连接

在添加匹配系统之前,先手动启动一个服务器,以验证镜像、端口和网络代码是否正常工作。以下任意一种方法均可:

  • 通过插件:选择您的应用程序和版本,然后选择 Deploy to Cloud(部署到云端)。

  • 通过控制面板:在 Edgegap 控制面板中打开您的应用程序版本,选择 Deploy(部署),挑选一个离您较近的位置,然后进行部署。

  • 通过您的智能助手:“将我最新的 Edgegap 版本部署在我附近,等待就绪,向我展示日志,并提供地址和外部端口。”

当部署状态显示为 Ready(就绪)时,复制其 Host URL(主机 URL)和 External Port(外部端口)。在客户端的 Network Manager(网络管理器)中,将主机地址粘贴到 Network Address,将外部端口粘贴到传输层的 Port 中,然后点击 Play。外部端口在每次部署时都会发生变化,因此每次都需要查看。服务器在显示 Ready 后可能需要最多一分钟才能接受玩家连接。

完成后请停止部署(在插件中使用 Stop Last Deployment,或者指示您的智能助手)。免费层一次只能运行一个部署,遗留未关闭的测试服务器会阻止匹配功能的运行。

在这里,您手动选择了位置并分发了地址。若要自动为玩家分组并在他们附近启动服务器,请添加匹配器。

6. 添加匹配功能(可选)

Edgegap 的匹配器是一项托管服务:玩家发送凭据(ticket),它会根据您的规则(比赛规模、队伍、延迟、技术水平、模式)将他们分组,在他们附近部署您的服务器,并将地址返回给每个客户端。

通过您的智能助手:

“为我的应用版本生成 Edgegap 匹配器配置:一支 2 到 4 人的队伍,并允许单人玩家在 30 秒后获得服务器以便我可以单独测试。将其保存为 matchmaker-config.json。”

然后,在控制台中(此步骤没有 API):

  1. 打开 Matchmaker 并选择 Create Matchmaker。

  2. 为其命名,上传 matchmaker-config.json,然后选择 Create and Start。

  3. 当其处于 ONLINE 状态时,复制 API URL 和 Auth Token。Auth Token 可以安全地随游戏客户端一同发布:它不会提供对您 Edgegap 账户的访问权限。

回到您的智能助手:

“将匹配器 API URL 和 Auth Token 填入 EdgegapMatchmakingClient,将我的‘开始游戏’按钮连接到 FindMatch,然后重新构建并推送服务器,创建一个新的应用版本并告诉我匹配器中需要更新什么。”

手动操作:通过在 Packages/manifest.json 中添加 "com.edgegap.unity-sdk": "https://github.com/edgegap/edgegap-unity-sdk.git#3.5.5" 来安装 Edgegap Unity SDK,然后按照我们文档中的 Unity 匹配指南进行操作。有关完整流程的可运行示例,请参阅 mirror-webgl 参考示例。

发布新的服务器构建版本时,请在匹配器配置中更新 application.version(停止、编辑、启动),否则对局将继续部署旧版本。

7. 与两名玩家一起测试完整循环

  1. 请确保没有测试部署仍在运行。

  2. 运行两个客户端:编辑器加上一个构建版本,或者两个多人游戏运行模式(Multiplayer Play Mode)玩家。

  3. 在两端都选择 Find Match。状态会从正在搜索(searching)变为已找到对局(match found),再到已分配主机(host assigned),然后两个客户端都会连接到同一台服务器。

  4. 离开比赛。服务器会记录正在停止的日志,部署将从控制面板中消失。这种自动停止机制可以在无人玩游戏时让您的账单保持为零。

在免费层中,匹配器在每次启动 3 小时后会停止(可从控制面板重新启动),部署会在 60 分钟后停止,并且一次只能运行一个部署。

后续步骤

后续步骤

准备上线?让您的 agent 运行 edgegap-launch 技能的检查清单:版本推出、重启策略、最长持续时间、成本控制。更倾向于让玩家浏览大厅?请参阅 Unity 服务器浏览器 (Server Browser for Unity)。

遇到问题?让您的 agent 加载 edgegap-troubleshoot,或在 Edgegap Discord 上向我们的团队和其他工作室咨询。

—
先试为快:使用我们现成的 Mirror Pong 示例,无需自行构建

Edgegap 托管了 Mirror 的 Pong 示例的现成服务器镜像,因此您可以在自行构建之前看到 Mirror 游戏在专属服务器上运行。在此观看视频教程。

  1. 在 Unity 6 中,创建一个项目并从 Asset Store 导入 Mirror。它包含 Pong 示例。

  2. 在 Edgegap 控制面板中基于 Mirror Pong 示例创建应用版本。它是预先填充好的,使用基于 UDP 的端口 7777。

  3. 使用该版本部署服务器,然后复制该部署的主机 URL (Host URL) 和外部端口 (External Port)。

  4. 打开 Mirror/Examples/Pong/Scenes/MirrorPong.unity,点击播放 (Play),输入主机 URL 和外部端口,然后选择 Client。

  5. 通过 Multiplayer Play Mode 连接第二位玩家,完成后停止部署。

常见问题

关于在 Edgegap 专用服务器上托管 Mirror Networking 游戏(无论是否使用匹配功能)的常见问题。

Mirror 支持专用服务器吗?

是的。Mirror 可以作为无头(headless)服务器构建运行:在 Network Manager 中将 Headless Start Mode 设置为 Auto Start Server,针对 Linux 专用服务器(Dedicated Server)进行构建,服务器即可在没有玩家的情况下启动。

Mirror 在 Edgegap 上使用哪个端口?

无论您的传输层监听什么。Mirror 的 KCP 传输默认通过 UDP 使用 7777 端口。在您的 Edgegap 应用版本上设置相同的端口和协议,命名为 gameport。玩家将连接到 Edgegap 为每个部署分配的外部端口。

托管 Mirror 游戏需要 Edgegap 插件吗?

不。该插件是从 Unity Editor 进行构建、容器化和部署的最快方式。连接到 Edgegap MCP 服务器的编码代理,或者您自己的 Docker 构建也同样可行。

我可以在 Edgegap 上托管 Mirror WebGL 游戏吗?

是的。使用 SimpleWebTransport,将应用版本端口设置为 WS 并开启 TLS Upgrade,然后让客户端使用 wss:// 连接到部署的主机名。Edgegap 会处理证书。使用 Edgegap Unity SDK 3.5.5 或更新版本(旧版本无法针对 WebGL 进行编译),将提供您构建版本的每个源(origin)添加到 matchmaker 配置中的 allowed_cors_origins,并在 WebGL 客户端中关闭延迟信标(latency beacons)。

托管一个 Mirror 游戏服务器需要多少费用?

测试是免费的,无需信用卡。之后,Edge Cloud 仅在服务器运行期间按每 vCPU 每分钟计费,因此在每场比赛结束时停止的服务器在比赛之间不产生任何费用。

客户

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

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

他们选择 Edgegap 的关键原因

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

费用

定价

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

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

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

边缘云

按需

$0.00115

/ vCPU

/ 分钟

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

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

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

只需添加信用卡。

边缘云

按需

$0.00115

/ vCPU

/ 分钟

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

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

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

只需添加信用卡。

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

预留容量

$0.0282

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

预留容量

$0.0282

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

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

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

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

Eggegap 的功能和价格:Edge Cloud 与 Private Fleets 的详细对比

Eggegap 的功能和价格:Edge Cloud 与 Private Fleets 的详细对比

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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