Tanks 是 Mirror 的示例游戏之一:玩家在竞技场中驾驶坦克相互射击。Edgegap 的示例将其构建为浏览器版本 (WebGL),并在专属的独立游戏服务器上运行每场对局。
Mirror 和 Tanks 游戏本身保持不变:该示例保留了 Mirror 的 SimpleWebTransport 和原始场景,并添加了一些可选脚本。启用它们后,玩家只需点击寻找比赛即可,无需输入服务器地址。
Edgegap 的匹配器会将玩家分组,然后为他们启动一台服务器。Edgegap 的网络覆盖 615 多个边缘云节点(了解更多),每台服务器都会部署在最适合其玩家的可用位置。浏览器通过安全的 WebSocket 进行连接,当对局为空时服务器会自动停止。
完整指南:参考 Mirror Networking 集成指南将 Edgegap 添加到您自己的 Mirror 游戏中。有关浏览器特定的所有步骤,请参阅 Unity WebGL 指南。
平台:浏览器中的 WebGL 客户端;Linux 专用服务器。Unity 6.3 LTS (6000.3.11f1),Mirror 86.13.4。Tanks 是 Mirror 的一部分,采用 MIT 许可协议。
工作原理
玩家在浏览器中打开游戏并点击寻找比赛。客户端向 Edgegap 的匹配器发送票证。
匹配器将 2 至 4 名玩家分为一组。由于浏览器无法执行 ping 操作,因此它会根据玩家的公网 IP 分配服务器位置。
Edgegap 在离他们较近的位置启动 Tanks 服务器。服务器在端口 7778 上监听 WebSocket,并通过 Edgegap 的 TLS Upgrade 为其配置证书。
每个客户端获取服务器的主机名和外部端口,并连接到
wss://{主机名}:{端口},在服务器启动期间会持续重试。当所有人都离开超过 30 秒,或者在 2 分钟内无人加入时,服务器将自行停止部署。
示例新增内容:
路径 | 功能说明 |
|---|---|
| “寻找比赛/取消”面板。创建票证,等待服务器,并通过 |
| 仅限专用服务器。读取 Edgegap 注入的变量,并在对局为空时停止部署。 |
| 票证属性。在此添加字段以自定义匹配器规则。 |
| 仅在安装了 Edgegap Unity SDK 3.5.5 或更高版本时才启用这些脚本。如果没有安装,它们将编译为空存根。 |
| 在 IL2CPP 构建(WebGL 和 Linux 服务器)中保留 SDK 的数据类。 |
| 示例匹配器配置,配置文件 |

浏览器中的 Mirror's Tanks 示例,其专用服务器运行在 Edgegap 上。
1. 开始之前
一个免费的 Edgegap 账户。测试无需信用卡。
Unity 6.3 LTS(示例使用 6000.3.11f1),并在 Unity Hub 中添加了 Linux Build Support (Mono)、Linux Build Support (IL2CPP)、Linux Dedicated Server Build Support 和 Web Build Support。
Docker Desktop,在构建服务器时需保持运行。
克隆该示例并在 Unity 中打开。Edgegap 插件会随项目一起安装。
Git:Unity 需要在 PATH 中配置 Git 客户端(2.14.0 或更高版本),以通过 Git URL 安装软件包(例如 Edgegap 插件)。macOS 通常已自带该客户端(Xcode Command Line Tools);在 Windows 上,请安装 Git。
2. 开启匹配功能
匹配默认处于关闭状态,因此示例在打开和构建时无需使用 Edgegap SDK。要将其开启:
首先,在 Window → Package Manager 中,选择 +,然后选择 Add package from git URL,并粘贴:
https://github.com/edgegap/edgegap-unity-sdk.git#3.5.5
然后打开 MirrorTanks 场景,选择 EdgegapMatchmaking 对象并勾选其名称旁边的复选框。
请在构建服务器之前完成此操作,以便服务器包含 TanksMatchmakingServer 并在比赛结束时自行停止。
3. 将游戏服务器部署到 Edgegap
打开 Tools → Edgegap Server Hosting,连接您的 Edgegap 账户,然后选择 Build Server、Containerize with Docker 以及 Upload Image and Create App Version。
在浏览器中,设置应用版本的端口:
端口 7778,协议 WS,名称
gameport。开启 Verifications,开启 TLS Upgrade。TLS Upgrade 会为服务器提供一个安全的 WebSocket 地址,以便 https:// 页面上的浏览器可以访问它。您不需要拥有自己的证书。
Unity WebGL 指南的步骤 4 详细介绍了插件界面和代理选项。
4. 创建匹配器并开始游戏
编辑代码库根目录下的 matchmaker-config.json:
application.name和application.version:来自步骤 3 的应用程序和版本。allowed_cors_origins:提供 WebGL 构建版本服务的每个地址。示例中已列出http://localhost:8080。浏览器会直接调用撮合器(matchmaker),因此其他来源会被阻止。
在控制面板中,打开Matchmaker,选择 Create Matchmaker,上传该文件并选择 Create and Start。当其状态为 ONLINE 时,将 API URL 和 Auth Token 复制到 TanksMatchmakingClient(位于 EdgegapMatchmaking 对象上)的 Base URL 和 Auth Token 中。
在 File → Build Profiles 中针对 Web 进行构建,然后从允许的来源提供构建文件夹服务:
python -m http.server 8080 --bind 127.0.0.1
在两个浏览器窗口中打开 http://localhost:8080,并在每个窗口中点击 Find Match。点击前请将每个窗口置于前台:后台标签页会降低 Unity WebGL 的运行速度。两个窗口将连接到同一个 Edgegap 服务器。单个玩家在 30 秒后将单独获得一个服务器,这有助于进行测试。
5. 将其添加到你自己的 Mirror WebGL 游戏中
该示例是一个可用的参考:您的编码 Agent 可以直接复制其经过测试的文件,而无需从头编写。这些更改使 Mirror WebGL 游戏能够与 Edgegap 的撮合系统配合运行:
固定端口上的 WebSocket。SimpleWebTransport 位于端口 7778,服务器端关闭 SSL,客户端使用
wss。无头启动模式(Headless Start Mode)设置为 Auto Start Server,并在 Build Settings 中启用了游戏场景(示例中的MirrorTanks场景)。一个匹配客户端。创建票证(ticket),等待其服务器,然后重试连接到
wss://{host name}:{external port}(Assets/EdgegapMatchmaking/TanksMatchmakingClient.cs)。延迟信标在浏览器中保持关闭状态。一个自动停止的服务器。当没有人加入或所有人都已离开时停止部署,从而停止计费(
Assets/EdgegapMatchmaking/TanksMatchmakingServer.cs)。SDK 和代码剥离。Edgegap Unity SDK 3.5.5 或更高版本(旧版本会导致 WebGL 构建失败),以及用于 IL2CPP 的
link.xml。一个匹配器配置,不含延迟规则,并将您的源添加到
allowed_cors_origins中(matchmaker-config.json)。
然后上传带有 WS 端口和 TLS 升级的服务器,如步骤 3 所述。
配合您的 Agent 使用:
“加载 edgegap skill,然后加载 edgegap-unity。以 github.com/edgegap/netcode-game-sample-webgl-mirror-tanks 作为参考,将我的 Mirror 游戏设为端口 7778 上使用 SimpleWebTransport 的 WebGL 专属服务器游戏,从其 Assets/EdgegapMatchmaking 文件夹中添加匹配客户端和服务器自动停止功能,并生成一个没有延迟规则且在 allowed_cors_origins 中包含我的 Web 源的匹配器配置。”
如需手动查看每个步骤的详细信息,请参阅 Mirror Networking integration guide,有关浏览器特有的部分,请参阅 Unity WebGL guide。
6. 匹配系统如何分配玩家并关闭服务器
该示例的 tanks-webgl 配置文件专为浏览器构建:
对局人数:一队 2 到 4 名玩家。在队列中等待 30 秒后,人数下限降至 1,以便你可以单独测试。在实际游戏中请移除该扩展规则。
无延迟规则。浏览器无法发送桌面游戏用来测量延迟的 Ping 数据包。因此,撮合系统会根据玩家的公网 IP 来部署服务器。
允许的来源。
allowed_cors_origins列出了允许调用撮合系统的页面。发布前,请添加你的实际主机地址,例如你的 itch.io 页面。废弃的匹配票据。浏览器可以在不通知游戏的情况下关闭标签页,因此未匹配的票据会在 5 分钟后自动过期。
Auth Token 会随客户端版本一起提供,就像任何使用该撮合系统的游戏一样。它不会提供访问你的 Edgegap 账户的权限。
服务器会自动停止自身的部署,从而结束计费:
最后一名玩家离开 30 秒后;
2 分钟内无人加入时。
上传新的服务器版本时,请在撮合系统中更新 application.version(停止、编辑、启动),否则比赛将继续部署旧版本。Unity WebGL 指南的第 6 步详细介绍了撮合系统。
已知限制
匹配默认处于关闭状态。开箱即用时,该示例不包含 SDK,且 EdgegapMatchmaking 对象处于非活动状态。请按照步骤 2 将其开启。
比赛绝不会自行结束。Tanks 没有回合或获胜者,因此服务器仅在变为空时才会停止。对于您自己的游戏,请在比赛结束时停止部署。
在浏览器中没有基于延迟的部署放置。服务器是根据玩家 IP 进行放置的。客户端脚本可以通过单独配置文件中的
latencies规则测量桌面构建中的延迟:代码已编写但未进行测试。单人扩展仅用于测试。使用示例配置文件时,等待 30 秒的玩家将单独游玩。
测试了什么
在 2026 年 10 月 15 日(该示例的 PR #1 在当天合并)之前,于 Edgegap 上进行了两次端到端测试,运行环境为 Unity 6000.3.11f1:
完整循环:两个从
http://localhost:8080提供的 WebGL 客户端、一个实时撮合器,以及一个在端口 7778 上带有 WS 和 TLS 升级的应用版本。两个客户端均完成匹配,首次尝试即通过wss://连接到部署的外部端口,且在两个客户端离开后服务器自行停止。匹配关闭(默认):场景加载且无缺失脚本,WebGL 和 Linux 服务器构建均告成功。
匹配开启(SDK 3.5.5):WebGL 和 Linux 服务器构建成功。在 Edgegap 外部运行时,服务器记录日志“Not running on Edgegap, self-stop disabled”并继续提供服务。
未测试:带有延迟信标的桌面客户端,以及通过此示例在 itch.io 上托管 WebGL 构建版本。
常见问题
关于在浏览器中使用 Edgegap 运行 Mirror 的 Tanks 示例的疑问。
Mirror WebGL 游戏可以使用玩家匹配(matchmaking)吗?
是的。Edgegap 的匹配器可以在浏览器中运行:客户端发送票据(ticket),匹配器在玩家附近启动一台专用服务器,每个客户端通过 wss:// 进行连接。在 allowed_cors_origins 中列出提供您游戏的页面,并省略延迟规则。
哪种 Mirror 传输协议可以在浏览器中运行?
SimpleWebTransport。Tanks 示例在端口 7778 上运行它,服务器端关闭 SSL,客户端使用 wss。在 Edgegap 上,将该端口设置为 WS 并开启 TLS Upgrade,Edgegap 会处理证书。
为什么 Tanks 示例中的匹配功能被关闭了?
因此该示例在没有额外包的情况下也能打开并构建。安装 Edgegap Unity SDK(3.5.5 或更新版本),然后在 MirrorTanks 场景中激活 EdgegapMatchmaking 对象。将其停用可再次关闭匹配。
比赛结束后《坦克世界》服务器还会继续运行吗?
不会。示例服务器会在最后一名玩家离开 30 秒后,或者在无人加入 2 分钟后自动停止部署,因此您无需为空闲服务器付费。

客户
了解更多已接入 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 自动化游戏服务器编排如何带来无缝的多人游戏体验。









