了解Edgegap的工作原理

了解Edgegap的工作原理

/

网狐

网狐

部署至 Edgegap

已发布

已发布

已发布

netfox:如何整合与托管专用服务器,并为您的多人 Godot 游戏添加對局配對

netfox:如何整合与托管专用服务器,并为您的多人 Godot 游戏添加對局配對

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

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

netfox 是一套适用于 Godot 4 的插件,在 Godot 内置的多人游戏功能之上,添加了快节奏游戏所需的功能:共享网络时间、具有服务器调和的客户端预测、回滚和平滑插值。它遵循 Godot 自身的节点所有权机制,因此服务器拥有游戏状态。刚接触 Godot 多人游戏?请查看 Godot Engine,了解 Godot 本身包含的内容。

本指南涵盖:

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

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

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

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

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

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

  7. 与两名玩家一起测试完整流程

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

  • 使用编码智能体。将 Claude Code、Cursor 或其他智能体连接到 Edgegap MCP 服务器及其智能体技能。智能体会编辑您的项目,构建并容器化服务器并进行部署。您只需在 Godot 和 Edgegap 控制面板中进行点击操作,并进行游戏测试。Edgegap 的技能通过与引擎无关的服务器和容器指南涵盖 Godot;专用于 Godot 或 netfox 的技能尚未发布。

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

对于构建和容器化服务器,Edgegap 的 Godot 游戏服务器托管插件是可选的。它可以构建您的服务器,进行容器化,并直接从 Godot 编辑器将其部署到云端,这是首次查看服务器上线的快捷方式(步骤 4,选项 A)。

在这里,我们使用 Forest Brawl,它是 netfox 的示例游戏,一款玩家互相击出地图的聚会对战游戏。任何 netfox 项目的工作方式都相同。

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

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

1. 开始之前

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

  • Godot 4.3 或更高版本。

  • 在您的项目中配置 netfox。可从 Godot 的 AssetLib(搜索 netfox)、发布页面或源码获取,然后在项目 → 项目设置 → 插件中启用该插件。如果您使用其输入或武器辅助功能,也请安装 netfox.extras。每个版本还包含 Forest Brawl。

  • 正在运行的容器化工具。我们推荐使用 Docker Desktop,并在构建过程中保持其安装并运行。

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

  • 对于 Agent 路径:需要一个 Edgegap API 令牌,可从控制面板 → 用户设置 → 令牌获取。该令牌适用于整个组织,因此请像对待密码一样妥善保管:切勿将其放入您的项目、游戏客户端或聊天中。

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

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

Edgegap MCP 服务器允许您的智能体在您的账户上创建应用和版本、部署服务器、读取日志并生成撮合系统配置及 Dockerfile。智能体技能赋予了它 Edgegap 的服务器设计规则、容器配置、本地测试流程和已知易错点。

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 以及其他支持发送请求头的客户端:添加 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. 为专用托管准备好您的 netfox 服务器

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

使用您的智能体:

“加载 edgegap-server-design 技能,使这个 Godot netfox 项目具备专用服务器支持:一个能自行启动的无头服务器,通过 ENet 监听 0.0.0.0:7777,掌控所有保存游戏状态的节点,在客户端连接时生成玩家,并在比赛结束时停止自身的 Edgegap 部署。请参考 docs.edgegap.com/godot 和 netfox 文档。然后在一个服务器和两个客户端的本地环境中验证其能否正常工作。”

手动操作:

  • 引导(Bootstrap)。添加一个脚本,用于在服务器构建版本中启动服务器(无头模式或通过 --server 参数),使用 Godot 的多人联机 API 和 ENet 监听所有网络接口上的 7777/UDP 端口。Edgegap Godot 文档包含适用于 Forest Brawl 的引导脚本。

  • 所有权(Ownership)。netfox 将节点的所有者视为其服务器。请确保服务器始终是所有保存游戏状态的节点的所有者;每个玩家仅拥有自己的输入权限。

  • Tickrate(时钟率)。netfox 运行自己的网络 tick 循环(项目设置 → netfox → Time → Tickrate)。服务器的时钟率是基准:设置客户端如何处理不匹配的情况(警告、断开连接、调整或发出信号),并确保其处于服务器 vCPU 的承受范围内。

  • 回滚(Rollback)。同步 _rollback_tick() 使用的所有属性,并在服务器和客户端上运行相同的逻辑,否则移动会出现瞬间拉回(snap back)。

  • 不需要 noray。netfox.noray 用于连接自行主持游戏的玩家。在 Edgegap 上,客户端会直接连接到专用服务器。

  • 比赛结束时,让服务器停止其部署:向 Edgegap 注入的 ARBITRIUM_DELETE_URL 发送 DELETE 请求,并将 ARBITRIUM_DELETE_TOKEN 作为 Authorization 请求头。

Forest Brawl

Forest Brawl 位于 netfox 的 examples/forest-brawl 文件夹中,也包含在每个 netfox 发行版中。将来自 Edgegap Godot 文档 的 Edgegap Forest Brawl 引导脚本添加到其主场景中,它即可作为专用服务器运行。

先在本地测试:在 127.0.0.1 上运行一个实例作为服务器,两个实例作为客户端。切勿将无法在 localhost 上正常运行的游戏进行容器化。

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

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

选项 A(可选):Edgegap 的 Godot 游戏服务器托管插件。从 Godot 编辑器进行首次云部署的最快方式。它使用 Docker 对服务器进行容器化。以下视频展示了使用 Forest Brawl 运行此路径的过程。

  1. 在 Godot 中,打开 AssetLib 选项卡,搜索 Edgegap,然后点击 Download 并 Install。或者将插件从 GitHub 复制到项目的 addons 文件夹中。

  2. 在 项目 → 项目设置 → 插件 (Project → Project Settings → Plugins) 下启用它。检查器(Inspector)旁边会出现一个 Edgegap 选项卡。

  3. 选择 Get token,登录,然后将令牌粘贴到插件中。

  4. 验证导出模板,添加步骤 3 中的引导脚本(bootstrap script),然后选择 Build server。

  5. 在 Docker 运行的情况下,选择 Validate Docker,然后选择 Containerize with Docker。可选操作:Deploy local container 并将客户端连接到该容器。

  6. 选择 Upload image and create App version。在仪表板中,将端口设置为 7777、UDP,命名为 gameport。提交。

选项 B:询问您的智能体(Agent)。

“加载 edgegap-containerize 技能。导出适用于 Linux 的 Godot 专用服务器,使用 edgegap_generate_dockerfile 生成 Dockerfile,针对 linux/amd64 进行构建,使用新标签将其推送到我的 Edgegap 容器注册表(Container Registry),然后创建应用和应用版本,端口为 7777 UDP,命名为 gameport,重启策略设置为 Never。”

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

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

以下是我们针对 Edgegap 的 Godot 插件的视频教程,使用的是 netfox 的 Forest Brawl:

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

在添加玩家匹配之前,请先手动启动一个服务器,以验证镜像、端口和您的网络代码是否正常工作。以下任一方式均可:

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

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

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

当部署状态变为就绪 (Ready) 时,复制其主机 (Host) 和外部端口 (External Port),将它们填入客户端的连接设置中,并使用两个客户端加入。外部端口在每次部署时都会发生变化,因此每次都需要查看。服务器在处于就绪状态后可能需要长达一分钟的时间才能接受玩家。如果移动仅在线上出现瞬移或卡顿,请查看步骤 3 中的 tickrate 和回滚说明。

完成后停止该部署(可通过插件、控制面板或您的智能体)。免费套餐一次只能运行一个部署,遗忘的测试服务器会阻碍玩家匹配。

到这里,您已经手动选择了地点并分发了地址。若要自动对玩家进行分组并在他们附近启动服务器,请添加匹配器。

6. 添加匹配功能

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

使用您的智能体:

“为我的应用版本生成 Edgegap 匹配器配置:一支包含 2 到 8 名玩家的队伍,并允许单独一名玩家在 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 账户的访问权限。

回到您的智能体:

“使用 HTTPRequest 编写一个 Godot 匹配客户端:使用匹配器 API URL 和 Auth Token 创建票据,轮询直到分配到服务器,然后连接到分配的主机和端口。将其绑定到我的‘开始游戏’按钮,然后重新构建并推送服务器,创建新的应用版本并告诉我需要在匹配器中更新什么。”

Edgegap 的官方功能目前尚未提供 Godot 匹配客户端,因此智能体通过匹配器的票据 API 编写了该客户端,只需进行几次 HTTP 调用即可。

手动操作:请遵循匹配文档。

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

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

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

  2. 运行两个客户端:两个导出的构建版本,或者编辑器加上一个构建版本。

  3. 在两端都选择寻找对局。两个客户端将分配到同一服务器并建立连接。

  4. 离开对局。服务器会自行停止部署,并从控制面板中消失。正是这种自动停止机制,确保了在无人游玩时您的账单费用为零。

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

后续步骤

后续步骤

刚接触 Godot 多人游戏?请查看 Godot Engine 了解 Godot 自带的功能。Edgegap 上的 Godot 设置:Godot 文档。

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

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

常见问题

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

netfox 是否支持专用服务器?

是的。netfox 支持客户端-服务器架构的游戏,并遵循 Godot 的节点归属权机制,因此拥有游戏状态的无头(headless)Godot 服务器即为权威端(authority)。你可以通过引导脚本(bootstrap script)在固定端口上使用 ENet 来启动它。

在 Edgegap 上托管 netfox 游戏需要 noray 吗?

不。netfox.noray 帮助玩家连接到其他玩家主持的游戏。在 Edgegap 上,客户端直接连接到专用服务器的主机和外部端口。

netfox 会取代 Godot 的内置多人游戏功能吗?

不,它是在其基础上构建的。你仍然使用 Godot 的多人游戏 API(通常是 ENet)来连接对等节点。netfox 则在此基础上增加了共享网络时间、带对齐机制的预测、回滚以及插值功能。

netfox 服务器在 Edgegap 上使用哪个端口?

无论您的 ENet 服务器监听什么端口:Edgegap 的 Godot 插件和文档默认使用 UDP 端口 7777。请在您的 Edgegap 应用版本上设置相同的端口,命名为 gameport。玩家将连接到 Edgegap 为每个部署分配的外部端口。

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

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

解锁

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