Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

/

/

Multiplayer Servers Sample

PlayFab

Multiplayer Servers Sample

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

Échantillon de serveurs multijoueurs PlayFab : Exécutez-le sur des serveurs dédiés Edgegap, dans Unity

Échantillon de serveurs multijoueurs PlayFab : Exécutez-le sur des serveurs dédiés Edgegap, dans Unity

Il s'agit du propre échantillon Unity de PlayFab pour PlayFab Multiplayer Servers, issu de MpsSamples de Microsoft, fonctionnant à la place sur Edgegap. Le fork d'Edgegap conserve les mêmes serveur et client Unity, supprime le SDK PlayFab Game Server (GSDK), puis compile et téléverse le serveur avec le plugin Unity d'Edgegap.

Rien n'est pré-provisionné. Il n'y a aucune région de build, aucun pool de secours ni aucune machine virtuelle à dimensionner : chaque serveur dédié démarre à la demande, à proximité de ses joueurs, et s'arrête de lui-même lorsqu'ils partent.

Le réseau d'Edgegap s'étend sur plus de 615 emplacements Edge Cloud (en savoir plus). Chaque serveur est déployé vers le meilleur emplacement disponible pour ses joueurs et n'est facturé que pendant la durée de la partie.

Plateformes : Client de bureau Windows (testé), serveur dédié Linux. Échantillon original par Microsoft PlayFab, sous licence Apache 2.0.

Comment ça fonctionne

  1. Vous compilez le serveur Unity et le téléversez en tant que version d'application Edgegap, à l'aide du plugin Unity d'Edgegap.

  2. Une petite application console, EdgegapAllocatorSample, demande à Edgegap un serveur proche des adresses IP des joueurs. Elle joue le rôle de l'appel RequestMultiplayerServer de PlayFab et affiche l'adresse du serveur une fois qu'il est prêt.

  3. Le serveur écoute sur le port TCP 7777 dès son démarrage. Les clients se connectent à l'adresse avec -server host:port.

  4. Lorsque les joueurs partent, le serveur arrête son propre déploiement, ce qui interrompt la facturation.

Sur PlayFab Multiplayer Servers vs sur Edgegap :

Sur PlayFab Multiplayer Servers (GSDK)

Sur Edgegap

AgentListener.cs : GSDK Start, port depuis GetGameServerConnectionInfo, ReadyForPlayers, écoute sur OnServerActive

EdgegapServer.cs : écoute sur le port fixe 7777 au démarrage

UpdateConnectedPlayers

Inutile. Le serveur consigne son nombre de joueurs dans les journaux

OnShutDownCallback

Edgegap envoie SIGTERM ; les joueurs reçoivent le même ShutdownMessage lorsque Unity se ferme

Build, taille de VM, serveurs par VM, serveurs de secours

Une version d'application : image, 0,5 vCPU / 1 Go par serveur, port gameport TCP 7777

RequestMultiplayerServer

POST /v2/deployments (EdgegapAllocatorSample)

Le serveur tourne jusqu'à ce que PlayFab l'arrête

Le serveur arrête son propre déploiement 120 s après le démarrage si personne ne le rejoint, ou 30 s après le départ du dernier joueur

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

Exécuter l'exemple

1. Avant de commencer

  • Un compte Edgegap gratuit et un jeton d'API provenant de Tableau de bord → Paramètres utilisateur → Jetons. Il s'applique à toute l'organisation : conservez-le sur votre machine ou votre backend, jamais dans un client de jeu.

  • Unity 2021.3.45f2, avec la Prise en charge du build Linux et la Prise en charge du build de serveur dédié Linux. Les deux projets utilisent cette version.

  • Docker Desktop, pour la création du conteneur du plugin.

  • Le SDK .NET 8 ou plus récent, pour EdgegapAllocatorSample.

  • Clonez le fork. L'échantillon se trouve dans UnityMirror/ (UnityServer et UnityClient) et EdgegapAllocatorSample/.

Git : Unity nécessite un client Git (2.14.0 ou plus récent) sur votre PATH pour installer des packages à partir d'une URL Git, comme le plugin Edgegap. macOS en possède généralement déjà un (Xcode Command Line Tools) ; sur Windows, installez Git.

2. Compiler et téléverser le serveur

Ouvrez UnityMirror/UnityServer dans Unity. Le plugin Edgegap Unity est déjà présent dans ses packages, fixé à la version 3.2.1. Ouvrez Tools → Edgegap Server Hosting :

  1. Sign in with Edgegap, puis Build server.

  2. Containerize with Docker : nom de l'image mps-unity-mirror, tag d'image vide (le plugin utilise l'heure UTC actuelle).

  3. Vérification locale facultative : paramètres d'exécution -p 7777:7777/tcp, puis Deploy local container.

  4. Upload to Edgegap : application mps-unity-mirror, puis Upload image and Create app version.

Dans le formulaire de version :

  • Un port : nom gameport, 7777, TCP (l'exemple utilise le transport Telepathy de Mirror).

  • 0,5 vCPU et 1 Go.

  • Une durée maximale de 60 minutes. Le serveur s'arrête également de lui-même.

  • Si demandé, le nom d'utilisateur et le jeton du registre provenant de la page Container Registry du tableau de bord.

Pour compiler plutôt depuis la ligne de commande (CI, tests scriptés), avec le projet fermé dans l'Éditeur :

"<Unity>" -batchmode -projectPath UnityMirror/UnityServer -executeMethod EdgegapPluginBuild.BuildServer -logFile build-server.log

3. Démarrer un serveur

EdgegapAllocatorSample est l'équivalent Edgegap du MpsAllocatorSample de PlayFab : une application console .NET qui appelle l'API Edgegap avec HttpClient, sans SDK. Fournissez-lui votre jeton, l'application et le nom de version de l'étape 2 :

cd EdgegapAllocatorSample

export EDGEGAP_API_TOKEN="token xxxxxxxx" EDGEGAP_APP=mps-unity-mirror EDGEGAP_VERSION=<version name>

dotnet run -- deploy <your public IP>

Elle affiche -server <host>:<port> une fois que le serveur est prêt. Vous pouvez également transmettre les joueurs sous la forme latitude,longitude, plusieurs à la fois : Edgegap choisit le meilleur emplacement disponible pour l'ensemble du groupe.

Exécutez dotnet run sans arguments pour afficher le menu : lister les versions, lister les déploiements, obtenir un déploiement ou en arrêter un.

MpsAllocatorSample de PlayFab

EdgegapAllocatorSample

API Edgegap

RequestMultiplayerServer

1 : déployer un serveur, attendre qu'il soit prêt, afficher host:port

POST /v2/deployments, puis GET /v1/status/{request_id}

ListBuildSummaries

2 : lister les versions de l'application

GET /v1/app/{app}/versions

ListMultiplayerServers

3 : lister les déploiements

GET /v1/deployments

GetMultiplayerServerDetails

4 : obtenir un déploiement

GET /v1/status/{request_id}

ShutdownMultiplayerServer

5 : arrêter un déploiement

DELETE /v1/stop/{request_id}

Chaque déploiement qu'elle démarre porte le tag edgegap-allocator-sample.

4. Connecter deux clients

Générez UnityClient pour Windows. Il n'a pas de build serveur, donc la ligne de commande d'Unity fonctionne telle quelle :

"<Unity>" -batchmode -quit -projectPath UnityMirror/UnityClient -buildTarget Win64 -buildWindows64Player Builds/Client/win64/Client.exe

Lancez ensuite deux clients avec l'adresse obtenue à l'étape 3 :

UnityMirror/UnityClient/Builds/Client/win64/Client.exe -server <host>:<port>

Les deux rejoignent le même serveur. Sans -server, le client utilise l'adresse et le port définis sur son NetworkManager dans l'Inspector. Quittez les clients : le serveur arrête son déploiement 30 secondes plus tard et disparaît du tableau de bord Edgegap.

5. Migrez votre propre jeu hors de PlayFab Multiplayer Servers

Ce fork est une référence fonctionnelle pour quitter PlayFab Multiplayer Servers : votre agent de codage peut copier ses fichiers testés au lieu de les écrire de zéro. Quatre modifications permettent de migrer un serveur Unity hors du GSDK :

  1. Supprimez le GSDK. Supprimez Assets/PlayFabSdk et remplacez AgentListener.cs par un petit script serveur qui écoute sur un port fixe au démarrage (le fichier EdgegapServer.cs du fork conserve le même .meta, la scène n'a donc pas besoin d'être modifiée).

  2. Arrêtez le serveur vous-même. Appelez l'ARBITRIUM_DELETE_URL qu'Edgegap fournit à chaque déploiement, avec le ARBITRIUM_DELETE_TOKEN, lorsque personne ne rejoint ou que tout le monde est parti. Appelez SelfStop() lorsqu'un match se termine.

  3. Démarrez les serveurs via l'API Edgegap. Remplacez RequestMultiplayerServer par POST /v2/deployments, envoyé depuis votre backend, avec les IP ou les coordonnées des joueurs.

  4. Conteneurisez avec le plugin. Compilez, conteneurisez et téléversez avec le plugin Edgegap Unity, puis créez une version d'application avec le port de votre jeu.

Avec Mirror, démarrez le serveur via NetworkManager.StartServer() plutôt que NetworkServer.Listen, sinon les clients seront déconnectés car non authentifiés.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-unity et la compétence pour mon netcode. En utilisant github.com/edgegap/backend-game-sample-unity-mirror-playfab-mps (UnityMirror) comme référence, supprime le GSDK PlayFab de mon serveur Unity, fais-le écouter sur un port fixe au démarrage et arrête son propre déploiement Edgegap lorsqu'il est vide, puis conteneurise-le avec le plugin Edgegap Unity. »

Pour effectuer l'ensemble de la migration manuellement, consultez le guide de migration PlayFab.

6. Ajouter le matchmaking

L'exemple ne dispose pas encore de matchmaker : vous démarrez chaque serveur avec EdgegapAllocatorSample ou le tableau de bord. Pour regrouper les joueurs sur ces serveurs, choisissez l'une des options suivantes :

  • Conserver PlayFab Matchmaking. Désactivez l'allocation de serveur sur votre file d'attente et laissez une fonction Azure démarrer un serveur Edgegap pour chaque match. Le guide d'intégration de PlayFab détaille la procédure, et l'exemple SpaceEdge l'exécute de bout en bout.

  • Utiliser le matchmaker d'Edgegap. Un matchmaker hébergé qui démarre le serveur pour chaque match, sans aucun code backend. Consultez la documentation du matchmaker.

Limites connues

  • Aucun entremetteur (matchmaker) dans l'échantillon. Les serveurs démarrent depuis EdgegapAllocatorSample sur votre machine, avec votre jeton d'API. En production, démarrez-les depuis votre backend ou un matchmaker, jamais depuis un client de jeu.

  • Le plugin 3.2.1 consigne le jeton d'arrêt automatique (self-stop token). Son Dockerfile exécute d'abord env, de sorte que les journaux de déploiement affichent les variables injectées, y compris ARBITRIUM_DELETE_TOKEN. Corrigé dans la prochaine version du plugin (edgegap/buildtool-unity-plugin#62) : mettez à jour la version épinglée dès qu'elle sera disponible.

  • Le serveur ne vérifie pas qui se connecte. Pour la production, transmettez les joueurs attendus au serveur et rejetez les autres.

  • Seul le client Windows a été testé. Les autres exemples PlayFab dans le fork (Unreal, télémétrie, encapsulation du GSDK) sont inchangés par rapport au dépôt de Microsoft.

Ce qui a été testé

Testé de bout en bout sur Edgegap le 29 octobre 2026, avec Unity 2021.3.45f2 et le plugin Edgegap Unity 3.2.1 :

  • EdgegapAllocatorSample deploy a démarré le serveur à Toronto en quelques secondes.

  • Deux clients Windows se sont connectés via TCP (2 player(s) connected).

  • Après leur déconnexion, le serveur a arrêté son propre déploiement.

  • Également exécuté localement dans Docker : même résultat, et docker stop a envoyé au client connecté un message d'arrêt avant que le serveur ne se ferme.

Questions Fréquemment Posées

Questions sur l'exécution de l'exemple Multiplayer Servers de PlayFab sur Edgegap.

Puis-je exécuter les exemples de serveurs multijoueurs de PlayFab sur Edgegap ?

Oui. Le fork d'Edgegap des MpsSamples de Microsoft exécute l'échantillon Unity Mirror sur les serveurs dédiés d'Edgegap sans le GSDK. Il a été testé de bout en bout en octobre 2026, avec deux clients sur un serveur.

Ai-je besoin du GSDK PlayFab sur Edgegap ?

Non. Le serveur écoute sur un port fixe lorsqu'il démarre et arrête son propre déploiement lorsque les joueurs partent. Il n'y a aucun agent auquel faire rapport, aucun battement de cœur (heartbeat) et aucun état prêt à définir.

Qu'est-ce qui remplace RequestMultiplayerServer sur Edgegap ?

Un appel POST /v2/deployments à l'API Edgegap, avec les adresses IP ou les coordonnées des joueurs. Edgegap démarre le serveur au meilleur emplacement disponible pour eux et renvoie son adresse. Le EdgegapAllocatorSample de l'échantillon montre l'appel à côté de chaque commande MpsAllocatorSample.

Ai-je besoin de serveurs de secours sur Edgegap ?

Non. Chaque serveur démarre à la demande, à proximité de ses joueurs, il n'y a donc pas de pool en attente à dimensionner. Si votre jeu a besoin de serveurs préchauffés, les Private Fleets peuvent maintenir la capacité active.

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.