Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Unreal Engine

Lyra

Déployer sur Edgegap

Publié

Publié

Publié

dernière vérification de l'exactitude

dernière vérification de l'exactitude

dernière vérification de l'exactitude

Lyra : Exécutez le Lyra Starter Game d'Epic sur les serveurs dédiés d'Edgegap, avec le Matchmaking et EOS

Lyra : Exécutez le Lyra Starter Game d'Epic sur les serveurs dédiés d'Edgegap, avec le Matchmaking et EOS


Lyra est le jeu d'exemple multijoueur d'Epic pour Unreal Engine 5 : un jeu de tir avec plusieurs modes de jeu, basé sur Epic Online Services (EOS). Dès le départ, Start a Game avec Network Online fait du PC du joueur l'hôte, en tant que serveur d'écoute (listen server). L'exemple d'Edgegap change cela : chaque partie en ligne s'exécute sur son propre serveur de jeu dédié.

Lorsqu'un joueur lance une partie en ligne, Lyra demande au matchmaker d'Edgegap un serveur proche des joueurs. Edgegap démarre un serveur dédié, et le joueur le rejoint. Deux joueurs qui se mettent en file d'attente en même temps partagent un même serveur.

EOS continue de fonctionner comme prévu dans Lyra. Les joueurs se connectent avec leur compte Epic, et la liste d'amis, la présence ainsi que l'overlay continuent de fonctionner. Chaque serveur Edgegap enregistre une session EOS, afin que les propres menus de Lyra puissent la voir.

Le réseau d'Edgegap s'étend sur plus de 615 emplacements Edge Cloud (en savoir plus). Chaque serveur est déployé dans le meilleur emplacement disponible pour ses joueurs, s'arrête automatiquement lorsque la partie est vide, et n'est facturé que pendant son exécution.

Plateformes : client de jeu Windows et serveur dédié Linux sur Edgegap. Unreal Engine 5.8.4 depuis le lanceur Epic Games, aucune compilation des sources du moteur requise. Lyra provient d'Epic, sur Fab ou le GitHub d'Epic. Le code d'Edgegap est sous licence Apache 2.0 ; Lyra et le contenu Unreal Engine restent soumis aux conditions d'Epic.

Comment ça fonctionne

  1. Un joueur se connecte avec son compte Epic, sélectionne Play Lyra, puis Start a Game avec Network Online.

  2. Le jeu envoie un ping aux balises (beacons) d'Edgegap et transmet un ticket de matchmaking pour le mode de jeu choisi, avec ces temps de latence.

  3. Le matchmaker regroupe 2 à 8 joueurs ayant un ping similaire vers la même balise, puis lance un déploiement Edgegap à proximité.

  4. Le serveur charge le mode de jeu correspondant au ticket et enregistre une session EOS avec son port public.

  5. Chaque client reçoit l'adresse du serveur et s'y connecte, avec l'identité EOS du joueur.

  6. Lorsque le dernier joueur quitte la partie, le serveur attend 15 secondes, puis arrête son propre déploiement, ce qui met fin à la facturation.

Ce que l'exemple ajoute à Lyra :

Chemin

Ce qu'il fait

Plugins/EdgegapIntegration/.../EdgegapSessionSubsystem

Client : remplace le sous-système de session de Lyra pour l'hébergement en ligne. Pings des balises, ticket de matchmaking, attente d'un serveur, connexion, avec un overlay de progression et un bouton Cancel. La recherche (Browse), l'accès (Join), les invitations et l'hébergement LAN restent gérés par Lyra.

Plugins/EdgegapIntegration/.../EdgegapServerSubsystem

Serveur : héberge le mode de jeu sélectionné par le matchmaker, diffuse le port externe d'Edgegap dans la session EOS, arrête le déploiement lorsque la partie est vide.

Plugins/EdgegapIntegration/Source/EdgegapEOSServerConfig

Serveur : désactive la connexion par compte Epic sur le serveur dédié et utilise le client EOS propre au serveur, lu à partir des variables de version de l'application.

Config/DefaultEngine.Edgegap.ini, Config/DefaultGame.Edgegap.ini

Blocs de configuration à ajouter : cible du serveur, paramètres EOS, paramètres du matchmaker, mappage entre modes de jeu et profils de matchmaker.

Config/UserEngine.ini.example

Modèle pour vos identifiants et secrets locaux.

Dockerfile, matchmaker-config.json

L'image du serveur et les profils du matchmaker.

Aucune carte de crédit requise. L'offre gratuite inclut les ressources nécessaires pour déployer un véritable serveur de jeu.

Aucune carte de crédit requise. L'offre gratuite inclut les ressources nécessaires pour déployer un véritable serveur de jeu.


Lyra d’Epic sur des serveurs dédiés Edgegap, avec le matchmaker d’Edgegap et les sessions EOS.

Guide étape par étape

Exécuter l'exemple

1. Avant de commencer


  • Un compte Edgegap gratuit. Aucune carte de crédit n'est requise pour tester.

  • Unreal Engine 5.8 depuis le lanceur Epic Games.

  • Lyra Starter Game pour 5.8 : dans le lanceur, ajoutez-le depuis Fab et sélectionnez Créer un projet. Conservez le projet en dehors de OneDrive et des autres dossiers synchronisés.

  • Docker Desktop et l'extension Docker d'Edgegap. Le moteur du lanceur ne pouvant pas compiler les cibles Server, le serveur Linux est compilé dans Docker. Les deux méthodes de compilation de l'étape 4 nécessitent un compte GitHub associé à votre compte Epic, ainsi qu'un jeton d'accès personnel GitHub avec read:packages.

  • Une organisation et un produit dans l'Epic Developer Portal, pour EOS.

  • Clonez l'exemple. Il ne contient que la partie Edgegap, que vous ajoutez à votre copie de Lyra.

2. Ajoutez l'exemple à votre projet Lyra


  1. Copiez Plugins/EdgegapIntegration dans le dossier Plugins de votre projet.

  2. Dans votre .uproject, activez deux plugins : OnlineSubsystemEOS et EdgegapIntegration.

  3. Ajoutez le contenu de Config/DefaultEngine.Edgegap.ini à votre fichier Config/DefaultEngine.ini, et celui de Config/DefaultGame.Edgegap.ini à votre fichier Config/DefaultGame.ini (remplacez <Project> par le nom de votre projet : LyraStarterGame depuis Fab).

  4. Dans Source/LyraServer.Target.cs, encapsulez bUseChecksInShipping = true; dans if (BuildEnvironment == TargetBuildEnvironment.Unique). Les moteurs installés, comme celui du lanceur et les images de build Docker, refusent les cibles qui le modifient.

  5. Ajoutez Config/User*.ini à votre .gitignore.

La copie Fab de Lyra pour la version 5.8 contient deux fichiers CommonUser (CommonUserBasicPresence.cpp, CommonSessionSubsystem.cpp) avec du code inaccessible que le compilateur clang du build Linux rejette. Récupérez ces deux fichiers depuis le tag 5.8.4-release sur le GitHub d'Epic, ou supprimez les lignes break; inaccessibles ainsi que la boucle qui effectue un retour dès sa première itération.

3. Configurer Epic Online Services


Dans votre produit dans le portail des développeurs Epic (Epic Developer Portal) :

  1. Politiques relatives aux clients : une politique Peer2Peer pour les joueurs. Pour le serveur, une politique Personnalisée avec Sessions activé (cochez chaque action) et Utilisateur requis désactivé. Le modèle TrustedServer ne s’enregistre pas dans le portail.

  2. Clients : un par politique, par exemple Lyra Client et Lyra Server.

  3. Epic Account Services : acceptez les conditions, créez une application, activez Présence en ligne et Amis, puis associez Lyra Client. Les paramètres de marque ne sont nécessaires qu'avant la sortie.

  4. Placez les identifiants de produit, de sandbox et de déploiement ainsi que l’identifiant Lyra Client dans l’artefact LyraEdgegap dans Config/DefaultEngine.ini.

  5. Copiez Config/UserEngine.ini.example vers Config/UserEngine.ini et ajoutez le secret de Lyra Client ainsi qu’une clé de chiffrement hexadécimale de 64 caractères. L'URL et le jeton du matchmaker iront ici à l'étape 6.

Le secret de Lyra Server ne doit jamais être placé dans un fichier ou un build du jeu : il réside sur la version de l'application Edgegap (étape 4). Pour EOS avec Edgegap en général, consultez le guide Epic Online Services.

4. Construisez le serveur Linux et déployez-le sur Edgegap


Option A (recommandée) : L'extension Docker d'Edgegap. C'est le moyen le plus rapide de compiler : pas de compilation du code source du moteur, pas de chaîne d'outils Linux, depuis n'importe quel système d'exploitation.

  1. Dans Docker Desktop, ouvrez l'extension Edgegap. Saisissez le nom de votre projet et votre jeton Edgegap, puis sélectionnez Validate Token.

  2. Sélectionnez Unreal Engine, puis Browse pour accéder au dossier de votre projet Lyra et sélectionnez Create Project. L'extension renseigne automatiquement la version de votre moteur.

  3. Saisissez votre nom d'utilisateur GitHub ainsi que votre Personal Access Token, puis sélectionnez Validate Configuration. Les trois vérifications doivent passer au vert.

  4. Sélectionnez Build Project, puis Upload Image. Utilisez un nouveau tag pour chaque build.

Le guide d'intégration d'Unreal Engine présente chaque écran de l'extension.

Option B : Le conteneur de moteur d'Epic, manuellement. Le fichier README du dépôt contient les commandes exactes : exécutez BuildCookRun dans ghcr.io/epicgames/unreal-engine:dev-slim-5.8.4 (environ 80 Go) avec -server -noclient -platform=Linux et -UbtArgs="-NoUBA", puis compilez le Dockerfile de l'exemple avec --build-arg PROJECT=LyraStarterGame et publiez-le sur registry.edgegap.com/<project>/lyra:<tag>. La première compilation prend environ 40 minutes.

Ensuite, dans le [tableau de bord](https://app.edgegap.com/application-management/applications/list), créez une application nommée lyra (les profils du matchmaker l'attendent) ainsi qu'une version :

  • Votre image et votre tag, avec vos identifiants de registre. Sans eux, les déploiements échouent avec le message « Unable to pull image from registry ».

  • Un port : nom gameport, 7777, UDP.

  • 1,5 vCPU et 3 Go de mémoire.

  • Les variables d'environnement EOS_SERVER_CLIENT_ID et EOS_SERVER_CLIENT_SECRET (à marquer comme hidden), avec les identifiants du client Lyra Server.

Le Dockerfile de l'exemple (option B) exécute directement le binaire du serveur avec -stdout -FullStdOutLogOutput, afin que ses journaux s'affichent dans le tableau de bord et qu'il s'arrête proprement lorsqu'Edgegap met fin au déploiement.




5. Ajoutez-le à votre propre jeu Unreal


L'exemple constitue une référence fonctionnelle : votre agent de codage part de fichiers qui ont déjà tourné sur Edgegap, s'appuyant ainsi sur une configuration testée au lieu de deviner.

Si votre jeu est conçu sur Lyra ou sur le plugin CommonUser d'Epic, le plugin de l'exemple s'intègre tel quel : il remplace le sous-système de session de CommonUser pour l'hébergement en ligne et ne modifie pas Browse, Join ni les invitations. Associez vos propres playlists aux profils du matchmaker dans PlaylistProfiles.

Pour tout autre jeu Unreal, les mêmes éléments s'appliquent :

  1. Un build de serveur dédié. Une cible Server et DefaultServerTarget dans Config/DefaultEngine.ini.

  2. Le Matchmaking côté client. Des pings beacon, un ticket, une attente du serveur, puis la connexion à celui-ci.

  3. Des serveurs qui s'arrêtent d'eux-mêmes. Uniquement sur les déploiements initiés par le matchmaker, une fois le match vide.

  4. EOS sur un serveur dédié. Aucune connexion à un compte Epic sur le serveur, un client EOS réservé au serveur issu de variables d'environnement, et le port externe dans la session EOS.

  5. Une image serveur. Le Dockerfile copie Packaged/LinuxServer dans une image Ubuntu légère exécutée en tant qu'utilisateur non-root.

Avec votre agent :

« Charge la compétence edgegap-unreal. En utilisant github.com/edgegap/game-sample-unreal-engine-lyra comme référence, prépare mon projet Unreal pour un serveur dédié et ajoute le matchmaking Edgegap pour l'hébergement en ligne, l'auto-arrêt du serveur et les sessions EOS enregistrées par le serveur dédié avec le port externe d'Edgegap. Conserve les identifiants du serveur EOS hors du build du jeu : lis-les depuis les variables d'environnement. Maintiens le matchmaking désactivé jusqu'à ce que je te donne l'URL de mon matchmaker, et vérifie que les cibles editor et Server compilent. »

Pour le détail de chaque étape manuelle, consultez le guide d'intégration Unreal Engine et Unreal Matchmaking.

6. Lancez le matchmaking et jouez


  1. Dans le tableau de bord, ouvrez Matchmaker et sélectionnez Create Matchmaker. Téléversez le fichier matchmaker-config.json de l'exemple, avec application.version défini sur votre version, puis cliquez sur Create and Start.

  2. Lorsqu'il est ONLINE, copiez son API URL et son Auth Token dans la section [/Script/EdgegapIntegration.EdgegapSessionSubsystem] de Config/UserEngine.ini. Conservez l'URL entre guillemets : sans guillemets, Unreal la coupe au niveau de //.

  3. Lancez Lyra avec UnrealEditor.exe <Project>.uproject -game. Appuyez sur une touche pour vous connecter avec votre compte Epic : le portail du compte s'ouvre dans votre navigateur.

  4. Sélectionnez Play Lyra, puis Start a Game, avec Network Online. Une superposition de progression s'affiche pendant que le matchmaker opère.

Seul, vous obtenez un serveur après 10 secondes. Deux joueurs qui se mettent en file d'attente à moins de 10 secondes d'intervalle partagent un même serveur.

Chaque mode de jeu de Lyra possède son propre profil de matchmaker : Control Point (controlpoint), Elimination (elimination) et Top Down Arena (topdown). Chacun associe 2 à 8 joueurs dont le ping vers une balise commune est inférieur à 150 ms et dont la différence ne dépasse pas 100 ms entre eux. Après 10 secondes, il accepte également un joueur seul et des pings allant jusqu'à 250 ms. Un ticket sans correspondance est annulé au bout de 30 secondes.

L'Auth Token permet uniquement aux clients de créer et de lire des tickets, il est donc sans danger de l'intégrer dans le jeu final. Ne mettez jamais votre jeton d'API Edgegap dans le jeu.

Pour tester deux comptes Epic sur un même PC, utilisez l'outil Developer Authentication Tool d'Epic (le README contient la ligne de commande). Pour les tests sans surveillance, -EdgegapFindMatch=DA_Convolution_ControlPoint se met en file d'attente 5 secondes après le chargement du front-end.

Lorsque vous déployez une nouvelle version du serveur, faites pointer application.version vers la nouvelle version, sinon les parties continueront à déployer l'ancienne version.

Limites connues


  • Parcourir et le Jeu rapide depuis un second compte n’ont pas encore été testés. Chaque serveur Edgegap enregistre une session EOS afin que l’écran Parcourir et le Jeu rapide de Lyra puissent le trouver, mais trouver une partie en cours à partir d’un autre compte Epic n’a pas été vérifié.

  • Le serveur est compilé dans Docker. Le moteur du lanceur ne peut pas compiler de cibles Serveur, le serveur se compile donc à l'intérieur de Docker, à l'aide de l'extension Docker d'Edgegap ou de l'image de conteneur d'Epic. Les deux nécessitent un compte GitHub associé à Epic.

  • La version de Lyra doit correspondre au moteur. L'échantillon cible Lyra pour 5.8 et Unreal 5.8.4. La copie Fab nécessite le correctif CommonUser de l'étape 2.

  • Les joueurs ont besoin d'un compte Epic. L'échantillon utilise Epic Account Services, les joueurs se connectent donc avec Epic. Pour un jeu commercialisé sur Steam ou sur consoles, utilisez la connexion de cette plateforme avec EOS Connect.

  • Les joueurs peuvent être déconnectés une fois au démarrage. Un nouveau serveur Lyra démarre sur sa carte de menu principal, puis charge la carte de la partie et déconnecte les joueurs arrivés trop tôt. Le client rejoint ensuite automatiquement le serveur qui lui est assigné.

  • Les serveurs que vous déployez manuellement ne s'arrêtent pas d'eux-mêmes. Seuls les déploiements du système de matchmaking le font. Arrêtez les autres depuis le tableau de bord.

Ce qui a été testé


Testé de bout en bout sur Edgegap le 2 novembre 2026, avec Unreal Engine 5.8.4, un client Windows et le serveur Linux sur Edgegap :

  • Connexion et matchmaking : connexion Epic, puis Start a Game, le système de matchmaking et un serveur dédié ; le joueur a rejoint avec son identité EOS.

  • Deux joueurs : deux clients se sont mis en file d'attente en même temps et ont été associés sur un seul serveur.

  • Session EOS : le serveur a créé sa session EOS avec le port externe d'Edgegap.

  • Arrêt automatique : le serveur a arrêté son déploiement après le départ des joueurs.

Pas encore testé : Parcourir et Partie rapide trouvant un match en cours depuis un deuxième compte Epic.

Questions Fréquemment Posées

Questions concernant l'exécution de Lyra d'Epic sur des serveurs dédiés Edgegap avec EOS.

Lyra peut-il fonctionner sur un serveur dédié ?


Oui. Lyra inclut une cible LyraServer. L'exemple d'Edgegap le compile en tant que serveur dédié Linux avec l'extension Docker d'Edgegap, à partir d'une installation du lanceur d'Unreal 5.8, vous évitant ainsi de compiler le moteur à partir des sources. Les parties en ligne démarrent ensuite sur les serveurs Edgegap au lieu du PC d'un joueur.

Est-ce qu'EOS fonctionne toujours lorsque Lyra tourne sur Edgegap ?


Oui. Les joueurs se connectent avec leur compte Epic, et la liste d'amis, la présence et l'overlay continuent de fonctionner. Chaque serveur Edgegap enregistre une session EOS avec son port public, en utilisant son propre client EOS afin que le serveur ne se connecte jamais en tant que joueur.

Quels modes de jeu Lyra l'échantillon prend-il en charge ?


Point de contrôle, Élimination et Arène vue du dessus. Chacun possède son propre profil de matchmaking, et le serveur charge le mode de jeu pour lequel les joueurs ont fait la queue.

Lyra est-elle incluse dans l'échantillon ?


Non. Le dépôt ne contient que la partie d’Edgegap : un plugin, des blocs de configuration, un Dockerfile et une configuration de matchmaker. Le code et le contenu de Lyra proviennent d’Epic, sur Fab ou sur le GitHub d’Epic, sous le CLUF d’Unreal Engine.







Clients

Découvrez les témoignages de clients qui ont intégré Edgegap

31 études de cas sont disponibles auprès de studios ayant migré d'une autre plateforme vers Edgegap.

Principales raisons pour lesquelles ils ont choisi Edgegap

Découvrez l’impact de l’orchestration automatisée des serveurs de jeu d’Edgegap pour une expérience multijoueur impeccable.

Coût

Prix

Prix

Optimisez les coûts et les performances grâce à l'orchestration hybride

Optimisez les coûts et les performances grâce à l'orchestration hybride

Optimisez les coûts et les performances grâce à l'orchestration hybride

Cloud de périphérie

À la demande

0,00115 $

/ vCPU

/ MINUTE

Facturé à la minute, uniquement à l'utilisation

Payez quand les joueurs jouent. 0 serveur actif = 0 $

Déployez des serveurs de jeu dans le monde entier, par instance, dans plus de 615 emplacements edge cloud. Sans engagement.

Ajoutez simplement une carte de crédit.

Cloud de périphérie

À la demande

0,00115 $

/ vCPU

/ MINUTE

Facturé à la minute, uniquement à l'utilisation

Payez quand les joueurs jouent. 0 serveur actif = 0 $

Déployez des serveurs de jeu dans le monde entier, par instance, dans plus de 615 emplacements edge cloud. Sans engagement.

Ajoutez simplement une carte de crédit.

Private Fleet (Bare Metal)

Capacité réservée

0,0261 $

/ vCPU

/ HEURE

Facturé mensuellement, toujours actif

280 $ par hôte/mois (tarif sur 12 mois), ou 350 $ par mois

Optimisez la rentabilité de votre serveur de jeu grâce à l'hébergement sans frais de transfert de données sortantes (egress-free) des flottes privées (Private Fleets).

Permanent, disponible 24h/24 et 7j/7, exclusif à votre studio.

Private Fleet (Bare Metal)

Capacité réservée

0,0261 $

/ vCPU

/ HEURE

Facturé mensuellement, toujours actif

280 $ par hôte/mois (tarif sur 12 mois), ou 350 $ par mois

Optimisez la rentabilité de votre serveur de jeu grâce à l'hébergement sans frais de transfert de données sortantes (egress-free) des flottes privées (Private Fleets).

Permanent, disponible 24h/24 et 7j/7, exclusif à votre studio.

Votre facture varie selon le tarif et l'utilisation, qui peuvent varier en fonction
du type de jeu, du nombre de joueurs et plus encore.

Votre facture varie selon le tarif et l'utilisation, qui peuvent varier en fonction
du type de jeu, du nombre de joueurs et plus encore.

Modélisez votre utilisation avec notre calculateur d'estimation ->

Modélisez votre utilisation avec notre calculateur d'estimation ->

Fonctionnalités et tarifs d'Edgegap : comparaison détaillée entre Edge Cloud et Private Fleets

Fonctionnalités et tarifs d'Edgegap : comparaison détaillée entre Edge Cloud et Private Fleets

COMPARER

Essai gratuit

Cloud de périphérie

Flottes privées

FONCTIONNALITÉS

Analyses et surveillance

Alertes de facturation

Cliquer pour agrandir

28 lignes de plus

Déverrouille

Les fonctionnalités sont débloquées lorsqu'une carte de crédit est ajoutée au compte.

COMPARER

Essai gratuit

Cloud de périphérie

Flottes privées

FONCTIONNALITÉS

Analyses et surveillance

Alertes de facturation

Cliquer pour agrandir

28 lignes de plus

Déverrouille

Les fonctionnalités sont débloquées lorsqu'une carte de crédit est ajoutée au compte.

COMPARER

Essai gratuit

Cloud de périphérie

Flottes privées

FONCTIONNALITÉS

Analyses et surveillance

Alertes de facturation

Cliquer pour agrandir

28 lignes de plus

Déverrouille

Les fonctionnalités sont débloquées lorsqu'une carte de crédit est ajoutée au compte.