Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

/

Unity Relays

/

Unity Relays

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

Relais Unity : Comment ajouter des relais à votre jeu multijoueur Unity peer-to-peer avec Edgegap

Relais Unity : Comment ajouter des relais à votre jeu multijoueur Unity peer-to-peer avec Edgegap

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 :

  1. Obtenir votre jeton de relais

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

  3. Ajouter le transport de relais d'Edgegap à Mirror

  4. Créer une session de relais depuis votre backend

  5. Connecter l'hôte et les joueurs

  6. Regrouper les joueurs et ajouter les arrivants tardifs

  7. 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.

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 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

  1. Téléchargez les transports d'Edgegap depuis distributed-relay-examples et copiez le dossier Edgegap dans Assets/Mirror/Transports.

  2. Sélectionnez votre objet de jeu NetworkManager et ajoutez le composant EdgegapKcpTransport.

  3. Glissez-déposez ce composant dans le champ Transport du NetworkManager.

  4. 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.ip et relay.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'ip du relais.

  • ID de session : le jeton authorization_token de la session.

  • ID utilisateur : le propre authorization_token de 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

  1. Clonez l'exemple de relais Mirror et ouvrez le dossier dans Unity Hub.

  2. 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.

  3. 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.

  4. Les deux joueurs participent au même match via le relais. Supprimez la session de test lorsque vous avez terminé.

Étapes suivantes

Étapes suivantes

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.

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.