了解Edgegap的工作原理

了解Edgegap的工作原理

/

自定义引擎

自定义引擎

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

自定义引擎:如何在专用服务器上托管您自己的游戏服务器,并添加對局配對

自定义引擎:如何在专用服务器上托管您自己的游戏服务器,并添加對局配對

本指南将向您展示如何在 Edgegap 的专用游戏服务器上托管基于您自研引擎构建的多人游戏,或用任何语言(C++、C#、Go、Rust、Java 等)编写的游戏服务器,然后添加撮合配对功能,以便玩家自动分组并连接到离他们最近的服务器。

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

Edgegap 无需 SDK,也无需引擎插件。如果您的服务器可以在 Linux 容器中以无外设(headless)模式运行,它就能在 Edgegap 上运行:您推送镜像,Edgegap 会为每场比赛启动该镜像的副本并将地址分配给玩家。本页介绍了您的服务器为适配该模式需遵循的几项规则。

本指南涵盖:

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

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

  3. 让您的服务器适配 Edgegap 的生命周期

  4. 对其进行容器化并创建应用版本

  5. 本地测试,然后部署测试服务器

  6. 添加撮合配对(可选)

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

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

  • 使用编码智能体。将 Claude Code、Cursor 或其他智能体连接到 Edgegap MCP 服务器及其智能体技能。智能体将适配您的服务器、编写 Dockerfile、测试容器、进行部署并生成匹配器配置。您负责 Edgegap 仪表板、密钥管理和游戏测试。

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

正在使用 Unity、Unreal Engine 或 Godot 构建?请改为从 Unity Engine、Unreal Engine 或 Godot Engine 开始。

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

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

1. 开始之前

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

  • 一个可在 Linux x86-64 上以无头模式运行的游戏服务器:无窗口、无 GPU、无输入提示,通过命令行标志或环境变量进行配置。两名玩家应能够在 localhost 上加入该服务器。

  • 一个主导游戏逻辑的权威服务器。客户端发送输入;服务器决定位置、击中情况和得分。仅转发客户端声明内容的服务器只是一种昂贵的中继,并且很容易被作弊。

  • 一个处于运行状态的容器化工具。我们推荐使用 Docker Desktop。

  • 对于 Agent 路径:一个 Edgegap API 令牌,获取自 控制面板 → 用户设置 → 令牌。它是组织级别的,因此请像对待密码一样对待它:切勿将其放入您的服务器、游戏客户端、项目文件或聊天工具中。

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

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

Edgegap MCP 服务器允许您的 Agent 在您的账户上创建应用和版本、部署服务器、读取日志并生成撮合系统(matchmaker)配置。Agent 的各项技能为其赋予了与引擎无关的规则:edgegap-server-design 用于生命周期,edgegap-containerize 用于镜像,edgegap-local-testing 用于在产生费用前进行测试。

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

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 以及其他支持发送请求头的客户端:添加 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"] } } }。首次使用时会要求输入 Token。

检查是否正常运行:

“列出我的 Edgegap 应用。”

返回空列表属于正常情况。关于 Token 的报错通常意味着请求头格式变成了 token token ...。

3. 让您的服务器适配 Edgegap 的生命周期

在 Edgegap 上,一次部署通常对应一场对局:它为一组玩家启动,并在他们的对局结束时停止。您的服务器需要遵循以下六条规则:

  • 绑定在 0.0.0.0 上的固定端口,例如 7777/UDP。Edgegap 会在每次部署时为玩家分配一个随机的外部端口,并将其映射到您的端口。绑定 127.0.0.1 或随机端口可以在您的本地机器上运行,但在 Edgegap 上将无法访问。

  • 从环境变量中读取配置。Edgegap 会将它们注入到每次部署中:ARBITRIUM_REQUEST_ID(部署 ID;建议记录日志)、ARBITRIUM_PORT_GAMEPORT_INTERNAL 和 _EXTERNAL、ARBITRIUM_PUBLIC_IP,以及在匹配系统部署中的 MM_MATCH_ID 和 MM_TICKET_IDS(匹配成功的对象)。您自己的设置则配置在应用版本或部署上。

  • 一旦开始接受玩家,向 stdout 记录一行清晰的日志,例如 READY port=7777。日志应输出至 stdout 和 stderr,绝不能仅写入文件。

  • 在对局结束时自动停止服务器,或者在无玩家连接约 30 秒后停止:使用请求头 Authorization: <ARBITRIUM_DELETE_TOKEN> 向 ARBITRIUM_DELETE_URL 发送 DELETE 请求。处于空闲状态的服务器会持续计费,直至达到其最长运行时长。

  • 处理 SIGTERM 信号:将结果保存至后端,通知玩家,并在几秒钟内退出。

  • 限制您的 tick 率或帧率。无上限运行的无头(headless)循环会耗尽整个 CPU 核心。20 到 30 Hz 适用于大多数动作游戏,60 Hz 适用于快节奏射击游戏。

您的服务器绝不会持有 Edgegap API 令牌:自动停止功能拥有自己独立的、按每次部署生成的令牌。

配合您的智能体使用:

“加载 edgegap-server-design 技能并让我的游戏服务器适配 Edgegap:在固定端口上绑定 0.0.0.0,读取 ARBITRIUM_ 和 MM_ 环境变量,在开始接受玩家时记录 READY 日志,在对局结束或无玩家连接 30 秒后通过 ARBITRIUM_DELETE_URL 自动停止,在收到 SIGTERM 时安全退出,并限制 tick 率。然后检查它是否仍可在两个本地客户端下正常运行。”

4. 将您的服务器容器化并创建应用版本

Edgegap 运行 linux/amd64 容器。请在 Docker 外部构建服务器,或者针对编译型语言在构建阶段进行构建,然后仅将服务器复制到精简镜像中:

  • 将其作为容器的主进程启动,采用 exec 格式:ENTRYPOINT ["./my-server"]。置于其前面的 Shell 脚本会吞掉 SIGTERM 信号;如果您需要使用 Shell 脚本,请以 exec ./my-server "$@" 结尾。

  • 针对 Edgegap 平台进行构建,即使在 Apple Silicon 上也是如此:docker build --platform linux/amd64 -t registry.edgegap.com/<project>/<image>:<tag> .

  • 镜像中不得包含敏感信息,且绝不要在启动时打印环境变量:这会导致自停止令牌暴露在日志中。

  • 推送到 Edgegap 容器镜像仓库:使用来自容器镜像仓库页面的用户名和令牌自行运行 docker login registry.edgegap.com,然后执行 docker push。每次构建都请使用新标签,切勿使用 latest。Docker Hub、GHCR、ECR、GCP 和 GitLab 镜像仓库也同样支持。

然后在控制面板中创建应用程序及其版本:设置您的镜像和标签、镜像仓库凭据(若缺少凭据,部署将失败并提示“Unable to pull image from registry”)、初始配置 1 vCPU 和 2 GB、端口及其协议命名为 gameport,重启策略设为从不 (Never)。

配合您的智能体使用:

“加载 edgegap-containerize 技能。为我的 linux/amd64 服务器编写一个多阶段构建 Dockerfile,使用新标签构建并推送它,然后创建 Edgegap 应用及应用版本,配置我的端口和协议,命名为 gameport,重启策略设为 never。”

5. 本地测试,然后部署到测试服务器

首先在本地进行,使用 Edgegap 会设置的环境变量:docker run --rm -p 7777:7777/udp -e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777 <image>:<tag>。将客户端连接到 127.0.0.1:7777,然后使用 docker stop 停止容器,并检查您的服务器是否正常退出。

然后在 Edgegap 上进行。从控制面板部署您的版本(点击 Deploy,选择一个离您较近的位置),或者让您的智能助手执行:“在离我较近的位置部署我最新的 Edgegap 版本,等待就绪,显示日志,并向我提供地址和外部端口。”

当部署状态为 Ready 时,将客户端连接到其主机 URL(或 IP)和外部端口。每次部署时外部端口都会发生变化。Ready 意味着容器已启动;您的服务器可能还需要几秒钟来加载,因此请让客户端重试最多一分钟。

完成后停止部署。免费层一次只能运行一个部署。

6. 添加匹配功能

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

  1. 编写配置:您的应用及版本、每场比赛的玩家人数,以及一条用于测试的规则(允许单人玩家在 30 秒后获得服务器)。您的智能助手可以生成它:“为我的应用版本生成一份 Edgegap 撮合配置:一支队伍 2 到 4 名玩家,单人玩家在 30 秒后获得服务器。”

  2. 在控制台中打开 Matchmaker,选择 Create Matchmaker,上传文件并选择 Create and Start。复制 API URL 和 Auth Token。Auth Token 可以安全地随游戏客户端一同发布。

  3. 在客户端中使用 API URL 和 Auth Token 创建一个票据,然后检查其状态,直至其从 SEARCHING 变为 MATCH_FOUND 再到 HOST_ASSIGNED,并获取服务器的地址和端口。进行连接。

您的服务器可以在 MM_TICKET_IDS 中找到匹配成功的玩家。完整的 API 请参阅撮合系统文档。

已经拥有自己的撮合系统或大厅服务?您的后端可以直接使用 Edgegap 的部署 API 自行启动服务器:有关该模式,请参阅 Nakama、PlayFab 或 Steam Lobbies。

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

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

  2. 运行两个客户端并在两边都开始匹配。

  3. 两者都与同一服务器达到 HOST_ASSIGNED 状态,并建立连接。

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

在免费套餐中,匹配器在每次启动 3 小时后停止(可从仪表板重新启动),部署在 60 分钟后停止,且一次只运行一个部署。

后续步骤

后续步骤

服务器的生命周期必须长于单场对局(例如持久世界)?请参阅私有队列。

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

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

常见问题

关于在 Edgegap 专属服务器上托管自定义引擎游戏服务器的常见问题。

我可以在 Edgegap 上托管来自自研引擎的游戏服务器吗?

是的。任何在 Linux x86-64 容器中无头(headless)运行的服务器均可支持:C++、C#、Go、Rust、Java、Node.js 或任何其他语言。Edgegap 不需要 SDK 或插件;您推送镜像,Edgegap 就会为每场比赛运行一个副本。

我的游戏服务器在 Edgegap 上运行需要什么?

在固定端口上监听 0.0.0.0,从环境变量中读取其设置,将日志输出到 stdout,处理 SIGTERM,并在比赛结束时停止其自身的部署。Edgegap 会将一个随机的外部端口映射到您的端口供玩家使用。

使用 Edgegap 需要 Docker 吗?

Edgegap 运行容器镜像,因此您的服务器需要一个镜像。Docker 是构建它的常用方式,并且我们的智能体技能会为您编写 Dockerfile。任何能够构建 linux/amd64 镜像的工具都可以使用。

游戏服务器在 Edgegap 上是如何自行停止的?

它会向 ARBITRIUM_DELETE_URL 环境变量发送一个 DELETE 请求,并将 ARBITRIUM_DELETE_TOKEN 作为 Authorization 请求头。两者都会注入到每次部署中,因此服务器永远不需要您的 API 令牌。

我可以在 Edgegap 中使用自己的匹配系统(matchmaker)吗?

是的。您的后端可以通过 Edgegap 的部署 API 启动服务器,将每个服务器部署在靠近玩家的位置。或者使用 Edgegap 的托管匹配系统,这是一个您的客户端可以直接调用的 HTTP API。

客户

了解更多已接入 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 行

解锁

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