Fish Game est le jeu de combat en ligne de 2 à 4 joueurs de Heroic Labs, conçu pour mettre en valeur Nakama. Le fork d'Edgegap le porte sur Godot 4 et exécute chaque match en ligne sur son propre serveur de jeu dédié.
Nakama continue de faire ce qu'il fait de mieux : les comptes, le matchmaking et le classement. Lorsqu'il trouve un match, il lance un serveur Edgegap à proximité des joueurs appariés grâce au Edgegap Fleet Manager pour Nakama.
Aucun joueur n'héberge la partie : un serveur Godot headless gère les touches, les éliminations, les manches et le vainqueur, puis enregistre la victoire dans Nakama et s'arrête de lui-même.
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 du match.
Cloner l'exemple : Fork de Fish Game sur GitHub
Guide complet : intégrez Edgegap à votre propre jeu Nakama avec le guide d'intégration de Nakama
Plateformes : versions pour ordinateur Windows, macOS et Linux. Jeu original par Heroic Labs ; code sous licence Apache 2.0, la plupart des éléments graphiques, de la musique et des sons sous CC BY-NC.
Comment ça marche
Les joueurs se connectent à Nakama avec leur adresse e-mail et appuient sur Match. Le système de matchmaking de Nakama les regroupe.
Le Fleet Manager de Nakama lance un déploiement Edgegap à proximité des joueurs appariés, en utilisant l'adresse IP depuis laquelle chaque joueur s'est connecté.
Le serveur de jeu démarre, écoute sur le port UDP 7777 et indique à Nakama qu'il est READY (prêt), avec son adresse IP et son port.
Nakama envoie l'adresse du serveur à chaque joueur. Les joueurs se connectent via ENet ; le serveur vérifie la session Nakama de chacun et n'autorise que les joueurs appariés.
Le premier poisson à remporter 5 manches gagne. Le serveur enregistre la victoire dans le classement
fish_game_wins, puis demande à Nakama d'effectuer l'action STOP pour arrêter le déploiement.
Ce que le fork a changé :
Chemin | Description |
|---|---|
| Client : ticket de matchmaking, notification de l'adresse du serveur, connexion ENet. Serveur : autorise l'accès aux joueurs appariés. |
| Mode serveur dédié : écoute, signale READY, les connexions et STOP à Nakama, s'arrête de lui-même. |
| En ligne, le serveur contrôle les manches, les objets à ramasser, les touches et les éliminations. |
| Nakama 3.39 avec un module Go : Fleet Manager, hook de matchmaking, classement faisant autorité. |
| Exporte le préréglage « Linux Server » et l'exécute avec Godot en mode headless. |

Fish Game de Nakama de Heroic Labs, fonctionnant sur Edgegap
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 à l'ensemble de l'organisation, il ne va donc que dans le fichier de paramètres de Nakama, jamais dans le jeu.
Godot 4.7 (la version 4.3 ou ultérieure devrait fonctionner).
Docker Desktop, pour Nakama et l'image du serveur de jeu.
Une adresse HTTPS publique pour Nakama. Les serveurs Edgegap rappellent Nakama, donc
localhostne fonctionnera pas. Pour un test, un tunnel suffit (étape 3).Clonez le fork.
2. Déployez le serveur de jeu sur Edgegap
Créez l'image à partir de la racine du dépôt 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 server/Dockerfile -t registry.edgegap.com/<project>/fishgame-godot:1.0.0 .
docker push registry.edgegap.com/<project>/fishgame-godot:1.0.0
Dans le tableau de bord, créez l'application fishgame-godot et une version 1.0.0 :
Image
<project>/fishgame-godot, tag1.0.0, avec votre nom d'utilisateur et votre jeton de registre.0,5 vCPU et 512 Mo.
Un port : nom
gameport, 7777, UDP.Une durée maximale de 30 minutes. Le serveur s'arrête également de lui-même.
Le serveur n'a besoin d'aucune variable d'environnement qui lui soit propre : le Fleet Manager lui transmet les adresses de rappel (callback) de Nakama à chaque déploiement.
3. Lancez Nakama
Copiez nakama/.env.example vers nakama/.env et renseignez-le :
EDGEGAP_API_TOKEN: votre jeton d'API Edgegap, avec son préfixetoken.EDGEGAP_APPLICATION,INITIAL_EDGEGAP_VERSION,EDGEGAP_PORT_NAME: l'application, la version et le nom du port de l'étape 2.NAKAMA_ACCESS_URL: l'adresse HTTPS publique de Nakama.NAKAMA_HTTP_KEY: une longue chaîne aléatoire.
Pour tester sur votre propre machine, un tunnel rapide Cloudflare attribue à Nakama une adresse publique. Mettez l'adresse https://….trycloudflare.com qu'il affiche dans NAKAMA_ACCESS_URL :
docker run -d --name fishgame-tunnel cloudflare/cloudflared:latest tunnel --no-autoupdate --url http://host.docker.internal:7350
Démarrez ensuite Nakama et Postgres :
docker compose -p fishgame -f nakama/docker-compose.yml up -d --build
4. Jouer un match
Pointez le jeu vers Nakama, soit dans les valeurs par défaut en haut de autoload/Online.gd, soit sur la ligne de commande :
godot --path . -- --nakama-host=your-tunnel.trycloudflare.com --nakama-port=443 --nakama-scheme=https
Les joueurs doivent également accéder à Nakama via son adresse publique : Edgegap utilise l'adresse IP à partir de laquelle chaque joueur se connecte pour placer le serveur près d'eux.
Lancez deux copies du jeu, choisissez En ligne, créez un compte dans chacune, et appuyez sur Match dans les deux. Après « Match found! Starting a game server... », les deux arrivent sur l'écran d'attente du même serveur Edgegap. Le premier poisson à remporter 5 manches gagne et obtient +1 au classement. Ensuite, le déploiement s'arrête de lui-même.
5. Ajoutez-le à votre propre jeu Godot et Nakama
Le fork est une référence fonctionnelle : votre agent de codage peut copier ses fichiers testés au lieu de les écrire à partir de zéro. Quatre modifications permettent à un jeu Godot de s'exécuter sur Edgegap avec Nakama :
Nakama démarre les serveurs. Ajoutez l'Edgegap Fleet Manager pour Nakama à votre module Go Nakama, ainsi qu'un hook de matchmaker qui crée un déploiement Edgegap pour chaque match (le dossier
nakama/du fork).Le jeu s'exécute en mode headless en tant que serveur. Lorsque Godot s'exécute en mode headless, le jeu démarre en mode serveur, écoute sur un port UDP fixe et gère les règles du jeu : touches, morts, manches, résultats (
autoload/EdgegapServer.gd,Game.gd).Le serveur communique avec Nakama. Il envoie READY avec son IP et son port, les joueurs connectés toutes les 5 secondes, et STOP lorsque le match se termine, afin que Nakama mette fin au déploiement et que la facturation s'arrête.
Le client attend son serveur. Après le matchmaking, le client reçoit l'adresse du serveur dans une notification Nakama, se connecte via ENet, et le serveur vérifie sa session Nakama avant de le laisser entrer (
autoload/OnlineMatch.gd).
Ensuite, conteneurisez le serveur avec le server/Dockerfile du fork comme modèle, puis créez la version de l'application comme à l'étape 2.
Avec votre agent :
« Chargez la compétence edgegap, puis edgegap-nakama et edgegap-godot. En utilisant github.com/edgegap/backend-game-sample-godot-nakama-fishgame comme référence, ajoutez l'Edgegap Fleet Manager à mon module Nakama, un mode serveur headless à mon jeu Godot qui signale READY, les connexions et STOP à Nakama, ainsi qu'un client qui se connecte à l'adresse envoyée par Nakama après le matchmaking. »
Pour le détail de chaque étape, manuellement, consultez le guide d'intégration de Nakama.
6. Comment Nakama associe les joueurs et arrête les serveurs
Le système de matchmaking de Nakama regroupe les joueurs, et son plugin Fleet Manager démarre le serveur Edgegap et indique à chaque joueur où se connecter. Vous n'avez pas besoin du système de matchmaking d'Edgegap pour cet exemple.
Le serveur demande à Nakama d'arrêter son déploiement, ce qui met fin à la facturation :
lorsque la partie est gagnée, après avoir enregistré la victoire ;
lorsqu'il reste moins de 2 joueurs en cours de partie ;
lorsque tout le monde quitte ;
lorsque personne ne rejoint dans les 60 secondes ;
après 20 minutes.
Pour ajouter la même configuration à votre propre jeu Nakama, suivez le guide d'intégration de Nakama.
Limites connues
Pas de jeu en ligne dans le navigateur. ENet utilise UDP, que les navigateurs ne peuvent pas ouvrir. Une version web nécessiterait le pair WebSocket de Godot et un port WS avec mise à niveau TLS.
Le déplacement est toujours géré par le client. Le serveur décide des coups, des morts, des objets ramassés, des manches et des victoires, mais chaque joueur envoie la position de son propre poisson, comme dans l'original. Pour un jeu compétitif, déplacez la gestion des mouvements vers le serveur avec prédiction côté client.
Pas de parties privées par identifiant. Chaque match provient du système de matchmaking. Les appels
instance_createetinstance_joindu Fleet Manager pourraient permettre de les réintégrer.
Ce qui a été testé
Testé de bout en bout sur Edgegap le 20 octobre 2026. Le fork inclut 3 tests dans tests/ :
Jeu local :
godot --path . --script res://tests/smoke_test.gdcharge la carte ; les poissons atterrissent, sont ramassés, balancés et lancés sans erreur.Réseau, serveur local :
godot --headless --path . -- --test-auto-hit, puis lancez deux fois le client de test réseau (commande dansEDGEGAP.md).De bout en bout sur Edgegap : définissez
FISHGAME_TEST_AUTO_HIT=truedansnakama/.env, puis lancez deux fois le client de test réseau vers votre Nakama. Le serveur frappe un poisson par manche, de sorte que les parties se terminent d'elles-mêmes. Laissez cette option désactivée pour les vraies parties.
Pour travailler sur le netcode sans Nakama ni Edgegap : godot --headless --path . démarre un serveur, et godot --path . -- --connect=127.0.0.1:7777 y connecte un client.
Questions Fréquemment Posées
Questions concernant l'exécution de Fish Game avec Nakama et Edgegap.
Nakama peut-il démarrer des serveurs de jeu dédiés ?
Oui. Avec Edgegap Fleet Manager pour Nakama, le système de matchmaking de Nakama démarre un serveur Edgegap à proximité des joueurs associés et leur envoie son adresse. Le serveur fait un rapport à Nakama et s'arrête lorsque le match se termine.
Comment créer un jeu Godot avec une architecture faisant autorité côté serveur à l'aide de Nakama ?
Exécutez un serveur Godot sans tête (headless) par match qui gère les touches, les morts, les manches et les résultats, et laissez Nakama gérer les comptes, le matchmaking et les classements. Fish Game fonctionne ainsi : les joueurs ne peuvent pas publier eux-mêmes leurs victoires.
Fish Game fonctionne-t-il sous Godot 4 ?
Oui. Le fork d'Edgegap porte le jeu original Godot 3 d'Heroic Labs sur Godot 4.7, et la version 4.3 ou ultérieure devrait fonctionner. La version originale hébergée en peer-to-peer reste sur le GitHub d'Heroic Labs.
L'export web du jeu Fish Game permet-il de jouer en ligne ?
Pas encore. Le jeu utilise ENet sur UDP, ce que les navigateurs ne peuvent pas ouvrir. Une version web nécessiterait le peer WebSocket de Godot et un port WebSocket avec mise à niveau TLS sur 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.

Un lancement mondial impeccable pour Rivals of Aether 2
Aether Studios
Découvrez comment Aether Studios a rapidement ajouté Edgegap et a offert un lancement et un post-lancement sans faille à sa communauté.
Case Study

Surmontez la latence introduite par l'utilisation de WiFi par la réalité virtuelle dans les jeux multijoueurs compétitifs.
Halfbrick Studios
Découvrez comment Halfbrick a réussi à lancer et à maintenir un accès anticipé axé sur le multijoueur sur la plateforme VR META Quest.
Case Study

L'application sociale de MENA ajoute des jeux en ligne
WOLF
Découvrez comment l'application sociale très populaire de la région MENA a facilement ajouté des jeux de matchmaking et d'orchestration multijoueur à WOLF Qanawat.
Case Study

L'orchestration hybride maintient Kickoff Tactics prêt pour tout type de trafic
Birch Games
Comment l'orchestration hybride d'Edgegap pour gérer tant le le trafic prévisible et imprévisible, grâce aux flottes "egress-free" et le cloud.
Case Study

Lunes de sang de 7 jours
The Fun Pimps & iLLOGIKA
Découvrez comment Illogika a considérablement réduit ses coûts de serveur et garanti l'expérience en ligne attendue par la franchise 7 Days to Die.
Case Study

La guerre en ligne authentique nécessite l'orchestration ultime
Highwire Games
Découvrez comment le besoin de performance de Highwire nécessite une orchestration que seul Edgegap peut fournir.
Case Study

22 000 avis, 4,8 étoiles et une infrastructure qui s'est adaptée automatiquement
Sinn Studios
Comment une intégration simple, prise en charge par Slack, a permis au titre VR à succès de Sinn Studio d'être mis en ligne rapidement et de s'y maintenir.
Case Study

Orchestration de Serveurs Dynamiques
Under NDA - AAA Studio
Découvrez comment l'un des plus grands studios AAA du monde a amélioré son expérience multijoueur pair à pair grâce à l'informatique en périphérie.
Case Study

Latence presque nulle pour un jeu de combat AAA
AAA Studio - Under NDA
Comment un projet non annoncé a permis d'obtenir le délai d'attente le plus bas possible et d'améliorer l'équité dans son jeu 1v1.
Case Study

Jouez aux dieux avec la physique multiplayer
Squido Studio
Découvrez comment Squido utilise les serveurs de jeu optimisés par Edgegap pour offrir un gameplay VR époustouflant et chaotique.
Case Study

Des solutions entièrement gérées qui font gagner du temps à un jeu VR
Dirty Pearl Studios
Découvrez comment Dirty Pearl Studios a gagné du temps de développement grâce à l'intégration facile d'Edgegap et à l'orchestration automatisée de son intégration avec Nakama.
Case Study

Déploiement instantané de serveurs globaux pour l'éducation médicale en XR
AlensiaXR
Comment AlensiaXR utilise Edgegap pour offrir des sessions d'anatomie partagées à faible latence et toujours disponibles aux étudiants en médecine du monde entier.
Case Study

The Lightkeepers : un jeu coopératif social en VR avec des serveurs dédiés
Spectral Games
Comment Spectral Games a utilisé Edgegap Matchmaking et Server Browser pour lancer des serveurs dédiés pour son salon social VR, sans aucune expérience préalable des serveurs.
Case Study

Déploiements rapides & fiables dans le monde pour le PvPvE Gravebound
Crater Studios
Comment l'orchestration et le matchmaking d'Edgegap ont aidé Crater Studios à se concentrer sur le gameplay plutôt que sur l'infrastructure.
Case Study

Échelle rapide du métavers web
Hiber
Découvrez comment Hiber a éliminé les incertitudes de sa planification de capacité serveur avec Edgegap.
Case Study

Exigences matérielles élevées et pools de serveurs de jeux personnalisés
Alderon Games
Découvrez comment Alderon Games utilise instantanément une pool personnalisée de serveurs de jeux à travers plusieurs fournisseurs dans le monde pour son MMO populaire.
Case Study

Intégration facile pour les développeurs indépendants
WhaleFood Games
Découvrez comment WhaleFood Games a "chassé" ses problèmes de netcode avec Edgegap.
Case Study

Une technologie qui propulse le premier jeu eSports de l'Asie du Sud-Est.
Anantarupa Studios
Découvrez comment Edgegap a transformé le paysage du jeu en Asie du Sud-Est en démocratisant des infrastructures complexes avec sa solution.
Case Study

Une frappe. Portée mondiale.
Triple Hill Interactive
Comment Triple Hill Interactive tire parti de l'orchestration d'Edgegap pour offrir une faible latence et améliorer l'équité dans un genre où chaque milliseconde compte.
Case Study

Un Battle Royale en équipe au rythme effréné... avec des peluches d'animaux armées jusqu'aux dents !
SANDYFLOOR
Découvrez comment un studio indépendant basé en Corée a lancé son jeu multijoueur dans le monde entier.
Case Study

Les courses de chevaux sur mobile disponible mondialement grâce à Edgegap.
Mirai Labs
Comment Mirai Labs propulse les courses multijoueurs mondiales de Pegaxy Blaze grâce au déploiement de serveurs juste-à-temps et au vCPU fractionné pour maintenir un coût bas.
Case Study

Gestion et distribution des serveurs
Matrioshka Games
Lisez comment Matrioshka Games a réussi à expédier un Battle Royale en accès anticipé avec des ressources limitées.
Case Study

À mon signal, déchaînez l'enfer !
TyGames
Découvrez comment le studio indépendant TyGames immerge les joueurs dans un combat multijoueur de gladiateurs à la troisième personne.
Case Study

Orchestration Instantanée Mondiale
Soliton Interactive
Découvrez comment Soliton Interactive a réalisé l'impossible… Livrer son premier jeu jouable en mode multijoueur !
Case Study

Le jeu de hockey avec une physique côté serveur & une latence sous les 50ms
NS7
Découvrez pourquoi seul Edgegap pourrait permettre à un studio indépendant de réaliser sa vision d'un gameplay sportif F2P de qualité AAA grâce à la physique côté serveur et à l'autorité.
Case Study

Déploiements régionaux pour les jeux en ligne
X1 Contra 1
X1 Contra 1 propose des jeux PvP décontractés en temps réel à sa base de joueurs brésilienne grâce à un hébergement économique et à des déploiements régionaux
Case Study

Payez uniquement lorsque les joueurs jouent : une infrastructure abordable
Meltdown Interactive
Comment Edgegap a aidé le développeur indépendant Meltdown Interactive Media à résoudre la mise à l’échelle rentable et le matchmaking sans complexité
Case Study

Une plateforme Edgegap, trois profils réseau très différents
Warped Games
Comment Warped Games gère un hub social, du coopératif en temps réel et du coopératif au tour par tour, le tout sur la même API de déploiement Edgegap et le même pipeline de conteneurs.
Case Study

Pool Live Tour Max
RETA Games
Case Study

Le tireur d'extraction POP Web3 de Corée devient mondial, instantanément
NDUS Entertainment
Comment XOCIETY a facilement ajouté l'orchestration Edgegap et intégré un matchmaking personnalisé en travaillant aux côtés des Edgegap Ping Beacons pour optimiser la latence.
Case Study

Multijoueur dans chaque dimension
Arcadia.tv
Découvrez comment Arcadia.tv utilise le réseau edge d'Edgegap pour offrir un sport VR innovant basé sur l'équipe et la localisation.
Case Study

Un jeu mobile F2P réduit ses coûts d'infrastructure grâce aux serveurs JIT
Game Changers Worldwide
Comment Game Changer Worldwide a hébergé le PvP 3v3 en temps réel de Rumble Rush à l'échelle mondiale sur mobile.
Case Study
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.









