Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Mirror Networking

Tanks (WebGL)

Déployer sur Edgegap

Publié

Publié

Publié

Tanks (WebGL) : Exécutez Tanks de Mirror sur les serveurs dédiés d'Edgegap, avec Matchmaking

Tanks (WebGL) : Exécutez Tanks de Mirror sur les serveurs dédiés d'Edgegap, avec Matchmaking

Tanks est l'un des jeux d'exemple de Mirror : les joueurs pilotent des tanks dans une arène et se tirent dessus. L'exemple d'Edgegap le compile pour le navigateur (WebGL) et exécute chaque match sur son propre serveur de jeu dédié.

Mirror et le jeu Tanks ne changent pas : l'exemple conserve le SimpleWebTransport de Mirror ainsi que la scène originale, et ajoute quelques scripts optionnels. Activez-les et les joueurs cliqueront sur Find Match au lieu de saisir une adresse de serveur.

Le matchmaker d'Edgegap regroupe les joueurs, puis démarre un serveur pour eux. Le réseau d'Edgegap couvre plus de 615 emplacements Edge Cloud (en savoir plus), et chaque serveur est déployé dans le meilleur emplacement disponible pour ses joueurs. Le navigateur se connecte via des WebSockets sécurisés, et le serveur s'arrête de lui-même lorsque la partie est vide.

Plateformes : client WebGL dans le navigateur ; serveur dédié Linux. Unity 6.3 LTS (6000.3.11f1), Mirror 86.13.4. Tanks fait partie de Mirror, sous licence MIT.

Comment ça fonctionne

  1. Un joueur ouvre le jeu dans le navigateur et clique sur Find Match. Le client envoie un ticket au matchmaker d'Edgegap.

  2. Le matchmaker regroupe 2 à 4 joueurs. Les navigateurs ne pouvant pas envoyer de pings, il positionne le serveur à partir des adresses IP publiques des joueurs.

  3. Edgegap démarre le serveur Tanks à proximité d'eux. Le serveur écoute les WebSockets sur le port 7778, et la mise à niveau TLS d'Edgegap place un certificat devant lui.

  4. Chaque client reçoit le nom d'hôte et le port externe du serveur, et se connecte à wss://{host name}:{port}, en réessayant pendant que le serveur démarre.

  5. Lorsque tout le monde est parti depuis 30 secondes, ou que personne ne rejoint dans les 2 minutes, le serveur arrête son propre déploiement.

Ce que l'exemple ajoute :

Chemin

Ce qu'il fait

Assets/EdgegapMatchmaking/TanksMatchmakingClient.cs

Panneau Trouver une partie / Annuler. Crée le ticket, attend un serveur, connecte Mirror via wss://.

Assets/EdgegapMatchmaking/TanksMatchmakingServer.cs

Serveur dédié uniquement. Lit les variables injectées par Edgegap et arrête le déploiement lorsque la partie est vide.

Assets/EdgegapMatchmaking/TanksMatchmakingDTOs.cs

Attributs du ticket. Ajoutez des champs ici pour les règles personnalisées du matchmaker.

Assets/EdgegapMatchmaking/Edgegap.Tanks.Matchmaking.asmdef

N'active les scripts que lorsque le SDK Edgegap Unity 3.5.5 ou une version plus récente est installé. Sans lui, ils se compilent sous forme de stubs vides.

Assets/EdgegapMatchmaking/link.xml

Conserve les classes de données du SDK dans les builds IL2CPP (WebGL et serveur Linux).

matchmaker-config.json

Exemple de configuration du matchmaker, profil tanks-webgl.

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.

Top-down view of a tank with its health bar on rocky ground, in Mirror's Tanks sample running in a browser.

L'exemple Tanks de Mirror dans le navigateur, avec son serveur dédié sur Edgegap.

Guide étape par étape

Exécuter l'exemple

1. Avant de commencer

  • Un compte Edgegap gratuit. Aucune carte de crédit n'est requise pour tester.

  • Unity 6.3 LTS (l'exemple utilise 6000.3.11f1), avec Linux Build Support (Mono), Linux Build Support (IL2CPP), Linux Dedicated Server Build Support et Web Build Support ajoutés dans Unity Hub.

  • Docker Desktop, en cours d'exécution pendant que vous compilez le serveur.

  • Clonez l'exemple et ouvrez-le dans Unity. Le plugin Edgegap s'installe avec le projet.

Git : Unity a besoin d'un client Git (2.14.0 ou plus récent) sur votre PATH pour installer des paquets depuis une URL Git, tel que le plugin Edgegap. macOS en possède généralement déjà un (Outils en ligne de commande Xcode) ; sur Windows, installez Git.

2. Activez le matchmaking

Le Matchmaking est désactivé par défaut, afin que l'exemple s'ouvre et se compile sans le SDK Edgegap. Pour l'activer :

Tout d'abord, dans Window → Package Manager, sélectionnez +, puis Add package from git URL, et collez :

https://github.com/edgegap/edgegap-unity-sdk.git#3.5.5

Ouvrez ensuite la scène MirrorTanks, sélectionnez l'objet EdgegapMatchmaking et cochez la case à côté de son nom.

Faites cela avant de compiler le serveur, afin que le serveur inclue TanksMatchmakingServer et s'arrête de lui-même lorsque la partie est terminée.

3. Mettez le serveur de jeu sur Edgegap

Ouvrez Tools → Edgegap Server Hosting, connectez votre compte Edgegap, puis sélectionnez Build Server, Containerize with Docker et Upload Image and Create App Version.

Dans le navigateur, définissez le port de la version de l'application :

  • Port 7778, protocole WS, nom gameport.

  • Verifications activé et TLS Upgrade activé. TLS Upgrade attribue au serveur une adresse WebSocket sécurisée, afin que les navigateurs sur les pages https:// puissent y accéder. Vous n'avez pas besoin de votre propre certificat.

L'étape 4 du guide Unity WebGL présente en détail les écrans du plugin, ainsi que l'option d'agent.

4. Créez le système de matchmaking et jouez

Modifiez matchmaker-config.json à la racine du dépôt :

  • application.name et application.version : votre application et votre version de l'étape 3.

  • allowed_cors_origins : chaque adresse qui dessert votre build WebGL. L'exemple liste déjà http://localhost:8080. Le navigateur appelle directement le matchmaker, les autres origines sont donc bloquées.

Dans le tableau de bord, ouvrez Matchmaker, sélectionnez Create Matchmaker, téléversez le fichier et sélectionnez Create and Start. Lorsqu'il est ONLINE, copiez l'API URL et l'Auth Token dans Base URL et Auth Token sur TanksMatchmakingClient (sur l'objet EdgegapMatchmaking).

Générez la build pour le Web dans File → Build Profiles, puis diffusez le dossier de build à partir d'une origine autorisée :

python -m http.server 8080 --bind 127.0.0.1

Ouvrez http://localhost:8080 dans deux fenêtres de navigateur et cliquez sur Find Match dans chacune d'elles. Mettez chaque fenêtre au premier plan avant de cliquer : les onglets en arrière-plan ralentissent Unity WebGL. Les deux fenêtres rejoignent le même serveur Edgegap. Un joueur seul obtient un serveur au bout de 30 secondes, ce qui est utile pour les tests.

5. Ajoutez-le à votre propre jeu Mirror WebGL

L'exemple constitue une référence fonctionnelle : votre agent de codage peut copier ses fichiers testés au lieu de les écrire de zéro. Ces modifications permettent à un jeu WebGL Mirror de fonctionner avec le matchmaker d'Edgegap :

  1. WebSockets sur un port fixe. SimpleWebTransport sur le port 7778, SSL désactivé sur le serveur, wss sur le client. Mode Headless Start configuré sur Auto Start Server, et la scène de jeu activée dans les Build Settings (la scène MirrorTanks de l'exemple).

  2. Un client de matchmaking. Crée un ticket, attend son serveur, puis se connecte à wss://{host name}:{external port} avec des tentatives de reconnexion (Assets/EdgegapMatchmaking/TanksMatchmakingClient.cs). Les balises de latence restent désactivées dans le navigateur.

  3. Un serveur qui s'arrête automatiquement. Arrête le déploiement lorsque personne ne rejoint ou que tout le monde est parti, afin d'interrompre la facturation (Assets/EdgegapMatchmaking/TanksMatchmakingServer.cs).

  4. SDK et stripping. SDK Unity Edgegap 3.5.5 ou plus récent (les versions antérieures font échouer la compilation WebGL), et link.xml pour IL2CPP.

  5. Une configuration de matchmaker sans règle de latence et avec vos origines dans allowed_cors_origins (matchmaker-config.json).

Téléversez ensuite le serveur avec un port WS et TLS Upgrade, comme à l'étape 3.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-unity. En utilisant github.com/edgegap/netcode-game-sample-webgl-mirror-tanks comme référence, transforme mon jeu Mirror en un jeu WebGL sur serveur dédié avec SimpleWebTransport sur le port 7778, ajoute le client de matchmaking et l'arrêt automatique du serveur depuis son dossier Assets/EdgegapMatchmaking, et génère une configuration de matchmaker sans règle de latence et avec mes origines web dans allowed_cors_origins. »

Pour le détail de chaque étape manuelle, consultez le guide d'intégration Mirror Networking, ainsi que le guide Unity WebGL pour les spécificités liées au navigateur.

6. Comment le système de matchmaking place les joueurs et arrête les serveurs

Le profil tanks-webgl de l'échantillon est conçu pour le navigateur :

  • Taille du match : une équipe de 2 à 4 joueurs. Après 30 secondes dans la file d'attente, le minimum passe à 1, ce qui vous permet de tester seul. Supprimez cet élargissement pour une vraie partie.

  • Aucune règle de latence. Les navigateurs ne peuvent pas envoyer les pings que les jeux de bureau utilisent pour mesurer la latence. Le matchmaker localise le serveur à partir des adresses IP publiques des joueurs à la place.

  • Origines autorisées. allowed_cors_origins répertorie les pages autorisées à appeler le matchmaker. Ajoutez votre véritable hôte, par exemple votre page itch.io, avant de publier.

  • Tickets abandonnés. Les navigateurs peuvent fermer un onglet sans en avertir le jeu, ainsi un ticket non apparié expire de lui-même après 5 minutes.

Le jeton d'authentification (Auth Token) est inclus dans le build client, comme pour tout jeu utilisant le matchmaker. Il ne donne aucun accès à votre compte Edgegap.

Le serveur arrête son propre déploiement, ce qui met fin à la facturation :

  • 30 secondes après le départ du dernier joueur ;

  • lorsque personne ne rejoint dans les 2 minutes.

Lorsque vous téléversez une nouvelle version du serveur, mettez à jour application.version dans le matchmaker (Arrêter, Modifier, Démarrer), sinon les matchs continueront de déployer l'ancienne version. L'étape 6 du guide Unity WebGL aborde le matchmaker en détail.

Limites connues

  • Le Matchmaking est désactivé par défaut. Par défaut, l'échantillon ne comporte aucun SDK et l'objet EdgegapMatchmaking est inactif. Suivez l'étape 2 pour l'activer.

  • Le match ne se termine jamais de lui-même. Tanks n'a pas de manches ni de vainqueur, le serveur ne s'arrête donc que lorsqu'il est vide. Pour votre propre jeu, arrêtez le déploiement lorsque le match est terminé.

  • Aucun placement basé sur la latence dans le navigateur. Les serveurs sont placés à partir des adresses IP des joueurs. Le script client peut mesurer la latence dans les versions pour ordinateur de bureau avec une règle latencies dans un profil distinct : écrit mais non testé.

  • L'extension solo est destinée aux tests. Avec l'exemple de profil, un joueur qui attend 30 secondes joue seul.

Ce qui a été testé

Testé de bout en bout sur Edgegap, deux fois, avant le 15 octobre 2026 (la pull request n° 1 de l'échantillon, fusionnée ce jour-là), sur Unity 6000.3.11f1 :

  • Boucle complète : deux clients WebGL servis depuis http://localhost:8080, un matchmaker actif et une version de l'application avec mise à niveau WS et TLS sur le port 7778. Les deux clients ont été appariés, se sont connectés via wss:// au port externe du déploiement dès la première tentative, et le serveur s'est arrêté de lui-même après leur départ.

  • Matchmaking désactivé (par défaut) : la scène se charge sans aucun script manquant, et les builds de serveur WebGL et Linux réussissent.

  • Matchmaking activé (SDK 3.5.5) : les builds de serveur WebGL et Linux réussissent. Exécuté en dehors d'Edgegap, le serveur consigne « Not running on Edgegap, self-stop disabled » et continue de fonctionner.

Non testé : clients de bureau avec balises de latence, et hébergement du build WebGL sur itch.io avec cet échantillon.

Questions Fréquemment Posées

Questions sur l'exécution de l'exemple Tanks de Mirror dans le navigateur avec Edgegap.

Un jeu Mirror WebGL peut-il utiliser le matchmaking ?

Oui. Le matchmaker d'Edgegap fonctionne depuis le navigateur : le client envoie un ticket, le matchmaker démarre un serveur dédié à proximité des joueurs, et chaque client se connecte via wss://. Listez les pages qui hébergent votre jeu dans allowed_cors_origins et ignorez la règle de latence.

Quel transport Mirror fonctionne dans le navigateur ?

SimpleWebTransport. L'échantillon Tanks l'exécute sur le port 7778, avec SSL désactivé sur le serveur et wss sur le client. Sur Edgegap, configurez ce port sur WS avec TLS Upgrade activé, et Edgegap gère le certificat.

Pourquoi le matchmaking est-il désactivé dans l'échantillon Tanks ?

Ainsi, l'échantillon s'ouvre et se compile sans packages supplémentaires. Installez le SDK Unity Edgegap (3.5.5 ou plus récent), puis activez l'objet EdgegapMatchmaking dans la scène MirrorTanks. Désactivez-le pour désactiver à nouveau le matchmaking.

Les serveurs de Tanks continuent-ils de fonctionner après une partie ?

Non. Le serveur de l'échantillon arrête son propre déploiement 30 secondes après le départ du dernier joueur, ou après 2 minutes si personne ne le rejoint, afin que les serveurs vides ne vous soient pas facturés.

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.