Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

/

Matchmaking Unreal

Matchmaking Unreal

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

Matchmaking Unreal : Comment ajouter le Matchmaking à votre jeu multijoueur Unreal Engine avec Edgegap

Matchmaking Unreal : Comment ajouter le Matchmaking à votre jeu multijoueur Unreal Engine avec Edgegap

Ce guide vous montre comment ajouter le matchmaking à un jeu multijoueur Unreal Engine qui fonctionne déjà sur les serveurs de jeu dédiés d'Edgegap : les joueurs sélectionnent Find Match, sont regroupés avec des joueurs proches d'eux et se connectent à un serveur qu'Edgegap démarre près d'eux. Lorsque tout le monde quitte la partie, le serveur s'arrête de lui-même.

Une fois votre serveur de jeu conteneurisé, Edgegap le déploie dans le monde entier sur plus de 615 emplacements Edge Cloud (à la demande) à partir d'un simple appel d'API et facturé exclusivement à l'utilisation : aucun serveur entier à louer, à provisionner ou à maintenir en fonctionnement entre les parties. Pour les serveurs persistants à capacité réservée, Edgegap propose des Private Fleets. Le Matchmaking d'Edgegap repose sur cette base et est facultatif.

Vous configurez le matchmaker avec un fichier JSON dans le tableau de bord Edgegap, sans aucun code backend. Dans votre jeu, deux fichiers C++ prêts à l'emploi mesurent le ping, créent le ticket, attendent un serveur et s'y connectent, et les Blueprints peuvent les appeler directement. Ils se connectent avec la fonction ClientTravel propre à Unreal, et fonctionnent donc avec n'importe quel jeu utilisant la réplication standard et les serveurs dédiés d'Unreal, sans aucune modification de votre mode de jeu ou de votre player controller.

Ce guide aborde les points suivants :

  1. Préparer une version d'application Edgegap fonctionnelle pour votre jeu

  2. Connecter votre agent de programmation à Edgegap (facultatif)

  3. Ajouter les fichiers de matchmaking à votre projet

  4. Configurer le client

  5. Créer votre matchmaker

  6. Choisir vos règles de matchmaking

  7. Tester avec deux joueurs

Vous pouvez procéder de deux manières et les combiner :

  • Avec un agent de programmation. Connectez Claude Code, Cursor ou un autre agent au serveur MCP Edgegap et à ses compétences d'agent. L'agent ajoute les fichiers, modifie votre configuration, lance les builds et vérifie le matchmaker. Vous gérez les actions dans le tableau de bord et effectuez les tests de jeu.

  • Manuellement. Chaque étape ci-dessous fonctionne également sans agent.

Ce guide s'appuie sur la documentation Matchmaking d'Edgegap. Consultez-la pour découvrir les dernières options de configuration et les modifications de l'API.

À la fin de ce guide, un joueur clique sur Trouver une partie, le système de matchmaking d'Edgegap le regroupe avec d'autres joueurs en fonction de leur latence, démarre un serveur dédié à l'emplacement le plus proche de chacun d'eux, et chaque client s'y connecte automatiquement. Lorsque la partie est terminée et que tout le monde quitte, le serveur s'arrête de lui-même, de sorte que vous ne payez que pour le temps d'utilisation effectif.

Le système de matchmaking lui-même est sans code (no-code) : vous le configurez avec un fichier JSON dans le tableau de bord Edgegap. Du côté du jeu, Unreal Engine ne dispose pas d'un SDK Edgegap Matchmaking officiel comme Unity. À la place, Edgegap fournit deux fichiers C++ prêts à l'emploi que vous pouvez déposer dans votre projet. Ils font tout ce que le SDK Unity fait pour une partie simple : mesurer le ping, créer un ticket, attendre un serveur et s'y connecter. Vous n'avez pas besoin d'écrire de code réseau, et les menus Blueprint peuvent les appeler directement.

Comme le client se connecte à l'aide de la fonction native ClientTravel d'Unreal, cela fonctionne avec n'importe quel jeu utilisant la réplication standard et les serveurs dédiés d'Unreal, sans aucune modification de votre mode de jeu ou de votre player controller.

Prérequis

  • Un compte Edgegap. Le forfait gratuit (Free Tier) est suffisant pour ce guide.

  • Un projet Unreal Engine 5 (vérifié sur UE 5.5 ; fonctionne de la même manière à partir de la version 5.3) avec un module C++. Projet Blueprint uniquement ? Ajoutez-en un au préalable via Outils → Nouvelle classe C++.

  • Un build de serveur dédié Linux de votre jeu, conteneurisé et publié en tant que version d'application sur Edgegap, avec le port du jeu (7777, UDP) nommé gameport.

  • Une connexion vérifiée : vous avez déjà déployé cette version une fois depuis le tableau de bord et l'avez rejointe depuis un client avec open {IP}:{port} dans la console (~).

N'ajoutez pas de matchmaking par-dessus un serveur auquel vous ne vous êtes pas encore connecté. Si un problème survient plus tard, vous saurez qu'il provient de la couche de matchmaking et non du serveur.

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.

Guide étape par étape

Étapes d'intégration détaillées

1. Avant de commencer

  • Un compte Edgegap gratuit. Vérifiez votre adresse e-mail. Aucune carte de crédit n'est requise pour tester.

  • Un projet Unreal Engine 5 avec un module C++ (vérifié sur UE 5.5 ; 5.3 ou plus récent fonctionne de la même manière). Projet Blueprint uniquement ? Ajoutez-en un d'abord via Outils → Nouvelle classe C++ → Aucun.

  • Une version fonctionnelle de l'application Edgegap de votre serveur de jeu : un serveur dédié Linux, conteneurisé, avec le port 7777, UDP, nommé gameport. Matchmaking déploie la version demandée pour chaque match, il a donc besoin d'un serveur de jeu conteneurisé et fonctionnel pour fonctionner de bout en bout. Si vous n'en avez pas encore, utilisez notre guide : Unreal Engine.

  • Une connexion testée : vous avez déployé cette version une fois depuis le tableau de bord et l'avez rejointe depuis un client avec open <IP>:<port> dans la console. N'ajoutez pas de matchmaking par-dessus un serveur que vous n'avez pas encore rejoint : si quelque chose ne fonctionne plus plus tard, vous saurez qu'il s'agit de la couche de matchmaking.

  • Pour le chemin de l'agent : un jeton d'API Edgegap, accessible depuis Tableau de bord → Paramètres utilisateur → Jetons. Il s'applique à l'ensemble de l'organisation, alors traitez-le comme un mot de passe : ne l'intégrez jamais dans votre projet, votre client de jeu ou une messagerie instantanée.

2. Connectez votre agent de codage à Edgegap

Ignorez cette étape si vous faites tout manuellement.

Le serveur MCP Edgegap permet à votre agent de créer des applications et des versions, de déployer des serveurs, de lire des journaux et de générer des configurations de matchmaker sur votre compte. La compétence d'agent edgegap-unreal lui fournit les fichiers de matchmaking et d'arrêt de serveur, la configuration et les pièges connus.

Claude Code (exécutez-le dans votre propre terminal, afin que le jeton ne transite jamais par le chat) :

claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user

Installez ensuite les compétences : /plugin marketplace add edgegap/edgegap-agent-skills, puis /plugin install edgegap@edgegap. Redémarrez la session.

Cursor, VS Code et autres clients envoyant des en-têtes : ajoutez https://mcp.edgegap.dev/mcp avec l'en-tête Authorization: token YOUR_EDGEGAP_API_TOKEN, et installez les compétences avec npx skills add edgegap/edgegap-agent-skills --skill "*".

Claude Desktop : les connecteurs personnalisés ne peuvent pas envoyer l'en-tête, utilisez donc plutôt le serveur local (Node 18+) : { "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }. Il demandera le jeton lors de la première utilisation.

Vérifiez que cela fonctionne :

« Liste mes applications Edgegap. »

Votre application et sa version devraient apparaître dans la liste.

3. Ajoutez les fichiers de matchmaking à votre projet

Edgegap publie deux fichiers prêts à l'emploi dans son dépôt de compétences d'agent open source :

  • EdgegapMatchmakerSubsystem (clients de jeu) : mesure le ping vers les balises d'Edgegap, crée le ticket de matchmaking, attend un serveur, puis s'y connecte. Il inclut un overlay basique Find Match / Cancel.

  • EdgegapServerSubsystem (serveur dédié) : lorsque le matchmaker a démarré le serveur, il arrête le déploiement dès que la partie est vide.

Avec votre agent, effectuez d'abord un audit (lecture seule) :

« Examine mon projet Unreal et dis-moi comment les joueurs se connectent actuellement : le nom du module C++, s'il existe une cible Server, la carte par défaut du serveur et si quelque chose utilise open, ClientTravel, des sessions ou un OnlineSubsystem. Ne modifie aucun fichier. »

Puis :

« Ajoute le matchmaking Edgegap à ce projet avec la compétence edgegap-unreal. Intègre les sous-systèmes de matchmaker et de serveur, ajoute la section de configuration à DefaultGame.ini avec le matchmaking désactivé, et confirme que la cible de l'éditeur compile toujours. Je te donnerai l'URL et le jeton du matchmaker une fois qu'il sera créé. »

Manuellement :

  1. Copiez les quatre fichiers (.h et .cpp pour chacun) de assets/unreal/Source/ vers Source/<VotreModule>/.

  2. Dans Source/<VotreModule>/<VotreModule>.Build.cs, ajoutez "HTTP", "Json", "Sockets", "Slate", "SlateCore" à PublicDependencyModuleNames.

  3. Régénérez les fichiers de projet et compilez la cible de l'éditeur.

Les deux sous-systèmes sont désactivés par défaut : l'ajout des fichiers ne change rien tant que vous n'activez pas le matchmaking à l'étape 5. Ils gèrent les pings des balises, le ticket, les nouvelles tentatives, l'annulation du ticket si le joueur quitte pendant la recherche, le choix du bon port, l'appel ClientTravel et l'arrêt du serveur. Vous n'avez rien à écrire pour un premier test.

Vous préférez les Blueprints ? L'Edgegap Integration Kit de Betide Studios, disponible sur Fab, prend en charge le matchmaking Edgegap avec un exemple Blueprint prêt à l'emploi.

4. Configurer le client

Tous les paramètres se trouvent dans Config/DefaultGame.ini, dans une section portant le nom de votre module : [/Script/<YourModule>.EdgegapMatchmakerSubsystem]. Ajoutez ces lignes :

  • bEnabled=False : laissez-le désactivé jusqu'à l'étape 5.

  • MatchmakerUrl="YOUR_MATCHMAKER_URL" et AuthToken="YOUR_MATCHMAKER_AUTH_TOKEN" : issus de la page de votre matchmaker à l'étape 5. Conservez l'URL entre guillemets, sinon Unreal la tronque à // et les requêtes échouent avec « Couldn't resolve host name ».

  • Profile=simple-example : le nom du profil dans votre configuration de matchmaker.

  • PortName=gameport : le nom du port sur la version de votre application.

  • bSendBeaconLatencies=True : uniquement si le profil comporte une règle de latence (c'est le cas du Simple Example). Le matchmaker refuse les tickets contenant des valeurs inattendues, veillez donc à ce que cela reste synchronisé avec votre configuration.

  • bShowDefaultUI=True : affiche l'overlay basique « Find Match » sur les cartes de menu. Réglez-le sur False une fois que votre propre menu appelle Find Match.

Ajoutez également une section vide [/Script/<YourModule>.EdgegapServerSubsystem]. Le serveur s'arrête automatiquement si personne ne le rejoint dans les 5 minutes, ou 15 secondes après le départ du dernier joueur (NoPlayerTimeoutSeconds, EmptyServerGraceSeconds). Cela ne s'applique qu'aux serveurs démarrés par le matchmaker, vos déploiements de test manuels ne sont donc pas affectés.

Le jeton d'authentification (Auth Token) peut être inclus sans risque dans les clients de jeu : il ne permet que de créer et de lire des tickets, pas d'accéder à votre compte Edgegap. Dans un dépôt public, conservez des espaces réservés (placeholders) dans DefaultGame.ini et placez les vraies valeurs dans Config/UserGame.ini, qui le surcharge, est ignoré par Git, et reste inclus dans les builds.

5. Créez votre entremetteur

  1. Dans le tableau de bord, ouvrez Matchmaker, sélectionnez Create Matchmaker, nommez-le et sélectionnez le modèle Simple Example (ce qu'il contient).

  2. Définissez application.name et application.version sur votre application et votre version exactement telles qu'elles apparaissent dans le tableau de bord. La configuration est refusée si la version n'existe pas.

  3. Sélectionnez Create and Start, puis attendez qu'il soit prêt. L'adresse d'un nouveau matchmaker peut mettre jusqu'à 5 minutes pour répondre.

  4. Copiez l'API URL et l'Auth Token dans DefaultGame.ini, puis définissez bEnabled=True.

Vérifiez l'URL et le jeton avant de lancer le jeu : curl -H "Authorization: <auth token>" <api url>/locations/beacons. Une liste JSON de balises indique qu'ils fonctionnent.

Avec votre agent : « Voici l'URL de l'API de mon matchmaker et mon Auth Token. Vérifiez qu'ils répondent, ajoutez-les dans les paramètres du matchmaker Edgegap et activez le matchmaking. »

6. Choisissez vos règles de mise en relation

Exécutez d'abord le test de l'étape 7 avec l'exemple simple, puis adaptez les règles à votre jeu. L'exemple simple en comporte deux :

  • Taille de la partie : une équipe d'exactement 2 joueurs, de sorte que le système de matchmaking attend 2 tickets avant de démarrer un serveur.

  • Latence : les joueurs ne sont regroupés que si leurs pings vers le même emplacement Edgegap sont distants de moins de 100 ms les uns des autres, et les emplacements supérieurs à 200 ms sont ignorés.

Vous testez seul ? Ajoutez une extension pour qu'un joueur seul obtienne un serveur après 10 secondes : "expansions": { "10": { "match_size": { "min_team_size": 1 } } }. Arrêtez le système de matchmaking, modifiez la configuration, puis redémarrez-le. Supprimez-la avant la sortie.

Ajoutez ensuite la taille des équipes, les compétences ou le rang, les modes de jeu, les cartes et des extensions qui assouplissent les règles plus les joueurs attendent. Des exemples de genres (compétitif, coopératif, social, backfill) se trouvent dans la documentation sur le matchmaking. Chaque règle, à l'exception de la taille de la partie, nécessite une valeur correspondante dans le ticket de chaque joueur : prévenez votre agent lorsque vous ajoutez une règle, et il mettra également le client à jour.

Les déploiements du système de matchmaking reçoivent MM_MATCH_ID, MM_MATCH_PROFILE, MM_TICKET_IDS, MM_TEAMS, MM_GROUPS et un MM_TICKET_<id> par joueur, sous forme de chaînes JSON. Lisez-les avec FPlatformMisc::GetEnvironmentVariable pour attribuer les équipes ou vérifier qui rejoint la partie.

Lorsque vous publiez une nouvelle version du serveur, mettez à jour application.version (Arrêter, Modifier, Démarrer), sinon les parties continueront à déployer l'ancienne version.

7. Tester avec deux joueurs

  1. Assurez-vous qu'aucun déploiement de test n'est encore en cours d'exécution : le niveau gratuit n'exécute qu'un seul déploiement à la fois, et un déploiement restant bloque le matchmaking.

  2. Lancez deux clients côte à côte : UnrealEditor.exe "<path>\<Project>.uproject" -game -windowed -ResX=960 -ResY=540 -WinX=0 -log, et un second avec -WinX=970.

  3. Sélectionnez Find Match sur les deux. Le statut passe de la mesure de la latence à la recherche, puis match trouvé, et enfin connexion. En quelques secondes, les deux clients se chargent sur le même serveur, et le tableau de bord affiche le déploiement étiqueté avec les identifiants des deux tickets.

  4. Fermez les deux clients. Environ une minute plus tard, le déploiement s'arrête de lui-même.

Vous pouvez également rejoindre la file d'attente depuis la console avec Edgegap.FindMatch et Edgegap.CancelMatch, ou ajouter -FindMatch à la ligne de commande. Si un ticket obtient un serveur mais que le client ne peut pas se connecter, le problème vient du serveur et non du matchmaker : déployez la version manuellement et testez à nouveau open <IP>:<port>. Avec le niveau gratuit, le matchmaker s'arrête 3 heures après chaque démarrage : redémarrez-le depuis le tableau de bord.

Étapes suivantes

Étapes suivantes

Créez votre propre menu. FindMatch, CancelMatch, GetState et GetStatusText sont appelables via Blueprint sur le sous-système Edgegap Matchmaker (Get Game Instance Subsystem), et OnStatusChanged se déclenche à chaque mise à jour pour votre widget UMG. Définissez ensuite bShowDefaultUI=False.

Comment fonctionnent les fichiers. Le client récupère les balises d'Edgegap et chronomètre un handshake TCP vers chacune d'elles (le meilleur sur trois, en parallèle, délai d'expiration de 1 seconde), envoie les pings dans un ticket indexé par ville, l'interroge toutes les 2 secondes jusqu'à ce qu'il soit attribué, puis se connecte à l'IP du serveur et au port spécifié dans PortName, tout comme open <IP>:<port>. Annuler ou quitter supprime le ticket. Côté serveur, le sous-système repère le MM_MATCH_ID du matchmaker, surveille les connexions et appelle l'ARBITRIUM_DELETE_URL injectée par Edgegap une fois la partie vide. Le jeton d'authentification est transmis tel quel dans l'en-tête Authorization, sans le préfixe « Bearer ».

Vous passez en production ? Demandez à votre agent d'exécuter la checklist de la compétence edgegap-launch et choisissez un matchmaker de production avant le lancement. Vous utilisez Epic Online Services ? Consultez Epic Online Services.

Bloqué ? Demandez à votre agent de charger edgegap-troubleshoot, ou posez vos questions à notre équipe et à d'autres studios sur le Discord Edgegap.

Questions Fréquemment Posées

Questions fréquentes concernant l'ajout du matchmaking d'Edgegap à un jeu multijoueur Unreal Engine.

Existe-t-il un SDK de matchmaking Edgegap pour Unreal Engine ?

Edgegap fournit deux fichiers C++ open-source que vous intégrez directement dans votre projet au lieu d'utiliser un plugin : un pour les clients de jeu, et un pour le serveur dédié. Pour les équipes privilégiant les Blueprints, le kit Edgegap Integration Kit de Betide Studios sur Fab prend également en charge le matchmaking d'Edgegap.

Puis-je ajouter le matchmaking Edgegap à un projet Unreal uniquement en Blueprint ?

Oui. Ajoutez une classe C++ vide pour créer un module C++, déposez-y les fichiers et appelez Find Match depuis les Blueprints. Vous pouvez également utiliser le Edgegap Integration Kit de Betide Studios, qui inclut un exemple de Blueprint.

Dois-je changer mon mode de jeu pour utiliser le matchmaking d'Edgegap ?

Non. Les clients se connectent avec le ClientTravel intégré d'Unreal, ce qui revient à taper open avec l'adresse du serveur, donc tout jeu qui utilise la réplication standard et des serveurs dédiés fonctionne tel quel.

Le jeton d'authentification du matchmaker est-il sécurisé dans un client de jeu Unreal ?

Oui. Il peut uniquement créer et lire des tickets de matchmaking, pas accéder à votre compte Edgegap. Dans un dépôt public, conservez la vraie valeur dans Config/UserGame.ini, que Git ignore et qu'Unreal package toujours.

Combien coûte le matchmaking d'Edgegap ?

Les tests sont gratuits, sur un entremetteur (matchmaker) partagé qui s'arrête 3 heures après chaque démarrage. Pour un jeu en production, vous choisissez un matchmaker de production, et les serveurs de jeu sont facturés par vCPU et par minute uniquement lorsqu'ils sont en cours d'exécution.

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

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,0282 $

/ 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,0282 $

/ 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 prix d'Eggegap : comparaison détaillée entre Edge Cloud et Private Fleets

Fonctionnalités et prix d'Eggegap : 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.