Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

/

PlayFab

/

PlayFab

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

PlayFab : Comment démarrer des serveurs dédiés Edgegap depuis le Matchmaking de PlayFab

PlayFab : Comment démarrer des serveurs dédiés Edgegap depuis le Matchmaking de PlayFab

Ce guide vous montre comment conserver PlayFab pour vos comptes de joueurs et vos files d'attente de matchmaking, et lancer un serveur de jeu dédié Edgegap pour chaque partie : lorsque PlayFab trouve une partie, une fonction Azure déploie un serveur à proximité des joueurs, et une seconde transmet son adresse à chaque joueur.

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 API, avec une facturation exclusivement basée sur l'utilisation : aucun serveur entier à louer, approvisionner ou maintenir en fonctionnement entre les parties. Pour les serveurs persistants à capacité réservée, Edgegap propose les Private Fleets.

PlayFab regroupe les joueurs ; Edgegap héberge la partie. Les deux fonctions s'exécutent dans votre abonnement Azure en tant que CloudScript utilisant Azure Functions de PlayFab, de sorte que votre jeton d'API Edgegap et votre clé secrète PlayFab y restent : le client de jeu ne conserve que votre identifiant de titre, et le serveur de jeu ne détient aucun secret.

Ce guide aborde :

  1. La préparation d'une version d'application Edgegap fonctionnelle, d'un titre PlayFab et d'un abonnement Azure

  2. La connexion de votre agent de programmation à Edgegap (facultatif)

  3. La configuration d'une file d'attente de matchmaking PlayFab

  4. L'ajout de la fonction Azure qui déploie le serveur

  5. La transmission de l'adresse du serveur aux joueurs

  6. Le matchmaking des joueurs depuis votre client de jeu

  7. Le test 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. La compétence edgegap-playfab fournit les Azure Functions testées, les scripts de configuration et un client Unity, et l'agent vérifie la version de votre application ainsi que vos déploiements. Vous gérez vos tableaux de bord PlayFab, Azure et Edgegap, les secrets, et les sessions de test.

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

Vous souhaitez d'abord le voir fonctionner ? L'exemple SpaceEdge exécute l'ensemble de cette configuration dans un petit jeu de tir spatial Unity.

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.

  • Une version opérationnelle de l'application Edgegap de votre serveur de jeu : un serveur que vous avez déployé et rejoint au moins une fois. PlayFab lance cette version pour chaque match, elle nécessite donc un serveur de jeu conteneurisé et fonctionnel pour fonctionner de bout en bout. Si vous n'en avez pas encore, consultez nos guides : Unity Engine, Unreal Engine, Godot Engine ou Custom Engine. Nommez son port de jeu gameport, et notez les noms de l'application et de la version. Le serveur n'a besoin d'aucun paramètre ni secret PlayFab.

  • Un titre PlayFab avec Matchmaking, ainsi que l'accès à son Game Manager : vous aurez besoin de son Title ID et d'une clé secrète.

  • Un abonnement Azure et l'Azure CLI, pour les deux Azure Functions. Les tests sont couverts par l'allocation mensuelle gratuite du forfait Flex Consumption.

  • Un jeton d'API Edgegap, accessible depuis Tableau de bord → Paramètres utilisateur → Jetons. Il se configure uniquement dans les paramètres de votre Function App. Il s'applique à l'ensemble de l'organisation, vous ne devez donc jamais l'inclure dans votre client de jeu, votre serveur de jeu, vos fichiers de projet ou une discussion.

  • Facultatif : l'exemple PlayFab d'Edgegap, un projet Unity 2021.3 comprenant les deux Azure Functions, ainsi que le code client et serveur ci-dessous.

2. Connectez votre agent de codage à Edgegap

Ignorez cette étape si vous faites tout manuellement.

Le serveur MCP Edgegap permet à votre agent de vérifier vos applications et versions, de déployer des serveurs de test et de consulter leurs journaux sur votre compte. La compétence d'agent edgegap-playfab lui fournit la configuration PlayFab testée : les deux Azure Functions, les scripts qui les déploient et créent la file d'attente, un client Unity, ainsi que les correctifs pour les pièges connus de PlayFab.

Claude Code : installez le plugin Edgegap. Il ajoute à la fois le serveur MCP et les compétences, et demande votre jeton d'API lors de l'installation (stocké dans le gestionnaire d'identifiants de votre système) :

/plugin marketplace add edgegap/llm-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 YOUR_EDGEGAP_API_TOKEN" --scope user. Ne faites pas les deux, sinon vous aurez deux serveurs edgegap.

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/llm-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 :

« Liste mes applications Edgegap et leurs versions, avec les ports de chaque version. »

3. Configurer une file d'attente de matchmaking PlayFab

  1. Dans le Game Manager de PlayFab, ouvrez Multiplayer → Matchmaking et créez une file d'attente, ou réutilisez la vôtre. Pour un premier test, une taille de partie de 2 sans règles permet d'associer deux joueurs quelconques.

  2. Désactivez Enable server allocation sur la file d'attente : PlayFab crée uniquement la partie, et Edgegap héberge le serveur.

  3. Si votre jeu connecte les joueurs avec LoginWithCustomID ou un ID d'appareil, ouvrez Title settings → API Features et décochez Disable player creation using Client/LoginWithCustomId. Les nouveaux titres l'ont cochée, et les connexions échouent avec PlayerCreationDisabled.

  4. Dans Title settings → Secret Keys, créez une clé secrète pour les Azure Functions.

Vos règles de partie restent dans PlayFab. Edgegap démarre le serveur uniquement après que PlayFab a trouvé la partie.

Vous déplacez une file d'attente existante hors des serveurs PlayFab Multiplayer ? Les clients que vous avez déjà déployés lisent le serveur à partir de GetMatch, qui cesse de le renvoyer une fois l'allocation désactivée. Testez sur une copie de la file d'attente et déployez le nouveau client avant de basculer.

4. Ajoutez la fonction Azure qui déploie le serveur

L'application de fonction (Function App). Créez un groupe de ressources, un compte de stockage et une Function App Flex Consumption sous Node.js 22, dans une région US West (recommandation de PlayFab). Dans ses paramètres, ajoutez PLAYFAB_TITLE_ID, PLAYFAB_SECRET_KEY, EDGEGAP_API_TOKEN (sans le préfixe token), EDGEGAP_APP_NAME, EDGEGAP_APP_VERSION, EDGEGAP_PORT_NAME (facultatif, valeur par défaut : gameport) et EDGEGAP_READY_WEBHOOK_URL (étape 5). Facultatif : FALLBACK_LATITUDE / FALLBACK_LONGITUDE, utilisés lorsque PlayFab ne parvient à localiser aucun joueur.

La fonction. StartEdgegapDeployment :

  1. Lit le MatchId et le QueueName à partir de l'événement de partie trouvée (match-found).

  2. Obtient les membres du match, ainsi que l'emplacement de chaque joueur avec Server/GetPlayerProfile (PlayFab géolocalise leur adresse IP de connexion).

  3. Appelle POST https://api.edgegap.com/v2/deployments avec votre application et votre version, les joueurs sous forme de users ("user_type": "geo_coordinates"), un tag avec l'ID du match (ses 20 premiers caractères), PLAYFAB_MATCH_ID et PLAYFAB_QUEUE_NAME comme environment_variables, et webhook_on_ready / webhook_on_error pointant vers la deuxième fonction.

  4. Renvoie une réponse immédiatement, en environ une seconde. Elle n'attend jamais le serveur : l'appel de PlayFab expire après 10 secondes, et un serveur met 5 à 30 secondes pour être prêt.

Edgegap choisit le meilleur emplacement disponible pour l'ensemble du groupe et répond avec un request_id. Enregistrez-le dans les journaux avec l'ID du match.

match_found se déclenche pour chaque file d'attente de votre titre. Pour n'attribuer des serveurs Edgegap qu'à certaines files d'attente, listez-les dans EDGEGAP_QUEUES.

Enregistrez-la et ajoutez la règle. Dans Automation → CloudScript → Functions, enregistrez StartEdgegapDeployment avec son URL et sa clé de fonction. Ensuite, dans Automation → Rules, ajoutez une règle : type d'événement playfab.matchmaking.match_found, action Execute Azure Function, fonction StartEdgegapDeployment.

Avec votre agent :

« Charge la compétence edgegap-playfab. Déploie ses deux Azure Functions sur une nouvelle Function App Flex Consumption dans US West, définis les paramètres de l'application à partir de mon fichier env local sans les afficher, enregistre StartEdgegapDeployment dans mon titre PlayFab et exécute le test de chaîne avant que j'ajoute la règle. »

Gardez les secrets hors de vue : le jeton Edgegap et la clé secrète PlayFab ne doivent résider que dans les paramètres de la Function App. Les clés de fonction sont également des secrets : elles font partie des URL, veillez donc à ne pas commettre ou partager ces URL.

5. Donnez l'adresse du serveur aux joueurs

Lorsque le serveur est prêt, Edgegap appelle la deuxième fonction, EdgegapDeploymentReady, via le webhook ready. C'est Edgegap qui l'appelle, et non PlayFab, ne l'enregistrez donc pas dans PlayFab.

  1. Elle ne fait pas confiance au corps du webhook : elle lit le déploiement depuis l'API Edgegap et vérifie qu'il porte bien le tag de ce match.

  2. Elle lit à nouveau les membres du match depuis PlayFab.

  3. Elle écrit {"matchId", "status", "host", "port"} dans les données en lecture seule de chaque joueur, sous la clé EdgegapServer. Les clients peuvent le lire mais ne peuvent pas le modifier.

  4. Si le serveur a échoué, elle écrit status: "error", afin que les clients cessent d'attendre.

Le serveur de jeu doit uniquement écouter sur son port et s'arrêter lui-même lorsque le match est terminé : il appelle l'ARBITRIUM_DELETE_URL qu'Edgegap attribue à chaque déploiement, avec ARBITRIUM_DELETE_TOKEN. L'exemple s'arrête si personne ne rejoint dans les 120 secondes, ou 30 secondes après le départ du dernier joueur.

Pour la production, transmettez les identifiants de joueur du match au serveur (par exemple en tant que variable d'environnement depuis StartEdgegapDeployment) et rejetez les joueurs qui ne font pas partie du match.

6. Associez des joueurs depuis votre client de jeu

  1. Le client connecte le joueur à PlayFab (l'exemple utilise LoginWithCustomID ; utilisez la connexion de votre jeu). Il ne contient que l'identifiant de votre titre.

  2. Il crée un ticket de matchmaking dans votre file d'attente (CreateMatchmakingTicket) et le vérifie avec GetMatchmakingTicket toutes les 6 secondes jusqu'à ce que le statut soit Matched. PlayFab autorise 10 vérifications par minute et par ticket.

  3. Il lit ensuite EdgegapServer avec GetUserReadOnlyData toutes les 2 à 3 secondes, et ignore toute valeur dont le matchId ne correspond pas à ce match.

  4. Il se connecte à host:port. En cas de status: "error", il affiche une erreur et permet au joueur de se remettre dans la file d'attente.

Le client Unity de l'exemple effectue cela uniquement avec UnityWebRequest et JsonUtility, sans aucun SDK PlayFab. Si votre jeu utilise déjà le SDK, effectuez les mêmes appels par son intermédiaire.

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.

  2. Connectez deux clients en tant que deux joueurs PlayFab différents et lancez le matchmaking sur les deux. Sur une seule machine, attribuez à chacun son propre identifiant de joueur : l'exemple prend -playfabCustomId player-a et -playfabCustomId player-b.

  3. Lorsque PlayFab les associe, la règle exécute StartEdgegapDeployment. Dans le tableau de bord Edgegap, un déploiement apparaît avec une balise contenant le début de l'ID de match, dans un emplacement proche de vous.

  4. Les deux clients lisent l'adresse à partir de leurs données en lecture seule et se connectent au même serveur.

  5. Quittez les deux clients : le serveur s'arrête de lui-même et disparaît du tableau de bord.

Match trouvé, mais pas d'adresse ? Vérifiez les journaux de la Function App (Application Insights ou l'onglet Monitor de chaque fonction) et assurez-vous que le type d'événement de la règle est exactement playfab.matchmaking.match_found. Une erreur 401 d'Edgegap signifie que le jeton est incorrect ou contient toujours son préfixe token. Un déploiement démarre mais personne ne se connecte ? Le problème vient du serveur : déployez votre version manuellement et rejoignez-la directement.

Étapes suivantes

Étapes suivantes

Vous passez en production ? Demandez à votre agent d'exécuter la liste de vérification de la compétence edgegap-launch : déploiements de versions, politique de redémarrage, durée maximale, contrôle des coûts. Vous préférez un matchmaker hébergé sans scripts ? Consultez le matchmaker d'Edgegap.

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

Questions Fréquemment Posées

Questions fréquentes sur l'hébergement de parties PlayFab sur les serveurs dédiés d'Edgegap.

Puis-je utiliser PlayFab Matchmaking avec les serveurs Edgegap ?

Oui. Conservez vos files d'attente et vos règles PlayFab, puis désactivez l'allocation de serveur. Lorsque PlayFab trouve une partie, une fonction Azure déclenchée par l'événement de partie trouvée déploie un serveur Edgegap à proximité des joueurs, et une seconde fonction écrit son adresse dans les données en lecture seule de chaque joueur.

Ai-je encore besoin de PlayFab Multiplayer Servers ?

Non. Edgegap héberge les serveurs dédiés. PlayFab conserve vos comptes, les données des joueurs et le matchmaking, et Edgegap ne démarre un serveur que lorsqu'un match est trouvé, facturé à la minute pendant qu'il fonctionne.

Comment Edgegap choisit-il l'emplacement du serveur pour un match PlayFab ?

À partir de l'emplacement de chaque joueur, que la fonction Azure lit depuis leur profil PlayFab et envoie sous forme de coordonnées. Edgegap choisit le meilleur emplacement disponible pour l'ensemble du groupe.

Où dois-je renseigner mon jeton d'API Edgegap avec PlayFab ?

Uniquement dans les paramètres de votre Azure Function App, avec votre clé secrète PlayFab. Les clients de jeu ne détiennent que l'ID de titre, et les serveurs de jeu ne détiennent aucun secret.

Comment les joueurs obtiennent-ils l'adresse du serveur auprès de PlayFab ?

Lorsque le serveur est prêt, Edgegap appelle une fonction webhook qui vérifie le déploiement et écrit son hôte et son port dans les données en lecture seule de chaque joueur correspondant. Chaque client les lit et se connecte.

Puis-je utiliser l'ancien CloudScript au lieu d'Azure Functions ?

La même règle et le même événement régissent les deux, mais Microsoft qualifie JavaScript CloudScript d'« hérité » (Legacy) et oriente les nouveaux travaux vers CloudScript à l'aide d'Azure Functions. Azure Functions permet également à l'appel de déploiement de répondre immédiatement et de recevoir le webhook de disponibilité d'Edgegap.

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.

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.

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.