Unity

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 chez Edgegap (aucune carte de crédit requise).

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

Installer les modules de prise en charge de build Unity pour Linux
  • Utilisez Unity Hub pour sélectionner l'onglet Installe, accéder à Paramètres et Ajouter des modules pour chaque version d'Unity que vous prévoyez 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 build Linux (IL2CPP),

      • Prise en charge de build Linux (Mono),

      • Prise en charge de build serveur dédié Linux

Installer Docker Desktop (ou Docker CLI)
Installez le plugin Quickstart pour serveurs dédiés Unity d’Edgegap

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

Confiant dans vos builds serveur ? Aller à Unity ou Fonctionnalités avancées pour en savoir plus.

⚙️ 1. Connecter le compte

☑️ Connectez-vous et vérifiez qu’il n’y a pas de nouvelles erreurs dans votre console Unity liées 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 exemple contenant une copie du plugin installée de cette manière, vous devrez installer manuellement les dépendances du package, 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 allez devoir construire votre serveur pour l’exécution Linux, car la plupart des fournisseurs cloud aujourd’hui (y compris Edgegap) tournent sous Linux. Ne vous inquiétez pas, aucune connaissance Linux n’est requise pour accomplir cela avec notre plugin.

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

Installer les modules de prise en charge de build Unity pour Linux
  • Utilisez Unity Hub pour sélectionner l'onglet Installe, accéder à Paramètres et Ajouter des modules pour chaque version d'Unity que vous prévoyez 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 build Linux (IL2CPP),

      • Prise en charge de build Linux (Mono),

      • Prise en charge de build serveur dédié Linux

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

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

☑️ Optionnel : ajoutez un 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 que vous avez complété l’étape Unity, le script de vérification de port enregistrera un avertissement si votre adresse ou vos ports netcode ne correspondent pas à votre Mappage des ports de la version de l’application de 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 pas de nouvelles erreurs dans votre console Unity. Terminer cette étape entraînera la création d’un nouveau dossier apparaissant à la racine de votre projet - Builds/EdgegapServer/ServerBuild .

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

Dépannage et FAQ

Unity : Les seules cibles standalone prises en charge sont Windows x64 et OSX avec OpenXR.

  • Ouvrez vos Packages et désactivez OpenXR avant de construire votre serveur.

  • Le plugin OpenXR n’est requis que pour les clients et n’est pas compatible avec les builds serveur Linux. En l’excluant de vos builds 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 fonctionneront sur des milliers de machines serveur à travers le monde.

Pour aider à rendre votre serveur fiable, nous utilisons Docker — un logiciel de virtualisation permettant de garantir 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. Considérez Docker comme un moteur de programmation et Dockerhub comme son App Store.

☑️ Pour l’instant, commencez par cliquer sur le bouton Valider pour vous assurer que vous avez complété Outils pour développeurs.

Installer Docker Desktop (ou Docker CLI)

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

  • Chemin du build est le chemin relatif vers votre artefact de build serveur, gardons la valeur par défaut pour l’instant.

  • Nom de l’image est un identifiant unique de votre choix, étiquetant votre build serveur avant l’expédition.

    • Généralement, cela inclura le nom de votre jeu - par exemple « my-game-server ».

  • Tag 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 pour l’étiquetage, 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 l’instant, vous pouvez en lire plus plus tard dans la section Unity.

  • Paramètres facultatifs de build docker peuvent être utilisés pour donner des instructions supplémentaires à Docker sur des nuances plus fines.

☑️ Une fois satisfait de votre configuration, cliquez sur Conteneuriser avec Docker, attendez la fin du processus et vérifiez qu’il n’y a pas de nouvelles erreurs dans votre console Unity. Terminer cette étape entraînera la création d’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 le CLI docker en exécutant docker images .

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

Dépannage et FAQ

/bin/bash : docker : commande introuvable , ou n’a pas pu trouver Packages\com.edgegap.unity-servers-plugin\Editor

  • D’abord, assurez-vous d’avoir complété Outils pour développeurs.

  • Confirmez que vous avez vérifié votre compte Edgegap, vous devriez avoir reçu un lien de vérification par e-mail.

  • Certaines options peuvent avoir été réinitialisées après la mise à jour de Docker Desktop. Essayez d’aller dans Paramètres / Avancé de Docker Desktop et pour « Choisissez comment configurer l’installation des outils CLI de Docker : » sélectionnez « Système (nécessite mot de passe) ».


docker build requiert exactement 1 argument

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


(code HTTP 400) inattendu - format de tag invalide


ERROR : é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 Firewall. Essayez d’exécuter docker pull ubuntu:22.04 manuellement dans votre ligne de commande (ouvrez la ligne de commande en appuyant sur Win+R, puis tapez cmd et Entrée).


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

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


Mon image docker est énorme (plus de 1 Go) / minuscule (moins de 100 Mo), est-ce acceptable ?

  • 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, puis d’ajouter progressivement des options pour voir comment elles impactent 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 la téléverser 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) :

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

    • Par défaut, utilise le dernier tag que vous avez construit avec le plugin.

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

    • Vous pouvez publier plusieurs ports pour votre conteneur si nécessaire, ajoutez simplement le paramètre -p {port interne}/{protocole} pour chacun, par exemple -p 8080/tcp -p 7770/udp pour publier et mapper 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 vos paramètres de Transport ou spécifiques au netcode.

    • Si vous utilisez une machine avec architecture ARM (macOS M1, M2, M3, etc.), vous devriez voir ce paramètre optionnel inclus dans vos paramètres optionnels de build docker : --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 pas de nouvelles erreurs dans votre console Unity. Terminer cette étape provoquera 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 CLI Docker docker ps .

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

  • localhost ou 127.0.0.1 (é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 en utilisant mon client de jeu Unity Editor.

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

  • Ensuite, veuillez vérifier que le paramètre de port de votre Network Manager depuis votre build serveur correspond au port publié dans Paramètres optionnels de docker run. Si ce n’est pas le cas, essayez de réinitialiser ou de changer manuellement la valeur de ce champ pour qu’elle corresponde au {container} port dans votre paramètre Network Manager. Trouvez votre protocole dans vos paramètres d’intégration netcode.

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


(Segmentation fault) - noyau vidangé

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


SceneId de 9120233082191360994 non trouvé 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 remédier à cela, essayez de mettre à jour votre version d’intégration netcode ou mettre à jour votre plugin Edgegap.


http2 : server : erreur de lecture du préfixe depuis le client //./pipe/docker_engine : le fichier a déjà été fermé


Erreur Curl 35 : échec du handshake du certificat. Erreur fatale. Code d’erreur UnityTls : 7

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

☁️ 5. Télécharger sur 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 l’instant.

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

    • 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 le même tag d’image, par exemple v1.1.0 et dev .

    • En savoir plus sur Applications et versions plus tard.

  • Nom de l’image serveur de l’étape Unity.

  • Tag de l’image serveur de l’étape Unity.

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

☑️ Vous serez redirigé vers notre Tableau de bord, où vous pouvez configurer des paramètres optionnels. Terminer cette étape entraînera la création d’une nouvelle version d’application, et votre artefact de build sera tagué et téléversé dans le registre de conteneurs d’Edgegap.

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

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

Dépannage et FAQ

refusé : ajout de 756,6 Mio de ressources 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, il se peut que vous copiiez 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 à l'étape précédente.

🚀 6. Déployer dans le cloud

Ceci est l'étape finale de ce guide, après laquelle vous aurez 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, appuyez sur Déployer sur le Cloud, attendez d'atteindre Déploiements. L'exécution de cette étape entraînera la nouveau déploiement en cours de démarrage 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 les nouvelles connexions de joueurs peuvent être refusées ou votre serveur bloqué dans une boucle de redémarrage. Voir 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 depuis le déploiement :

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

  • 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 au hasard, afin qu’un attaquant potentiel (hacker) soit ralenti et détecté avant qu’il ne puisse 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 terminé les tests, Arrêter 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 - La requête a expiré. , 请求超时 , ÉchecDeConnexion , ou Échec de la vérification du port

  • D’abord, assurez-vous que le déploiement est Prêt, et qu’il n’y a pas d’exceptions d’exécution ou d’erreurs dans le journal de votre déploiement. Si votre déploiement s’est arrêté, inspectez les logs dans notre Tableau de bord.

  • Si vous utilisez le netcode Mirror, vous devez avoir "Auto Start Server" sélectionné dans votre NetworkManager , rebuild, push, et redéployez votre serveur.

  • Si vous utilisez le netcode FishNet, vous devez activer “Start on Headless” dans votre ServerManager, rebuild, push, et redéployez votre serveur.

  • Si vous utilisez Photon Fusion 2 netcode, veuillez vous assurer que votre serveur transmet l’IP publique du déploiement, le port externe et le roomCode sur le serveur, et le même code de salle dans le client dans le paramètre “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 Analyse approfondie.

  • 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 d’application. Vous pouvez changer le mappage de ports en modifiant le version d’application sans reconstruire. Trouvez votre protocole dans votre intégration netcode.

  • Veuillez vous assurer que votre client de jeu se connecte au port externe indiqué sur la page des détails de votre déploiement ; cette valeur sera toujours aléatoire 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 d’application configuration de port pour le port WSS a l’option TLS Upgrade activée.

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


Mon déploiement s’est arrêté/redémarré et je ne peux plus accéder à ses logs.

  • Si le processus 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 racine.

  • Nous ne conservons les logs que pendant la durée du déploiement ; si vous souhaitez inspecter les logs après l’arrêt du déploiement, veuillez intégrer un stockage de logs 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 du Free Tier ont une limite de 60 minutes, envisagez de mettre à niveau votre compte.

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

  • 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 peux pas me connecter pendant plusieurs minutes ensuite.

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

  • Envisagez d’optimiser l’initialisation de votre serveur pour diminuer cette période.

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

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


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

  • Lors de la construction d’applications Unity pour la cible Android, votre permission d’accès Internet peut être supprimée automatiquement de l’artefact APK client généré.

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

    • Project Settings / OpenXR / ⚙️ Meta Quest Support / Forcer la suppression des permissions Internet (décochez).

    • Player Settings / Internet Access (définir sur require).


Que se passe‑t‑il si un joueur quitte mon déploiement ?

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

  • Les clients de jeu peuvent stocker localement les informations de connexion pour tenter une reconnexion en cas de crash inattendu du client.

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


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

  • Cela peut ne pas être un problème, car les moteurs de jeu ont tendance à effectuer des opérations intensives en CPU lors des initialisations serveur. Si l’utilisation CPU ne diminue pas après 2–3 minutes depuis le démarrage du déploiement, vous devrez peut‑être optimiser votre serveur ou augmenter les ressources de la version d’application.

  • Réduire la fréquence de tick peut impacter l’utilisation CPU puisque 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 , rebuild, push, et redéployez votre serveur.

  • Si vous utilisez le netcode FishNet, vous devez activer “Start on Headless” dans votre ServerManager, rebuild, push, et redéployez votre serveur.

  • Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le Free Tier.

  • Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version d’application. Vous pouvez dupliquer votre version d’application dans notre Tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ou image.


Mon déploiement redémarre de manière répétée et affiche l’erreur OOM kill

  • Ceci est causé par le dépassement de la quantité de mémoire allouée. Envisagez d’optimiser l’utilisation mémoire avec du pooling d’objets, de la compression, ou en supprimant les objets inutiles dans 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 d’Unity.

  • Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le Free Tier.

  • Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version d’application. Vous pouvez dupliquer votre version d’application dans notre Tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ou image.


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

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

  • Dépasser la quantité de mémoire allouée à la version d’application provoquera OOM kill (voir ci‑dessus).


La performance de mon serveur sera‑t‑elle impactée 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 ou d’autres serveurs sur l’infrastructure partagée. Avec Edgegap, il n’y a pas de voisins bruyants.

👉 Étapes suivantes

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 gestion de versions comme git) afin de toujours pouvoir retracer vos étapes en cas de problème.

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

Arrêter les déploiements

Découvrez les différentes méthodes pour arrêter les déploiements une fois le match terminé et les joueurs partis.

Votre serveur Unity sera redémarré automatiquement en cas de crash ou d’épuisement de la mémoire.

Variables injectées

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

Vérifier si l’instance actuelle est un client de jeu ou un serveur en vérifiant si la variable Edgegap est définie :

Matchmaking

Lancer vos déploiements manuellement en collant URL et ports ne suffira pas pour un jeu en production.

Optimiser les builds serveur

Reconstruire uniquement les assets qui ont changé depuis le dernier build.

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

N’incluez que ce dont votre serveur a absolument besoin pour fonctionner.

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

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

Implémentez le chargement paresseux conditionnel des ressources.

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

  • Séparez les grosses dépendances serveur dans une image séparée à réutiliser dans des builds multi‑étapes. Docker mettra en cache chaque couche et réutilisera simplement la version précédente et évitera de téléverser cette partie sauf indication contraire, vous faisant économiser bande passante et temps d’attente du téléversement.

  • Si vous n’êtes pas sûr de la raison pour laquelle l’une des commandes de votre Dockerfile génère une erreur, essayez de déboguer localement. Créez une nouvelle étape juste avant que le problème n’arrive (ajoutez une seconde commande FROM ), 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 enquêter plus avant (par ex. top sur ubuntu).

Personnaliser l’image serveur

Nous supportons également 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 optionnellement fournir un chemin vers votre Dockerfile personnalisé à l’étape Unity. Nous allons maintenant partager quelques conseils et bonnes pratiques “faites‑le vous‑même”.

Des problèmes lors de l’utilisation de Websockets ou de requêtes HTTPS ?

  • Si vous obtenez Erreur Curl 35 : échec du handshake du certificat. Erreur fatale. Code d’erreur UnityTls : 7 ne désespérez pas, c’est un problème connu avec les anciennes images de base (FROM) incluant un certificat d’autorité racine expiré. Vous pouvez corriger cela en mettant à jour vers une version plus récente de l’image de base (par ex. ubuntu:22.04), et en exécutant update-ca-certificates , ajoutez ceci à votre Dockerfile :

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

  • Avant de supposer qu’un problème est lié au Dockerfile personnalisé, vérifiez que votre build serveur Unity peut démarrer et que le processus de build dans Unity n’a généré aucune exception ni erreur.

Testez toujours localement avant de téléverser.

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

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

Assurez-vous d’avoir les bases. Chaque Dockerfile nécessite quelques commandes essentielles :

  • FROM {image} est votre image de base ; pour les projets Unity nous utilisons généralement une distribution Linux à support à long terme, mais toute image de base basée sur Linux convient. 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 serveur Linux depuis votre machine hôte à l’intérieur de l’image, afin de pouvoir le démarrer plus tard. Référence Dockerfile ici.

  • USER {user} devrait suivre après une commande useradd (ubuntu) ou équivalente ; il est préférable de ne pas tout exécuter en tant que root pour être plus prudent. 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 quelconque pour s’assurer que votre serveur s’initialise correctement une fois que tout est configuré. Référence Dockerfile ici.

  • NE PAS utiliser VOLUME - vous ne pourrez pas monter de stockage local de cette manière sur Edgegap ; envisagez plutôt notre fonctionnalité Endpoint Storage et utilisez un bucket S3, voir Endpoint Storage,

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

    • publié lors des tests locaux avec docker run <image> -p 7777/udp ,

    • ou mappé dans Edgegap Port Mapping.

Différez la déclaration des paramètres jusqu’au dernier moment possible. Configurabilité > composabilité en raison des temps de build serveur longs. Appliquez cette approche aux commandes Dockerfile pour 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 similaire.

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

  • Meilleure solution - substituer les paramètres de configuration au dernier moment :

    1. paramètres de déploiement - fournis juste avant le déploiement - sélecteurs de matchmaking passés comme variables d’environnement, ou votre système de gestion de session personnalisé passant 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 d’artefact, secrets et points de terminaison tiers, et similaire ; puis

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

NE PAS exécuter de bases de données sur les déploiements Edgegap.

  • Les déploiements Edgegap ne sont pas destinés aux processus de longue durée et peuvent être terminé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 de données irréversible. Si vous avez besoin d’une base de données, veuillez envisager un DBaaS tiers.

  • Envisagez d’utiliser notre Managed Clusters pour héberger des bases de données et des services à longue durée d’exécution.

Vous butez sur un obstacle ? Nous sommes disponibles sur notre Discord communautaire et ravis d’aider.

Mis à jour

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