本指南将向您展示如何在 Edgegap 的专用游戏服务器上托管使用 Unity 构建的网页端(WebGL)多人游戏,然后添加对局配对功能,以便玩家能自动分组并连接到离他们最近的服务器,最后将其发布到 itch.io。
一旦您的游戏服务器完成容器化,Edgegap 只需一次简单的 API 调用即可将其(按需)部署到全球 615 多个边缘云位置,并完全按使用量计费:无需租用、预配整个服务器,也不用在比赛间隙保持运行。对于需要预留容量的持久服务器,Edgegap 提供了专用队列 (Private Fleets)。Edgegap 的對局配對在此基础上构建,并且是可选的。
网页游戏与桌面游戏有一个很大的区别:浏览器无法建立 UDP 连接。您的游戏通过 WebSockets 与其服务器通信,而通过 https:// 提供的页面只能使用安全 WebSockets (wss://)。Edgegap 的 TLS 升级 为每个服务器提供了一个安全的 WebSocket 端点,因此您永远无需购买或续订证书。
本指南涵盖:
准备 Unity、您的网络代码、Edgegap 帐户和容器化工具
将您的编程代理连接到 Edgegap(可选)
让您的游戏准备好适配浏览器和专用服务器
构建并容器化您的游戏服务器
部署测试服务器并连接到它
添加对局配对(可选)
构建 WebGL 客户端并将其发布到 itch.io
在两个浏览器标签页中测试完整流程
您可以通过两种方式进行操作,也可以结合使用:
使用编程代理。 将 Claude Code、Cursor 或其他代理连接到 Edgegap MCP 服务器及其代理技能。代理会编辑您的项目、构建并容器化服务器、进行部署并编写对局配对代码。您只需在 Unity、Edgegap 控制面板和 itch.io 中进行点击操作,并进行游戏测试即可。
手动操作。 以下每个步骤也可以在没有代理的情况下完成。
我们使用 Edgegap 的 Mirror WebGL 示例,该示例基于 Mirror 的 Tanks 示例和 Unity 6.3 LTS 构建。任何使用 WebSocket 传输的 Unity 游戏都以相同的方式运作。
1. 开始之前
一个免费的 Edgegap 账户。请验证您的电子邮箱。测试无需信用卡。
已安装 Linux 和 Web 构建模块的 Unity 引擎。Edgegap 建议使用 LTS 版本。
从 Unity Hub 添加以下模块:Linux Build Support (Mono)、Linux Build Support (IL2CPP)、Linux Dedicated Server Build Support 和 Web Build Support。添加后请重启 Unity。
该示例使用 Unity 6.3 LTS。在 Windows 上,Unity 6 首次针对 Linux 进行构建时,可能还会要求安装 Linux 工具链软件包 (
com.unity.toolchain.win-x86_64-linux)。
带有 WebSocket 传输协议的网络代码,可在 localhost 上正常运行。我们推荐使用 Mirror 及其 SimpleWebTransport:其 WebGL 路径已通过 Edgegap 匹配系统完成端到端验证。要从我们的示例开始,请下载或克隆 Mirror WebGL 示例。
处于运行状态的容器化工具。我们推荐使用 Docker Desktop,请在构建时保持其已安装并处于运行状态。
对于 Agent 路径:需要一个 Edgegap API 令牌,获取路径为 Dashboard → User Settings → Tokens。该令牌适用于整个组织,因此请像对待密码一样妥善保管:切勿将其放入项目、游戏客户端或聊天中。
Git:Unity 需要在 PATH 环境变量中配置 Git 客户端(2.14.0 或更高版本),以通过 Git URL 安装软件包(例如 Edgegap SDK)。macOS 通常已自带(Xcode Command Line Tools);在 Windows 上,请安装 Git。
2. 将您的代码代理连接到 Edgegap
如果您全程手动操作,请跳过此步骤。
Edgegap MCP 服务器允许您的智能体在您的账户上创建应用和版本、部署服务器、读取日志并生成撮合系统配置。智能体技能为其提供了经过测试的 Unity 工作流程,包括 WebGL、C# 模板、Dockerfile 以及已知问题与注意事项。
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. 让您的游戏适配浏览器和专属服务器
在 Edgegap 上,没有玩家担任比赛的主机。无头专属服务器主导游戏,自行启动并在固定端口上监听,在比赛结束时停止。对于网页游戏,该端口使用 WebSockets 通信。
连接工作原理:
服务器在固定端口上运行纯 WebSockets (
ws),对于 Mirror 的 SimpleWebTransport,该端口为 7778。它不需要证书:在服务器上保持 SSL 关闭即可。Edgegap 的 TLS 升级 在其前端添加了安全层,并带有针对服务器主机名的证书。
客户端使用
wss://连接到部署的主机名(不能是其 IP,否则证书检查会失败)及其外部端口。
配合您的智能体:
"加载 edgegap-unity skill 并将此项目制作成专属服务器 WebGL 游戏:在 7778 端口上使用 SimpleWebTransport,服务器上关闭 SSL,客户端使用 wss,服务器构建在 0.0.0.0 上以无头模式启动,客户端连接时生成玩家,比赛结束时服务器自动停止。安装 Edgegap SDK 3.5.5,添加服务器生命周期和對局配對客户端脚本,并附带 Mirror 适配器和 link.xml。然后检查在本地使用一个服务器和一个客户端时是否仍能正常工作。"
手动配置,在 Mirror 上:
在 NetworkManager 上,将 KCP Transport 替换为 Simple Web Transport,端口设为 7778。将 Headless Start Mode 设置为 Auto Start Server。
安装 Edgegap SDK:在 Window → Package Manager 中,选择 +,然后选择 Add package from git URL,并粘贴
https://github.com/edgegap/edgegap-unity-sdk.git#3.5.5。必须使用 3.5.5 或更高版本:旧版本会导致 WebGL 构建失败。使用
link.xml文件在 IL2CPP 构建中保留 SDK 的数据类(示例在Assets/EdgegapMatchmaking中包含了一个)。在服务器构建中,仅启动服务器,切勿作为主机启动,并在客户端连接时生成玩家。在服务器上设置
Application.targetFrameRate(30 到 60),否则无头构建会使单个 CPU 核心达到 100% 占用率。
其他网络代码:Fish-Networking 的 Bayou 传输方式相同(请参阅 Fish-Networking)。Netcode for GameObjects 可以将 Unity Transport 与 WebSockets 结合使用,但该路径尚未在 Edgegap 上验证:请及早测试。
先在本地测试:一个编辑器作为服务器,另一个作为客户端。不要对无法在 localhost 上运行的游戏进行容器化。
4. 构建并容器化您的服务器
Edgegap 在容器内运行您的 Linux 服务器构建版本。可以使用以下任一选项,或两者结合使用。
选项 A:适用于 Unity 的 Edgegap 自动化游戏服务器构建工具插件。
在 Window → Package Manager 中,选择 +,然后选择 Add package from git URL,并粘贴
https://github.com/edgegap/edgegap-unity-plugin.git。如果您的 Mirror 版本已包含该插件(Assets/Mirror/Hosting/Edgegap),请跳过此步骤:重复安装会导致其脚本出现重复副本。打开 Tools → Edgegap Server Hosting,登录,并在 Connect your Edgegap Account 下粘贴提供给您的令牌。选择 Validate Token。
选择 Build Server,然后在 Docker 运行的情况下,选择 Validate 和 Containerize with Docker。
选择 Upload Image and Create App Version。在浏览器中,设置端口:7778,协议 WS,名称
gameport,并开启 TLS Upgrade。该插件会预填名为“Game Port”的 7770/UDP:请更改这三项。提交。
选项 B:向您的智能助手提问。
“构建 Linux 专用服务器,使用适用于 linux/amd64 的 edgegap-unity Dockerfile 将其容器化,使用新标签将其推送到我的 Edgegap 容器注册表,然后创建应用和应用版本,端口为 7778,协议为 WS,名称为 gameport,并开启 TLS Upgrade。”
智能助手会要求您使用来自容器注册表页面的用户名和令牌自行运行 docker login registry.edgegap.com,以确保这些凭据不会出现在聊天记录中。请确保应用版本已设置注册表凭据:如果没有这些凭据,部署将失败并提示“Unable to pull image from registry”。
每次构建都使用新的镜像标签,切勿使用 latest。
5. 部署测试服务器并连接
在添加配对功能之前,先手动启动一台服务器以验证镜像、端口以及 TLS Upgrade 是否正常工作。以下任意方式均可:
通过插件:选择您的应用和版本,然后选择 Deploy to Cloud。
通过控制面板:在 Edgegap 控制面板 中打开您的应用版本,选择 Deploy,选择靠近您的位置并进行部署。
通过您的代理:“在我附近部署最新的 Edgegap 版本,等待其就绪,检查 WebSocket 端口是否响应 HTTP 101,向我展示日志,并提供主机名和外部端口。”
部署处于 Ready 状态后,复制其 Host URL 和 External Port。在客户端的 NetworkManager 中,将 Network Address 设置为该 Host URL,将 Simple Web Transport 客户端设置为在该 External Port 上使用 wss,然后点击播放并选择 Client。外部端口在每次部署时都会改变,因此每次都需要重新查看。
如果服务器日志显示 First bytes from client was not 'GET' for handshake, instead was 16-03-01,则说明该端口上的 TLS Upgrade 未开启:请在新应用版本中将其开启。
测试完成后停止部署(在插件中使用 Stop Last Deployment,或告知您的代理)。免费层级一次只能运行一个部署,遗留的测试服务器会阻止配对。
6. 添加匹配功能
Edgegap 的撮合系统(matchmaker)是一项托管服务:玩家发送凭据(ticket),该服务会根据您的规则(比赛规模、队伍、技术水平、模式)将他们分组,在他们附近部署您的服务器,并将地址返回给每个客户端。
网页浏览器游戏的两个规则:
无延迟规则。浏览器无法像桌面端游戏那样发送延迟 ping。撮合系统会改为根据玩家的位置来放置服务器。
列出您的源(origins)。将提供您游戏服务的每个网址都放入
allowed_cors_origins中,否则浏览器将阻止撮合系统的响应。对于本地测试和 itch.io:http://localhost:8080、https://YOUR-NAME.itch.io和https://html-classic.itch.zone。
使用您的智能体(agent):
“为我的 WebGL 应用版本生成一个 Edgegap 撮合系统配置:一支 2 到 4 名玩家的队伍,无延迟规则,单人玩家在 30 秒后获得服务器,以及这些允许的源:http://localhost:8080、https://YOUR-NAME.itch.io、https://html-classic.itch.zone。将其保存为 matchmaker-config.json。”
示例中还包含一个可直接编辑的 matchmaker-config.json:将 application.name 和 application.version 设置为您的应用版本。
然后,在控制台中(此步骤没有 API):
打开 Matchmaker 并选择创建 Matchmaker。
为其命名,上传
matchmaker-config.json,然后选择创建并启动。当其状态变为 ONLINE 时,复制 API URL 和 Auth Token。Auth Token 可以安全地随游戏客户端一同发布:它不会提供访问您 Edgegap 账户的权限。
回到 Unity 中:在示例中,激活 MirrorTanks 场景中的 EdgegapMatchmaking 对象,并在 TanksMatchmakingClient 上设置 Base URL 和 Auth Token。或者询问您的智能体:“将撮合系统 API URL 和 Auth Token 放置在关闭了延迟信标的撮合客户端上,将我的 Play 按钮关联到 FindMatch,然后重新构建并推送服务器并创建新的应用版本。”
发布新的服务器构建版本时,请在撮合系统配置中更新 application.version(停止、编辑、启动),否则对局将继续部署旧的构建版本。
7. 构建 WebGL 客户端并将其发布到 itch.io
在 Player Settings → Publishing Settings 中,将 Compression Format 设置为 Gzip 并开启 Decompression Fallback,以便构建能够在 itch.io 等托管平台上加载。
在 File → Build Profiles 中,选择 Web,然后点击 Build。或者让您的智能体运行该技能的 WebGL 客户端构建。
要在本地进行测试,请从允许的源提供构建文件夹服务,例如
python -m http.server 8080 --bind 127.0.0.1,然后打开http://localhost:8080。要发布,请将构建文件夹压缩为 zip 文件。在 itch.io 上,选择 Upload new project,将 Kind of project 设置为 HTML,上传 zip 文件并勾选 This file will be played in the browser。保存后打开该页面。
您的 itch.io 页面源必须包含在配对系统的 allowed_cors_origins 中(步骤 6)。
8. 在两个浏览器标签页中测试完整闭环
确保没有正在运行的测试部署。
在本地或 itch.io 上,用两个浏览器标签页或窗口打开您的游戏。点击之前将每个窗口置于最前:后台标签页会降低 Unity WebGL 的运行速度。
在两边都选择Find Match。状态会从搜索中变为找到比赛,再到分配主机,然后两个标签页都会连接到同一个服务器。
离开比赛。示例服务器会在最后一名玩家离开 30 秒后停止部署,或者在无人加入 2 分钟后停止。这种自动停止机制可以在无人玩游戏时将您的账单保持为零。
在免费层中,匹配器在每次启动 3 小时后停止(从仪表板重新启动它),部署在 60 分钟后停止,且一次只运行一个部署。
也要针对桌面或移动设备进行构建?请参阅 Unity Engine 和 Mirror。开发另一款网页游戏?请参阅针对 Godot Web 导出的 Godot Engine,或参阅使用 Manus 构建游戏的 Manus AI。
准备上线?让您的智能体运行 edgegap-launch 技能的检查清单:版本推介、重启策略、最长持续时间、成本控制。
遇到困难?让您的智能体加载 edgegap-troubleshoot,或在 Edgegap Discord 上向我们的团队和其他工作室寻求帮助。
常见问题
关于在 Edgegap 专属服务器上托管 Unity WebGL 多人游戏的常见问题。
Unity WebGL 游戏可以连接到专用服务器吗?
是的,通过 WebSockets。浏览器无法打开 UDP 连接,因此请使用 WebSocket 传输协议,例如 Mirror 的 SimpleWebTransport。服务器作为 Linux 专用服务器版本运行,浏览器使用 wss:// 连接到该服务器。
我的游戏服务器需要 SSL 证书吗?
不。在服务器的 WebSocket 端口上开启 TLS Upgrade:Edgegap 会处理该服务器主机名的证书。您的服务器运行普通的 WebSockets,而客户端使用 wss:// 连接到该主机名。
为什么我的 WebGL 游戏无法连接到撮合服务器?
浏览器会阻止来自配对程序不允许的来源的请求。请将提供您游戏服务的所有地址(例如 http://localhost:8080 和您的 itch.io 页面)添加到配对程序配置中的 allowed_cors_origins 中。
哪种网络代码(netcode)最适合 Unity WebGL 多人游戏?
采用 SimpleWebTransport 的 Mirror 是经过 Edgegap 匹配器端到端验证的路径,Edgegap 的示例也使用了它。Fish-Networking 的 Bayou 传输方式也可以使用。Netcode for GameObjects 可以使用 WebSocket,但建议尽早测试。
我可以在 itch.io 上托管多人游戏吗?
itch.io 托管的是你游戏的网页,而不是其服务器。在 itch.io 上发布 WebGL 构建版本,并在 Edgegap 上运行专用服务器;玩家从页面通过 wss:// 进行连接。在 Edgegap 上测试是免费的,无需信用卡。

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









