Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Photon Fusion 2

BR200

Déployer sur Edgegap

Publié

Publié

Publié

BR200 : Faites tourner le battle royale Fusion 2 de Photon sur les serveurs dédiés d'Edgegap

BR200 : Faites tourner le battle royale Fusion 2 de Photon sur les serveurs dédiés d'Edgegap

BR200 est l'exemple de battle royale à la troisième personne de Photon pouvant accueillir jusqu'à 200 joueurs, conçu sur Photon Fusion 2. Il peut déjà fonctionner en tant que serveur dédié sans interface graphique (headless). Le kit d'Edgegap exécute ce serveur sur Edgegap, à raison d'un déploiement par partie.

Le kit ne modifie aucun code de BR200 ou de Fusion. Les joueurs trouvent toujours des parties via Photon Cloud, avec votre propre Photon App ID. Seul le serveur change d'emplacement : il s'exécute sur Edgegap au lieu de la machine d'un joueur, et les clients s'y connectent directement plutôt que par l'intermédiaire d'un relais Photon.

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 s'arrête automatiquement à la fin de la partie, ce qui interrompt également la facturation.

La documentation de Fusion 2 de Photon liste Edgegap comme fournisseur d'hébergement de sessions de jeu.

Plateformes : serveur dédié Linux (Docker, linux/amd64). Testé avec des clients Windows, compilé sur Windows 11 avec Unity 6000.3.11f1. Le kit est sous licence MIT ; BR200 provient de l'Unity Asset Store et reste soumis au CLUF de l'Asset Store ainsi qu'aux conditions de Photon. Le dépôt ne contient aucun code de BR200 ou de Fusion.

Comment ça marche

  1. Vous lancez un déploiement Edgegap avec les adresses IP publiques des joueurs. Edgegap le positionne au plus près d'eux.

  2. Le script de démarrage du kit lit les variables d'Edgegap et lance BR200 avec ses propres options : -dedicatedServer, adresse de liaison 0.0.0.0, port 7777/UDP, et l'adresse du déploiement comme nom de session.

  3. Le script sélectionne la région Photon la plus proche du déploiement. Le serveur enregistre sa session auprès de Photon Cloud dans cette région.

  4. Les clients utilisent le même App ID Photon, la même version de l'application et la même région, trouvent la session par son nom (ou dans la liste des serveurs du menu), et se connectent en Direct au serveur Edgegap.

  5. Lorsque la partie se termine et que BR200 se ferme, le script demande à Edgegap d'arrêter le déploiement.

Ce que le kit ajoute :

Chemin

Ce qu'il fait

Assets/EdgegapBR200/Editor/BR200ServerBuilder.cs

Ajoute Tools > Edgegap BR200 : vérifie le projet (serveur IL2CPP, chaîne d'outils Linux, code unsafe, scènes, App ID, Peer Mode) et compile le serveur Linux dans Builds/EdgegapServer.

edgegap/Dockerfile

Image Ubuntu 22.04 qui exécute le serveur en tant qu'utilisateur non-root.

edgegap/start-server.sh

Associe les variables ARBITRIUM_* d'Edgegap aux options de ligne de commande de BR200, choisit la région Photon, transmet les signaux d'arrêt, arrête le déploiement à la fin de la partie.

.dockerignore, .gitattributes

Envoie uniquement le build du serveur à Docker ; conserve les fins de ligne Linux.

scripts/

Compiler, packager et pousser, exécuter localement, lancer les tests dans un conteneur.

examples/

Un corps de version d'application et une requête de déploiement pour l'API Edgegap.

tests/start-server.test.sh

46 vérifications sur le script de démarrage. Aucun Unity nécessaire.

Photon Fusion 2

x

Edgegap

Entièrement approuvé par

Entièrement approuvé par

Répertorié dans la documentation de Fusion 2 de Photon

Répertorié dans la documentation de Fusion 2 de Photon

La documentation de Fusion 2 de Photon liste Edgegap comme fournisseur d'hébergement de sessions de jeu pour les serveurs dédiés Fusion.

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.

BR200 main menu with a soldier character, from Photon Fusion 2's battle royale sample, with the Unity and Photon logos.

Le battle royale BR200 de Photon, avec chaque partie sur son propre serveur dédié Edgegap.

Guide étape par étape

Exécuter l'exemple

1. Avant de commencer

  • Un compte Edgegap gratuit.

  • BR200 depuis l'Unity Asset Store. Le dépôt est un kit et n'inclut pas le jeu.

  • Unity avec le module de build Linux Dedicated Server. Testé avec Unity 6000.3.11f1, BR200 2.1.0 et Fusion 2.1.1.

  • Votre propre App ID Photon Fusion depuis le tableau de bord Photon. Chaque développeur a besoin du sien ; le kit n'en fournit jamais.

  • Docker Desktop.

  • Facultatif : le plugin Edgegap pour Unity, si vous préférez compiler et téléverser depuis l'éditeur.

  • Clonez le kit.

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

2. Ajoutez le kit et configurez Photon

Copiez Assets/EdgegapBR200, edgegap/, scripts/, .dockerignore et .gitattributes dans la racine du projet BR200, à côté de Assets/.

Ensuite, dans Unity :

  1. Tools > Fusion > Realtime Settings : collez votre ID d'application Fusion et notez l'App Version. Le serveur et les clients doivent partager l'ID d'application, l'App Version et la région Photon, sinon ils ne pourront pas se trouver.

  2. Tools > Fusion > Network Project Config : définissez Peer Mode sur Single.

  3. Le serveur doit utiliser IL2CPP, la valeur par défaut de BR200. Sur un serveur Mono, les RPC de BR200 échouent et les joueurs n'obtiennent jamais de personnage. Pour compiler Linux IL2CPP sous Windows avec Unity 6000.3 ou ultérieur, ajoutez com.unity.toolchain.win-x86_64-linux et com.unity.sdk.linux-x86_64 dans le Package Manager (+ > Add package by name).

  4. Exécutez Tools > Edgegap BR200 > Check Project et corrigez ce qu'il signale.

Vous ne modifiez pas la scène Loader ni aucun script : le mode, l'adresse, le port, la session et la région du serveur proviennent tous de la ligne de commande.

3. Construisez le serveur et déployez-le sur Edgegap

Créez le serveur Linux depuis un terminal (Git Bash fonctionne sous Windows), ou avec Tools > Edgegap BR200 > Build Linux Server. La compilation IL2CPP a pris 56 minutes lors de notre test :

scripts/build-server.sh

Empaquetez et publiez l'image. Connectez-vous d'abord avec les identifiants de la page Container Registry :

scripts/package.sh registry.edgegap.com/<project>/br200

Si vous utilisez plutôt le plugin Edgegap, pointez son étape Containerize vers edgegap/Dockerfile et conservez le chemin de compilation Builds/EdgegapServer.

Dans le tableau de bord, créez l'application br200 ainsi qu'une version avec le tag affiché par le script :

  • Un port : nom gameport, 7777, UDP.

  • Politique de redémarrage never. Le déploiement prend fin lorsque la partie se termine.

  • Durée maximale un peu supérieure à votre match le plus long (60 minutes dans l'exemple).

  • 1 vCPU et 2 Go pour commencer. Un match complet à 200 joueurs n'a pas encore été dimensionné.

examples/app-version.json contient les mêmes paramètres pour l'API.

4. Lancez une partie et connectez-vous

Testez d'abord l'image sur votre propre machine, avec les mêmes variables que celles obtenues lors d'un déploiement réel :

scripts/run-local.sh eu

En local, les clients affichent le type de connexion Relayed : un client situé sur la même machine ne peut pas accéder directement à l'adresse de Docker Desktop. Sur Edgegap, la même image donne Direct.

Lancez ensuite un déploiement depuis le tableau de bord, le plugin ou l'API (examples/deploy-request.json), avec les adresses IP publiques des joueurs. Son FQDN, tel que 0a1b2c3d4e5f.pr.edgegap.net, correspond également au nom de session BR200. Les premières lignes de log indiquent l'adresse de liaison (bind address), l'adresse publique et la région Photon choisie par le serveur.

Pour rejoindre, ouvrez la scène configurée comme Batch Mode Scene du Loader, et dans le Standalone Manager, définissez Game Mode sur Client, Server Name et Session Name sur le FQDN, et Region sur la région du serveur. Lancez ensuite la partie. (Rejoindre depuis la liste des serveurs de la scène Menu devrait également fonctionner, mais n'a pas été testé.)

BR200 démarre un délai d'attente de 120 secondes au démarrage du serveur. Connectez-vous dès que le déploiement est Prêt (Ready).

Dans un client connecté, appuyez sur Tab : le CT (type de connexion) de l'overlay devrait afficher Direct.

5. Ajoutez-le à votre propre jeu Fusion

Le kit est une référence fonctionnelle : votre agent de codage démarre à partir de fichiers qui ont déjà été exécutés sur Edgegap, il s'appuie donc sur une configuration testée plutôt que de faire des suppositions.

Pour BR200, le kit ne modifie aucun code de jeu (voir le tableau dans « Comment ça marche »). Pour votre propre jeu Fusion, voici les éléments à reprendre :

  1. Exécutez en mode headless dans GameMode.Server. Démarrez le runner en tant que serveur dédié à partir d'options de ligne de commande ou de variables d'environnement (edgegap/start-server.sh montre le mappage).

  2. Liez à 0.0.0.0. Définissez StartGameArgs.Address sur 0.0.0.0 sur le port fixe (7777/UDP). Fusion détecte l'adresse publique de lui-même et les clients se connectent en Direct. 127.0.0.1 force les relais Photon ; l'IP publique du déploiement échoue à la liaison.

  3. Nommez la session d'après le déploiement. Utilisez le FQDN (<ARBITRIUM_REQUEST_ID>.pr.edgegap.net) pour que les clients puissent la trouver via Photon.

  4. Choisissez la région Photon proche du déploiement, à partir de ARBITRIUM_DEPLOYMENT_LOCATION (le mode auto du script).

  5. Arrêtez lorsque le match prend fin. Appelez ARBITRIUM_DELETE_URL avec ARBITRIUM_DELETE_TOKEN lorsque le serveur se ferme, et n'affichez jamais l'environnement.

  6. Compilez le serveur avec IL2CPP et conteneurisez-le en prenant edgegap/Dockerfile comme modèle.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-fusion. En utilisant github.com/edgegap/netcode-game-sample-photon-fusion2-battleroyale-200 comme référence, fais fonctionner mon jeu Fusion 2 en tant que GameMode.Server headless sur Edgegap : lie 0.0.0.0 sur le port 7777/UDP, utilise le FQDN du déploiement comme nom de session, choisis la région Photon la plus proche du déploiement, arrête le déploiement à la fin du match et compile une image de serveur Linux avec IL2CPP. »

Pour chaque étape détaillée manuellement, consultez le guide d'intégration de Photon Fusion 2.

6. Comment les joueurs trouvent le serveur

Le Matchmaking reste sur Photon Cloud. Le déploiement Edgegap fait office de serveur de jeu : il enregistre sa session auprès de Photon, et les clients la trouvent grâce au nom de session, à l'App ID, à l'App Version et à la région. Vous n'avez pas besoin du système de matchmaking d'Edgegap pour cet exemple, et il n'a pas été testé avec Fusion.

  • Nom de la session : le FQDN du déploiement par défaut. Définissez BR200_SESSION pour le modifier.

  • Région : auto (par défaut) sélectionne la région Photon la plus proche du déploiement. Définissez BR200_REGION sur un code tel que eu si vos clients utilisent une région fixe, ou limitez auto avec BR200_REGION_ALLOWLIST. best permet à Fusion d'effectuer un ping à la place.

  • Paramètres de la partie : BR200_MAX_PLAYERS (1 à 200), BR200_MODE (battleRoyale, deathmatch ou elimination), BR200_SCENE, définis sur la version de l'application ou sur un déploiement.

Le backend ou le lobby de votre jeu décide du moment où lancer un déploiement et transmet aux joueurs le nom de la session ainsi que la région. Pour ce flux dans votre propre jeu, consultez le guide d'intégration de Photon Fusion 2.

Limites connues

  • 200 joueurs non testé pour l'instant. Le test a fonctionné avec des matchs à deux joueurs. Le processeur et la mémoire pour un match complet de 200 joueurs n'ont pas été dimensionnés : 1 vCPU / 2 Go n'est qu'un point de départ.

  • Une seule carte testée. Seule GenArea7 a fonctionné sur Edgegap.

  • Connexion via le menu non testée. Les clients se sont connectés avec le Standalone Manager. La liste des serveurs du menu devrait fonctionner, mais n'a pas été testée.

  • Hôte de compilation Windows uniquement. La compilation sur macOS ou Linux n'a pas été testée.

  • Minuteur de 120 secondes. BR200 démarre son minuteur d'attente au lancement du serveur ; les joueurs qui se connectent plus tard sont comptabilisés comme éliminés.

  • Le serveur doit être sous IL2CPP. Un serveur Mono compile en quelques minutes mais corrompt les RPC de BR200.

Ce qui a été testé

Testé de bout en bout sur Edgegap les 19 et 20 octobre 2026, avec BR200 2.1.0, Fusion 2.1.1 (build 2177), Unity 6000.3.11f1, Windows 11 et Docker Desktop. Les clients étaient des builds IL2CPP Windows sans interface graphique (headless).

  • Build : Check Project et Build Linux Server ont généré un serveur Linux IL2CPP en 56 minutes.

  • Conteneur local : deux clients se sont connectés sans aucune exception (CT Relayed, comme prévu localement).

  • Edgegap : déploiements à Toronto (région cae) et Newark (région us). Deux clients ont rejoint chacun d'eux avec CT Direct. Dans un Battle Royale à deux joueurs, un client a quitté, l'autre a obtenu Game Over, et le déploiement s'est arrêté de lui-même 2,5 minutes après son lancement.

  • Script de démarrage : 46 vérifications, aucun Unity requis :

bash tests/start-server.test.sh

Questions Fréquemment Posées

Questions concernant l'exécution du BR200 de Photon sur Edgegap.

Dois-je modifier le code du BR200 pour l'exécuter sur Edgegap ?

Non. BR200 prend déjà en charge les options de ligne de commande pour un serveur dédié. Le kit d'Edgegap ajoute un outil de compilation pour l'éditeur, un Dockerfile et un script de démarrage qui transmettent ces options, et ne modifie aucun code de BR200 ou de Fusion.

Est-ce que BR200 sur Edgegap utilise le système de matchmaking d'Edgegap ?

Non. Le Matchmaking reste sur Photon Cloud. Le serveur Edgegap enregistre sa session auprès de Photon, et les clients la trouvent par nom de session et région, puis se connectent directement au serveur.

Pourquoi mon client affiche-t-il « CT Relayed » ?

Sur Edgegap, cela signifie généralement que le serveur est lié à 127.0.0.1. Liez 0.0.0.0, comme le fait le kit. Dans un test local sur Docker Desktop, le statut Relayed est attendu ; la même image donne Direct sur Edgegap.

Le serveur BR200 peut-il être compilé avec Mono ?

La compilation réussit, mais les RPC de BR200 échouent sur un serveur Mono et les joueurs n'obtiennent jamais de personnage. Compilez le serveur avec IL2CPP, la valeur par défaut de BR200.

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.