For the complete documentation index, see llms.txt. This page is also available as Markdown.

Unity - Premiers pas

Apprenez en pratiquant et déployez votre premier serveur dédié sur Edgegap. À la fin de ce guide, vous aurez déployé un serveur dédié avec Edgegap sans frais.

✔️ Préparation

Avant de commencer, assurez-vous de créer un compte gratuit avec Edgegap (aucune carte de crédit requise). Vous pouvez inviter les membres de votre équipe ensuite, même s’ils n’ont pas encore de compte Edgegap.

Configurez quelques éléments essentiels sur votre machine de développement :

Installer les modules de prise en charge de compilation Linux pour Unity
  • Utilisez Unity Hub pour sélectionner l'onglet Installe, accéder à Paramètres et Ajouter des modules pour chaque version d'Unity que vous avez l'intention d'utiliser avec la plateforme Edgegap :

  • Faites défiler vers le bas pour sélectionner et installer les modules Unity suivants :

    • Prise en charge de compilation Linux (IL2CPP),

      • Prise en charge de compilation Linux (Mono),

      • Prise en charge de compilation pour serveur dédié Linux

Installez Docker Desktop (ou Docker CLI)
Installez le plugin de démarrage rapide Unity Dedicated Servers d'Edgegap

Veuillez vous référer à le dépôt officiel du plugin pour des instructions détaillées sur l'installation.

Ce plugin a été testé et prend en charge les versions d'Unity 2021.2+, y compris toutes les versions LTS, Unity 2023 et Unity 6.

Vous êtes confiant dans vos builds de serveur ? Passez à Unity ou Fonctionnalités avancées pour en savoir plus.

⚙️ 1. Connecter le compte

☑️ Connectez-vous et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity liée au plugin d’Edgegap.

✅ Vous pouvez maintenant passer à l’étape suivante.

Dépannage et FAQ

!Succès : 400 BAD REQUEST - POST | https://api.edgegap.com/v1/wizard/init-quick-start - {"message": "Le navigateur (ou le proxy) a envoyé une requête que ce serveur n’a pas pu comprendre."}

  • Si vous avez installé en copiant le fichier ZIP ou utilisé un projet d’exemple avec une copie du plugin installée de cette manière, vous devrez installer manuellement les dépendances des packages, y compris la bibliothèque Newtonsoft JSON, voir le dépôt officiel du plugin.

  • Veuillez nous contacter sur Discord communautaire pour obtenir de l’aide si ce n’est pas le cas.

🔧 2. Construire le serveur de jeu

Que vous utilisiez une machine Windows, Mac ou Linux, vous devrez compiler votre serveur pour l’environnement d’exécution Linux, car la plupart des fournisseurs cloud de nos jours (y compris Edgegap) fonctionnent sous Linux. Ne vous inquiétez pas, aucune connaissance de Linux n’est requise pour réaliser cela avec notre plugin.

☑️ Vérifiez que vous avez installé les outils de build Linux Unity requis.

Installer les modules de prise en charge de compilation Linux pour Unity
  • Utilisez Unity Hub pour sélectionner l'onglet Installe, accéder à Paramètres et Ajouter des modules pour chaque version d'Unity que vous avez l'intention d'utiliser avec la plateforme Edgegap :

  • Faites défiler vers le bas pour sélectionner et installer les modules Unity suivants :

    • Prise en charge de compilation Linux (IL2CPP),

      • Prise en charge de compilation Linux (Mono),

      • Prise en charge de compilation pour serveur dédié Linux

☑️ Modifiez les paramètres de build pour vous assurer que toutes les scènes de jeu requises sont incluses.

Utilisateurs avancés de Unity - modifiez éventuellement les paramètres de build Unity. Attention ! Cela peut casser votre build.

☑️ Facultatif : ajoutez le script spécifique au netcode pour la vérification des ports et l’amorçage de l’environnement à votre scène serveur initiale depuis le menu Edgegap Server Hosting (clic droit / dans votre fenêtre Hiérarchie).

Une fois l’étape Unityterminée, le script de vérification des ports affichera un avertissement si l’adresse ou les ports de votre netcode ne correspondent pas à votre mappage des ports de la version de l’application Edgegap configuration.

☑️ Une fois satisfait de votre configuration, cliquez sur Construire le serveur, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera l’apparition d’un nouveau dossier à la racine de votre projet - Builds/EdgegapServer/ServerBuild .

✅ Vous pouvez maintenant passer à l’étape suivante.

Dépannage et FAQ

Unity : les seules cibles autonomes prises en charge sont Windows x64 et OSX avec OpenXR.

  • Ouvrez vos packages et désactivez OpenXR avant de compiler votre serveur.

  • Le plugin OpenXR n’est requis que pour les clients et n’est pas compatible avec les builds de serveur Linux. En l’excluant de vos builds de serveur, vous ne perdez aucune fonctionnalité.

🐋 3. Conteneuriser le serveur

Travailler en équipe de développeurs signifie partager votre code. Quand les choses tournent mal, la dernière chose que vous voulez entendre est « ça marche sur ma machine ». Les serveurs de jeu doivent fonctionner de manière fiable sur n'importe quelle machine, car les serveurs d'un jeu à succès tourneront sur des milliers de machines serveur à travers le monde.

Pour aider à rendre votre serveur fiable, nous utilisons Docker - un logiciel de virtualisation garantissant que toutes les dépendances de votre code serveur jusqu'au niveau du système d'exploitation seront toujours exactement les mêmes, peu importe comment ou où le serveur est lancé.

Nous recommandons de regarder "Ne jamais installer localement" (vidéo). Vous N'AVEZ PAS besoin d'utiliser Dockerhub avec Docker. Docker ≠ Dockerhub. Pensez à Docker comme à un moteur de programmation et à Dockerhub comme à son App Store.

☑️ Commencez en cliquant sur le bouton Valider pour vous assurer que vous avez bien terminé ✔️ Préparation.

Installez Docker Desktop (ou Docker CLI)

☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :

  • Le chemin de build est le chemin relatif vers l’artefact de build de votre serveur, conservons la valeur par défaut pour le moment.

  • Nom de l’image est un identifiant unique de votre choix, qui étiquette votre build de serveur avant la mise en production.

    • En général, cela inclura le nom de votre jeu — par exemple « my-game-server ».

  • Balise de l’image est un identifiant pointant vers une version spécifique de votre image.

    • Le terme « artefact de build » est parfois utilisé pour désigner une version spécifique de votre image.

    • Les horodatages sont une excellente option par défaut pour les balises, par ex. 2024.01.30-16.23.00-UTC .

  • Chemin vers le Dockerfile peut être utilisé pour personnaliser la recette de vos images.

    • Nous recommandons de conserver le paramètre par défaut pour le moment, vous pourrez en savoir plus plus tard dans la section Unity.

  • Paramètres de build Docker facultatifs peuvent être utilisés pour préciser davantage certaines subtilités à Docker.

☑️ Une fois satisfait de votre configuration, cliquez sur Conteneuriser avec Docker, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera un nouvelle image apparaissant sur votre machine locale. Vous pouvez vérifier cela soit dans Docker Desktop, dans l’onglet Images sous Local (par défaut), soit dans la CLI Docker en exécutant docker images .

Reconstruire à partir du code source sera automatiquement compilé et conteneurisé, afin de accélérer votre prochaine compilation.

✅ Vous pouvez maintenant passer à l’étape suivante.

Dépannage et FAQ

/bin/bash : docker : commande introuvable , ou impossible de trouver Packages\com.edgegap.unity-servers-plugin\Editor

  • Tout d’abord, assurez-vous d’avoir terminé Outils de développement.

  • Confirmez que vous avez vérifié votre compte Edgegap ; vous auriez dû recevoir un lien de vérification par e-mail.

  • Certains paramètres ont peut-être été réinitialisés après la mise à jour de Docker Desktop. Essayez d’aller dans Paramètres de Docker Desktop / Avancé et, pour « Choose how to configure the installation of Docker’s CLI tools: », sélectionnez « System (requires password) ».


docker build nécessite exactement 1 argument

  • Veuillez vérifier que votre balise d’image ne contient aucun caractère d’espacement (espaces, tabulations). Retaper la valeur de votre balise d’image garantira que vous n’avez pas copié accidentellement de tels caractères.


(code HTTP 400) inattendu - format de balise invalide


ERREUR : échec de la résolution : ubuntu:22.04 : échec de la résolution des métadonnées source pour http://docker.io/library/ubuntu:22.04 : échec de l’autorisation : échec de la récupération du jeton OAuth

  • Êtes-vous situé en Chine ? Votre connexion peut être interrompue par le Grand Pare-feu. Essayez d’exécuter docker pull ubuntu:22.04 dans votre ligne de commande manuellement (ouvrez l’invite de commande en appuyant sur Win+R, puis tapez cmd et Entrée).


System.IndexOutOfRangeException : l’index était en dehors des limites du tableau.

  • Si vous avez installé notre plugin de démarrage rapide Unity en téléchargeant le ZIP, le cache de votre éditeur Unity est peut-être corrompu. Essayez de supprimer votre copie du plugin et de l’installer en utilisant l’URL git ou depuis le Unity Asset Store. Vous ne devriez plus avoir besoin du package Newtonsoft.JSON, car il est inclus automatiquement avec les autres sources.


La taille de mon image Docker est énorme (plus de 1 Go) / minuscule (moins de 100 Mo), est-ce normal ?

  • Cela peut être acceptable dans certains cas, tant que vous pouvez exécuter le serveur et vous connecter avec succès (voir Unity). Si ce n’est pas le cas, envisagez de revoir vos options de build, de les réinitialiser aux valeurs par défaut et d’ajouter progressivement des options pour voir comment elles influencent la taille de votre build. Voir aussi Unity.


Je rencontre un autre problème qui n’est mentionné nulle part dans cette documentation.

🧪 4. Tester le serveur localement

Essayons de déployer localement (sur votre machine) et de connecter un client de jeu, pour nous assurer que l'image du serveur fonctionne correctement avant de l'uploader et de la déployer (ce qui peut prendre un certain temps).

☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :

  • Balise de l’image du serveur de l’étape précédente.

    • Par défaut, il s’agit de la dernière balise que vous avez construite avec le plugin.

  • Paramètres docker run facultatifs peuvent être fournis pour exposer plusieurs ports, ou pour exécuter votre image sur des machines macOS.

    • Vous pouvez publier plusieurs ports pour votre conteneur si nécessaire, il suffit d’ajouter le paramètre -p {port interne}/{protocole} pour chacun, par exemple -p 8080/tcp -p 7777/udp pour publier et associer votre port serveur 8080 à un port externe aléatoire pour la connexion TCP et le port serveur 7777 à un port externe aléatoire pour la connexion UDP en même temps. Trouvez la configuration du port serveur dans votre Transport ou dans les paramètres spécifiques au netcode.

    • Si vous utilisez une machine avec architecture ARM (macOS M1, M2, M3, etc.), vous devriez voir ce paramètre facultatif inclus dans vos paramètres de build Docker facultatifs : --platform=linux/amd64 .

☑️ Une fois satisfait de votre configuration, cliquez sur Déployer le conteneur local, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera le démarrage d’un nouveau conteneur sur votre machine de développement.

Pour plus de détails, voir Docker Desktop / Containers, ou la commande Docker CLI docker ps .

☑️ Il est maintenant temps de connecter votre client de jeu Unity Editor à votre conteneur Docker local pour vérifier que votre image de serveur fonctionne correctement. Trouvez les paramètres client de votre netcode et saisissez :

  • localhost ou 0.0.0.0 (équivalent dans la plupart des cas) à la place de l’IP du serveur,

  • valeur du port externe aléatoire trouvée dans Docker Desktop / Containers / edgegap-server-test.

☑️ Une fois que vous avez vérifié que vous pouvez vous connecter à votre conteneur de serveur local et jouer sans problème, vous pouvez supprimer le conteneur 🗑️ pour libérer des ressources sur votre machine pour d’autres programmes.

✅ Vous pouvez maintenant passer à l’étape suivante.

Dépannage et FAQ

Je n’arrive pas à me connecter au conteneur Docker local avec mon client de jeu Unity Editor.

  • Tout d’abord, assurez-vous que l’état du conteneur est Up et qu’il n’est pas Restarting ou Exited, ce qui indiquerait une exception à l’exécution. Si votre conteneur ne s’exécute pas, inspectez ses journaux via l’onglet Docker Desktop Containers (cliquez sur votre conteneur) ou en utilisant docker logs {container_id} --timestamps via la CLI Docker.

  • Ensuite, veuillez vérifier que le paramètre de port de votre Network Manager depuis le build de votre serveur correspond au port publié dans Paramètres docker run facultatifs. Si ce n’est pas le cas, essayez de réinitialiser ou de modifier manuellement la valeur de ce champ pour la faire correspondre à {container} le port à votre paramètre Network Manager. Trouvez votre protocole dans les paramètres de votre netcode.

  • Enfin, confirmez que les paramètres netcode de votre client de jeu Unity Editor utilisent le port publié dans Paramètres docker run facultatifs (voir la capture d’écran ci-dessus).


(Segmentation fault) - noyau dumpé

  • Si vous utilisez une machine avec architecture ARM (macOS M1, M2, M3, etc.), vous devriez voir ce paramètre facultatif inclus dans vos paramètres de build Docker facultatifs : --platform=linux/amd64 . Si ce n’est pas le cas, essayez de réinitialiser la valeur de ce champ.


SceneId de 9120233082191360994 introuvable dans SceneObjects.

  • Cela peut signifier que la scène que vous essayez de charger n’a pas été correctement incluse dans le build, un problème connu dans les anciennes versions du plugin. Pour y remédier, essayez de mettre à jour votre version d’intégration netcode ou de mettre à jour votre plugin Edgegap.


http2 : serveur : erreur de lecture de la préface du client //./pipe/docker_engine : le fichier a déjà été fermé


Erreur Curl 35 : échec de la négociation du certificat. Erreur fatale. Code d’erreur UnityTls : 7

  • Cette erreur indique un problème de validation du certificat SSL racine, un problème connu dans les anciennes versions du plugin. Pour y remédier, veuillez essayer de mettre à jour votre plugin Edgegap.

☁️ 5. Téléverser vers Edgegap

Il est temps de mettre votre serveur en ligne ! Maintenant que votre image peut héberger des joueurs avec succès, nous pouvons la téléverser sur Edgegap et commencer à l’exécuter n’importe où dans le monde. Dans ce guide, nous utiliserons le registre de conteneurs d’Edgegap (stockage pour les images).

☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :

  • Nom de l’application sur Edgegap peut correspondre au nom de votre image ou être personnalisé.

    • Nous avons choisi de copier le nom de votre image pour le moment.

  • Image du serveur de l’étape Unity.

☑️ Une fois satisfait de votre configuration, cliquez sur Téléverser l’image et créer la version de l’application, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity.

☑️ Vous serez redirigé vers notre Tableau de bord, où vous pourrez configurer des paramètres facultatifs. L’exécution de cette étape entraînera la création d’une nouvelle version de l’application, et le balisage et le téléversement de l’artefact de build vers le registre de conteneurs d’Edgegap.

  • Version de l’application sur Edgegap peut correspondre à votre balise ou être personnalisé.

    • Les horodatages sont une excellente option pour les noms de version d’application, par ex. 2024.01.30-16.50.20-UTC .

    • Plusieurs versions d’application peuvent pointer vers la même balise d’image, comme v1.1.0 et dev .

    • En savoir plus sur Applications et versions plus tard.

☑️ Vous serez maintenant invité à définir un port pour votre nouvelle version de l’application. Assurez-vous de définir la même valeur de port serveur que dans l’étape Unity depuis vos paramètres de Transport ou spécifiques au netcode.

✅ Vous pouvez maintenant passer à l’étape suivante.

Dépannage et FAQ

refusé : ajout de 756,6 Mio de ressource de stockage, ce qui, une fois mis à jour avec l'utilisation actuelle de 4,3 Gio, dépassera la limite supérieure configurée de 4,7 Gio , échec de la validation sur la référence "layer-sha256:--------" : statut inattendu de la requête PUT vers https://registry.edgegap.com/

  • Il semble que vous ayez manqué d'espace de stockage d'images sur Registre de conteneurs. Envisagez de supprimer les artefacts de build inutilisés (si vous en avez) ou d'optimiser la taille du build du serveur. Si vous utilisez un Dockerfile personnalisé ou un .dockerignore, vous pourriez copier des fichiers inutiles dans votre image.


Vous avez atteint la limite de votre application de 2 , Impossible de mettre à jour le tag/version docker : Vous avez atteint la limite de versions de votre application de 2

  • Vous avez atteint les limites de notre offre gratuite, veuillez envisager de mettre à niveau votre compte. Alternativement, vous pouvez supprimer vos ressources existantes via notre Tableau de bord.


Ma nouvelle version d'application n'est pas répertoriée dans le plugin/extension.

  • Veuillez vous assurer que vous avez rempli le formulaire de création de version d'application à la dernière étape.

🚀 6. Déployer sur le cloud

Ceci est l'étape finale de ce guide, après laquelle vous disposerez d'un serveur déployé sur le cloud Edgegap, auquel des joueurs du monde entier pourront se connecter.

☑️ Choisissez une application et une version de l'étape précédente à déployer.

☑️ Une fois prêt, cliquez sur Déployer sur le Cloud, attendez d'atteindre Déploiements. L'achèvement de cette étape entraînera le démarrage d'un nouveau déploiement sur votre compte Edgegap.

☑️ Vérifiez qu'il n'y a pas de nouvelles erreurs dans la sortie de la console. Assurez-vous également que vos Déploiements n'affichent aucune erreur et que vos Déploiements n'indiquent pas une utilisation des ressources à 100 % (vCPU ou mémoire), sinon de nouvelles connexions de joueurs peuvent être rejetées, ou votre serveur bloqué dans une boucle de redémarrage. Consultez les étapes de dépannage ci-dessous pour résoudre tout problème.

☑️ Nous allons maintenant effectuer le test final et connecter votre client de jeu Unity Editor à votre déploiement cloud. Saisissez les détails de connexion du client de jeu à partir du déploiement :

  • Hôte URL pointant vers l’IP du serveur, généralement dans le composant NetworkManager .

  • Port externe mappé vers le port d’écoute interne du serveur, généralement dans le composant Transport.

Le port externe de votre déploiement sur le cloud Edgegap sera choisi aléatoirement, afin qu'un attaquant potentiel (hacker) soit ralenti et détecté avant de pouvoir causer des dommages.

☑️ Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vous avez fini les tests, Arrêtez votre déploiement pour libérer de la capacité dans votre compte pour la prochaine build.

🙌 Félicitations pour votre premier déploiement sur Edgegap ! Si vous souhaitez en savoir plus, continuez à lire.

Dépannage et FAQ

Impossible de connecter les clients au serveur - Délai de requête dépassé. , Délai de requête dépassé , Échec de connexion , ou Échec de la vérification du port

  • Tout d’abord, assurez-vous que le déploiement est Ready et qu’il n’y a aucune exception à l’exécution ni erreur dans le journal de déploiement. Si votre déploiement s’est arrêté, inspectez les journaux dans notre Tableau de bord.

  • Si vous utilisez le netcode Mirror, vous devez avoir « Auto Start Server » sélectionné dans votre NetworkManager , reconstruisez, poussez et redéployez votre serveur.

  • Si vous utilisez le netcode FishNet, vous devez activer « Start on Headless » dans votre ServerManager, reconstruisez, poussez et redéployez votre serveur.

  • Si vous utilisez le netcode Photon Fusion 2, veuillez vous assurer que votre serveur transmet l’IP publique du déploiement, le port externe et le roomCode sur le serveur, ainsi que le même code de salle dans le client dans le « NeworkRunner.StartGame » paramètre StartGameArgs. L’ID de déploiement (par ex. b63e6003b19f) est un excellent choix car il est globalement unique et facilement accessible au client via Matchmaker et Regard approfondi.

  • Ensuite, veuillez vérifier que le paramètre de port dans les paramètres netcode de votre build serveur correspond au port interne dans votre version de l’application. Vous pouvez modifier le mappage des ports en éditant le version de l’application sans reconstruire. Trouvez votre protocole dans votre intégration netcode.

  • Veuillez vous assurer que votre client de jeu se connecte au port externe affiché sur la page des détails de votre déploiement ; cette valeur sera toujours randomisée pour des raisons de sécurité.

  • Si vous utilisez le protocole Secure Websocket (WSS) dans votre intégration netcode, veuillez vous assurer que votre version de l’application configuration de port pour le port WSS a la mise à niveau TLS activée.

  • Êtes-vous situé en Chine et utilisez-vous Smart Fleets? Votre connexion peut être bloquée par le Grand Pare-feu. Envisagez d’ajouter à votre flotte un serveur situé en Chine, ou d’utiliser un VPN pour vous connecter.


Mon déploiement s’est arrêté/redémarré et je n’arrive plus à accéder à ses journaux.

  • Dans le cas où le processus du serveur plante à cause d’une exception, notre système tentera de redémarrer automatiquement le serveur. Envisagez de tester votre serveur localement pour découvrir la cause profonde.

  • Nous conservons les journaux uniquement pendant la durée du déploiement ; si vous souhaitez inspecter les journaux après l’arrêt du déploiement, veuillez intégrer un stockage de journaux tiers.

  • Voir Déploiements pour découvrir toutes les causes d’arrêt de votre déploiement.


Mon déploiement s’est arrêté automatiquement après X minutes.

  • Les déploiements de l’offre gratuite sont limités à 60 minutes ; veuillez envisager de mettre à niveau votre compte.

  • Tous les déploiements seront terminés après 24 heures d’exécution conformément à notre politique de désinfection des serveurs, pour la maintenance de l’infrastructure, et pour éviter d’engendrer des coûts inattendus lorsque le déploiement n’a pas été arrêté correctement. Pour les serveurs de longue durée, envisagez d’utiliser Flottes privées avec Persistance.

  • Voir Déploiements pour découvrir toutes les causes d’arrêt de votre déploiement.


Mon déploiement est prêt mais je ne parviens pas à me connecter pendant plusieurs minutes ensuite.

  • Une fois qu’un déploiement est Ready, l’initialisation de votre moteur de jeu commence. Ce processus peut prendre de quelques secondes à quelques minutes, et le serveur n’accepte pas les connexions des joueurs pendant cette période.

  • Envisagez d’optimiser l’initialisation de votre serveur afin de réduire cette durée.

  • Les clients de jeu devraient réessayer la connexion à intervalles d’1 seconde pendant une durée limitée (selon la durée de votre initialisation), après quoi ils devraient retourner au matchmaking.

  • Envisagez d’ajouter une scène de chargement afin que le serveur puisse effectuer l’initialisation (et le voyage dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux.


Mon appareil Meta Quest affiche HTTP 0 : impossible de résoudre l’hôte de destination .

  • Lors de la compilation d’applications Unity pour la cible Android, votre autorisation d’accès à Internet peut être supprimée automatiquement de l’artefact de build client APK de sortie.

  • Réajoutez les autorisations dans (nécessite ensuite de reconstruire le client) :

    • Paramètres du projet / OpenXR / ⚙️ Support Meta Quest / Forcer la suppression des autorisations Internet (décocher).

    • Paramètres du joueur / Accès Internet (définir sur requis).


Que se passera-t-il si un joueur quitte mon déploiement ?

  • Par défaut, les serveurs ne rejettent pas les connexions des joueurs. L’authentification des joueurs dépend de vos développeurs, car de nombreuses méthodes différentes et fournisseurs d’authentification de joueurs peuvent être utilisés.

  • Les clients de jeu peuvent stocker localement les informations de connexion afin de tenter de se reconnecter en cas de plantages inattendus du client.

  • Pour permettre aux joueurs de rejoindre des parties en cours, envisagez d’utiliser Regard approfondi ou Sessions.


Mon serveur affiche une utilisation CPU à 100 % après être devenu prêt.

  • Ce n’est peut-être pas un problème, car les moteurs de jeu ont tendance à effectuer des opérations gourmandes en CPU lors de l’initialisation du serveur. Si l’utilisation du CPU ne baisse pas 2 à 3 minutes après le début du déploiement, vous devrez peut-être optimiser votre serveur ou augmenter les ressources de la version de l’application.

  • Réduire le tick rate peut avoir un impact sur l’utilisation du CPU, car le serveur effectue moins d’opérations de messagerie.

  • Si vous utilisez le netcode Mirror, vous devez avoir « Auto Start Server » sélectionné dans votre NetworkManager , reconstruisez, poussez et redéployez votre serveur.

  • Si vous utilisez le netcode FishNet, vous devez activer « Start on Headless » dans votre ServerManager, reconstruisez, poussez et redéployez votre serveur.

  • Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans l’offre gratuite.

  • Vous pouvez modifier les ressources allouées pour les versions existantes, ou dupliquer votre version et modifier les ressources dans la nouvelle copie. Aucune de ces actions ne nécessite de reconstruire votre serveur.


Mon déploiement redémarre en boucle et affiche l’erreur arrêt OOM

  • Cela est causé par un dépassement de la quantité de mémoire allouée. Envisagez d’optimiser l’utilisation de la mémoire avec le pooling d’objets, la compression, ou en supprimant les objets inutiles de votre scène.

  • Assurez-vous que votre projet charge la scène par défaut contenant votre NetworkManager et que la scène est incluse dans les paramètres de build de Unity.

  • Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans l’offre gratuite.

  • Vous pouvez modifier les ressources allouées pour les versions existantes, ou dupliquer votre version et modifier les ressources dans la nouvelle copie. Aucune de ces actions ne nécessite de reconstruire votre serveur.


Parfois, l’utilisation de la mémoire (RAM) de mon serveur grimpe à une valeur élevée, est-ce un problème ?

  • Tant que vous restez dans la quantité de mémoire allouée à la version de l’application, ce n’est pas un problème.

  • Dépasser la quantité de mémoire allouée à la version de l’application entraînera arrêt OOM (voir ci-dessus).


Les performances de mon serveur seront-elles affectées par d’autres serveurs exécutés sur la même machine ?

  • Non, notre plateforme garantit que les ressources allouées ne seront pas utilisées par d’autres studios, ni par d’autres serveurs sur une infrastructure partagée. Avec Edgegap, il n’y a pas de voisins bruyants.

👉 Prochaines étapes

Une fois que vous disposez d'une configuration client/serveur fonctionnelle, assurez-vous de sauvegarder une copie de votre projet (en utilisant un logiciel de contrôle de version comme git) afin de toujours pouvoir retracer vos étapes en cas de problème.

Continuez à lire pour en savoir plus sur les sujets liés au cycle de vie des serveurs et à leur découvrabilité.

Si vous avez besoin d’aide, veuillez nous contacter sur Discord. Pour l’assistance aux jeux en direct, consultez notre système de tickets.

Arrêter les déploiements

Une fois le match terminé (ou lorsque les joueurs quittent), votre déploiement peut être arrêté afin d’économiser des coûts. Faire tourner des déploiements vides ou seulement partiellement remplis peut augmenter inutilement vos coûts !

Variables injectées

Lisez des informations utiles comme l’ID de déploiement, l’adresse IP du serveur, l’emplacement du serveur, et plus encore ; en accédant aux variables d’environnement injectées. Chaque déploiement inclut automatiquement :

Automatisation de session

Automatisez les flux de jeu populaires pour gérer les sessions et la mise à l’échelle à la demande avec l’une ou l’autre des options suivantes :

Appariement:

  • Manches plus courtes

  • Parties à la demande

  • Classement par niveau et/ou Règles personnalisées

Navigateur de serveurs:

  • Persistant ou en manches

  • Hubs régionaux sociaux

  • Affectation automatique et/ou Recherche personnalisée

Backend personnalisé :

Optimiser les builds

Ne reconstruisez que les assets qui ont changé depuis le dernier build.

Envisagez d’utiliser les builds incrémentiels de Unity pour accélérer votre temps de build.

N’incluez que ce qui est absolument nécessaire au fonctionnement de votre serveur.

Désactivez le batching statique des maillages pour réduire la taille de l’image.

Compressez les maillages pour réduire la taille de l’image.

Implémentez un chargement différé conditionnel des ressources.

Envisagez d’utiliser builds Docker multi-étapes (lien).

  • Séparez les grandes dépendances serveur dans une image distincte à réutiliser dans des builds multi-étapes. Docker mettra en cache chaque couche et réutilisera simplement la version précédente, en ignorant le téléchargement de cette partie sauf instruction explicite, ce qui vous fera économiser de la bande passante et du temps d’attente pendant la fin de l’envoi.

  • Si vous ne savez pas pourquoi l’une de vos commandes Dockerfile génère une erreur, essayez de déboguer en local. Créez une nouvelle étape juste avant que le problème ne se produise (ajoutez un second FROM commande), utilisez --target pour indiquer au processus de build de s’arrêter à l’étape problématique, puis docker exec -it {container} /bin/bash pour entrer dans un terminal interactif à l’intérieur de votre conteneur. Ensuite, vous pouvez utiliser des commandes shell dans votre image de base pour approfondir vos investigations (p. ex. top sur Ubuntu).

Personnaliser l’image

Nous prenons également en charge l’ajout de votre propre Dockerfile pour les utilisateurs qui ont besoin de plus de contrôle sur leurs images en raison de l’optimisation de la taille de build, de dépendances superflues ou d’un processus de démarrage plus complexe. Vous pouvez éventuellement fournir un chemin vers votre Dockerfile personnalisé à l’étape Unity. Nous allons maintenant partager quelques conseils « à faire soi-même » et bonnes pratiques.

Assurez-vous toujours de travailler avec une version de serveur fonctionnelle.

  • Avant de supposer qu’un problème est lié au Dockerfile personnalisé, assurez-vous que votre build de serveur peut être démarré, et que le processus de build dans votre moteur de jeu n’a déclenché aucune exception ni erreur.

Testez toujours en local avant de téléverser.

  • Tester votre image localement vous fera gagner beaucoup de temps pendant que vous attendez la fin du téléversement. C’est aussi entièrement gratuit ✨ car cela ne nécessite aucune ressource Edgegap.

  • Lors des tests en local, assurez-vous de définir correctement votre port interne :

Assurez-vous de maîtriser les bases. Chaque Dockerfile a besoin de quelques commandes essentielles :

  • FROM {image} est votre image de base ; nous utilisons généralement un Linux pris en charge à long terme, mais toute image de base basée sur Linux fera l’affaire. Il s’agit généralement d’images publiques stockées sur Docker Hub. Référence Dockerfile ici. Référence Dockerfile ici.

  • COPY {source} {destination} pour copier votre build de serveur Linux depuis votre machine hôte dans l’image, afin de pouvoir le démarrer plus tard. Référence Dockerfile ici.

  • USER {user} doit suivre un commande useradd (Ubuntu) ou équivalent ; il vaut mieux ne pas tout exécuter en tant que root pour plus de sécurité. Référence Dockerfile ici.

  • CMD {command} sera la dernière ligne, appelant très probablement un StartServer.sh ou un script de démarrage de quelque sorte afin de vous assurer que votre serveur s’initialise correctement une fois que tout est configuré. Référence Dockerfile ici.

  • N’utilisez PAS VOLUME - vous ne pourrez pas monter de stockage local de cette façon sur Edgegap ; envisagez plutôt notre fonctionnalité de stockage de point de terminaison et utilisez un bucket S3, voir Stockage de point de terminaison,

  • EXPOSE 7777/UDP n’est pas requis ! Cela ne rendra pas réellement le port interne du serveur disponible depuis l’extérieur du conteneur ; ce n’est qu’une indication pour le développeur et le port doit être

Retardez la déclaration des paramètres jusqu’au dernier moment possible. La configurabilité > la composabilité en raison des longs temps de build du serveur. Appliquez cette approche aux commandes du Dockerfile afin de construire et téléverser plus rapidement.

  • Scénario : vous devez définir des paramètres comme le stade de déploiement, la version, le mode de jeu, la carte, le nombre de joueurs par serveur, la fréquence de sauvegarde, ou similaires.

  • Mauvaise solution : créer une image séparée pour chaque combinaison de vos paramètres. Vous passerez tout votre temps à reconstruire les images pour très peu d’avantages avec cette approche.

  • Meilleure solution - remplacez les paramètres de configuration juste à temps :

    1. paramètres de déploiement - fournis juste avant le déploiement - sélecteurs de matchmaking transmis sous forme de variables d’environnement, ou votre système personnalisé de gestion de session transmettant des variables d’environnement au moment du déploiement,

    2. paramètres de version - partagés pour tous les déploiements d’une version d’application - stade de déploiement, tag de l’artefact, secrets et points de terminaison tiers, et similaires ; puis

    3. une seule image - contient et charge toutes les options de configuration au lancement.

N’exécutez PAS de bases de données sur les déploiements Edgegap.

  • Les déploiements Edgegap ne sont pas destinés à des processus de longue durée et peuvent être arrêtés après une longue période d’exécution sans préavis. Une base de données (même distribuée) fonctionnant de cette manière peut être arrêtée et entraîner une perte irréversible de données. Si vous avez besoin d’une base de données, veuillez envisager un DBaaS tiers.

  • Envisagez d’utiliser nos Clusters gérés pour héberger des bases de données et des services de longue durée.

Vous êtes bloqué ? Nous sommes disponibles sur notre Discord communautaire et heureux de vous aider.

Mis à jour

Ce contenu vous a-t-il été utile ?