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 多个边缘云节点(了解更多)。每个服务器都会部署到适合其玩家的最佳可用位置,在对局空闲无人时自行停止,并且仅在运行时计费。
克隆示例:GitHub 上的 Lyra 示例
完整指南:使用 Unreal Engine 集成指南 将 Edgegap 添加到您自己的 Unreal 游戏中
支持平台:Windows 游戏客户端和 Edgegap 上的 Linux 专属服务器。使用来自 Epic Games Launcher 的 Unreal Engine 5.8.4,无需编译引擎源码。Lyra 来源于 Epic,可在 Fab 或 Epic 的 GitHub 上获取。Edgegap 的代码遵循 Apache 2.0 许可协议;Lyra 和 Unreal Engine 内容仍遵循 Epic 的条款。
运作方式
玩家使用其 Epic 账户登录,然后依次选择 Play Lyra、带有 Network Online 的 Start a Game。
游戏向 Edgegap 的信标(Beacon)发送 ping 测试,并连同这些 ping 延迟数据为所选游戏模式发送匹配票证。
匹配系统将 2 到 8 名对同一信标具有相近 ping 值的玩家分为一组,然后在他们附近启动 Edgegap 部署。
服务器加载与票证匹配的游戏模式,并使用其公共端口注册 EOS 会话。
每个客户端获取服务器地址并凭借玩家的 EOS 身份连接前往该服务器。
当最后一名玩家离开时,服务器会等待 15 秒,然后停止自身部署,计费随之结束。
该示例为 Lyra 增添的内容:
路径 | 功能说明 |
|---|---|
| 客户端:替换 Lyra 用于在线托管的会话子系统。负责信标 ping 测试、匹配票证、等待服务器、连接,并提供进度悬浮窗和 Cancel 按钮。浏览、加入、邀请以及局域网托管仍由 Lyra 原生处理。 |
| 服务端:托管匹配系统选定的游戏模式,在 EOS 会话中通告 Edgegap 的外部端口,并在对局空闲无人时停止部署。 |
| 服务端:关闭专属服务器上的 Epic 账户登录,并使用从应用版本变量中读取的服务器自身 EOS 客户端。 |
| 需追加的配置块:服务器目标、EOS 设置、匹配系统设置、游戏模式到匹配系统配置文件的映射。 |
| 本地敏感配置项模板。 |
| 服务器镜像和匹配系统配置文件。 |
运行在 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 项目中
将
Plugins/EdgegapIntegration复制到项目的Plugins文件夹中。在
.uproject中启用两个插件:OnlineSubsystemEOS和EdgegapIntegration。将
Config/DefaultEngine.Edgegap.ini追加到Config/DefaultEngine.ini,并将Config/DefaultGame.Edgegap.ini追加到Config/DefaultGame.ini(将<Project>替换为您的项目名称:来自 Fab 的LyraStarterGame)。在
Source/LyraServer.Target.cs中,用if (BuildEnvironment == TargetBuildEnvironment.Unique)包裹bUseChecksInShipping = true;。已安装的引擎(如启动器版本和 Docker 构建镜像)会拒绝修改该项的目标。将
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 开发者门户中的您的产品里:
客户端策略:为玩家设置一个 Peer2Peer 策略。对于服务器,设置一个启用了 Sessions(勾选每个操作)且关闭了 User required 的 Custom 策略。TrustedServer 模板不会保存在门户中。
客户端:每个策略对应一个,例如
Lyra Client和Lyra Server。Epic 账户服务:接受条款,创建一个应用程序,启用 Online Presence 和 Friends,并关联
Lyra Client。品牌设置仅在发布前需要。将产品、沙盒和部署 ID 以及
Lyra ClientID 放入Config/DefaultEngine.ini中的LyraEdgegap工件里。将
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 工具链,可在任何操作系统上操作。
在 Docker Desktop 中打开 Edgegap 扩展。输入您的项目名称和 Edgegap 令牌,然后选择 Validate Token。
选择 Unreal Engine,然后浏览(Browse)至您的 Lyra 项目文件夹并选择 Create Project。扩展程序会自动填入您的引擎版本。
输入您的 GitHub 用户名和个人访问令牌(Personal Access Token),然后选择 Validate Configuration。所有三项检查都必须变为绿色。
选择 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 游戏,相同的组成部分均适用:
专用服务器构建版本。一个 Server 目标以及
Config/DefaultEngine.ini中的DefaultServerTarget。客户端上的匹配。信标 ping、票证、等待服务器,然后前往该服务器。
自行停止的服务器。仅适用于由匹配器启动的部署,一旦对局为空即停止。
专用服务器上的 EOS。服务器上无需 Epic 账户登录、通过环境变量获取仅限服务器的 EOS 客户端,以及 EOS 会话中的外部端口。
服务器镜像。
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. 启动匹配并开始游戏
在仪表板中,打开 Matchmaker 并选择 Create Matchmaker。上传示例的
matchmaker-config.json,并将application.version设置为您的版本,然后点击 Create and Start。当状态变为 ONLINE 时,将其 API URL 和 Auth Token 复制到
Config/UserEngine.ini的[/Script/EdgegapIntegration.EdgegapSessionSubsystem]部分。URL 必须保留双引号:若不加引号,Unreal 会在//处将其截断。使用
UnrealEditor.exe <Project>.uproject -game启动 Lyra。按任意键使用您的 Epic 账户登录:账户门户将在浏览器中打开。选择 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 的工作室案例研究。

《以太之战 2》完美的全球发布
Aether Studios
了解Aether Studios是如何快速添加Edgegap并向他们的社区交付完美的启动和后启动服务的。
案例研究

克服因虚拟现实在竞技Multiplay中使用WiFi而引入的延迟
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
案例研究

MENA的社交应用添加了在线游戏
WOLF
了解这款在中东和北非地区广受欢迎的社交应用如何轻松地将 matchmaking 和多人游戏编排添加到 WOLF Qanawat。
案例研究

混合编排让开球策略随时应对任何流量做好准备
Birch Games
混合编排如何帮助 Birch Games 应对流量——将免流出费用的 Fleets 与无区域限制云相结合。
案例研究

7天血月
The Fun Pimps & iLLOGIKA
了解 Illogika 如何大幅降低服务器成本,并确保提供《七日杀 (7 Days to Die)》玩家所期望的在线体验。
案例研究

真实的在线战争需要终极的协调
Highwire Games
了解Highwire对性能的需求如何需要只有Edgegap才能提供的编排。
案例研究

22,000 条评价、4.8 颗星以及自动扩展的基础架构
Sinn Studios
一个由 Slack 提供支持的简单集成,如何让 Sinn Studio 的热门 VR 游戏快速上线并保持稳定运行。
案例研究

动态服务器编排
Under NDA - AAA Studio
了解世界上最大的AAA工作室之一如何通过边缘计算改善其对等多人游戏体验。
案例研究

对于 AAA 格斗游戏的近零延迟
AAA Studio - Under NDA
一个未宣布的项目如何实现了最低延迟,并改善了其1v1游戏中的公平性。
案例研究

Play Gods with Multiplayer Physics
Squido Studio
Learn how Squido uses Edgegap's highligh optimized game servers to deliver mind-bending & chaotic VR gameplay.
案例研究

全面托管的解决方案为独立游戏节省时间 多人VR恐怖游戏
Dirty Pearl Studios
了解Dirty Pearl Studios如何通过Edgegap的轻松集成和自动编排,以及其Nakama集成,节省了开发时间。
案例研究

即时全球服务器部署以促进协作式XR医学教育
AlensiaXR
AlensiaXR如何利用Edgegap为全球医学生提供低延迟、始终可用的共享解剖课程。
案例研究

守光人:具有专用服务器的 VR 社交合作游戏
Spectral Games
Spectral Games 如何在无需任何服务器经验的情况下,利用 Edgegap Matchmaking 和 Server Browser 为其 VR 社交大厅启动专用服务器。
案例研究

全球范围内快速可靠的部署,适用于PvPvE挑战者Gravebound
Crater Studios
Edgegap 的调度和配对如何帮助 Crater Studios 使他们能够将重心从基础设施转移到游戏玩法上。
案例研究

快速扩展网络元宇宙
Hiber
了解Hiber如何通过Edgegap消除服务器容量规划中的猜测。
案例研究

高硬件要求和自定义游戏服务器池
Alderon Games
了解Alderon Games如何瞬间利用全球多个供应商的自定义游戏服务器池来支持其热门MMO。
案例研究

独立开发者的简单集成
WhaleFood Games
阅读关于WhaleFood Games如何使用Edgegap解决其网络代码问题的文章。
案例研究

推动东南亚首款电子竞技游戏的尖端技术。
Anantarupa Studios
了解Edgegap如何通过一个无缝解决方案简化复杂基础设施和尖端技术,从而改变东南亚的游戏格局。
案例研究

一次打击。全球抵达。
Triple Hill Interactive
Triple Hill Interactive如何利用Edgegap的编排来提供低延迟,并提高在每毫秒都至关重要的游戏类型中的公平性。
案例研究

快节奏团队大逃杀...带着枪的动物毛绒玩具!
SANDYFLOOR
了解一家韩国独立工作室是如何将其多人游戏发布到全球的。
案例研究

移动端赛马游戏凭借即时、高效能的服务器走向全球
Mirai Labs
看 Mirai Labs 如何通过即时服务器部署和细分 vCPU 来运行 Pegaxy Blaze 的全球多人竞速游戏,从而将单个玩家的成本保持在极低水平。
案例研究

服务器管理与分发
Matrioshka Games
阅读关于Matrioshka Games如何在资源有限的情况下发布早期访问的战斗 Royale。
案例研究

听我的信号,释放地狱!
TyGames
探索独立工作室TyGames如何让玩家沉浸在第三人称角斗士战斗的多人游戏中。
案例研究

瞬时全球编排
Soliton Interactive
探索Soliton Interactive如何做到了不可能……首次推出可多人玩的版本!
案例研究

竞技游戏具有服务器端物理引擎,确保理想的低于50毫秒的延迟
NS7
了解为什么仅有Edgegap能够使独立工作室通过服务器端物理和权限实现其AAA质量的免费游戏体育玩法愿景。
案例研究

iGaming的区域部署
X1 Contra 1
X1 Contra 1 通过经济高效的托管和区域部署,为其巴西玩家提供实时 PvP 休闲游戏,确保数据和法律合规。
案例研究

仅在玩家游玩时付费:经济实惠的多人游戏基础设施
Meltdown Interactive
Edgegap 如何帮助独立开发商 Meltdown Interactive Media 在无需复杂方案的情况下,以高性价比解决扩缩容和匹配问题,从而让他们能够专注于游戏开发。
案例研究

同一个 Edgegap 平台,三种截然不同的网络配置
Warped Games
了解 Warped Games 如何在同一个 Edgegap 部署 API 和同一个容器管线上运行社交中心、实时合作以及回合制合作。
案例研究

台球大师巡回赛Max
RETA Games
案例研究

韩国的Web3 POP提取射击游戏走向全球,即刻启程
NDUS Entertainment
XOCIETY 如何轻松地添加 Edgegap 编排并集成自定义 matchmaking,与 Edgegap Ping Beacons 一起优化延迟。
案例研究

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.
案例研究

F2P 移动格斗游戏利用即时(Just-In-Time)服务器降低基础设施成本
Game Changers Worldwide
Game Changer Worldwide 如何在全球移动端托管 Rumble Rush 的实时 3v3 PvP 游戏。
案例研究
他们选择 Edgegap 的关键原因
了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。









