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.
Obtenir le kit : Kit Simple FPS sur GitHub
Guide complet : ajoutez Edgegap à votre propre jeu Fusion grâce au guide d'intégration de Photon Fusion 2
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
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.
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.Le serveur consigne
server started: session=<address> photon_region=<code>.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.
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 |
|---|---|
| Remplace |
| Remplace |
| Builds serveur uniquement : ignore le menu Startup et charge Deathmatch. |
| Tools > Edgegap Simple FPS : vérifier, configurer, compiler le serveur Linux et un client Windows. |
| Image Ubuntu 22.04, utilisateur non-root. N'affiche jamais l'environnement ; arrête le déploiement lorsque le serveur se termine. |
| Configurer, compiler, empaqueter et pousser, exécuter localement, tester avec deux clients headless. |
La documentation de Fusion 2 de Photon répertorie Edgegap comme fournisseur d'hébergement de sessions de jeu pour serveurs dédiés.

Le Simple FPS de Photon, avec chaque match sur son propre serveur dédié Edgegap.
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-linuxetcom.unity.sdk.linux-x86_64dans 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.
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 :
Dans Tools > Fusion > Realtime Settings, collez votre App ID Fusion. Le package de l'Asset Store fournit également un asset
PhotonAppSettingsdansAssets/AssetStoreTools/Resources/avec l'App ID de l'éditeur : mettez également le vôtre à cet endroit, ou supprimez cette copie.Dans Tools > Fusion > Network Project Config, définissez Peer Mode sur
Single.Exécutez Tools > Edgegap Simple FPS > Check Project et corrigez tous les problèmes signalés.
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 :
Le serveur démarre de lui-même. Dans un build serveur (
UNITY_SERVER),Assets/EdgegapSimpleFPS/EdgegapFusionBootstrap.csdémarre le runner en tant queGameMode.ServersurARBITRIUM_PORT_GAMEPORT_INTERNAL(7777), lié à0.0.0.0afin que les clients se connectent en Direct.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.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.csignore Startup sur le serveur. Le serveur enregistre également Deathmatch avecactiveOnLoad: true. Sans ces deux correctifs, les clients se connectent mais déclenchent uneNullReferenceExceptiondansPlayer.FixedUpdateNetworkà chaque tick.Les joueurs rejoignent par adresse et région.
Assets/EdgegapSimpleFPS/EdgegapPartyMenu.csconserve l'adresse saisie comme nom de session (les noms de session sont sensibles à la casse) et transmet la région à Fusion.Le conteneur est sécurisé et s'arrête de lui-même.
edgegap/Dockerfileexécute le serveur sous un utilisateur non-root ;edgegap/start-server.shn'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, Newarkus). 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_REGIONest é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.

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.









