Lyra is Epic’s multiplayer sample game for Unreal Engine 5: a shooter with several game modes, built on Epic Online Services (EOS). Out of the box, Start a Game with Network Online makes the player’s PC the host, as a listen server. Edgegap’s sample changes that: every online match runs on its own dedicated game server.
When a player starts an online game, Lyra asks the Edgegap matchmaker for a server near the players. Edgegap starts a dedicated server, and the player joins it. Two players who queue at the same time share one server.
EOS keeps doing what it does in Lyra. Players sign in with their Epic account, and friends, presence and the overlay keep working. Each Edgegap server registers an EOS session, so Lyra’s own menus can see it.
Edgegap’s network spans 615+ Edge Cloud locations (learn more). Each server is deployed to the best available location for its players, stops itself when the match is empty, and is billed only while it runs.
Clone the sample: Lyra sample on GitHub
Full guide: add Edgegap to your own Unreal game with the Unreal Engine integration guide
Platforms: Windows game client and a Linux dedicated server on Edgegap. Unreal Engine 5.8.4 from the Epic Games Launcher, no engine source build. Lyra comes from Epic, on Fab or Epic’s GitHub. Edgegap’s code is under the Apache 2.0 licence; Lyra and the Unreal Engine content stay under Epic’s terms.
How it works
A player signs in with their Epic account, then selects Play Lyra, then Start a Game with Network Online.
The game pings Edgegap’s beacons and sends a matchmaking ticket for the chosen game mode, with those ping times.
The matchmaker groups 2 to 8 players with a similar ping to the same beacon, then starts an Edgegap deployment near them.
The server loads the game mode that matches the ticket, and registers an EOS session with its public port.
Each client gets the server’s address and travels to it, with the player’s EOS identity.
When the last player leaves, the server waits 15 seconds, then stops its own deployment, which ends billing.
What the sample adds to Lyra:
Path | What it does |
|---|---|
| Client: replaces Lyra’s session subsystem for online hosting. Beacon pings, matchmaking ticket, waits for a server, connects, with a progress overlay and a Cancel button. Browse, Join, invites and LAN hosting stay Lyra’s. |
| Server: hosts the game mode picked by the matchmaker, advertises Edgegap’s external port in the EOS session, stops the deployment when the match is empty. |
| Server: turns off Epic account login on the dedicated server and uses the server’s own EOS client, read from the app version’s variables. |
| Config blocks to append: server target, EOS settings, matchmaker settings, game mode to matchmaker profile map. |
| Template for your local secrets. |
| The server image and the matchmaker profiles. |
Epic’s Lyra on Edgegap dedicated servers, with the Edgegap matchmaker and EOS sessions.
1. Before you start
A free Edgegap account. No credit card is needed to test.
Unreal Engine 5.8 from the Epic Games Launcher.
Lyra Starter Game for 5.8: in the launcher, add it from Fab and select Create Project. Keep the project outside OneDrive and other synced folders.
Docker Desktop and Edgegap’s Docker Extension. The launcher’s engine can’t build Server targets, so the Linux server is built inside Docker. Both build paths in step 4 need a GitHub account linked to your Epic account, and a GitHub Personal Access Token with
read:packages.An organization and product in the Epic Developer Portal, for EOS.
Clone the sample. It holds only Edgegap’s part, which you add to your copy of Lyra.
2. Add the sample to your Lyra project
Copy
Plugins/EdgegapIntegrationinto your project’sPluginsfolder.In your
.uproject, enable two plugins:OnlineSubsystemEOSandEdgegapIntegration.Append
Config/DefaultEngine.Edgegap.inito yourConfig/DefaultEngine.ini, andConfig/DefaultGame.Edgegap.inito yourConfig/DefaultGame.ini(replace<Project>with your project name:LyraStarterGamefrom Fab).In
Source/LyraServer.Target.cs, wrapbUseChecksInShipping = true;inif (BuildEnvironment == TargetBuildEnvironment.Unique). Installed engines, like the launcher’s and the Docker build images, refuse targets that change it.Add
Config/User*.inito your.gitignore.
The Fab copy of Lyra for 5.8 has two CommonUser files (CommonUserBasicPresence.cpp, CommonSessionSubsystem.cpp) with unreachable code that the Linux build’s clang compiler rejects. Take both files from Epic’s GitHub 5.8.4-release tag, or delete the unreachable break; lines and the loop that returns on its first pass.
3. Set up Epic Online Services
In your product in the Epic Developer Portal:
Client policies: a Peer2Peer policy for players. For the server, a Custom policy with Sessions enabled (tick each action) and User required off. The TrustedServer template doesn’t save in the portal.
Clients: one per policy, for example
Lyra ClientandLyra Server.Epic Account Services: accept the terms, create an application, enable Online Presence and Friends, and link
Lyra Client. Brand settings are only needed before release.Put the product, sandbox and deployment IDs and the
Lyra ClientID in theLyraEdgegapartifact inConfig/DefaultEngine.ini.Copy
Config/UserEngine.ini.exampletoConfig/UserEngine.iniand add theLyra Clientsecret and a 64-hex-character encryption key. The matchmaker URL and token go here in step 6.
The Lyra Server secret never goes in a file or a game build: it lives on the Edgegap app version (step 4). For EOS with Edgegap in general, see the Epic Online Services guide.
4. Build the Linux server and put it on Edgegap
Option A (recommended): Edgegap’s Docker Extension. It’s the fastest way to build: no engine source build, no Linux toolchain, from any operating system.
In Docker Desktop, open the Edgegap extension. Enter your project’s name and your Edgegap token, then select Validate Token.
Select Unreal Engine, then Browse to your Lyra project folder and select Create Project. The extension fills in your engine version.
Enter your GitHub username and Personal Access Token, then select Validate Configuration. All three checks must turn green.
Select Build Project, then Upload Image. Use a new tag for every build.
The Unreal Engine integration guide shows each screen of the extension.
Option B: Epic’s engine container, by hand. The repo’s README has the exact commands: run BuildCookRun in ghcr.io/epicgames/unreal-engine:dev-slim-5.8.4 (about 80 GB) with -server -noclient -platform=Linux and -UbtArgs="-NoUBA", then build the sample’s Dockerfile with --build-arg PROJECT=LyraStarterGame and push it to registry.edgegap.com/<project>/lyra:<tag>. The first build takes about 40 minutes.
Then, in the [dashboard](https://app.edgegap.com/application-management/applications/list), create an application named lyra (the matchmaker profiles expect it) and a version:
Your image and tag, with your registry credentials. Without them, deployments fail with “Unable to pull image from registry”.
One port: name
gameport, 7777, UDP.1.5 vCPU and 3 GB of memory.
Environment variables
EOS_SERVER_CLIENT_IDandEOS_SERVER_CLIENT_SECRET(mark it hidden), with theLyra Serverclient’s credentials.
The sample’s Dockerfile (option B) runs the server binary directly, with -stdout -FullStdOutLogOutput, so its logs show in the dashboard and it stops cleanly when Edgegap ends the deployment.
5. Add it to your own Unreal game
The sample is a working reference: your coding agent starts from files that already ran on Edgegap, so it builds on a tested setup instead of guessing.
If your game is built on Lyra or Epic’s CommonUser plugin, the sample’s plugin drops in as it is: it replaces CommonUser’s session subsystem for online hosting and leaves Browse, Join and invites alone. Map your own playlists to matchmaker profiles in PlaylistProfiles.
For any other Unreal game, the same pieces apply:
A dedicated server build. A Server target and
DefaultServerTargetinConfig/DefaultEngine.ini.Matchmaking on the client. Beacon pings, a ticket, a wait for the server, then travel to it.
Servers that stop themselves. Only on deployments the matchmaker started, once the match is empty.
EOS on a dedicated server. No Epic account login on the server, a server-only EOS client from environment variables, and the external port in the EOS session.
A server image. The
DockerfilecopiesPackaged/LinuxServerinto a small Ubuntu image that runs as a non-root user.
With your agent:
“Load the edgegap-unreal skill. Using github.com/edgegap/game-sample-unreal-engine-lyra as the reference, make my Unreal project dedicated-server ready and add Edgegap matchmaking for online hosting, server self-stop, and EOS sessions registered by the dedicated server with Edgegap’s external port. Keep the EOS server credentials out of the game build: read them from environment variables. Keep matchmaking disabled until I give you my matchmaker URL, and check that the editor and Server targets compile.”
For each step in detail, by hand, see the Unreal Engine integration guide and Unreal Matchmaking.
6. Start the matchmaker and play
In the dashboard, open Matchmaker and select Create Matchmaker. Upload the sample’s
matchmaker-config.json, withapplication.versionset to your version, then Create and Start.When it’s ONLINE, copy its API URL and Auth Token into the
[/Script/EdgegapIntegration.EdgegapSessionSubsystem]section ofConfig/UserEngine.ini. Keep the URL in quotes: unquoted, Unreal cuts it at//.Start Lyra with
UnrealEditor.exe <Project>.uproject -game. Press a key to sign in with your Epic account: the account portal opens in your browser.Select Play Lyra, then Start a Game, with Network Online. A progress overlay shows while the matchmaker works.
Alone, you get a server after 10 seconds. Two players who queue within 10 seconds share one server.
Each Lyra game mode has its own matchmaker profile: Control Point (controlpoint), Elimination (elimination) and Top Down Arena (topdown). Each matches 2 to 8 players whose ping to a common beacon is under 150 ms and within 100 ms of each other. After 10 seconds, it also accepts a single player and pings up to 250 ms. A ticket with no match is cancelled after 30 seconds.
The Auth Token only lets clients create and read tickets, so it’s safe to ship in the game. Never put your Edgegap API token in the game.
To test two Epic accounts on one PC, use Epic’s Developer Authentication Tool (the README has the command line). For unattended tests, -EdgegapFindMatch=DA_Convolution_ControlPoint queues 5 seconds after the front end loads.
When you ship a new server build, point application.version at the new version, or matches keep deploying the old build.
Known limits
Browse and Quick Play from a second account aren’t tested yet. Every Edgegap server registers an EOS session so Lyra’s Browse screen and Quick Play can find it, but finding a running match from another Epic account hasn’t been verified.
The server is built in Docker. The launcher’s engine can’t build Server targets, so the server builds inside Docker, with Edgegap’s Docker Extension or Epic’s container image. Both need a GitHub account linked to Epic.
Lyra version must match the engine. The sample targets Lyra for 5.8 and Unreal 5.8.4. The Fab copy needs the CommonUser fix in step 2.
Players need an Epic account. The sample uses Epic Account Services, so players sign in with Epic. For a shipped game on Steam or consoles, use that platform’s login with EOS Connect.
Players can be dropped once at the start. A fresh Lyra server starts on its front end map, then loads the match map and drops early joiners. The client rejoins its assigned server on its own.
Servers you deploy by hand don’t stop themselves. Only matchmaker deployments do. Stop the others from the dashboard.
What was tested
Tested end to end on Edgegap on 2 November 2026, with Unreal Engine 5.8.4, a Windows client and the Linux server on Edgegap:
Sign-in and matchmaking: Epic login, then Start a Game, the matchmaker and a dedicated server; the player joined with their EOS identity.
Two players: two clients queued at the same time and matched onto one server.
EOS session: the server created its EOS session with Edgegap’s external port.
Self-stop: the server stopped its deployment after the players left.
Not tested yet: Browse and Quick Play finding a running match from a second Epic account.
Frequently Asked Questions
Questions about running Epic's Lyra on Edgegap dedicated servers with EOS.
Can Lyra run on a dedicated server?
Yes. Lyra ships a LyraServer target. Edgegap’s sample builds it as a Linux dedicated server with Edgegap’s Docker Extension, from a launcher install of Unreal 5.8, so you don’t build the engine from source. Online games then start on Edgegap servers instead of a player’s PC.
Does EOS still work when Lyra runs on Edgegap?
Yes. Players sign in with their Epic account, and friends, presence and the overlay keep working. Each Edgegap server registers an EOS session with its public port, using its own EOS client so the server never logs in as a player.
Which Lyra game modes does the sample support?
Control Point, Elimination and Top Down Arena. Each has its own matchmaker profile, and the server loads the game mode the players queued for.
Is Lyra included in the sample?
No. The repository holds only Edgegap’s part: a plugin, config blocks, a Dockerfile and a matchmaker config. Lyra’s code and content come from Epic, on Fab or Epic’s GitHub, under the Unreal Engine EULA.

Clients
Learn more from clients who integrated Edgegap
31 case studies are available from studios that moved to Edgegap from another platform.

A Flawless Global Launch for Rivals of Aether 2
Aether Studios
Learn how Aether Studios quickly added Edgegap and delivered flawless launch & post-launch to their community.
Case Study

Overcome Latency Introduced by VR’s use of WiFi in Competitive Multiplayer
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
Case Study

MENA’s Social App Adds Online Games
WOLF
Learn how the highly popular MENA-region social app added matchmaking & multiplayer games orchestration easily to WOLF Qanawat.
Case Study

Hybrid Orchestration Keeps Kickoff Tactics Ready for Any Traffic
Birch Games
How hybrid orchestration helped Birch Games handle traffic, pairing egress-free Fleets with the regionless cloud.
Case Study

7 Days Blood Moons
The Fun Pimps & iLLOGIKA
Learn how Illogika dramatically reduced server costs & ensured the online experience the 7 Days to Die franchise expects.
Case Study

Authentic Online Warfare Requires the Ultimate Orchestration
Highwire Games
Learn how Highwire's need for performance required orchestration only Edgegap can deliver.
Case Study

22,000 Reviews, 4.8 Stars, and Infrastructure That Scaled Automatically
Sinn Studios
How a simple, Slack-supported integration got Sinn Studio's hit VR title online fast and keeps it there.
Case Study

Dynamic Server Orchestration
Under NDA - AAA Studio
Discover how one the world's biggest AAA studio improved its peer-to-peer multiplayer experience through edge computing.
Case Study

Near Zero Latency for AAA Fighting Game
AAA Studio - Under NDA
How an unannounced project delivered the lowest lag possible and improved fairness in its 1v1 game.
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

A Fully Managed Solutions that Saves Time for Indies Multiplayer VR Horror
Dirty Pearl Studios
Discover how Dirty Pearl Studios saved development time thanks to Edgegap’s easy integration and automated orchestration alongside its Nakama integration.
Case Study

Instant Global Server Deployment for Collaborative XR Medical Education
AlensiaXR
How AlensiaXR uses Edgegap to deliver low-latency, always-available shared anatomy sessions to medical students worldwide.
Case Study

The Lightkeepers: A VR Social Co-op Game with Dedicated Servers
Spectral Games
How Spectral Games used Edgegap Matchmaking and Server Browser to launch dedicated servers for its VR social lobby, with no prior server experience.
Case Study

Fast & reliable deployments worldwide for PvPvE challenger Gravebound
Crater Studios
How Edgegap’s orchestration and matchmaking helped Crater Studios dramatically helped a small them focus on gameplay instead of infrastructure.
Case Study

Rapid Scaling of Web Metaverse
Hiber
Learn how Hiber eliminated the guesswork out of its server capacity planning with Edgegap.
Case Study

High Hardware Requirements & Custom Game Server Pools
Alderon Games
Learn how Alderon Games instantly leverages a custom pool of game servers across multiple providers worldwide for its popular MMO.
Case Study

Easy Integration for Indie Devs
WhaleFood Games
Read how WhaleFood Games "kicked out" its netcode issues with Edgegap.
Case Study

Cutting-edge tech that powers South-East Asia’s first-ever eSports title.
Anantarupa Studios
Learn how Edgegap transformed South-East Asia’s gaming landscape streamlining complex infrastructure and cutting-edge tech with one seamless solution.
Case Study

One Strike. Global Reach.
Triple Hill Interactive
How Triple Hill Interactive leverages Edgegap's orchestration to deliver low latency and improve fairness in a genre where every millisecond counts.
Case Study

Fast-paced Team Battle Royale... with Gun-totting Animal Plushes!
SANDYFLOOR
Discover how a Korea-based Indie Studio launched it multiplayer worldwide.
Case Study

Mobile Horse Racing Goes Global with Instant, Cost-Efficient Servers
Mirai Labs
How Mirai Labs powers Pegaxy Blaze's worldwide multiplayer races with just-in-time server deployment and fractional vCPU to keep cost per player low.
Case Study

Server Management & Distribution
Matrioshka Games
Read how Matrioshka Games were able to ship a Battle Royale in early access with limited ressources.
Case Study

At my Signal, Unleash Hell!
TyGames
Discover how Indie studio TyGames immerses players in third-person gladiatorial combat multiplayer.
Case Study

Instant Worldwide Orchestration
Soliton Interactive
Discover how Soliton Interactive did the impossible… Ship it's first playable as multiplayer!
Case Study

Competitive play with server-side physics ensures ideal sub-50 ms latency
NS7
Discover why solely Edgegap could enable an indie studio to deliver on its vision for a AAA-quality F2P sports gameplay through server-side physics and authority.
Case Study

Regional Deployments for iGaming
X1 Contra 1
X1 Contra 1 delivers real-time PvP casual games to its Brazilian player base through cost-effective hosting & regional deployments, ensuring data and legal compliance.
Case Study

Pay Only When Players Play: Affordable Multiplayer Infrastructure
Meltdown Interactive
How Edgegap helped indie developer Meltdown Interactive Media solve cost-effective scaling and matchmaking without the complexity, so they could focus on building the game.
Case Study

One Edgegap platform, three very different networking profiles
Warped Games
How Warped Games runs a social hub, real-time co-op, and turn-based co-op, all on the same Edgegap deployment API and the same container pipeline.
Case Study

Pool Live Tour Max
RETA Games
Case Study

Korea’s Web3 POP Extraction Shooter Goes Global, Instantly
NDUS Entertainment
How XOCIETY easily added Edgegap orchestration & integrated custom matchmaking working alongside Edgegap Ping Beacons to optimize latency.
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 Mobile Fighter Cuts Infrastructure Costs With Just-in-Time Servers
Game Changers Worldwide
How Game Changer Worldwide hosted Rumble Rush's real-time 3v3 PvP globally on mobile.
Case Study
Key reasons why they chose Edgegap
Discover the impact of Edgegap's automated game server orchestration for a flawless multiplayer experience.









