
Ce guide vous montre comment ajouter les relais distribués d'Edgegap à un jeu Unity en pair-à-pair créé avec Mirror : un joueur héberge la partie, les autres la rejoignent via un relais proche d'eux, sans redirection de port ni problèmes de NAT.
Un relais n'est pas un serveur de jeu. Il transmet le trafic entre les joueurs pendant que le jeu du joueur hôte exécute la partie. Edgegap attribue chaque session au meilleur relais disponible pour ses joueurs à partir d'un simple appel d'API, facturé tant que la session est ouverte. Si vous préférez exécuter la partie sur un serveur faisant autorité qu'aucun joueur ne contrôle, consultez plutôt Mirror Networking.
Ce guide couvre :
Obtenir votre jeton de relais
Connecter votre agent de programmation à Edgegap (facultatif)
Ajouter le transport de relais d'Edgegap à Mirror
Créer une session de relais depuis votre backend
Connecter l'hôte et les joueurs
Regrouper les joueurs et ajouter les arrivants tardifs
Tester avec deux joueurs
Vous pouvez procéder de deux manières différentes, ou les combiner :
Avec un agent de programmation. N'importe quel assistant de programmation IA peut écrire l'appel backend et le code de connexion à partir des invites ci-dessous. Connecté au serveur MCP d'Edgegap, il peut également créer, lire et supprimer des sessions de relais pour vos tests.
Manuellement. Chaque étape ci-dessous fonctionne également sans agent.
Ici, nous utilisons l'exemple de relais Mirror d'Edgegap. Le relais fonctionne également avec Netcode for GameObjects et Fish-Networking, par l'intermédiaire de leurs propres transports.
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 Unity utilisant Mirror, où un joueur héberge la partie (hôte et client dans le même jeu). Une version Unity LTS est recommandée.
Un jeton de profil de relais. Dans le tableau de bord, ouvrez Relays, créez un profil de relais et copiez son jeton. Il ne s'agit pas de votre jeton d'API Edgegap : les jetons d'API standard ne fonctionnent pas avec l'API de relais.
Un endroit pour conserver ce jeton hors des machines des joueurs : votre salon (lobby), votre entremetteur (matchmaker) ou un petit service backend. Toute personne le détenant peut créer des sessions sur votre compte.
Pour le chemin de l'agent : un jeton d'API Edgegap, accessible depuis Dashboard → User Settings → Tokens. Il s'applique à l'ensemble de l'organisation, traitez-le donc comme un mot de passe : ne l'intégrez jamais dans votre projet, votre client de jeu ou un chat.
Git : le clonage de l'échantillon nécessite un client Git. macOS en dispose généralement déjà d'un (Xcode Command Line Tools) ; sous Windows, installez Git.
2. Connectez votre agent de codage à Edgegap
Ignorez cette étape si vous faites tout manuellement.
Le serveur MCP d'Edgegap permet à votre agent de travailler sur votre compte. Pour les relais, il peut créer une session de test pour une liste d'adresses IP de joueurs, la lire, autoriser un joueur rejoignant en cours de partie et la supprimer. Il peut également indiquer lorsqu'un serveur faisant autorité serait plus adapté à votre jeu : c'est normal, les relais sont destinés aux jeux conçus en architecture hôte-client.
Claude Code : installez le plugin Edgegap. Il ajoute à la fois le serveur MCP et les compétences (skills), et vous demande votre jeton d'API lors de l'installation (stocké dans le gestionnaire d'identifiants de votre système) :
/plugin marketplace add edgegap/edgegap-agent-skills, puis /plugin install edgegap@edgegap. Redémarrez la session.
Vous souhaitez uniquement le serveur MCP, sans le plugin ? Exécutez plutôt ceci dans votre propre terminal : claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token VOTRE_JETON_API_EDGEGAP" --scope user. Ne faites pas les deux, sinon vous aurez deux serveurs edgegap.
Cursor, VS Code et autres clients qui envoient des en-têtes : ajoutez https://mcp.edgegap.dev/mcp avec l'en-tête Authorization: token VOTRE_JETON_API_EDGEGAP, puis 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 le serveur local à la place (Node 18+) : { "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }. Il demande le jeton lors de la première utilisation.
Vérifiez que cela fonctionne :
Quels outils Edgegap possédez-vous pour les sessions de relais ?
Il devrait lister des outils pour créer, lire, autoriser et supprimer des sessions de relais.
3. Ajoutez le transport de relais d'Edgegap à Mirror
Téléchargez les transports d'Edgegap depuis distributed-relay-examples et copiez le dossier
EdgegapdansAssets/Mirror/Transports.Sélectionnez votre objet de jeu NetworkManager et ajoutez le composant EdgegapKcpTransport.
Glissez-déposez ce composant dans le champ Transport du NetworkManager.
Si le composant affiche Relay GUI, désactivez-le : cela interfère avec les connexions de relais.
Vous utilisez l'exemple ? Il est déjà configuré : clonez https://github.com/edgegap/unity-mirror-relay-sample et ouvrez le dossier dans Unity Hub.
4. Créez une session relais depuis votre backend
Votre backend crée une session par match, pour l'IP publique de chaque joueur, l'hôte en premier, à partir d'un simple appel API :
POST https://api.edgegap.com/v1/relays/sessions avec l'en-tête Authorization: Token YOUR_RELAY_PROFILE_TOKEN et le corps { "users": [ { "ip": "1.1.1.1" }, { "ip": "2.2.2.2" } ] }.
Le relais prend un instant à être assigné. Interrogez (poll) GET https://api.edgegap.com/v1/relays/sessions/{session_id} toutes les 2 secondes jusqu'à ce que ready soit true, ou transmettez une webhook_url lors de la création de la session et Edgegap l'appellera une fois le relais assigné, ou si l'assignation échoue.
Une fois prêt, la réponse contient tout ce dont les joueurs ont besoin :
relay.ipetrelay.ports: l'adresse du relais, avec un port serveur pour l'hôte et un port client pour tous les autres.authorization_token: le jeton de session, identique pour chaque joueur.session_users[].authorization_token: un jeton par joueur.
N'envoyez à chaque joueur que ses propres valeurs : l'adresse du relais, son port, le jeton de session et son propre jeton. Le jeton de profil de relais ne quitte jamais votre backend.
Avec votre agent :
Écris un point de terminaison dans mon backend qui crée une session de relais Edgegap : POST https://api.edgegap.com/v1/relays/sessions avec l'en-tête Authorization: Token, lu depuis la variable d'environnement RELAY_PROFILE_TOKEN, et un utilisateur par IP de joueur, l'hôte en premier. Interroge GET /v1/relays/sessions/{session_id} toutes les 2 secondes, jusqu'à 5 fois, jusqu'à ce que ready soit true. Renvoie à chaque joueur l'IP du relais, le port serveur pour l'hôte ou le port client pour les autres, l'authorization_token de session, ainsi que le propre authorization_token de ce joueur issu de session_users, mis en correspondance par IP. Ne renvoie jamais le jeton de profil de relais.
Pas encore de backend ? Demandez à votre agent de créer une session de test pour les IP publiques de vos joueurs : il renvoie les mêmes valeurs. Supprimez-la lorsque vous avez terminé, car les sessions sont facturées tant qu'elles restent ouvertes.
Voici notre tutoriel vidéo sur les relais d'Edgegap avec Mirror dans Unity :
5. Connectez l'hôte et les joueurs
Dans votre jeu, définissez les valeurs de l'étape 4 sur le composant EdgegapKcpTransport, puis démarrez Mirror :
Adresse de relais : l'
ipdu relais.ID de session : le jeton
authorization_tokende la session.ID utilisateur : le propre
authorization_tokende ce joueur.Port de relais : le port serveur pour l'hôte, le port client pour tous les autres.
L'exemple les définit en un seul appel, ChangeValue, puis l'hôte appelle StartHost() et les autres appellent StartClient().
Dans mon projet Mirror, une fois que mon backend a renvoyé les valeurs de relais, définissez-les sur l'EdgegapKcpTransport (adresse de relais, ID de session à partir de l'authorization_token de session, ID utilisateur à partir de l'authorization_token de ce joueur, port de relais à partir du port serveur si j'héberge ou du port client sinon), puis appelez StartHost() ou StartClient(). Montrez-moi où les champs de transport sont définis et renvoyez le fichier complet.
L'hôte et les clients se connectent tous vers l'extérieur au relais, ainsi personne n'ouvre de port et aucun joueur ne voit l'adresse IP d'un autre joueur.
6. Regrouper les joueurs et ajouter les retardataires
Une session de relais est créée pour les joueurs que vous avez déjà regroupés, le regroupement se fait donc avant l'étape 4 : dans votre propre salon, les salons Steam, les salons Epic Online Services ou le service Lobby d'Unity. Quel que soit le moyen utilisé pour les regrouper, celui-ci appelle votre backend avec leurs adresses IP publiques.
Un joueur rejoint après le début de la session ? Autorisez son adresse IP sur la session existante depuis votre backend, puis envoyez-lui les mêmes valeurs. Pour un test, demandez à votre agent :
Autorisez cette IP publique sur ma session de relais Edgegap {session_id}.
Lorsque le match se termine, supprimez la session depuis votre backend : DELETE https://api.edgegap.com/v1/relays/sessions/{session_id}. Les joueurs perdent la connexion au relais et la facturation pour cette session s'arrête.
7. Tester avec deux joueurs
Clonez l'exemple de relais Mirror et ouvrez le dossier dans Unity Hub.
Pour ce test local uniquement, collez le jeton de votre profil de relais dans RelayProfileToken sur le composant HelloWorldManager du game object NetworkManager. Supprimez-le avant la mise en production : dans un build, les joueurs pourraient le lire.
Lancez deux instances, avec le mode Multiplayer Play Mode d'Unity ou l'Éditeur plus un build. Démarrez un hôte dans la première, puis rejoignez depuis la seconde.
Les deux joueurs participent au même match via le relais. Supprimez la session de test lorsque vous avez terminé.
Documentation sur les relais distribués (Distributed Relays) →
Transports de relais pour Mirror, Netcode for GameObjects et Fish-Networking →
Vous préférez un serveur faisant autorité ? Aucun avantage pour l'hôte, et la partie continue même si l'hôte la quitte : consultez Mirror Networking, et ajoutez du matchmaking avec le SDK Unity Matchmaking.
Bloqué ? Posez vos questions à notre équipe et à d'autres studios sur le Discord Edgegap.
Questions Fréquemment Posées
Questions fréquentes sur l'ajout des relais Edgegap à un jeu multijoueur Unity en pair-à-pair.
Qu'est-ce qu'un relais dans les jeux multijoueurs ?
Un relais transfère le trafic entre les joueurs lorsqu'ils ne peuvent pas se connecter directement, par exemple derrière un NAT strict ou un pare-feu. Le jeu d'un joueur héberge la partie et le relais ne fait que transmettre les messages, de sorte que personne n'ouvre de ports et que les joueurs ne voient jamais l'adresse IP des autres.
Dois-je utiliser un relais ou un serveur dédié ?
Un relais conserve votre code réseau peer-to-peer tel quel, mais l'hôte détient l'état du jeu : l'hôte peut tricher, joue sans aucune latence, et la partie se termine lorsque l'hôte quitte, à moins que votre jeu n'effectue une migration d'hôte. Un serveur de jeu faisant autorité sur Edgegap supprime ces limites. Utilisez un relais lorsque votre jeu est déjà conçu selon une architecture hôte-client et que le passage à un serveur n'est pas une option.
Les relais d'Edgegap fonctionnent-ils avec Netcode for GameObjects et Fish-Networking ?
Oui. Edgegap fournit des transports de relais pour Mirror, Netcode for GameObjects et Fish-Networking. D'autres netcodes peuvent suivre le manuel d'implémentation du relais : le relais achemine l'UDP non fiable, et votre netcode gère la fiabilité.
Puis-je mettre le jeton de relais dans mon client de jeu ?
Non. Toute personne en sa possession peut créer des sessions sur votre compte. Conservez-le dans votre salon, outil de matchmaking ou backend, et n'envoyez à chaque joueur que l'adresse du relais, son port, le jeton de session et son propre jeton.
Comment les sessions de relais sont-elles facturées ?
Une session est facturée tant qu'elle est ouverte, et la facturation s'arrête lorsque vous la supprimez. Supprimez chaque session lorsque son match se termine, et supprimez les sessions de test lorsque vous avez terminé.

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.

Un lancement mondial impeccable pour Rivals of Aether 2
Aether Studios
Découvrez comment Aether Studios a rapidement ajouté Edgegap et a offert un lancement et un post-lancement sans faille à sa communauté.
Case Study

Surmontez la latence introduite par l'utilisation de WiFi par la réalité virtuelle dans les jeux multijoueurs compétitifs.
Halfbrick Studios
Découvrez comment Halfbrick a réussi à lancer et à maintenir un accès anticipé axé sur le multijoueur sur la plateforme VR META Quest.
Case Study

L'application sociale de MENA ajoute des jeux en ligne
WOLF
Découvrez comment l'application sociale très populaire de la région MENA a facilement ajouté des jeux de matchmaking et d'orchestration multijoueur à WOLF Qanawat.
Case Study

L'orchestration hybride maintient Kickoff Tactics prêt pour tout type de trafic
Birch Games
Comment l'orchestration hybride d'Edgegap pour gérer tant le le trafic prévisible et imprévisible, grâce aux flottes "egress-free" et le cloud.
Case Study

Lunes de sang de 7 jours
The Fun Pimps & iLLOGIKA
Découvrez comment Illogika a considérablement réduit ses coûts de serveur et garanti l'expérience en ligne attendue par la franchise 7 Days to Die.
Case Study

La guerre en ligne authentique nécessite l'orchestration ultime
Highwire Games
Découvrez comment le besoin de performance de Highwire nécessite une orchestration que seul Edgegap peut fournir.
Case Study

22 000 avis, 4,8 étoiles et une infrastructure qui s'est adaptée automatiquement
Sinn Studios
Comment une intégration simple, prise en charge par Slack, a permis au titre VR à succès de Sinn Studio d'être mis en ligne rapidement et de s'y maintenir.
Case Study

Orchestration de Serveurs Dynamiques
Under NDA - AAA Studio
Découvrez comment l'un des plus grands studios AAA du monde a amélioré son expérience multijoueur pair à pair grâce à l'informatique en périphérie.
Case Study

Latence presque nulle pour un jeu de combat AAA
AAA Studio - Under NDA
Comment un projet non annoncé a permis d'obtenir le délai d'attente le plus bas possible et d'améliorer l'équité dans son jeu 1v1.
Case Study

Jouez aux dieux avec la physique multiplayer
Squido Studio
Découvrez comment Squido utilise les serveurs de jeu optimisés par Edgegap pour offrir un gameplay VR époustouflant et chaotique.
Case Study

Des solutions entièrement gérées qui font gagner du temps à un jeu VR
Dirty Pearl Studios
Découvrez comment Dirty Pearl Studios a gagné du temps de développement grâce à l'intégration facile d'Edgegap et à l'orchestration automatisée de son intégration avec Nakama.
Case Study

Déploiement instantané de serveurs globaux pour l'éducation médicale en XR
AlensiaXR
Comment AlensiaXR utilise Edgegap pour offrir des sessions d'anatomie partagées à faible latence et toujours disponibles aux étudiants en médecine du monde entier.
Case Study

The Lightkeepers : un jeu coopératif social en VR avec des serveurs dédiés
Spectral Games
Comment Spectral Games a utilisé Edgegap Matchmaking et Server Browser pour lancer des serveurs dédiés pour son salon social VR, sans aucune expérience préalable des serveurs.
Case Study

Déploiements rapides & fiables dans le monde pour le PvPvE Gravebound
Crater Studios
Comment l'orchestration et le matchmaking d'Edgegap ont aidé Crater Studios à se concentrer sur le gameplay plutôt que sur l'infrastructure.
Case Study

Échelle rapide du métavers web
Hiber
Découvrez comment Hiber a éliminé les incertitudes de sa planification de capacité serveur avec Edgegap.
Case Study

Exigences matérielles élevées et pools de serveurs de jeux personnalisés
Alderon Games
Découvrez comment Alderon Games utilise instantanément une pool personnalisée de serveurs de jeux à travers plusieurs fournisseurs dans le monde pour son MMO populaire.
Case Study

Intégration facile pour les développeurs indépendants
WhaleFood Games
Découvrez comment WhaleFood Games a "chassé" ses problèmes de netcode avec Edgegap.
Case Study

Une technologie qui propulse le premier jeu eSports de l'Asie du Sud-Est.
Anantarupa Studios
Découvrez comment Edgegap a transformé le paysage du jeu en Asie du Sud-Est en démocratisant des infrastructures complexes avec sa solution.
Case Study

Une frappe. Portée mondiale.
Triple Hill Interactive
Comment Triple Hill Interactive tire parti de l'orchestration d'Edgegap pour offrir une faible latence et améliorer l'équité dans un genre où chaque milliseconde compte.
Case Study

Un Battle Royale en équipe au rythme effréné... avec des peluches d'animaux armées jusqu'aux dents !
SANDYFLOOR
Découvrez comment un studio indépendant basé en Corée a lancé son jeu multijoueur dans le monde entier.
Case Study

Les courses de chevaux sur mobile disponible mondialement grâce à Edgegap.
Mirai Labs
Comment Mirai Labs propulse les courses multijoueurs mondiales de Pegaxy Blaze grâce au déploiement de serveurs juste-à-temps et au vCPU fractionné pour maintenir un coût bas.
Case Study

Gestion et distribution des serveurs
Matrioshka Games
Lisez comment Matrioshka Games a réussi à expédier un Battle Royale en accès anticipé avec des ressources limitées.
Case Study

À mon signal, déchaînez l'enfer !
TyGames
Découvrez comment le studio indépendant TyGames immerge les joueurs dans un combat multijoueur de gladiateurs à la troisième personne.
Case Study

Orchestration Instantanée Mondiale
Soliton Interactive
Découvrez comment Soliton Interactive a réalisé l'impossible… Livrer son premier jeu jouable en mode multijoueur !
Case Study

Le jeu de hockey avec une physique côté serveur & une latence sous les 50ms
NS7
Découvrez pourquoi seul Edgegap pourrait permettre à un studio indépendant de réaliser sa vision d'un gameplay sportif F2P de qualité AAA grâce à la physique côté serveur et à l'autorité.
Case Study

Déploiements régionaux pour les jeux en ligne
X1 Contra 1
X1 Contra 1 propose des jeux PvP décontractés en temps réel à sa base de joueurs brésilienne grâce à un hébergement économique et à des déploiements régionaux
Case Study

Payez uniquement lorsque les joueurs jouent : une infrastructure abordable
Meltdown Interactive
Comment Edgegap a aidé le développeur indépendant Meltdown Interactive Media à résoudre la mise à l’échelle rentable et le matchmaking sans complexité
Case Study

Une plateforme Edgegap, trois profils réseau très différents
Warped Games
Comment Warped Games gère un hub social, du coopératif en temps réel et du coopératif au tour par tour, le tout sur la même API de déploiement Edgegap et le même pipeline de conteneurs.
Case Study

Pool Live Tour Max
RETA Games
Case Study

Le tireur d'extraction POP Web3 de Corée devient mondial, instantanément
NDUS Entertainment
Comment XOCIETY a facilement ajouté l'orchestration Edgegap et intégré un matchmaking personnalisé en travaillant aux côtés des Edgegap Ping Beacons pour optimiser la latence.
Case Study

Multijoueur dans chaque dimension
Arcadia.tv
Découvrez comment Arcadia.tv utilise le réseau edge d'Edgegap pour offrir un sport VR innovant basé sur l'équipe et la localisation.
Case Study

Un jeu mobile F2P réduit ses coûts d'infrastructure grâce aux serveurs JIT
Game Changers Worldwide
Comment Game Changer Worldwide a hébergé le PvP 3v3 en temps réel de Rumble Rush à l'échelle mondiale sur mobile.
Case Study
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.









