Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

Photon Fusion 2

Simple FPS

Déployer sur Edgegap

Publié

Publié

Publié

dernière vérification de l'exactitude

dernière vérification de l'exactitude

dernière vérification de l'exactitude

Simple FPS : Exécutez Simple FPS de Photon sur des serveurs dédiés Edgegap

Simple FPS : Exécutez Simple FPS de Photon sur des serveurs dédiés Edgegap

Simple FPS est l'exemple de jeu de tir à mort (deathmatch) de Photon pour Fusion 2. Tel qu'il est fourni, un joueur héberge la partie. Le kit d'Edgegap exécute plutôt chaque match sur son propre serveur de jeu dédié, sans aucune modification apportée aux fichiers de Simple FPS ou de Fusion.

Photon Cloud continue de jouer son rôle habituel : les joueurs trouvent toujours la partie via Photon, et ils rejoignent toujours depuis le propre menu Party de l'exemple. La seule différence réside dans ce qu'ils saisissent : l'adresse du serveur et sa région Photon.

Aucun joueur n'héberge la partie : un serveur Fusion headless exécute le jeu, et chaque joueur s'y connecte directement.

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

Plateformes : serveur dédié Linux (IL2CPP) ; clients testés sur Windows. Unity 6000.3, Fusion 2.1.1, Simple FPS 2.1.1. Le kit est sous licence MIT. Simple FPS et Fusion proviennent de l'Unity Asset Store sous leurs propres licences et ne figurent pas dans le dépôt.

Comment ça fonctionne

  1. Vous déployez le serveur sur Edgegap. Il démarre en tant que serveur Fusion sur le port UDP 7777 et charge la scène Deathmatch.

  2. Il nomme sa session Photon d'après l'adresse du déploiement (par exemple f68e011bfb01.pr.edgegap.net) et l'enregistre dans la région Photon offrant le meilleur ping depuis son lieu d'exécution.

  3. Le serveur consigne server started: session=<address> photon_region=<code>.

  4. Les joueurs ouvrent le Party Menu, saisissent l'adresse et la région sur la carte Join, puis cliquent sur Join. Photon Cloud trouve la session ; le client se connecte ensuite directement au serveur Edgegap.

  5. Si le processus du serveur se termine de lui-même, le script de démarrage arrête le déploiement, interrompant ainsi la facturation.

Ce que le kit ajoute :

Chemin

Ce que cela fait

Assets/EdgegapSimpleFPS/EdgegapFusionBootstrap.cs

Remplace FusionBootstrap sur Deathmatch. Dans un build serveur, démarre un serveur Fusion sur le port 7777, nomme la session d'après le déploiement, marque la scène comme active lors du chargement.

Assets/EdgegapSimpleFPS/EdgegapPartyMenu.cs

Remplace FusionMenuUIParty au démarrage (Startup). Join prend l'adresse de déploiement et un code de région Photon. Create Game reste inchangé.

Assets/EdgegapSimpleFPS/EdgegapServerSceneLoader.cs

Builds serveur uniquement : ignore le menu Startup et charge Deathmatch.

Assets/EdgegapSimpleFPS/Editor/SimpleFpsEdgegapSetup.cs

Tools > Edgegap Simple FPS : vérifier, configurer, compiler le serveur Linux et un client Windows.

edgegap/Dockerfile, edgegap/start-server.sh

Image Ubuntu 22.04, utilisateur non-root. N'affiche jamais l'environnement ; arrête le déploiement lorsque le serveur se termine.

scripts/

Configurer, compiler, empaqueter et pousser, exécuter localement, tester avec deux clients headless.

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 répertorie Edgegap comme fournisseur d'hébergement de sessions de jeu pour serveurs dédiés.

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.

Two armed players among stacked shipping containers in Photon Fusion 2's Simple FPS sample, with the Unity and Photon logos.

Le Simple FPS de Photon, avec chaque match sur son propre serveur dédié Edgegap.

Guide étape par étape

Exécuter l'exemple

1. Avant de commencer

  • Un compte Edgegap gratuit.

  • Simple FPS Multiplayer (Photon Fusion) depuis l'Unity Asset Store, importé dans un nouveau projet Unity. Il inclut ses propres paramètres de projet (Project Settings).

  • Unity 6000.3 avec Linux Dedicated Server Build Support et Linux Build Support (IL2CPP). Pour les clients, Windows Build Support (IL2CPP), qui nécessite la charge de travail C++ de Visual Studio.

  • Pour compiler le serveur Linux IL2CPP sous Windows, ajoutez com.unity.toolchain.win-x86_64-linux et com.unity.sdk.linux-x86_64 dans Window > Package Manager > + > Add package by name.

  • Votre propre ID d'application Photon Fusion depuis le tableau de bord Photon. Chaque développeur doit avoir le sien.

  • Docker Desktop.

  • Clonez le kit.

Git : Unity a besoin d'un client Git (version 2.14.0 ou plus récente) dans votre PATH pour installer des paquets à partir d'une URL Git, comme le plugin Edgegap. macOS en dispose généralement déjà (outils de ligne de commande Xcode) ; sous Windows, installez Git.

2. Ajoutez le kit à Simple FPS

Copiez Assets/EdgegapSimpleFPS, edgegap/, scripts/, .dockerignore et .gitattributes dans votre projet Simple FPS, à côté de Assets/. Ensuite, dans Unity :

  1. Dans Tools > Fusion > Realtime Settings, collez votre App ID Fusion. Le package de l'Asset Store fournit également un asset PhotonAppSettings dans Assets/AssetStoreTools/Resources/ avec l'App ID de l'éditeur : mettez également le vôtre à cet endroit, ou supprimez cette copie.

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

  3. Exécutez Tools > Edgegap Simple FPS > Check Project et corrigez tous les problèmes signalés.

  4. Exécutez Tools > Edgegap Simple FPS > Set Up Project.

Set Up Project échange les deux composants (en conservant leurs paramètres), ajoute un champ Region à la carte Join du menu Party, et définit le profil de build sur Startup (0), puis Deathmatch (1). Cela modifie uniquement les paramètres de scène et de build, et vous pouvez l'exécuter à nouveau en toute sécurité.

3. Construisez le serveur et poussez l'image

Depuis un terminal (Git Bash sous Windows), avec l'éditeur fermé sur le projet :

scripts/build.sh server

La première compilation du serveur IL2CPP prend environ 13 minutes. Connectez-vous avec docker login registry.edgegap.com, en utilisant les identifiants présents sur la page Container Registry, puis packagez et poussez avec un nouveau tag pour chaque compilation :

scripts/package.sh registry.edgegap.com/<project>/simplefps <new-tag>

Pour tester d'abord sur votre machine, exécutez scripts/package.sh puis scripts/run-local.sh. En local, la connexion apparaît comme Relayée en raison du réseau de Docker Desktop ; sur Edgegap, elle est Directe.

Si vous compilez plutôt avec le plugin Edgegap Unity, définissez son Path To Dockerfile sur edgegap/Dockerfile. Le Dockerfile par défaut du plugin affiche l'environnement, qui inclut le jeton de suppression du déploiement.

4. Déployez et rejoignez une partie

Dans le tableau de bord, créez une application et une version :

  • votre image et votre tag, avec votre nom d'utilisateur et jeton de registre ;

  • 1 vCPU et 2 Go pour commencer ;

  • un port : 7777, UDP, avec la vérification du port désactivée.

Déployez la version à proximité de vos joueurs. Dans les journaux de déploiement, recherchez :

[edgegap-simplefps] server started: session=<fqdn> photon_region=<code>

Générez un client avec scripts/build.sh client (ou votre build Windows habituel). Lancez-le, cliquez sur Party Menu, saisissez l'adresse de déploiement (par exemple f68e011bfb01.pr.edgegap.net) dans le champ code et le code de région (par exemple us) dans le champ Region, puis cliquez sur Join. Un deuxième joueur fait de même, et les deux arrivent en Deathmatch sur le même serveur.

Si un client ne se connecte pas, la région ne correspond très probablement pas à celle indiquée dans le journal du serveur.

5. Ajoutez-le à votre propre jeu Photon Fusion 2

Le kit est une référence fonctionnelle : votre agent de codage part de fichiers qui ont déjà tourné sur Edgegap, s'appuyant ainsi sur une configuration testée plutôt que de deviner. Voici les modifications apportées et l'utilité de chacune :

  1. Le serveur démarre de lui-même. Dans un build serveur (UNITY_SERVER), Assets/EdgegapSimpleFPS/EdgegapFusionBootstrap.cs démarre le runner en tant que GameMode.Server sur ARBITRIUM_PORT_GAMEPORT_INTERNAL (7777), lié à 0.0.0.0 afin que les clients se connectent en Direct.

  2. La session est nommée d'après le déploiement. Le nom de la session est <ARBITRIUM_REQUEST_ID>.pr.edgegap.net, l'adresse du déploiement, pour que les joueurs et les outils sachent quoi rejoindre. PHOTON_REGION, s'il est défini, fixe la région.

  3. Les clients chargent la bonne scène. Fusion indique la scène aux clients par son index de build, donc le serveur est compilé avec la liste des scènes du client (Startup 0, Deathmatch 1) et Assets/EdgegapSimpleFPS/EdgegapServerSceneLoader.cs ignore Startup sur le serveur. Le serveur enregistre également Deathmatch avec activeOnLoad: true. Sans ces deux correctifs, les clients se connectent mais déclenchent une NullReferenceException dans Player.FixedUpdateNetwork à chaque tick.

  4. Les joueurs rejoignent par adresse et région. Assets/EdgegapSimpleFPS/EdgegapPartyMenu.cs conserve l'adresse saisie comme nom de session (les noms de session sont sensibles à la casse) et transmet la région à Fusion.

  5. Le conteneur est sécurisé et s'arrête de lui-même. edgegap/Dockerfile exécute le serveur sous un utilisateur non-root ; edgegap/start-server.sh n'affiche jamais l'environnement et arrête le déploiement lorsque le serveur se ferme.

Avec votre agent :

« Charge la compétence edgegap, puis edgegap-fusion (edgegap-fusion-simplefps pour Simple FPS lui-même). En utilisant github.com/edgegap/netcode-game-sample-photon-fusion2-simple-fps comme référence, fais démarrer mon jeu Fusion en tant que GameMode.Server dans un build serveur Linux IL2CPP sur le port de jeu Edgegap, nomme la session d'après le FQDN du déploiement, garde la liste des scènes et la scène active du serveur identiques à celles du client, permets aux joueurs de rejoindre par nom de session et région Photon, et ajoute un Dockerfile qui n'affiche jamais l'environnement. »

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

6. Comment les joueurs trouvent le serveur

Cet exemple n'utilise pas le matchmaker d'Edgegap. Le Matchmaking reste sur Photon Cloud : un client trouve le serveur par le nom de session, l'App ID, l'App Version et la région Photon, puis se connecte directement au serveur Edgegap.

  • Nom de session : l'adresse du déploiement, <request id>.pr.edgegap.net, issue des journaux du déploiement ou du tableau de bord.

  • App ID et App Version : le serveur et les clients doivent être créés avec les mêmes identifiants.

  • Région : le serveur s'enregistre dans la région offrant le meilleur ping depuis l'endroit où il s'exécute (un déploiement à Toronto a choisi cae, Newark us). Les clients doivent saisir le même code, sinon Photon ne peut pas trouver la session.

Dans cet exemple, les joueurs saisissent manuellement l'adresse et la région dans le menu Party. Dans un jeu publié, votre propre backend ou lobby lancerait le déploiement et transmettrait ces deux valeurs aux joueurs. Le guide d'intégration de Photon Fusion 2 aborde cette configuration.

Limites connues

  • Les joueurs saisissent l'adresse et la région manuellement. Le menu Groupe (Party) est un moyen d'accès pratique pour les tests, et non un flux complet de matchmaking.

  • La région doit correspondre. Si le serveur choisit une région Photon différente de celle saisie par le client, la connexion échoue. La surcharge de PHOTON_REGION est écrite mais n'a pas été testée.

  • La fin d'une partie n'est pas testée. Le script de démarrage interrompt le déploiement lorsque le serveur s'arrête de lui-même, mais il n'a pas été vérifié si le serveur de Simple FPS s'arrête après une partie. Définissez une durée maximale sur la version de l'application.

  • La taille du serveur est un point de départ. 1 vCPU / 2 Go correspond à ce qui a été utilisé pour le test ; le processeur nécessaire pour une partie complète n'a pas été mesuré.

  • Les fichiers sous licence restent hors de git. Ne committez jamais Simple FPS, Fusion ou les ressources tierces de l'exemple dans un dépôt partagé ou public.

Ce qui a été testé

Testé de bout en bout sur Edgegap le 20 octobre 2026, avec Simple FPS 2.1.1, Fusion 2.1.1 (build 2177) et Unity 6000.3.11f1 sur Windows 11 :

  • Un serveur Linux IL2CPP et un client Windows IL2CPP, compilés à partir du kit sur un projet Simple FPS non modifié.

  • Un conteneur local avec deux clients : les deux ont rejoint, Relayed (attendu localement), aucune exception.

  • Un déploiement Edgegap à Newark (région Photon us) avec deux clients ayant rejoint via le menu Party : connexion Direct, 11 à 29 ms, deux joueurs, Deathmatch chargé, aucune exception sur les clients ou le serveur. Un essai antérieur avec les mêmes modifications effectuées manuellement, à Toronto (cae) : Direct, 11 à 24 ms.

Pour exécuter la même vérification, copiez également Assets/EdgegapSimpleFPSTest dans le projet, puis :

scripts/build.sh client

scripts/test-clients.sh <fqdn> <region>

Deux clients headless rejoignent via le menu Party ; le script se termine avec le code 0 lorsque chaque client voit chaque joueur et qu'aucune exception n'a été consignée. Supprimez Assets/EdgegapSimpleFPSTest avant la publication.

Non testé : la surcharge de PHOTON_REGION, plus de deux joueurs, une partie jouée jusqu'à la fin, la fermeture du serveur après une partie, le dimensionnement du CPU, macOS et le bouton de build du plugin Edgegap.

Questions Fréquemment Posées

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

Est-ce que Photon Fusion 2 peut fonctionner sur un serveur dédié ?

Oui. Un build Unity headless démarre le runner en tant que GameMode.Server, enregistre sa session auprès de Photon Cloud, et les clients s'y connectent directement. La documentation de Fusion 2 de Photon mentionne Edgegap comme fournisseur d'hébergement de sessions de jeu.

Dois-je modifier le code de Simple FPS ?

Non. Le kit sous-classe FusionBootstrap et FusionMenuUIParty et les remplace dans les scènes à l'aide d'une seule commande de menu. Aucun fichier de Simple FPS ou de Fusion n'est modifié, les mises à niveau de l'échantillon restent donc propres.

Comment les joueurs rejoignent-ils le serveur Edgegap dans Simple FPS ?

Depuis le menu Party de l'échantillon : saisissez l'adresse de déploiement dans le champ du code et la région Photon dans le champ Region, puis appuyez sur Join. Ces deux valeurs se trouvent dans le journal du serveur.

Pourquoi les clients renvoient-ils une NullReferenceException dans Player.FixedUpdateNetwork ?

Généralement, le serveur a été compilé uniquement avec la scène Deathmatch, ou la scène n'est pas active au chargement. Fusion envoie la scène par index de compilation (build index), compilez donc le serveur avec Startup et Deathmatch, comme le fait le kit.

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.