PurrNet 的 Incremental 示例是一个小型的多人 Unity 游戏:穿梭于树木之间、搜刮战利品、将其带回基地并购买升级。Edgegap 的分支版本将其运行在专用游戏服务器上,因此无需玩家作为主机。
游戏本身并没有改变:除了其中一行代码外,场景、预制体和游戏玩法代码都与 PurrNet 编写的完全一致。所有 Edgegap 专用的内容都位于其专属的 Assets/Edgegap/ 文件夹中,并在游戏启动时自动添加。在编辑器中,运行模式保留了 PurrNet 常用的主机和 ParrelSync 克隆流程。
该分支版本的新增特性:
可选的撮合配对。默认关闭:客户端连接到指定地址和端口。开启 Edgegap 撮合系统后,玩家只需点击寻找比赛即可。
玩家离开后自动停止的服务器。每台服务器在最后一名玩家离开 30 秒后,或者在无人加入 120 秒后,会自动停止自身的部署。空闲的服务器不会产生费用。
Edgegap 的网络覆盖超过 615 个边缘云节点(了解更多)。启用撮合系统后,每台服务器都会在适合其玩家的最佳可用位置启动,并且仅在运行时计费。
完整指南:通过 PurrNet 集成指南将 Edgegap 添加到你自己的 PurrNet 游戏中
支持平台:Windows、macOS 和 Linux 桌面构建版本 (UDP)。原游戏由 PurrNet 制作,遵循 MIT 许可;美术资源来自 Kenney.nl。
工作原理
Linux 专用服务器在 UDP 端口 5000 上启动 PurrNet 服务器并等待玩家。
直接连接(默认):每个客户端输入服务器的主机地址和端口,然后点击连接。
撮合系统(可选):每个客户端点击寻找比赛并发送一张票证。Edgegap 撮合系统会将 2 到 4 名玩家编为一组,在他们附近启动服务器,并将服务器地址发送给每个客户端。
玩家在同一台服务器上伐木、收集木材并购买升级。
当所有人都离开后,服务器等待 30 秒,然后停止自身的部署。
该分支所做的更改:
路径 | 作用 |
|---|---|
| 在场景加载前运行。在构建版本中关闭 PurrNet 的自动启动,并添加以下组件。 |
| 服务器构建版本:在 |
| 客户端构建版本:地址和端口,或寻找比赛。连接断开时重新加载场景。 |
| 撮合模式:创建票证,等待服务器就绪,然后连接。 |
| 所有设置:模式、端口、撮合系统 URL 和认证令牌 (Auth Token)。 |
| Tools → Edgegap → Build Linux Dedicated Server,以及命令行构建支持。 |
| 服务器镜像和撮合系统配置。 |
| 针对上游唯一的一处修改: |

来自 Purrnet 的增量示例,玩家在其中砍伐树木并将战利品带回基地,该示例使用了 Edgegap 的专属服务器托管和编排服务。
1. 开始之前
一个免费的 Edgegap 账户。测试无需信用卡。
包含 Linux Build Support (Mono) 和 Linux Dedicated Server Build Support 以及适用于您的客户端平台模块的 Unity 6 (
6000.3.x)。Docker Desktop,正在运行。
克隆该 分支 (fork) 并在 Unity 中打开它。
Git:Unity 需要在您的 PATH 中配置 Git 客户端(2.14.0 或更高版本),以便通过 Git URL 安装软件包(例如 Edgegap 插件)。macOS 通常已预装(Xcode 命令行工具);在 Windows 上,请安装 Git。
2. 先在本地试玩
通过 Tools → Edgegap → Build Linux Dedicated Server 构建服务器。生成的文件位于 Builds/EdgegapServer/。然后在 Docker 中运行它:
docker build --platform linux/amd64 -t purrnet-incremental:local .
docker run --rm -p 5000:5000/udp purrnet-incremental:local
日志显示 Edgegap Server | Starting server on 0.0.0.0:5000.
构建客户端(File → Build Profiles,任意桌面平台)并启动两次。每个窗口都会显示带有 127.0.0.1 和 5000 的连接面板。在两个窗口中均点击 Connect。服务器日志将显示 Edgegap Server | 2 player(s) connected.
3. 将服务器部署到 Edgegap
将镜像推送到您的 Edgegap 镜像仓库。您的项目、用户名和令牌可以在容器镜像仓库页面中找到:
docker login registry.edgegap.com
docker build --platform linux/amd64 -t registry.edgegap.com/<project>/purrnet-incremental:v1 .
docker push registry.edgegap.com/<project>/purrnet-incremental:v1
每次构建都要使用新标签,切勿使用 latest。
在控制面板中创建一个应用程序,然后为该镜像创建一个版本:
一个端口:名称为
gameport,5000,UDP。您的镜像仓库用户名和令牌,否则部署无法拉取该镜像。
4. 在 Edgegap 服务器上开始游戏
在版本页面上选择Deploy。部署就绪后,请记下其主机(<id>.pr.edgegap.net)和 gameport 的外部端口。每次部署时它都会发生变化。
启动两个客户端,输入该主机和端口,然后点击 Connect。两名玩家离开后,服务器会在 30 秒后停止自身的部署。
对于脚本化测试,客户端可以直接从命令行进行连接:
Game.exe -screen-fullscreen 0 -edgegapAddress <id>.pr.edgegap.net -edgegapPort <external port> -edgegapConnect
5. 将其添加到你自己的 PurrNet 游戏中
该分支是一个切实可行的参考:您的代码生成助手可以直接复制其经过测试的文件,而无需从头编写。通过四处更改,即可使 PurrNet 游戏在 Edgegap 上运行:
Edgegap Unity SDK。
Packages/manifest.json从其 Git 仓库添加了com.edgegap.unity-sdk。自主启动和停止的服务器。
Assets/Edgegap/EdgegapBootstrap.cs会在构建中关闭 PurrNet 的自动启动;EdgegapServerLifecycle.cs则在端口 5000 上启动服务器,并在服务器为空时停止部署。连接到在运行时获取的地址的客户端。
EdgegapConnectPanel.cs用于直接连接,EdgegapMatchmakingClient.cs用于寻找比赛(Find Match)。或者从您自己的“开始游戏”(Play)按钮调用FindMatch()。不需要主机的服务器逻辑。设置服务器状态的
[ObserversRpc]需要runLocally: true。若没有它,Incremental 示例的服务器就永远不会生成树。
然后以该分支的 Dockerfile 为模板将服务器容器化,并按步骤 3 创建应用版本。
与您的智能助手协作:
“加载 edgegap skill,然后加载 edgegap-purrnet。以 github.com/edgegap/netcode-game-sample-unity-purrnet-incremental 为参考,将 Edgegap 引导程序、服务器生命周期、连接面板和撮合客户端添加到我的 PurrNet 项目中,修复所有用于设置服务器状态的 ObserversRpc,并检查它是否能在一个服务器和两个客户端的本地环境中正常工作。”
如需手动执行每个步骤的详细信息,请参阅 PurrNet 集成指南。
6. 开启匹配功能(可选)
撮合服务默认处于关闭状态。直接连接正常工作后即可将其开启:
在
matchmaker-config.json中,将application.name和version设置为您的应用程序和版本。控制面板 → Matchmaker → Create Matchmaker → 上传文件 → Create and Start。
在
Assets/Edgegap/Resources/EdgegapSettings.asset中,勾选 Use Edgegap Matchmaker,并粘贴撮合服务的 API URL 和 Auth Token。Auth Token 仅允许进行撮合调用,因此放置在游戏客户端中是安全的。重新构建客户端,启动两个客户端实例并在两个实例中均点击 Find Match。状态会从 searching(搜索中)变为 match found(找到对局),再到 joining(加入中),最后变为 connected(已连接),两者均连接至同一服务器。
casual 配置文件可撮合 2 到 4 名玩家。30 秒后它也接受单个玩家,但单个票据可能只会分配到接近 5 分钟有效期的服务器,因此建议使用两个客户端进行测试。
要发布新的服务器构建版本?推送新标签,创建新的应用版本,然后在撮合服务中依次点击 Stop → Edit application.version → Start。
若要为您自己的 PurrNet 游戏添加撮合功能,请遵循 PurrNet 集成指南。
已知限制
仅限桌面端。该示例使用的是 UDP,浏览器无法打开此类连接。WebGL 则需要 PurrNet 的
WebTransport以及带有 TLS 升级的 WebSocket 端口。未经测试。客户端是受信任的。与上游一样,移动和采集均由客户端控制(PurrNet 的宽松网络规则)。竞技类游戏应采用更严格的规则。
不支持中途加入。比赛开始后到达的玩家不会被添加进去(无回填机制),并且服务器不会检查客户端的匹配票据(
MM_TICKET_IDS)。免费层:一次仅支持一个部署,且匹配服务每 3 小时重启一次(其 URL 和令牌保持不变)。
测试了什么
在 Edgegap 上使用 Unity 6000.3.11f1、PurrNet 提交 a311c06、PurrNet UDPTransport 和 Edgegap Unity SDK 3.5.5 进行了端到端测试。最后一次推送到 GitHub 的时间为 2026 年 10 月 19 日。
直接连接:两名玩家连接并在同一个 Edgegap 服务器上进行了游戏。
匹配系统:两名玩家在点击寻找比赛约 35 秒后,被匹配到了同一个服务器上。
自动停止:每次在玩家离开后,服务器都会自动停止其部署。
常见问题
关于在 Edgegap 上运行 PurrNet Incremental 示例的疑问。
在 Edgegap 上运行 PurrNet Incremental 示例需要匹配系统(matchmaking)吗?
不。默认情况下它是关闭的:客户端直接连接到服务器的主机和端口。如果您希望玩家改为点击“寻找比赛”(Find Match),请在示例的设置资产中开启 Edgegap Matchmaker。
Edgegap 分支修改了 PurrNet 的示例吗?
只有一行。ResourceSpawner.InitSeed 获取 runLocally: true,因此专用服务器会生成树木。其他所有内容都位于 Assets/Edgegap/ 中并在运行时自行添加,因此场景不会被修改。
示例的游戏服务器什么时候停止?
它会在最后一名玩家离开 30 秒后停止自身的 Edgegap 部署,或者在没有人加入的情况下启动 120 秒后停止。您只需在有玩家在线期间付费。
PurrNet Incremental 示例可以在浏览器中运行吗?
还没有。它使用的是 UDP,而浏览器无法打开 UDP。WebGL 构建需要 PurrNet 的 WebTransport 以及在 Edgegap 上带有 TLS 升级的 WebSocket 端口,这尚未经过测试。

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









