了解Edgegap的工作原理

了解Edgegap的工作原理

/

Unity Engine

/

Unity Engine

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

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

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

本指南向您展示如何无论使用何种网络代码,都能在 Edgegap 的专用游戏服务器上托管使用 Unity 构建的多人游戏,然后添加匹配功能,以便自动将玩家分组并连接到离他们较近的服务器。

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

Unity 本身并不提供游戏网络连接功能:您需要一个网络代码库。幸运的是,Edgegap 针对各类主流库均提供了集成:Netcode for GameObjects、Mirror、Fish-Networking、Photon Fusion 2 以及 PurrNet。本页涵盖了所有 Unity 项目通用的内容;各个网络代码的专用页面则涵盖了其特定细节。

本指南涵盖:

  1. 准备 Unity、您的网络代码、Edgegap 账户以及容器化工具

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

  3. 无论使用何种网络代码,让您的游戏为专用服务器做好准备

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

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

  6. 添加匹配(可选)

  7. 使用两名玩家测试完整闭环

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

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

  • 手动操作。以下每个步骤也可以在没有智能体的情况下进行。

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

步骤 4 中的视频使用了 Unity 6.3 LTS 上的 Mirror Tanks 示例。任何作为专用服务器运行的 Unity 项目的工作原理都是相同的。

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

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

分步指南

详细集成步骤

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 版本可能会导致网络代码包损坏,因此对于任何要发布的项目,请务必保留在 LTS 版本上。

    • 在 Windows 上,当您首次针对 Linux 进行构建时,Unity 6 可能还会要求提供 Linux 工具链包 (com.unity.toolchain.win-x86_64-linux)。

  • 可在本地主机 (localhost) 上正常运行的网络代码。 两名玩家应能够加入并进行游戏,其中一个实例作为服务器。还没有网络代码?Unity 自带的 Netcode for GameObjects 是一个不错的默认选择;对于浏览器 (WebGL) 游戏,请使用 Mirror。

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

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

  • 对于代理路径:需要一个 Edgegap API 令牌,获取自控制面板 → 用户设置 → 令牌。它是全组织范围通用的,因此请将其视同密码:切勿将其放入您的项目、游戏客户端或聊天中。

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

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

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

Edgegap MCP 服务器允许您的 Agent 在您的账户上创建应用程序和版本、部署服务器、读取日志并生成撮合(matchmaker)配置。Agent skills 为其提供了经过测试的 Unity 工作流、C# 模板、网络代码(netcode)适配器、Dockerfile 以及已知的避坑指南。

Claude Code:安装 Edgegap 插件。它会同时添加 MCP 服务器和 skills,并在安装过程中提示输入您的 API 令牌(存储在系统的凭据存储区中):

/plugin marketplace add edgegap/llm-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 和其他支持发送请求头的客户端:添加 https://mcp.edgegap.dev/mcp 并附带请求头 Authorization: token YOUR_EDGEGAP_API_TOKEN,然后通过 npx skills add edgegap/llm-agent-skills --skill "*" 安装 skills。

Claude Desktop:自定义连接器无法发送请求头,因此请改用本地服务器(Node 18+):{ "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }。首次使用时会要求输入令牌。

检查是否正常运行:

“列出我的 Edgegap 应用程序。”

返回空列表是正常的。关于令牌的错误通常意味着请求头格式变成了 token token ...。

3. 让您的游戏做好专用托管准备

在 Edgegap 上,没有玩家作为比赛主机(Host)。游戏由无头(headless)专用服务器全权负责,因此专用服务器必须能自主启动、在固定端口上进行监听,并在比赛结束时自行停止。

找到您的网络代码(netcode)。每种网络代码都有对应的 Edgegap 集成,包含各自的配置、端口和示例:

  • Netcode for GameObjects,Unity 官方的网络代码:Unity Transport,默认为 7777/UDP。

  • Mirror:KCP Transport,7777/UDP。针对 WebGL 为 SimpleWebTransport。

  • Fish-Networking:Tugboat,7770/UDP。针对 WebGL 为 Bayou。

  • Photon Fusion 2:专用服务器模式,端口和协议请参阅其指南。

  • PurrNet:端口和协议请参阅其指南。

使用您的 Agent:

“加载 edgegap-unity skill,并根据此项目的网络代码使其具备专用服务器支持:服务器构建版本在 0.0.0.0 和固定端口上以无头模式启动服务器,客户端连接时生成玩家,并在比赛结束时自动停止服务器。使用正确的网络代码适配器添加 Edgegap 服务器生命周期和匹配客户端脚本。然后通过一个服务器和一个客户端在本地检查其是否仍能正常运行。”

该 skill 拥有经过测试的 Netcode for GameObjects 和 Mirror 适配器,并将 FishNet 项目分发至其 edgegap-fishnet skill。对于其他网络代码,Agent 会根据库的文档编写适配器。

手动操作,无论使用何种网络代码:

  • 在服务器构建版本中,启动服务器,绝不要启动主机(Host)。服务器运行流程中的任何部分都不应等待菜单或按钮输入。

  • 在所有网络接口(0.0.0.0)上的固定端口进行监听:使用上表中所列传输层的默认端口。

  • 在客户端连接时生成玩家,而不是为主机生成本地玩家。

  • 从服务器运行流程中移除中继(relay)、大厅(lobby)或加入代码(join-code)调用。保留直接 IP 连接用于测试。

  • 确保在 Build Settings 中启用了包含网络管理器(network manager)的场景。只有已启用的场景才会被构建。

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

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

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

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

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

  1. 在 Unity 中,选择窗口 (Window) → 包管理器 (Package Manager),点击 +,然后选择 Add package from git URL,并粘贴 https://github.com/edgegap/buildtool-unity-plugin.git。

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

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

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

  5. 选择 Upload Image and Create App Version。在浏览器中,将端口设置为您网络代码(netcode)所使用的端口和协议(步骤 3),命名为 gameport。该插件会预填名为“Game Port”的 7770/UDP:如果您的传输协议不同,请修改这两项。然后提交。

选项 B:让您的智能体来处理。

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

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

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

这是我们在 Unity 6.3 LTS 上结合 Mirror 的 Tanks 示例演示的 Edgegap Unity 插件视频教程:

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

在添加撮合机制之前,请手动启动一个服务器,以验证镜像、端口以及网络代码是否正常运行。以下任一方式均可:

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

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

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

当部署状态为 Ready(就绪)时,复制其 Host URL(或 Host IP)以及 External Port(外部端口),填入客户端的连接设置中,然后点击运行。某些传输层协议(例如 Unity Transport)需要使用 IP 而非主机名;浏览器(WebGL)客户端则使用 wss:// 连接到主机名。外部端口在每次部署时都会发生改变,因此请每次都重新读取。服务器在就绪后可能最多需要一分钟才能开始接受玩家连接。

完成后请停止该部署(可在插件中点击 Stop Last Deployment(停止上次部署),或让您的智能体操作)。免费版同时仅运行一个部署,遗忘的测试服务器会阻碍撮合机制的运行。

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

6. 添加匹配功能

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

使用您的代理:

“为我的应用版本生成 Edgegap 撮合配置:一支包含 2 到 4 名玩家的队伍,并让单个玩家在 20 秒后获取服务器,以便我可以单独测试。将其保存为 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,然后重新构建并推送服务器,创建一个新的应用版本并告诉我需要在撮合系统中更新什么。”

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

浏览器 (WebGL) 游戏:撮合系统中不能设置延迟规则(浏览器无法发送延迟 ping),并请在 allowed_cors_origins 中列出提供构建服务的所有源。

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

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

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

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

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

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

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

后续步骤

后续步骤

针对浏览器开发?请参阅网页游戏 (Unity)。更倾向于让玩家浏览的大厅?请参阅 Unity 服务器浏览器。已经在使用 Unity Gaming Services?请参阅我们的 UGS Matchmaker 指南。

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

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

常见问题

关于在 Edgegap 专属服务器上托管 Unity 多人游戏的常见问题,无论您使用哪种网络代码均适用。

Unity 可以运行专用服务器吗?

是的。为 Linux 专用服务器目标构建您的游戏,这是一种没有图形或玩家的无头构建。然后,您的网络代码会将其作为服务器启动,Edgegap 在容器中运行它,每场比赛一个容器。

开发 Unity 专属服务器时,我应该使用哪种网络代码方案?

Netcode for GameObjects 是 Unity 官方自带的方案,非常适合作为桌面端和移动端的默认选择。Mirror 的 WebGL 路径则经过了 Edgegap 撮合机制的端到端验证。Fish-Networking、Photon Fusion 2 和 PurrNet 同样可用,并且各自都附有 Edgegap 集成指南。

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

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

哪个 Unity 版本支持 Edgegap?

任何包含 Linux Dedicated Server 构建模块的较新版本均可。Edgegap 推荐使用 LTS 版本;本指南使用 Unity 6.3 LTS。同时安装一个 Git 客户端,以便通过 Git URL 添加软件包。

托管一个 Unity 游戏服务器需要多少钱?

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

客户

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

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

他们选择 Edgegap 的关键原因

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

费用

定价

定价

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

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

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

边缘云

按需

$0.00115

/ vCPU

/ 分钟

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

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

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

只需添加信用卡。

边缘云

按需

$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全天候可用,您的工作室专属。

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

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

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

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

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

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

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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