了解Edgegap的工作原理

了解Edgegap的工作原理

Unreal Engine

Lyra

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

Lyra:在 Edgegap 专属服务器上运行 Epic 的 Lyra Starter Game,支持匹配和 EOS

Lyra:在 Edgegap 专属服务器上运行 Epic 的 Lyra Starter Game,支持匹配和 EOS


Lyra 是 Epic 专为 Unreal Engine 5 打造的多人示例游戏:这是一款包含多种游戏模式的射击游戏,基于 Epic Online Services (EOS) 构建。开箱即用状态下,选择 Network Online 并 Start a Game 会使玩家的 PC 充当监听服务器(Listen Server)作为主机。Edgegap 的示例改变了这一点:每场线上对局都在其专用的专属服务器(Dedicated Server)上运行。

当玩家开始线上游戏时,Lyra 会向 Edgegap 匹配系统请求一个靠近玩家的服务器。Edgegap 启动专属服务器,玩家随后加入其中。同时排队的两个玩家将共享一个服务器。

EOS 在 Lyra 中继续履行其原有功能。玩家使用其 Epic 账户登录,好友、在线状态和界面悬浮窗功能均正常工作。每个 Edgegap 服务器都会注册一个 EOS 会话,因此 Lyra 自己的菜单能够检测到它。

Edgegap 的网络覆盖 615 多个边缘云节点(了解更多)。每个服务器都会部署到适合其玩家的最佳可用位置,在对局空闲无人时自行停止,并且仅在运行时计费。

支持平台:Windows 游戏客户端和 Edgegap 上的 Linux 专属服务器。使用来自 Epic Games Launcher 的 Unreal Engine 5.8.4,无需编译引擎源码。Lyra 来源于 Epic,可在 Fab 或 Epic 的 GitHub 上获取。Edgegap 的代码遵循 Apache 2.0 许可协议;Lyra 和 Unreal Engine 内容仍遵循 Epic 的条款。

运作方式

  1. 玩家使用其 Epic 账户登录,然后依次选择 Play Lyra、带有 Network Online 的 Start a Game。

  2. 游戏向 Edgegap 的信标(Beacon)发送 ping 测试,并连同这些 ping 延迟数据为所选游戏模式发送匹配票证。

  3. 匹配系统将 2 到 8 名对同一信标具有相近 ping 值的玩家分为一组,然后在他们附近启动 Edgegap 部署。

  4. 服务器加载与票证匹配的游戏模式,并使用其公共端口注册 EOS 会话。

  5. 每个客户端获取服务器地址并凭借玩家的 EOS 身份连接前往该服务器。

  6. 当最后一名玩家离开时,服务器会等待 15 秒,然后停止自身部署,计费随之结束。

该示例为 Lyra 增添的内容:

路径

功能说明

Plugins/EdgegapIntegration/.../EdgegapSessionSubsystem

客户端:替换 Lyra 用于在线托管的会话子系统。负责信标 ping 测试、匹配票证、等待服务器、连接,并提供进度悬浮窗和 Cancel 按钮。浏览、加入、邀请以及局域网托管仍由 Lyra 原生处理。

Plugins/EdgegapIntegration/.../EdgegapServerSubsystem

服务端:托管匹配系统选定的游戏模式,在 EOS 会话中通告 Edgegap 的外部端口,并在对局空闲无人时停止部署。

Plugins/EdgegapIntegration/Source/EdgegapEOSServerConfig

服务端:关闭专属服务器上的 Epic 账户登录,并使用从应用版本变量中读取的服务器自身 EOS 客户端。

Config/DefaultEngine.Edgegap.ini、Config/DefaultGame.Edgegap.ini

需追加的配置块:服务器目标、EOS 设置、匹配系统设置、游戏模式到匹配系统配置文件的映射。

Config/UserEngine.ini.example

本地敏感配置项模板。

Dockerfile、matchmaker-config.json

服务器镜像和匹配系统配置文件。

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

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


运行在 Edgegap 专属服务器上的 Epic 的 Lyra,搭配 Edgegap 匹配器和 EOS 会话。

分步指南

运行示例

1. 开始之前


  • 一个免费的 Edgegap 账户。测试无需信用卡。

  • 来自 Epic Games 启动器的 Unreal Engine 5.8。

  • 适用于 5.8 的 Lyra 初学者游戏:在启动器中,从 Fab 添加它并选择创建项目。请将项目保存在 OneDrive 和其他同步文件夹之外。

  • Docker Desktop 和 Edgegap 的 Docker 扩展。启动器的引擎无法构建 Server 目标,因此 Linux 服务器是在 Docker 内部构建的。步骤 4 中的两条构建路径都需要一个与您的 Epic 账户关联的 GitHub 账户,以及一个具有 read:packages 权限的 GitHub 个人访问令牌 (Personal Access Token)。

  • Epic 开发者门户中的组织和产品,用于 EOS。

  • 克隆示例。它仅包含 Edgegap 的部分,您可以将其添加到自己的 Lyra 副本中。

2. 将示例添加到您的 Lyra 项目中


  1. 将 Plugins/EdgegapIntegration 复制到项目的 Plugins 文件夹中。

  2. 在 .uproject 中启用两个插件:OnlineSubsystemEOS 和 EdgegapIntegration。

  3. 将 Config/DefaultEngine.Edgegap.ini 追加到 Config/DefaultEngine.ini,并将 Config/DefaultGame.Edgegap.ini 追加到 Config/DefaultGame.ini(将 <Project> 替换为您的项目名称:来自 Fab 的 LyraStarterGame)。

  4. 在 Source/LyraServer.Target.cs 中,用 if (BuildEnvironment == TargetBuildEnvironment.Unique) 包裹 bUseChecksInShipping = true;。已安装的引擎(如启动器版本和 Docker 构建镜像)会拒绝修改该项的目标。

  5. 将 Config/User*.ini 添加到您的 .gitignore 中。

Fab 上的 5.8 版本 Lyra 副本中有两个 CommonUser 文件(CommonUserBasicPresence.cpp、CommonSessionSubsystem.cpp)包含无法访问的代码,Linux 构建的 clang 编译器会将其拒绝。可以从 Epic 的 GitHub 5.8.4-release 标签中获取这两个文件,或者删除无法访问的 break; 代码行以及在首次执行时就返回的循环。

3. 设置 Epic Online Services


在 Epic 开发者门户中的您的产品里:

  1. 客户端策略:为玩家设置一个 Peer2Peer 策略。对于服务器,设置一个启用了 Sessions(勾选每个操作)且关闭了 User required 的 Custom 策略。TrustedServer 模板不会保存在门户中。

  2. 客户端:每个策略对应一个,例如 Lyra Client 和 Lyra Server。

  3. Epic 账户服务:接受条款,创建一个应用程序,启用 Online Presence 和 Friends,并关联 Lyra Client。品牌设置仅在发布前需要。

  4. 将产品、沙盒和部署 ID 以及 Lyra Client ID 放入 Config/DefaultEngine.ini 中的 LyraEdgegap 工件里。

  5. 将 Config/UserEngine.ini.example 复制到 Config/UserEngine.ini,并添加 Lyra Client 密钥和一个 64 位十六进制字符的加密密钥。配对器(matchmaker)的 URL 和令牌将在步骤 6 中放置于此处。

Lyra Server 密钥绝不能放在文件或游戏构建版本中:它存在于 Edgegap 应用版本上(步骤 4)。有关 EOS 与 Edgegap 的通用信息,请参阅 Epic Online Services 指南。

4. 构建 Linux 服务器并部署到 Edgegap


方案 A(推荐):Edgegap 的 Docker 扩展。 这是最快的构建方式:无需引擎源码构建,无需 Linux 工具链,可在任何操作系统上操作。

  1. 在 Docker Desktop 中打开 Edgegap 扩展。输入您的项目名称和 Edgegap 令牌,然后选择 Validate Token。

  2. 选择 Unreal Engine,然后浏览(Browse)至您的 Lyra 项目文件夹并选择 Create Project。扩展程序会自动填入您的引擎版本。

  3. 输入您的 GitHub 用户名和个人访问令牌(Personal Access Token),然后选择 Validate Configuration。所有三项检查都必须变为绿色。

  4. 选择 Build Project,然后选择 Upload Image。每次构建都要使用新标签。

Unreal Engine 集成指南展示了该扩展的各个屏幕界面。

方案 B:手动使用 Epic 的引擎容器。 该代码仓库的 README 中有具体命令:在 ghcr.io/epicgames/unreal-engine:dev-slim-5.8.4(约 80 GB)中运行带有 -server -noclient -platform=Linux 和 -UbtArgs="-NoUBA" 的 BuildCookRun,然后使用 --build-arg PROJECT=LyraStarterGame 构建示例的 Dockerfile 并将其推送到 registry.edgegap.com/<project>/lyra:<tag>。首次构建大约需要 40 分钟。

然后,在[控制面板](https://app.edgegap.com/application-management/applications/list)中,创建一个名为 lyra 的应用程序(匹配器配置文件需要此名称)和一个版本:

  • 您的镜像和标签,以及您的镜像仓库凭据。如果没有这些凭据,部署将失败并提示“Unable to pull image from registry”。

  • 一个端口:名称为 gameport,7777,UDP。

  • 1.5 个 vCPU 和 3 GB 内存。

  • 环境变量 EOS_SERVER_CLIENT_ID 和 EOS_SERVER_CLIENT_SECRET(标记为隐藏),附带 Lyra Server 客户端凭据。

示例的 Dockerfile(方案 B)直接运行服务器二进制文件,带有 -stdout -FullStdOutLogOutput,因此其日志会显示在控制面板中,并在 Edgegap 结束部署时正常停止。




5. 将其添加到你自己的 Unreal 游戏中


该示例是一个可用的参考:您的编码智能体将从已经在 Edgegap 上运行过的文件开始,因此它建立在经过测试的配置之上,而不是凭空猜测。

如果您的游戏基于 Lyra 或 Epic 的 CommonUser 插件构建,示例插件即可直接使用:它替换了 CommonUser 用于在线托管的会话子系统,并保留了“浏览(Browse)”、“加入(Join)”和“邀请(invites)”功能。在 PlaylistProfiles 中将您自己的播放列表映射到匹配器配置文件。

对于任何其他 Unreal 游戏,相同的组成部分均适用:

  1. 专用服务器构建版本。一个 Server 目标以及 Config/DefaultEngine.ini 中的 DefaultServerTarget。

  2. 客户端上的匹配。信标 ping、票证、等待服务器,然后前往该服务器。

  3. 自行停止的服务器。仅适用于由匹配器启动的部署,一旦对局为空即停止。

  4. 专用服务器上的 EOS。服务器上无需 Epic 账户登录、通过环境变量获取仅限服务器的 EOS 客户端,以及 EOS 会话中的外部端口。

  5. 服务器镜像。Dockerfile 将 Packaged/LinuxServer 复制到一个作为非 root 用户运行的小型 Ubuntu 镜像中。

使用您的智能体:

“加载 edgegap-unreal skill。以 github.com/edgegap/game-sample-unreal-engine-lyra 为参考,使我的 Unreal 项目支持专用服务器,并添加 Edgegap 匹配以进行在线托管、服务器自行停止,以及由专用服务器使用 Edgegap 的外部端口注册的 EOS 会话。不要将 EOS 服务器凭据放入游戏构建版本中:从环境变量中读取它们。在我提供匹配器 URL 之前保持匹配处于禁用状态,并检查编辑器和 Server 目标是否能正常编译。”

有关手动执行每个步骤的详细信息,请参阅 Unreal Engine 集成指南 和 Unreal 匹配。

6. 启动匹配并开始游戏


  1. 在仪表板中,打开 Matchmaker 并选择 Create Matchmaker。上传示例的 matchmaker-config.json,并将 application.version 设置为您的版本,然后点击 Create and Start。

  2. 当状态变为 ONLINE 时,将其 API URL 和 Auth Token 复制到 Config/UserEngine.ini 的 [/Script/EdgegapIntegration.EdgegapSessionSubsystem] 部分。URL 必须保留双引号:若不加引号,Unreal 会在 // 处将其截断。

  3. 使用 UnrealEditor.exe <Project>.uproject -game 启动 Lyra。按任意键使用您的 Epic 账户登录:账户门户将在浏览器中打开。

  4. 选择 Play Lyra,然后选择 Start a Game,并将网络设置为 Network Online。匹配系统工作时会显示进度浮层。

单人情况下,您将在 10 秒后获得一个服务器。在 10 秒内排队的两位玩家将共享一个服务器。

每个 Lyra 游戏模式都有自己的匹配器配置文件:Control Point (controlpoint)、Elimination (elimination) 和 Top Down Arena (topdown)。每种模式可匹配 2 到 8 名玩家,要求他们到公共信标的 ping 低于 150 毫秒,且彼此之间的 ping 差在 100 毫秒以内。10 秒后,它还接受单人玩家并将 ping 放宽至最高 250 毫秒。30 秒后未匹配成功的票据将被取消。

Auth Token 仅允许客户端创建和读取票据,因此可以安全地随游戏一起发布。切勿在游戏中放入您的 Edgegap API 令牌。

若要在单台电脑上测试两个 Epic 账户,请使用 Epic 的 Developer Authentication Tool(README 中包含命令行)。对于无人值守测试,-EdgegapFindMatch=DA_Convolution_ControlPoint 会在前端加载 5 秒后加入排队。

当您发布新的服务器版本时,请将 application.version 指向新版本,否则匹配将继续部署旧版本。

已知限制


  • 从第二个账户进行“浏览”和“快速游玩”尚未经过测试。 每个 Edgegap 服务器都会注册一个 EOS 会话,以便 Lyra 的“浏览”界面和“快速游玩”可以找到它,但从另一个 Epic 账户查找正在进行的比赛尚未经过验证。

  • 服务器在 Docker 中构建。 启动器的引擎无法构建 Server 目标,因此服务器在 Docker 内部构建,使用 Edgegap 的 Docker 扩展或 Epic 的容器映像。两者都需要关联到 Epic 的 GitHub 账户。

  • Lyra 版本必须与引擎匹配。 该示例针对 5.8 版本的 Lyra 和 Unreal 5.8.4。Fab 副本需要步骤 2 中的 CommonUser 修复。

  • 玩家需要一个 Epic 账户。 该示例使用 Epic 账户服务(Epic Account Services),因此玩家需要使用 Epic 登录。对于在 Steam 或主机上发行的游戏,请通过 EOS Connect 使用该平台的登录方式。

  • 玩家在开始时可能会掉线一次。 全新的 Lyra 服务器会在其前端地图上启动,然后加载比赛地图并断开早期加入者的连接。客户端会自动重新加入为其分配的服务器。

  • 手动部署的服务器不会自动停止。 只有通过匹配系统部署的服务器才会自动停止。请在仪表板中停止其他服务器。

测试了什么


于 2026 年 11 月 2 日在 Edgegap 上进行了端到端测试,使用 Unreal Engine 5.8.4、Windows 客户端以及 Edgegap 上的 Linux 服务器:

  • 登录和匹配:Epic 登录,然后开始游戏、匹配器和专用服务器;玩家使用其 EOS 身份加入。

  • 双人玩家:两个客户端同时排队并匹配到同一台服务器。

  • EOS 会话:服务器使用 Edgegap 的外部端口创建了其 EOS 会话。

  • 自动停止:玩家离开后,服务器停止了其部署。

尚未测试:从第二个 Epic 账户通过“浏览”和“快速游戏”查找正在进行的对局。

常见问题

关于在配备 EOS 的 Edgegap 专用服务器上运行 Epic 的 Lyra 的常见问题。

Lyra 可以在专用服务器上运行吗?


是的。Lyra 随附了一个 LyraServer 目标。Edgegap 的示例通过启动程序安装的 Unreal 5.8,结合 Edgegap 的 Docker 扩展将其构建为 Linux 专用服务器,因此您无需从源码构建引擎。随后,在线游戏将在 Edgegap 服务器上启动,而不是在玩家的电脑上。

当 Lyra 在 Edgegap 上运行时,EOS 还能正常工作吗?


是的。玩家使用他们的 Epic 账户登录,好友、在线状态和悬浮窗均可正常使用。每个 Edgegap 服务器都会通过其公共端口注册一个 EOS 会话,并使用自己的 EOS 客户端,因此服务器绝不会以玩家身份登录。

该示例支持哪些 Lyra 游戏模式?


控制点、淘汰赛以及俯视角竞技场模式。每种模式都有独立的匹配配置文件,服务器会根据玩家排队选择的游戏模式进行加载。

样本中是否包含 Lyra?


不。该代码仓仅包含 Edgegap 的部分:一个插件、配置块、一个 Dockerfile 以及一个匹配系统配置。Lyra 的代码和内容来自 Epic,可在 Fab 或 Epic 的 GitHub 上获取,并遵循 Unreal Engine EULA。







客户

了解更多已接入 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 行

解锁

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