Arena Shooter 是 Edgegap 对 Super Star Fighter 的分叉版本,后者是 Dumpster Fire Labs 使用 Godot 4.7.2 构建的自顶向下多人竞技场射击游戏。飞行员每轮都会抽取一张新的升级卡,卡牌不断叠加,直到一艘小小的初始飞船变成布满屏幕的庞然大物。
游戏的网络代码没有改变。其专用服务器已经运行了整个模拟,因此每位玩家看到的都是同一场战斗。该分叉版本在各自的文件夹中添加了一个 FIND MATCH(寻找比赛)选项卡和一个小型服务器生命周期脚本。
玩家按下 FIND MATCH 后,Edgegap 的撮合系统会对他们进行分组,并为该比赛启动一个专用游戏服务器。客户端通过安全的 WebSocket(wss://)加入该服务器,机器人补齐空位,比赛结束后服务器会自动停止。
Edgegap 的网络覆盖 615+ 个边缘云节点(了解更多)。每个服务器都会部署在最适合其玩家的可用位置,并且仅在比赛运行期间计费。
完整指南:通过 Godot Engine 集成指南将 Edgegap 添加到你自己的 Godot 游戏中
平台:Windows、macOS 和 Linux(x64 和 ARM64)桌面客户端;Edgegap 上的 Linux x86_64 专用服务器。匹配已在 Windows 客户端上进行了测试。原版游戏 Super Star Fighter 由 Dumpster Fire Labs 开发;代码遵循 MIT 许可证。其音乐和徽标受到版权保护,因此该分叉版本未包含它们(资产许可证)。
工作原理
玩家按下 FIND MATCH。客户端向 Edgegap 撮合系统发送票证,并每 2 秒检查一次。
撮合系统将 2 到 4 名玩家(30 秒后若只有单人则为 1 名玩家)分为一组,并在他们附近启动一个专用服务器。服务器读取匹配到了多少名玩家。
每个匹配成功的客户端都会收到服务器地址,并通过游戏自有的直连屏幕在
wss://<host>:<port>加入。大厅密码即为该部署的 ID,只有匹配成功的玩家才会获得。当所有匹配到的玩家都进入后,或者在第一名玩家加入 30 秒后,比赛开始。NPC 飞行员会填补空位,凑齐 4 艘飞船,因此单人玩家也能开始游戏。
最终结果公布 20 秒后,服务器会停止自己的部署。玩家可以重新排队等待下一场比赛。
分叉版本所做的更改:
路径 | 功能说明 |
|---|---|
| Edgegap 上的服务器生命周期:大厅密码、自动开始、NPC 填充、自动停止。在 Edgegap 部署之外不执行任何操作。 |
| FIND MATCH 选项卡:撮合票证,然后通过直连加入。 |
| 撮合系统 URL、身份验证令牌、配置文件和端口名称。 |
| 基于 Linux x86_64 专用服务器包构建的服务器镜像。 |
| 撮合系统配置:一个 |
| 调用上述文件的几个单行钩子。 |

一款使用 Godot 4 开发的霓虹竞技场射击游戏,运行在 Edgegap 专用服务器上。
1. 开始之前
一个免费的 Edgegap 账户。测试无需信用卡。
正在运行的 Docker Desktop,用于构建服务器镜像。
Python 3.11 或更高版本。分支的构建脚本会将 Godot 4.7.2 及其导出模板下载到项目中并进行检查,不会在系统范围内安装任何内容。您无需安装 Godot。
克隆该分支。
游戏绝不需要您的 Edgegap API 令牌。客户端中仅会传入撮合服务的身份验证令牌(Auth Token),该令牌无法访问您的账户。
2. 将游戏服务器部署在 Edgegap 上
从存储库根目录下载固定版本的 Godot,并构建 Linux 专用服务器包:
python tools/build.py bootstrap
python tools/build.py build server-linux-x64 --skip-gate
从该包构建镜像并将其推送到您的 Edgegap 注册表。容器注册表页面包含您的项目、用户名和令牌:
docker build --platform linux/amd64 -f edgegap/Dockerfile -t registry.edgegap.com/<project>/arena-shooter:<tag> builds/beta-19/server-linux-x86_64
docker push registry.edgegap.com/<project>/arena-shooter:<tag>
在控制面板中,创建应用程序 godot-arena-shooter 和一个版本(配置使用 v1):
您的镜像和标签,以及您的注册表用户名和令牌,以便 Edgegap 可以拉取它。
0.5 vCPU 和 1 GB。
一个端口:名称为
gameport,端口号 7000,协议为 WS,并开启 TLS Upgrade。客户端使用wss://连接。
版本上的可选环境变量:EDGEGAP_NPC_FILL(默认值 4,0 表示关闭 NPC)、EDGEGAP_START_GRACE(30 秒)、EDGEGAP_JOIN_TIMEOUT(120 秒)以及 EDGEGAP_ROUNDS_TO_WIN(3)。服务器日志行以 EDGEGAP 开头。
3. 创建撮合器
打开
edgegap/matchmaker-config.json,并将application.name和version设置为步骤 2 中的对应值。在控制面板中,打开 Matchmaker,选择创建 Matchmaker,上传该文件,然后点击创建并启动。
上线后,将其 API URL 和 Auth Token 复制到
src/client/edgegap/edgegap_settings.gd中。或者保留该文件为空,并在启动客户端时设置EDGEGAP_MATCHMAKER_URL和EDGEGAP_MATCHMAKER_TOKEN。
Auth Token 专用于随游戏客户端一同发布。切勿将您的 Edgegap API 令牌放入客户端中。
4. 进行一场比赛
构建 Windows 客户端:
python tools/build.py build windows --skip-gate
同一个脚本也可构建 Linux 和 macOS 客户端(clients 会构建全部四个平台版本),但只有 Windows 客户端在 Edgegap 上进行了测试。
启动两个客户端并打开连接界面的第一个标签页 FIND MATCH(寻找对局)。在两个客户端中均点击该按钮。状态会从“正在寻找玩家…”变为“已找到对局。正在您附近启动服务器…”,随后两个客户端都会加入同一个 Edgegap 服务器并进入其大厅。
当双方都加入后,对局便会开始,并包含 2 名 NPC 飞行员以凑齐 4 艘飞船。最终结算后,服务器会等待 20 秒并自动停止部署。重赛请求仍会结束该对局:请重新排队以进行下一场对局。
测试时,EDGEGAP_FIND_MATCH=1 可使客户端在启动时自动点击 FIND MATCH。
5. 将其添加到你自己的 Godot 游戏中
该分支是一个可直接参考的有效范例:您的编码 Agent 可以直接复制这些经过测试的文件,而无需从头编写。Edgegap 的 edgegap-godot 技能同样提供了与游戏无关的相同脚本版本。只需进行四处更改,即可将带有专属服务器的 Godot 游戏迁移到具备匹配功能的 Edgegap:
服务器独立运行比赛。在 Edgegap 部署上,它会读取匹配的玩家数量,在玩家加入后(或宽限期过后)开始比赛,并在游戏支持的情况下用 Bot 填补空缺席位(
src/shared/edgegap/edgegap_server.gd)。服务器自行停止。当比赛结束或无人加入时,它会向 Edgegap 注入的
ARBITRIUM_DELETE_URL发送DELETE请求,从而停止计费。客户端包含“寻找比赛”按钮。它会提交匹配票证,轮询检查直到分配服务器,然后填入地址并运行游戏现有的加入界面(
src/client/edgegap/edgegap_find_match.gd,edgegap_settings.gd)。导出新脚本。游戏的导出预设使用白名单机制,因此该分支在
export_presets.cfg中列出了这三个 Edgegap 脚本。若不这样做,导出的构建版本会直接忽略它们。
然后以该分支的 edgegap/Dockerfile 为模板对服务器进行容器化,并按照步骤 2 和 3 创建应用版本及匹配器。
配合您的 Agent:
“加载 edgegap 技能,然后加载 edgegap-godot。以 github.com/edgegap/game-sample-godot-arena-shooter 为参考,添加一个等待匹配玩家并能停止自身 Edgegap 部署的服务器生命周期,以及一个可在 Edgegap 匹配器排队并通过游戏现有加入逻辑接入所分配服务器的‘寻找比赛’按钮。”
如需了解每个步骤的详细手动操作说明,请参阅 Godot Engine 集成指南。
6. 匹配与自动停止的工作原理
该示例的配对器配置包含一个配置文件 casual:一支 2 到 4 名玩家的队伍。30 秒后,最低人数降至 1,因此单人玩家也能获得服务器。没有延迟规则。
客户端通过几个 HTTP 调用与配对器通信,使用 Auth Token:
POST {API URL}/tickets,携带{"profile": "casual", "attributes": {}}每 2 秒调用一次
GET {API URL}/tickets/{id},直到状态变为HOST_ASSIGNED,并带有服务器的主机名和gameport的外部端口如果玩家取消,则调用
DELETE {API URL}/tickets/{id}
服务器在以下情况下请求 Edgegap 停止其部署,从而结束计费:
最终结果产生后 20 秒(每次部署一场比赛);
120 秒内无人加入;
所有人离开已达 30 秒。
要调整您自己的比赛规模,请在配置中设置 min_team_size 和 max_team_size,并在应用版本上设置 EDGEGAP_NPC_FILL。当您发布新的服务器版本时,请创建一个新的应用版本并在配对器中更新 application.version(停止、编辑、启动)。Godot Engine 集成指南涵盖了为您自己的游戏设置配对的内容。
已知限制
默认情况下每个 Edgegap 比赛有 4 艘飞船。游戏最多支持 32 名飞行员,但示例的匹配系统会匹配 2 到 4 名玩家,并使用 NPC 填充最多 4 艘飞船。更大的 Edgegap 比赛需要更大的
max_team_size和EDGEGAP_NPC_FILL;它们应该可以正常运行,但尚未在 Edgegap 上进行测试。每次部署对应一场比赛。重新比赛将结束该部署,玩家需要重新排队。
加入由地址保护,而非通过票据。只有匹配成功的玩家才能获取服务器的主机名,该主机名同时附带大厅密码。服务器不会检查每个玩家的票据 ID。
仅限桌面端。此分支没有 Web 导出版本。游戏本身已使用 WebSocket,因此 Web 构建应该是可行的,相关代码已编写但未经验证。此外,它还需要在匹配器配置中设置
allowed_cors_origins。无音乐或工作室徽标。上游资产许可保留了它们。音效是在代码中生成的,仍可正常播放。
测试了什么
测试于 2026 年 10 月 20 日,使用 Godot 4.7.2 和 Edgegap 匹配器 3.3.2:
本地 Docker 镜像,带有模拟的 Edgegap 变量和两个机器人客户端:比赛自动开始并带有 2 个 NPC,服务器在得出最终结果后停止。
直接部署(纽瓦克):两个机器人客户端通过
wss://进行了一场 3 回合的比赛,部署在 5.4 分钟后自行停止。匹配器:两个 Windows 客户端点击了“寻找比赛”,被分配到同一台服务器并加入,比赛随 2 个 NPC 开始。
加入超时:无人加入的部署在 120 秒后自行停止。
在 Edgegap 部署之外,服务器的行为与原版完全一致,因此局域网和直连游玩依然可用。
netfox 指南 →,用于在您自己的 Godot 游戏中实现预测和回滚
常见问题
关于使用 Edgegap 匹配和专用服务器运行 Godot 竞技场射击游戏(Arena Shooter)示例的常见问题。
如何为 Godot 游戏添加玩家匹配功能?
通过 JSON 配置创建 Edgegap 匹配器,然后添加一个“寻找对局”(Find Match)按钮,该按钮通过 HTTPRequest 发送票据(ticket),持续检查直到分配了服务器,并加入该地址。Arena Shooter 示例在单个 GDScript 文件中实现了这一过程,并复用了游戏自有的加入界面。
Godot 游戏可以在 Edgegap 专属服务器上使用 WebSocket 吗?
是的。该示例的服务器在端口 7000 上监听 WebSocket。在应用版本上,将端口设置为启用了 TLS 升级的 WS,客户端使用 wss:// 连接到服务器的主机名。
如果只有一名玩家点击“寻找比赛”会发生什么?
30 秒后,匹配系统会将他们单独匹配,并由 NPC 飞行员填补其余空位,直至达到 4 艘飞船。在应用版本上将 EDGEGAP_NPC_FILL 设置为 0 即可关闭机器人。
比赛结束后 Edgegap 服务器会继续运行吗?
本示例中并非如此。服务器在得出最终结果 20 秒后自行停止部署,或者如果在 120 秒内没有人加入也会停止部署,因此您只需在比赛运行时付费。

客户
了解更多已接入 Edgegap 的客户案例
提供 31 个从其他平台迁移至 Edgegap 的工作室案例研究。

《以太之战 2》完美的全球发布
Aether Studios
了解Aether Studios是如何快速添加Edgegap并向他们的社区交付完美的启动和后启动服务的。
Case Study

克服因虚拟现实在竞技Multiplay中使用WiFi而引入的延迟
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
Case Study

MENA的社交应用添加了在线游戏
WOLF
了解这款在中东和北非地区广受欢迎的社交应用如何轻松地将 matchmaking 和多人游戏编排添加到 WOLF Qanawat。
Case Study

混合编排让开球策略随时应对任何流量做好准备
Birch Games
混合编排如何帮助 Birch Games 应对流量——将免流出费用的 Fleets 与无区域限制云相结合。
Case Study

7天血月
The Fun Pimps & iLLOGIKA
了解 Illogika 如何大幅降低服务器成本,并确保提供《七日杀 (7 Days to Die)》玩家所期望的在线体验。
Case Study

真实的在线战争需要终极的协调
Highwire Games
了解Highwire对性能的需求如何需要只有Edgegap才能提供的编排。
Case Study

22,000 条评价、4.8 颗星以及自动扩展的基础架构
Sinn Studios
一个由 Slack 提供支持的简单集成,如何让 Sinn Studio 的热门 VR 游戏快速上线并保持稳定运行。
Case Study

动态服务器编排
Under NDA - AAA Studio
了解世界上最大的AAA工作室之一如何通过边缘计算改善其对等多人游戏体验。
Case Study

对于 AAA 格斗游戏的近零延迟
AAA Studio - Under NDA
一个未宣布的项目如何实现了最低延迟,并改善了其1v1游戏中的公平性。
Case Study

Play Gods with Multiplayer Physics
Squido Studio
Learn how Squido uses Edgegap's highligh optimized game servers to deliver mind-bending & chaotic VR gameplay.
Case Study

全面托管的解决方案为独立游戏节省时间 多人VR恐怖游戏
Dirty Pearl Studios
了解Dirty Pearl Studios如何通过Edgegap的轻松集成和自动编排,以及其Nakama集成,节省了开发时间。
Case Study

即时全球服务器部署以促进协作式XR医学教育
AlensiaXR
AlensiaXR如何利用Edgegap为全球医学生提供低延迟、始终可用的共享解剖课程。
Case Study

守光人:具有专用服务器的 VR 社交合作游戏
Spectral Games
Spectral Games 如何在无需任何服务器经验的情况下,利用 Edgegap Matchmaking 和 Server Browser 为其 VR 社交大厅启动专用服务器。
Case Study

全球范围内快速可靠的部署,适用于PvPvE挑战者Gravebound
Crater Studios
Edgegap 的调度和配对如何帮助 Crater Studios 使他们能够将重心从基础设施转移到游戏玩法上。
Case Study

快速扩展网络元宇宙
Hiber
了解Hiber如何通过Edgegap消除服务器容量规划中的猜测。
Case Study

高硬件要求和自定义游戏服务器池
Alderon Games
了解Alderon Games如何瞬间利用全球多个供应商的自定义游戏服务器池来支持其热门MMO。
Case Study

独立开发者的简单集成
WhaleFood Games
阅读关于WhaleFood Games如何使用Edgegap解决其网络代码问题的文章。
Case Study

推动东南亚首款电子竞技游戏的尖端技术。
Anantarupa Studios
了解Edgegap如何通过一个无缝解决方案简化复杂基础设施和尖端技术,从而改变东南亚的游戏格局。
Case Study

一次打击。全球抵达。
Triple Hill Interactive
Triple Hill Interactive如何利用Edgegap的编排来提供低延迟,并提高在每毫秒都至关重要的游戏类型中的公平性。
Case Study

快节奏团队大逃杀...带着枪的动物毛绒玩具!
SANDYFLOOR
了解一家韩国独立工作室是如何将其多人游戏发布到全球的。
Case Study

移动端赛马游戏凭借即时、高效能的服务器走向全球
Mirai Labs
看 Mirai Labs 如何通过即时服务器部署和细分 vCPU 来运行 Pegaxy Blaze 的全球多人竞速游戏,从而将单个玩家的成本保持在极低水平。
Case Study

服务器管理与分发
Matrioshka Games
阅读关于Matrioshka Games如何在资源有限的情况下发布早期访问的战斗 Royale。
Case Study

听我的信号,释放地狱!
TyGames
探索独立工作室TyGames如何让玩家沉浸在第三人称角斗士战斗的多人游戏中。
Case Study

瞬时全球编排
Soliton Interactive
探索Soliton Interactive如何做到了不可能……首次推出可多人玩的版本!
Case Study

竞技游戏具有服务器端物理引擎,确保理想的低于50毫秒的延迟
NS7
了解为什么仅有Edgegap能够使独立工作室通过服务器端物理和权限实现其AAA质量的免费游戏体育玩法愿景。
Case Study

iGaming的区域部署
X1 Contra 1
X1 Contra 1 通过经济高效的托管和区域部署,为其巴西玩家提供实时 PvP 休闲游戏,确保数据和法律合规。
Case Study

仅在玩家游玩时付费:经济实惠的多人游戏基础设施
Meltdown Interactive
Edgegap 如何帮助独立开发商 Meltdown Interactive Media 在无需复杂方案的情况下,以高性价比解决扩缩容和匹配问题,从而让他们能够专注于游戏开发。
Case Study

同一个 Edgegap 平台,三种截然不同的网络配置
Warped Games
了解 Warped Games 如何在同一个 Edgegap 部署 API 和同一个容器管线上运行社交中心、实时合作以及回合制合作。
Case Study

台球大师巡回赛Max
RETA Games
Case Study

韩国的Web3 POP提取射击游戏走向全球,即刻启程
NDUS Entertainment
XOCIETY 如何轻松地添加 Edgegap 编排并集成自定义 matchmaking,与 Edgegap Ping Beacons 一起优化延迟。
Case Study

Multiplayer in Every Dimension
Arcadia.tv
Discover how Arcadia.tv uses Edgegap's edge network to deliver an innovative, team and location-based athletic VR sport.
Case Study

F2P 移动格斗游戏利用即时(Just-In-Time)服务器降低基础设施成本
Game Changers Worldwide
Game Changer Worldwide 如何在全球移动端托管 Rumble Rush 的实时 3v3 PvP 游戏。
Case Study
他们选择 Edgegap 的关键原因
了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。









