Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Godot Engine

Arena Shooter

Déployer sur Edgegap

Publié

Publié

Publié

Arena Shooter : Exécutez le jeu de tir Godot 4 de Dumpster Fire Labs sur les serveurs dédiés Edgegap, avec Matchmaking

Arena Shooter : Exécutez le jeu de tir Godot 4 de Dumpster Fire Labs sur les serveurs dédiés Edgegap, avec Matchmaking

Arena Shooter est le fork par Edgegap de Super Star Fighter, le jeu de tir en arène multijoueur en vue du dessus de Dumpster Fire Labs, conçu avec Godot 4.7.2. Les pilotes choisissent une nouvelle carte d'amélioration à chaque manche, et les cartes s'accumulent jusqu'à ce qu'un petit vaisseau de départ devienne un véritable chaos remplissant tout l'écran.

Le netcode du jeu ne change pas. Son serveur dédié exécute déjà l'ensemble de la simulation, de sorte que chaque joueur voit le même combat. Le fork ajoute un onglet FIND MATCH et un court script de cycle de vie du serveur, dans leurs propres dossiers.

Les joueurs appuient sur FIND MATCH, le matchmaker d'Edgegap les regroupe et démarre un serveur de jeu dédié pour la partie. Les clients s'y connectent via un WebSocket sécurisé (wss://), des bots occupent les places vides, et le serveur s'arrête de lui-même lorsque la partie est terminée.

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

Plateformes : clients de bureau Windows, macOS et Linux (x64 et ARM64) ; serveur dédié Linux x86_64 sur Edgegap. Le Matchmaking a été testé avec des clients Windows. Jeu original, Super Star Fighter, par Dumpster Fire Labs ; code sous licence MIT. Sa musique et son logo sont réservés, le fork les exclut donc (licence des ressources).

Comment ça fonctionne

  1. Un joueur appuie sur FIND MATCH. Le client envoie un ticket au matchmaker Edgegap et le vérifie toutes les 2 secondes.

  2. Le matchmaker regroupe de 2 à 4 joueurs (un joueur seul après 30 secondes) et démarre un serveur dédié à proximité d'eux. Le serveur lit le nombre de joueurs associés.

  3. Chaque client associé reçoit l'adresse du serveur et le rejoint sur wss://<host>:<port> via l'écran de connexion directe (Direct Connect) du jeu. Le mot de passe du lobby est l'identifiant du déploiement, qui n'est transmis qu'aux joueurs associés.

  4. La partie commence lorsque tous les joueurs associés sont présents, ou 30 secondes après l'arrivée du premier. Des pilotes PNJ occupent les places vides jusqu'à atteindre 4 vaisseaux, afin qu'un joueur solo puisse quand même disputer une partie.

  5. 20 secondes après les résultats finaux, le serveur met fin à son propre déploiement. Les joueurs se remettent en file d'attente pour la partie suivante.

Ce que le fork a modifié :

Chemin

Ce que ça fait

src/shared/edgegap/edgegap_server.gd

Cycle de vie du serveur sur Edgegap : mot de passe du lobby, démarrage automatique, remplissage par PNJ, arrêt autonome. N'a aucun effet en dehors d'un déploiement Edgegap.

src/client/edgegap/edgegap_find_match.gd

L'onglet FIND MATCH : tickets de matchmaker, puis connexion via Direct Connect.

src/client/edgegap/edgegap_settings.gd

URL du matchmaker, jeton d'authentification (Auth Token), profil et nom du port.

edgegap/Dockerfile

Image serveur à partir du package serveur dédié Linux x86_64.

edgegap/matchmaker-config.json

Configuration du matchmaker : un profil casual, de 2 à 4 joueurs.

src/bootstrap.gd, src/server/server_main.gd, src/client/ui/connection_controller.gd

Quelques hooks d'une ligne qui appellent les fichiers ci-dessus.

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 match in a neon Godot arena shooter: ships tagged by pilot and team, with the Godot logo.

Un jeu de tir d'arène au néon dans Godot 4, sur un serveur dédié 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.

  • Docker Desktop, en cours d'exécution, pour compiler l'image du serveur.

  • Python 3.11 ou version ultérieure. Le script de compilation du fork télécharge Godot 4.7.2 et ses modèles d'exportation dans le projet, les vérifie et n'installe rien sur l'ensemble du système. Vous n'avez pas besoin d'avoir Godot installé.

  • Clonez le fork.

Le jeu n'a jamais besoin de votre jeton d'API Edgegap. Seul le jeton d'authentification du matchmaker est intégré au client, et il ne donne aucun accès à votre compte.

2. Déployez le serveur de jeu sur Edgegap

Depuis la racine du dépôt, téléchargez la version épinglée de Godot et compilez le paquet du serveur dédié Linux :

python tools/build.py bootstrap

python tools/build.py build server-linux-x64 --skip-gate

Créez l'image à partir de ce paquet et poussez-la vers votre registre Edgegap. La page Container Registry contient votre projet, votre nom d'utilisateur et votre jeton :

docker build --platform linux/amd64 -f edgegap/Dockerfile -t registry.edgegap.com/<project>/arena-shooter:<tag> builds/beta-19/server-linux-x86_64

docker push registry.edgegap.com/<project>/arena-shooter:<tag>

Dans le tableau de bord, créez l'application godot-arena-shooter et une version (la configuration utilise v1) :

  • Votre image et votre tag, avec votre nom d'utilisateur de registre et votre jeton, afin qu'Edgegap puisse la récupérer.

  • 0,5 vCPU et 1 Go.

  • Un port : nom gameport, 7000, protocole WS, avec TLS Upgrade activé. Les clients se connectent avec wss://.

Variables d'environnement facultatives sur la version : EDGEGAP_NPC_FILL (valeur par défaut : 4, 0 désactive les PNJ), EDGEGAP_START_GRACE (30 s), EDGEGAP_JOIN_TIMEOUT (120 s) et EDGEGAP_ROUNDS_TO_WIN (3). Les lignes de journalisation du serveur commencent par EDGEGAP.

3. Créer le système de matchmaking

  1. Ouvrez edgegap/matchmaker-config.json et définissez application.name et version sur ceux de l'étape 2.

  2. Dans le tableau de bord, ouvrez Matchmaker, sélectionnez Create Matchmaker, téléversez le fichier, puis Create and Start.

  3. Lorsqu'il est en ligne, copiez son URL d'API et son Jeton d'authentification dans src/client/edgegap/edgegap_settings.gd. Ou laissez le fichier vide et définissez EDGEGAP_MATCHMAKER_URL et EDGEGAP_MATCHMAKER_TOKEN lorsque vous lancez le client.

Le jeton d'authentification est conçu pour être intégré dans les clients de jeu. Ne mettez jamais votre jeton d'API Edgegap dans le client.

4. Jouer un match

Compilez le client Windows :

python tools/build.py build windows --skip-gate

Le même script compile les clients Linux et macOS (clients compile les quatre), mais seuls les clients Windows ont été testés avec Edgegap.

Lancez deux clients et ouvrez FIND MATCH, le premier onglet de l'écran de connexion. Cliquez dessus sur les deux. Le statut passe de « Searching for players… » à « Match found. Starting a server near you… », puis les deux clients rejoignent le même serveur Edgegap et arrivent dans son salon.

La partie commence lorsque les deux sont connectés, avec 2 pilotes PNJ pour atteindre 4 vaisseaux. Après les résultats finaux, le serveur attend 20 secondes puis arrête automatiquement son déploiement. Une demande de revanche y met également fin : remettez-vous en file d'attente pour la prochaine partie.

Pour un test, EDGEGAP_FIND_MATCH=1 permet à un client d'appuyer sur FIND MATCH au lancement.

5. Ajoutez-le à votre propre jeu Godot

Le fork sert de référence fonctionnelle : votre agent de codage peut copier ses fichiers testés au lieu de les réécrire à partir de zéro. La compétence edgegap-godot d'Edgegap fournit également des versions agnostiques au jeu de ces mêmes scripts. Quatre modifications suffisent pour porter un jeu Godot doté d'un serveur dédié sur Edgegap avec matchmaking :

  1. Le serveur gère la partie de manière autonome. Sur un déploiement Edgegap, il lit le nombre de joueurs trouvés, démarre la partie dès qu'ils sont connectés (ou après un délai de grâce), et comble les places vides avec des bots si votre jeu en dispose (src/shared/edgegap/edgegap_server.gd).

  2. Le serveur s'arrête de lui-même. Lorsque la partie se termine, ou si personne ne la rejoint, il envoie une requête DELETE à l'adresse ARBITRIUM_DELETE_URL injectée par Edgegap, arrêtant ainsi la facturation.

  3. Le client dispose d'un bouton « Trouver une partie ». Il soumet un ticket de matchmaking, interroge son statut jusqu'à ce qu'un serveur soit assigné, puis renseigne et lance l'écran de connexion existant du jeu avec l'adresse obtenue (src/client/edgegap/edgegap_find_match.gd, edgegap_settings.gd).

  4. Les nouveaux scripts sont exportés. Les préréglages d'exportation du jeu utilisent une liste d'autorisation ; le fork liste donc les trois scripts Edgegap dans export_presets.cfg. Sans cela, le build exporté les ignore silencieusement.

Ensuite, conteneurisez le serveur en prenant pour modèle le edgegap/Dockerfile du fork, puis créez la version de l'application et le matchmaker comme décrit aux étapes 2 et 3.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-godot. En utilisant github.com/edgegap/game-sample-godot-arena-shooter comme référence, ajoute un cycle de vie de serveur qui attend les joueurs associés et arrête son propre déploiement Edgegap, ainsi qu'un bouton Trouver une partie qui s'enregistre dans la file d'attente du matchmaker Edgegap et rejoint le serveur assigné via le code de connexion existant de mon jeu. »

Pour découvrir chaque étape détaillée, pas à pas, consultez le guide d'intégration de Godot Engine.

6. Fonctionnement du matchmaking et de l'arrêt automatique

La configuration du système de matchmaking de l'exemple comprend un profil, casual : une équipe de 2 à 4 joueurs. Après 30 secondes, le minimum passe à 1, de sorte qu'un joueur seul obtient également un serveur. Il n'y a pas de règle de latence.

Le client communique avec le matchmaker à l'aide de quelques appels HTTP, en utilisant le jeton d'authentification (Auth Token) :

  • POST {API URL}/tickets avec {"profile": "casual", "attributes": {}}

  • GET {API URL}/tickets/{id} toutes les 2 secondes, jusqu'à ce que le statut soit HOST_ASSIGNED, avec le nom d'hôte du serveur et le port externe de gameport

  • DELETE {API URL}/tickets/{id} si le joueur annule

Le serveur demande à Edgegap d'arrêter son déploiement, ce qui met fin à la facturation :

  • 20 secondes après les résultats finaux (un match par déploiement) ;

  • lorsque personne ne rejoint dans les 120 secondes ;

  • lorsque tout le monde est parti depuis 30 secondes.

Pour dimensionner vos propres matchs, définissez min_team_size et max_team_size dans la configuration, et EDGEGAP_NPC_FILL sur la version de l'application. Lorsque vous publiez une nouvelle version du serveur, créez une nouvelle version d'application et mettez à jour application.version dans le matchmaker (Arrêter, Modifier, Démarrer). Le guide d'intégration de Godot Engine couvre le matchmaking pour votre propre jeu.

Limites connues

  • 4 vaisseaux par match Edgegap par défaut. Le jeu prend en charge jusqu'à 32 pilotes, mais le système de matchmaking de l'exemple associe 2 à 4 joueurs et complète jusqu'à 4 vaisseaux avec des PNJ. Les matchs Edgegap plus grands nécessitent une valeur plus élevée pour max_team_size et EDGEGAP_NPC_FILL ; ils devraient fonctionner mais n'ont pas été testés sur Edgegap.

  • Un match par déploiement. Une revanche met fin au déploiement, et les joueurs se remettent en file d'attente.

  • L'accès est protégé par l'adresse, pas par des tickets. Seuls les joueurs appariés reçoivent le nom d'hôte du serveur, qui contient également le mot de passe du salon. Le serveur ne vérifie pas l'ID de ticket de chaque joueur.

  • Sur ordinateur de bureau uniquement. Le fork ne possède pas d'exportation web. Le jeu utilise déjà WebSocket, donc une version web devrait être possible, mais elle a été écrite sans être testée. Elle nécessiterait également allowed_cors_origins dans la configuration du système de matchmaking.

  • Pas de musique ni de logo de studio. La licence des ressources en amont les réserve. Les effets sonores sont générés dans le code et continuent d'être joués.

Ce qui a été testé

Testé le 20 octobre 2026, avec Godot 4.7.2 et le matchmaker Edgegap 3.3.2 :

  • Image Docker locale avec des variables Edgegap simulées et deux clients bots : le match a démarré automatiquement avec 2 PNJ, et le serveur s'est arrêté après les résultats finaux.

  • Déploiement direct (Newark) : deux clients bots via wss:// ont joué un match de 3 manches, et le déploiement s'est arrêté de lui-même après 5,4 minutes.

  • Matchmaker : deux clients Windows ont appuyé sur FIND MATCH, se sont vu attribuer le même serveur, l'ont rejoint, et le match a démarré avec 2 PNJ.

  • Délai d'attente de connexion : les déploiements que personne n'a rejoints se sont arrêtés d'eux-mêmes après 120 secondes.

En dehors d'un déploiement Edgegap, le serveur se comporte exactement comme l'original, le jeu en réseau local (LAN) et la connexion directe fonctionnent donc toujours.

Questions Fréquemment Posées

Questions concernant l'exécution de l'exemple Godot Arena Shooter avec le matchmaking et les serveurs dédiés d'Edgegap.

Comment ajouter le matchmaking à un jeu Godot ?

Créez un entremetteur (matchmaker) Edgegap à partir d'une configuration JSON, puis ajoutez un bouton Trouver une partie qui envoie un ticket avec HTTPRequest, le vérifie jusqu'à ce qu'un serveur soit assigné et rejoint cette adresse. L'exemple Arena Shooter réalise cela dans un seul fichier GDScript, en réutilisant l'écran de connexion propre au jeu.

Un jeu Godot peut-il utiliser WebSocket sur des serveurs dédiés Edgegap ?

Oui. Le serveur de l'échantillon écoute les connexions WebSocket sur le port 7000. Sur la version de l'application, configurez le port sur WS avec la mise à niveau TLS activée, et les clients se connectent avec wss:// au nom d'hôte du serveur.

Que se passe-t-il si un seul joueur appuie sur « Trouver une partie » ?

Après 30 secondes, le système de matchmaking les associe seuls, et des pilotes PNJ occupent les autres places jusqu'à concurrence de 4 vaisseaux. Définissez EDGEGAP_NPC_FILL sur 0 dans la version de l'application pour désactiver les bots.

Les serveurs Edgegap continuent-ils de fonctionner après le match ?

Pas dans cet exemple. Le serveur arrête son propre déploiement 20 secondes après les résultats finaux, ou si personne ne le rejoint dans les 120 secondes, vous n'êtes donc facturé que pendant le déroulement d'une partie.

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.