了解Edgegap的工作原理

了解Edgegap的工作原理

/

/

Incremental Sample

PurrNet

Incremental Sample

部署至 Edgegap

已发布

已发布

已发布

Incremental 示例:在 Edgegap 专用服务器上运行 PurrNet 的 Incremental 游戏,并支持對局配對

Incremental 示例:在 Edgegap 专用服务器上运行 PurrNet 的 Incremental 游戏,并支持對局配對

PurrNet 的 Incremental 示例是一个小型的多人 Unity 游戏:穿梭于树木之间、搜刮战利品、将其带回基地并购买升级。Edgegap 的分支版本将其运行在专用游戏服务器上,因此无需玩家作为主机。

游戏本身并没有改变:除了其中一行代码外,场景、预制体和游戏玩法代码都与 PurrNet 编写的完全一致。所有 Edgegap 专用的内容都位于其专属的 Assets/Edgegap/ 文件夹中,并在游戏启动时自动添加。在编辑器中,运行模式保留了 PurrNet 常用的主机和 ParrelSync 克隆流程。

该分支版本的新增特性:

  • 可选的撮合配对。默认关闭:客户端连接到指定地址和端口。开启 Edgegap 撮合系统后,玩家只需点击寻找比赛即可。

  • 玩家离开后自动停止的服务器。每台服务器在最后一名玩家离开 30 秒后,或者在无人加入 120 秒后,会自动停止自身的部署。空闲的服务器不会产生费用。

Edgegap 的网络覆盖超过 615 个边缘云节点(了解更多)。启用撮合系统后,每台服务器都会在适合其玩家的最佳可用位置启动,并且仅在运行时计费。

支持平台:Windows、macOS 和 Linux 桌面构建版本 (UDP)。原游戏由 PurrNet 制作,遵循 MIT 许可;美术资源来自 Kenney.nl。

工作原理

  1. Linux 专用服务器在 UDP 端口 5000 上启动 PurrNet 服务器并等待玩家。

  2. 直接连接(默认):每个客户端输入服务器的主机地址和端口,然后点击连接。

  3. 撮合系统(可选):每个客户端点击寻找比赛并发送一张票证。Edgegap 撮合系统会将 2 到 4 名玩家编为一组,在他们附近启动服务器,并将服务器地址发送给每个客户端。

  4. 玩家在同一台服务器上伐木、收集木材并购买升级。

  5. 当所有人都离开后,服务器等待 30 秒,然后停止自身的部署。

该分支所做的更改:

路径

作用

Assets/Edgegap/EdgegapBootstrap.cs

在场景加载前运行。在构建版本中关闭 PurrNet 的自动启动,并添加以下组件。

Assets/Edgegap/EdgegapServerLifecycle.cs

服务器构建版本:在 0.0.0.0:5000 上启动服务器,记录玩家人数,并在服务器为空时停止部署。

Assets/Edgegap/EdgegapConnectPanel.cs

客户端构建版本:地址和端口,或寻找比赛。连接断开时重新加载场景。

Assets/Edgegap/EdgegapMatchmakingClient.cs、EdgegapMatchmakingDTOs.cs

撮合模式:创建票证,等待服务器就绪,然后连接。

Assets/Edgegap/Resources/EdgegapSettings.asset

所有设置:模式、端口、撮合系统 URL 和认证令牌 (Auth Token)。

Assets/Edgegap/Editor/EdgegapServerBuild.cs

Tools → Edgegap → Build Linux Dedicated Server,以及命令行构建支持。

Dockerfile、matchmaker-config.json

服务器镜像和撮合系统配置。

ResourceSpawner.InitSeed

针对上游唯一的一处修改:runLocally: true,以便专用服务器能够生成树木。

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

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

PurrNet's Incremental sample from above: a player among low-poly trees and loot, next to the PurrNet cat logo.

来自 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 上运行:

  1. Edgegap Unity SDK。Packages/manifest.json 从其 Git 仓库添加了 com.edgegap.unity-sdk。

  2. 自主启动和停止的服务器。Assets/Edgegap/EdgegapBootstrap.cs 会在构建中关闭 PurrNet 的自动启动;EdgegapServerLifecycle.cs 则在端口 5000 上启动服务器,并在服务器为空时停止部署。

  3. 连接到在运行时获取的地址的客户端。EdgegapConnectPanel.cs 用于直接连接,EdgegapMatchmakingClient.cs 用于寻找比赛(Find Match)。或者从您自己的“开始游戏”(Play)按钮调用 FindMatch()。

  4. 不需要主机的服务器逻辑。设置服务器状态的 [ObserversRpc] 需要 runLocally: true。若没有它,Incremental 示例的服务器就永远不会生成树。

然后以该分支的 Dockerfile 为模板将服务器容器化,并按步骤 3 创建应用版本。

与您的智能助手协作:

“加载 edgegap skill,然后加载 edgegap-purrnet。以 github.com/edgegap/netcode-game-sample-unity-purrnet-incremental 为参考,将 Edgegap 引导程序、服务器生命周期、连接面板和撮合客户端添加到我的 PurrNet 项目中,修复所有用于设置服务器状态的 ObserversRpc,并检查它是否能在一个服务器和两个客户端的本地环境中正常工作。”

如需手动执行每个步骤的详细信息,请参阅 PurrNet 集成指南。

6. 开启匹配功能(可选)

撮合服务默认处于关闭状态。直接连接正常工作后即可将其开启:

  1. 在 matchmaker-config.json 中,将 application.name 和 version 设置为您的应用程序和版本。

  2. 控制面板 → Matchmaker → Create Matchmaker → 上传文件 → Create and Start。

  3. 在 Assets/Edgegap/Resources/EdgegapSettings.asset 中,勾选 Use Edgegap Matchmaker,并粘贴撮合服务的 API URL 和 Auth Token。Auth Token 仅允许进行撮合调用,因此放置在游戏客户端中是安全的。

  4. 重新构建客户端,启动两个客户端实例并在两个实例中均点击 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 的工作室案例研究。

他们选择 Edgegap 的关键原因

了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。

费用

定价

定价

通过混合编排优化成本与性能

通过混合编排优化成本与性能

通过混合编排优化成本与性能

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

专属物理机集群 (裸金属)

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

专属物理机集群 (裸金属)

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

使用我们的预估计算器模拟您的用量 ->

使用我们的预估计算器模拟您的用量 ->

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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