了解Edgegap的工作原理

了解Edgegap的工作原理

/

面向 GameObjects 的 Netcode

面向 GameObjects 的 Netcode

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

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

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

本指南向您展示如何在 Edgegap 的专用游戏服务器上托管使用 Unity 原生网络代码 Netcode for GameObjects (NGO) 构建的游戏,然后添加对局匹配,从而自动对玩家进行分组并连接到距离他们最近的服务器。

一旦您的游戏服务器容器化,Edgegap 只需一个简单的 API 调用即可将其按需部署到全球 615+ 个边缘云节点,并完全按使用量计费:无需租用整台服务器、预置或在比赛间隙保持运行。对于预留容量的持久性服务器,Edgegap 提供了 Private Fleets。Edgegap 的對局配對构建于此之上,并且是可选的。

本指南涵盖:

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

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

  3. 让您的 NGO 游戏做好连接专用服务器的准备

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

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

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

  7. 通过两名玩家测试完整闭环

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

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

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

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

在这里,我们使用 Unity 的 Boss Room 示例,这是一款基于 NGO 构建的合作游戏。开箱即用的 Boss Room 采用主机/客户端模式运行:一名玩家作为主机,其他玩家通过 Unity 的会话加入。标有 Boss Room 的步骤涵盖了该示例特有的内容。任何 NGO 项目的运作方式均相同。

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

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

1. 开始之前

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

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

    • 从 Unity Hub 添加以下模块:Linux Build Support (Mono)、Linux Build Support (IL2CPP) 和 Linux Dedicated Server Build Support。添加后请重启 Unity。

    • Boss Room:使用 Unity 6.0 LTS,即该示例所基于构建的版本。Unity 尚未针对 Unity 6.3 LTS 或更高版本更新 Boss Room,因此较新的版本可能会导致其无法正常工作。您自己的 NGO 项目可以使用任何 LTS 版本。

    • 安装 Git 客户端(2.14.0 或更高版本)并将其添加到您的 PATH 环境变量中。Unity 需要它来从 Git URL 安装软件包,例如 Edgegap 插件。

    • Boss Room:在克隆之前,还需安装 Git LFS 并运行 git lfs install。如果没有它,示例的美术资源将无法下载,项目打开后会是空的。

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

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

  • 对于代理途径:一个 Edgegap API 令牌,可从仪表板 → 用户设置 → 令牌获取。它是整个组织通用的,因此请像对待密码一样妥善保管:切勿将其放入您的项目、游戏客户端或聊天中。

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

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

Edgegap MCP 服务器允许您的 Agent 在您的账户上创建应用和版本、部署服务器、读取日志并生成撮合系统(matchmaker)配置。该 Agent 技能为其提供了经过测试的 Unity 工作流、C# 模板(包括 NGO 适配器)、Dockerfile 以及已知陷阱提示。

Claude Code(在您自己的终端中运行,这样令牌就绝不会经过聊天窗口):

然后安装技能:/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. 为您的非政府组织(NGO)服务器准备专用托管

在 Edgegap 上,没有任何玩家担任比赛的主机。无头专属服务器(headless dedicated server)掌管着游戏,因此专属服务器必须自行启动、监听固定端口,并在比赛结束时自行停止。

使用您的智能体(Agent):

“加载 edgegap-unity skill 并使此 Netcode for GameObjects 项目适配专属服务器:服务器构建在 0.0.0.0 上以无头模式调用 StartServer,玩家在客户端连接时生成,从服务器路径中移除 Relay 和 Lobby 调用,且服务器在比赛结束时自行停止。添加 Edgegap 服务器生命周期以及带有 NGO 适配器的匹配客户端脚本。然后检查其在一个服务器和一个客户端的本地环境下仍能正常运行。”

在您的项目中手动操作:

  • 在服务器构建中,调用 NetworkManager.StartServer(),切勿调用 StartHost()。服务器路径上的任何内容都不应等待菜单或按钮。

  • 保留 Unity Transport 的端口(默认为 7777/UDP),并让服务器监听所有接口:SetConnectionData("0.0.0.0", port, "0.0.0.0")。

  • 在客户端连接时生成玩家(Network Manager 的 Player Prefab,或 OnClientConnectedCallback),而不是为主机生成本地玩家。

  • 从服务器路径中移除 Unity Relay、Lobby 或会话调用。保留直接 IP 连接以供测试。

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

  • 在服务器上设置 Application.targetFrameRate(30 到 60),否则无头构建会让一个 CPU 核心以 100% 满负荷运转。

Boss Room

基础示例通过 Unity 的会话及其自身的 ConnectionManager 启动主机,因此它无法直接作为专属服务器运行。有两种接入方式:

  • 使用您的智能体转换基础示例。使用 Git LFS 克隆 Unity 的 Boss Room,然后使用上面的提示词并添加:“通过 Boss Room 的 ConnectionManager(其 IP 连接方法)来路由服务器启动和客户端连接,而不是直接调用 NetworkManager。”

  • 或者直接从 Edgegap 的 Boss Room 分支开始。它已经做好了专属服务器支持:服务器调用 StartServer 而不是 StartHost,MainMenu 场景中的 EdgegapServerStarter 会在 0.0.0.0 以及 Edgegap 传递给容器的端口上启动它。Edgegap 插件已包含在内。该分支还添加了一个调用 Unity UGS Matchmaker 的 Matchmake 按钮:要保留 UGS Matchmaker 并让其在 Edgegap 上部署服务器,请参考我们的 UGS Matchmaker 指南。本指南则改用 Edgegap 的匹配系统(步骤 6)。

首次打开时,该分支可能会以安全模式(Safe Mode)启动。请从 Window → Package Manager → Unity Registry 安装 Multiplayer Services,然后确认控制台(Console)中没有编译错误。

先在本地进行测试:一个编辑器(或构建)作为服务器,另一个作为客户端,配合使用 Unity 的 Multiplayer Play Mode。切勿将未能在 localhost 上正常运行的游戏容器化。

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

Edgegap 在容器内运行您的 Linux 服务器构建版本。您可以使用任一选项,或者两者结合使用:例如,首次部署使用插件,之后的每次构建都使用您的代理(Agent)。

选项 A(可选):Edgegap 的 Unity 自动化游戏服务器构建工具插件。这是首次进行云端部署的最快方式,全程点击按钮即可完成。它使用 Docker 对您的服务器进行容器化。下面的视频展示了在 Edgegap 的 Boss Room 分支上的这一流程。

  1. 在 Unity 中,选择 Window → Package Manager,点击 +,然后选择 Add package from git URL,并粘贴 https://github.com/edgegap/edgegap-unity-plugin.git。(Edgegap 的 Boss Room 分支已包含该插件。)

  2. 打开 Tools → Edgegap Server Hosting,登录,并在 Connect your Edgegap Account 下粘贴提供给您的令牌(token)。选择 Validate Token。

  3. 在 Build Settings 中检查您的场景。对于 Boss Room,Startup 排在第一位,接着是 MainMenu,然后是游戏场景。

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

  5. 在 Docker 运行的状态下,选择 Validate,然后选择 Containerize with Docker。可选操作:Deploy Local Container 并连接客户端进行测试。

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

选项 B:指示您的代理。

“构建 Linux 专用服务器,使用适用于 linux/amd64 的 edgegap-unity Dockerfile 将其容器化,使用新标签推送到我的 Edgegap 容器注册表(Container Registry),然后使用名为 gameport 的 7777 UDP 端口创建应用和应用版本。”

代理会要求您自行运行 docker login registry.edgegap.com,并使用来自容器注册表页面的用户名和令牌,从而确保这些凭据不会出现在聊天记录中。请确保应用版本已配置注册表凭据:如果没有这些凭据,部署将失败并提示“Unable to pull image from registry”。

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

以下是我们关于 Edgegap 的 Unity 插件的视频教程,该教程基于 Edgegap 的 Boss Room 分支版本:

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

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

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

  • 从控制台中:在 Edgegap 控制台中打开您的应用程序版本,选择Deploy(部署),挑选离您较近的地点,然后进行部署。

  • 通过您的智能体(Agent):“在我附近部署我的最新 Edgegap 版本,等待它就绪,显示日志,并向我提供 IP 地址和外部端口。”

当部署状态为 Ready(就绪)时,复制其 Host IP(主机 IP)和 External Port(外部端口)。请使用 IP,而不是主机名:Unity Transport 需要 IP 地址。将它们设置为 Unity Transport 上的客户端连接数据,然后按 Play。Boss Room:选择 Join with IP(通过 IP 加入),并输入 IP 和外部端口。外部端口在每次部署时都会发生变化,因此请每次都重新查看。在处于“就绪”状态后,服务器可能需要最多一分钟才能接受玩家。

完成后停止部署(在插件中使用 Stop Last Deployment(停止上次部署),或指示您的智能体)。免费套餐一次只能运行一个部署,遗忘的测试服务器会阻碍配对。

在这里,您手动选择了地点并分发了地址。若要自动将玩家分组并在离他们较近的地方启动服务器,请添加配对器(matchmaker)。

6. 添加匹配功能

Edgegap 的撮合系统(matchmaker)是一项托管服务:玩家发送票证,系统根据您的规则(比赛规模、队伍、延迟、技能、模式)对他们进行分组,在离他们较近的位置部署您的服务器,并将地址返回给每个客户端。

使用您的智能体(Agent):

“为我的应用版本生成一个 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 上,将我的‘开始游戏’(Play)按钮连接到 FindMatch,然后重新构建并推送服务器,创建一个新的应用版本,并告诉我需要在撮合系统中更新什么。”

Boss Room:让智能体通过 Boss Room 的 ConnectionManager IP 连接来连接匹配到的玩家,这样示例的连接有效负载和角色选择功能仍然有效。在 Edgegap 的分支上,它可以替换 UGS 的 Matchmake 按钮或放置在其旁边。

手动操作:请遵循我们文档中的 Unity 撮合指南。

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

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

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

  2. 运行两个客户端:Editor 加上一个构建版本,或者两个 Multiplayer Play Mode 玩家。

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

  4. 离开比赛。服务器会记录其正在停止,并且部署将从仪表板中消失。正是这种自动停止机制使您在无人游玩时账单保持为零。

在免费层级中,撮合器(matchmaker)在每次启动 3 小时后停止(可从仪表板重新启动),部署会在 60 分钟后停止,且一次只运行一个部署。

后续步骤

后续步骤

已经在使用 Unity Gaming Services?继续保留 UGS Matchmaker,并让它在 Edgegap 上部署您的服务器:请参阅我们的 UGS Matchmaker 指南。更倾向于让玩家浏览的大厅方式?请参阅 Unity 服务器浏览器 (Server Browser for Unity)。

准备上线?让您的 Agent 运行 edgegap-launch 技能的检查清单:版本推行、重启策略、最长时间、成本控制。

遇到问题?让您的 Agent 加载 edgegap-troubleshoot,或者在 Edgegap Discord 上向我们的团队和其他工作室寻求帮助。

常见问题

关于在 Edgegap 专属服务器上托管 Netcode for GameObjects 游戏(支持或不支持撮合匹配)的常见问题。

Netcode for GameObjects 是否支持专用服务器?

是的。针对 Linux 专用服务器进行构建,在服务器构建中调用 StartServer() 而不是 StartHost(),并在客户端连接时生成玩家。这样服务器就会以无外设(headless)模式运行,没有玩家进行托管。

Netcode for GameObjects 在 Edgegap 上使用哪个端口?

无论 Unity Transport 侦听什么,默认情况下都是通过 UDP 的 7777 端口。在名为 gameport 的 Edgegap 应用版本上设置相同的端口和协议。玩家连接到部署的 IP 以及 Edgegap 分配给它的外部端口。

Unity 的 Boss Room 示例可以在专用服务器(Dedicated Server)上运行吗?

并非开箱即用:它通过 Unity 的会话运行主机/客户端模式。具备 Edgegap 技能的编码代理可以对其进行转换,或者你也可以从 Edgegap 的 Boss Room 分支开始,该分支已经作为专用服务器运行。Boss Room 请使用 Unity 6.0 LTS。

我可以在保留 Unity UGS Matchmaker 的同时将其托管在 Edgegap 上吗?

是的。UGS Matchmaker 可以调用 Edgegap 的 API 为每场比赛部署专用服务器。我们的 UGS Matchmaker 指南对此进行了介绍。

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

测试是免费的,无需信用卡。之后,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 行

解锁

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