Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

/

/

Incremental Sample

PurrNet

Incremental Sample

Déployer sur Edgegap

Publié

Publié

Publié

Exemple incrémentiel : Exécutez le jeu incrémentiel de PurrNet sur les serveurs dédiés d'Edgegap, avec Matchmaking

Exemple incrémentiel : Exécutez le jeu incrémentiel de PurrNet sur les serveurs dédiés d'Edgegap, avec Matchmaking

L'exemple Incremental de PurrNet est un petit jeu multijoueur Unity : foncez à travers les arbres, aspirez le butin, ramenez-le à votre base et achetez des améliorations. Le fork d'Edgegap l'exécute sur des serveurs de jeu dédiés, donc aucun joueur n'héberge.

Le jeu lui-même ne change pas : les scènes, les prefabs et le code de gameplay restent tels que PurrNet les a écrits, à l'exception d'une ligne. Tout ce qui est spécifique à Edgegap se trouve dans son propre dossier Assets/Edgegap/ et s'ajoute au démarrage du jeu. Dans l'éditeur, le mode lecture conserve le flux habituel d'hôte et de clone ParrelSync de PurrNet.

Ce qui est nouveau dans le fork :

  • Matchmaking optionnel. Désactivé par défaut : les clients se connectent à une adresse et un port. Activez le Matchmaker Edgegap, et les joueurs cliquent sur Find Match à la place.

  • Des serveurs qui s'arrêtent lorsque les joueurs partent. Chaque serveur arrête son propre déploiement 30 secondes après le départ du dernier joueur, ou après 120 secondes si personne ne rejoint. Les serveurs inactifs ne coûtent rien.

Le réseau d'Edgegap s'étend sur plus de 615 emplacements Edge Cloud (en savoir plus). Lorsque le matchmaker est activé, chaque serveur démarre à l'emplacement disponible le plus adapté pour ses joueurs et n'est facturé que pendant qu'il fonctionne.

Plateformes : builds pour ordinateurs de bureau Windows, macOS et Linux (UDP). Jeu original par PurrNet, licence MIT ; graphismes par Kenney.nl.

Comment ça fonctionne

  1. Le serveur dédié Linux démarre le serveur de PurrNet sur le port UDP 5000 et attend les joueurs.

  2. Connexion directe (par défaut) : chaque client saisit l'hôte et le port du serveur, puis clique sur Connect.

  3. Matchmaker (optionnel) : chaque client clique sur Find Match et envoie un ticket. Le Matchmaker Edgegap regroupe 2 à 4 joueurs, démarre un serveur près d'eux et envoie son adresse à chaque client.

  4. Les joueurs coupent des arbres, ramassent du bois et achètent des améliorations sur le même serveur.

  5. Lorsque tout le monde est parti, le serveur attend 30 secondes, puis arrête son propre déploiement.

Ce que le fork a modifié :

Chemin

Ce que cela fait

Assets/Edgegap/EdgegapBootstrap.cs

S'exécute avant le chargement de la scène. Dans les builds, désactive le démarrage automatique de PurrNet et ajoute les composants ci-dessous.

Assets/Edgegap/EdgegapServerLifecycle.cs

Builds serveur : démarre le serveur sur 0.0.0.0:5000, consigne le nombre de joueurs, arrête le déploiement lorsque le serveur est vide.

Assets/Edgegap/EdgegapConnectPanel.cs

Builds client : adresse et port, ou Find Match. Recharge la scène en cas de déconnexion.

Assets/Edgegap/EdgegapMatchmakingClient.cs, EdgegapMatchmakingDTOs.cs

Mode matchmaker : crée un ticket, attend son serveur, se connecte.

Assets/Edgegap/Resources/EdgegapSettings.asset

Tous les paramètres : mode, ports, URL du matchmaker et jeton d'authentification.

Assets/Edgegap/Editor/EdgegapServerBuild.cs

Tools → Edgegap → Build Linux Dedicated Server, ainsi que les builds en ligne de commande.

Dockerfile, matchmaker-config.json

Image du serveur et configuration du matchmaker.

ResourceSpawner.InitSeed

Le seul changement en amont : runLocally: true, pour que le serveur dédié génère les arbres.

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.

PurrNet's Incremental sample from above: a player among low-poly trees and loot, next to the PurrNet cat logo.

Échantillon incrémental de Purrnet, où le joueur coupe des arbres et rapporte le butin à sa base, en utilisant l'hébergement et l'orchestration de serveurs dédiés d'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 (6000.3.x) avec Linux Build Support (Mono) et Linux Dedicated Server Build Support, ainsi que le module pour la plateforme de votre client.

  • Docker Desktop, en cours d'exécution.

  • Clonez le fork et ouvrez-le dans Unity.

Git : Unity a besoin d'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. Jouer d'abord en local

Compilez le serveur avec Tools → Edgegap → Build Linux Dedicated Server. Il est généré dans Builds/EdgegapServer/. Exécutez-le ensuite dans Docker :

docker build --platform linux/amd64 -t purrnet-incremental:local .

docker run --rm -p 5000:5000/udp purrnet-incremental:local

Le journal affiche Edgegap Server | Starting server on 0.0.0.0:5000.

Compilez le client (File → Build Profiles, n'importe quelle plateforme de bureau) et lancez-le deux fois. Chaque fenêtre affiche le panneau de connexion avec 127.0.0.1 et 5000. Cliquez sur Connect dans les deux fenêtres. Le serveur consigne Edgegap Server | 2 player(s) connected.

3. Mettre le serveur sur Edgegap

Poussez l'image vers votre registre Edgegap. Votre projet, nom d'utilisateur et jeton se trouvent sur la page Container Registry :

docker login registry.edgegap.com

docker build --platform linux/amd64 -t registry.edgegap.com/<project>/purrnet-incremental:v1 .

docker push registry.edgegap.com/<project>/purrnet-incremental:v1

Utilisez une nouvelle balise pour chaque build, jamais latest.

Dans le tableau de bord, créez une application, puis une version pour cette image :

  • Un port : nom gameport, 5000, UDP.

  • Votre nom d'utilisateur et votre jeton de registre, sinon les déploiements ne pourront pas récupérer l'image.

4. Jouer sur un serveur Edgegap

Sélectionnez Déployer sur la page de version. Lorsque le déploiement est prêt, notez son hôte (<id>.pr.edgegap.net) et le port externe de gameport. Il change à chaque déploiement.

Démarrez deux clients, saisissez cet hôte et ce port, puis cliquez sur Connecter. Une fois que les deux joueurs ont quitté la partie, le serveur arrête son propre déploiement après 30 secondes.

Pour les tests scriptés, les clients peuvent se connecter directement depuis la ligne de commande :

Game.exe -screen-fullscreen 0 -edgegapAddress <id>.pr.edgegap.net -edgegapPort <external port> -edgegapConnect

5. Ajoutez-le à votre propre jeu PurrNet

Le fork est une référence fonctionnelle : votre agent de codage peut copier ses fichiers testés au lieu de les écrire de zéro. Quatre modifications permettent à un jeu PurrNet de fonctionner sur Edgegap :

  1. Le SDK Unity d'Edgegap. Packages/manifest.json ajoute com.edgegap.unity-sdk depuis son dépôt Git.

  2. Un serveur qui démarre et s'arrête tout seul. Assets/Edgegap/EdgegapBootstrap.cs désactive le démarrage automatique de PurrNet dans les builds ; EdgegapServerLifecycle.cs démarre le serveur sur le port 5000 et arrête le déploiement lorsqu'il est vide.

  3. Un client qui se connecte à une adresse obtenue au moment de l'exécution. EdgegapConnectPanel.cs pour la connexion directe, EdgegapMatchmakingClient.cs pour Find Match. Ou appelez FindMatch() depuis votre propre bouton Play.

  4. Une logique serveur qui n'a pas besoin d'hôte. Un [ObserversRpc] qui configure l'état du serveur a besoin de runLocally: true. Sans cela, le serveur de l'échantillon Incremental ne faisait jamais apparaître d'arbre.

Ensuite, conteneurisez le serveur en prenant le Dockerfile du fork comme modèle, et créez la version de l'application comme à l'étape 3.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-purrnet. En utilisant github.com/edgegap/netcode-game-sample-unity-purrnet-incremental comme référence, ajoute le bootstrap Edgegap, le cycle de vie du serveur, le panneau de connexion et le client de matchmaking à mon projet PurrNet, corrige tout ObserversRpc qui configure l'état du serveur, et vérifie que cela fonctionne localement avec un serveur et deux clients. »

Pour chaque étape détaillée, manuellement, consultez le guide d'intégration PurrNet.

6. Activer le matchmaking (facultatif)

Le matchmaker est désactivé par défaut. Activez-le une fois que la connexion directe fonctionne :

  1. Dans matchmaker-config.json, définissez application.name et version avec votre application et votre version.

  2. Tableau de bord → Matchmaker → Créer un Matchmaker → téléversez le fichier → Créer et démarrer.

  3. Dans Assets/Edgegap/Resources/EdgegapSettings.asset, cochez Utiliser le Matchmaker Edgegap, puis collez l'URL de l'API et le Jeton d'authentification du matchmaker. Le jeton d'authentification n'autorise que les appels de matchmaking, il peut donc être inclus sans risque dans le client de jeu.

  4. Recompilez le client, lancez-le deux fois et cliquez sur Trouver une partie dans les deux instances. Le statut passe de recherche à partie trouvée, puis à connexion en cours et enfin connecté, les deux sur le même serveur.

Le profil casual associe 2 à 4 joueurs. Après 30 secondes, il accepte également un joueur seul, mais un ticket isolé risque de n'obtenir qu'un serveur proche de son expiration de 5 minutes ; testez donc avec deux clients.

Vous déployez une nouvelle version du serveur ? Poussez un nouveau tag, créez une nouvelle version de l'application, puis dans le matchmaker, faites Arrêter → Modifier application.version → Démarrer.

Pour ajouter le matchmaking à votre propre jeu PurrNet, suivez le guide d'intégration de PurrNet.

Limites connues

  • Bureau uniquement. L'échantillon utilise UDP, que les navigateurs ne peuvent pas ouvrir. WebGL nécessiterait le WebTransport de PurrNet et un port WebSocket avec mise à niveau TLS. Non testé.

  • Les clients sont approuvés. Comme en amont, les déplacements et la récolte sont gérés par les clients (règles réseau permissives de PurrNet). Un jeu compétitif devrait utiliser des règles plus strictes.

  • Pas d'accès en cours de partie. Les joueurs qui arrivent après le début d'un match n'y sont pas ajoutés (pas de réapprovisionnement), et le serveur ne vérifie pas le ticket de matchmaking du client (MM_TICKET_IDS).

  • Niveau gratuit : un seul déploiement à la fois, et le matchmaker redémarre toutes les 3 heures (son URL et son jeton restent les mêmes).

Ce qui a été testé

Testé de bout en bout sur Edgegap avec Unity 6000.3.11f1, le commit PurrNet a311c06, le UDPTransport de PurrNet et le SDK Unity Edgegap 3.5.5. Dernier push sur GitHub le 19 octobre 2026.

  • Connexion directe : deux joueurs se sont connectés et ont joué sur le même serveur Edgegap.

  • Matchmaker : les deux joueurs ont été associés sur le même serveur environ 35 secondes après avoir cliqué sur Find Match.

  • Arrêt automatique : à chaque fois, le serveur a arrêté son propre déploiement après le départ des joueurs.

Questions Fréquemment Posées

Questions concernant l'exécution de l'échantillon Incremental de PurrNet sur Edgegap.

Ai-je besoin du matchmaking pour exécuter l'échantillon PurrNet Incremental sur Edgegap ?

Non. C'est désactivé par défaut : les clients se connectent à l'hôte et au port d'un serveur. Activez le Matchmaker Edgegap dans l'asset des paramètres de l'exemple lorsque vous souhaitez que les joueurs cliquent plutôt sur Trouver un match.

Le fork d'Edgegap modifie-t-il l'échantillon de PurrNet ?

Une seule ligne. ResourceSpawner.InitSeed reçoit runLocally: true, ainsi un serveur dédié génère des arbres. Tout le reste se trouve dans Assets/Edgegap/ et s'ajoute à l'exécution, de sorte que la scène n'est pas modifiée.

Quand le serveur de jeu de la démo s'arrête-t-il ?

Il arrête son propre déploiement Edgegap 30 secondes après le départ du dernier joueur, ou 120 secondes après son démarrage si personne ne le rejoint. Vous ne payez que lorsque des joueurs sont dessus.

L'échantillon PurrNet Incremental peut-il fonctionner dans un navigateur ?

Pas encore. Il utilise l'UDP, que les navigateurs ne peuvent pas ouvrir. Une version WebGL nécessiterait le WebTransport de PurrNet et un port WebSocket avec mise à niveau TLS sur Edgegap, ce qui n'a pas été testé.

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.