Unreal Engine - 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.
Construire avec Docker Desktop est la méthode la plus rapide, la plus simple et la plus fiable pour démarrer.
✔️ 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 :
Installez Docker Desktop et l’extension Docker Edgegap
Installez Docker Desktop depuis la source officielle (aucun compte requis).
Redémarrez votre ordinateur après avoir terminé l’installation.
Accédez à Paramètres ⚙️ > Extensions > Activer les extensions Docker.
Installez l’extension Docker Edgegap Quickstart
Installez depuis Docker Desktop / Extensions / Parcourir ou en utilisant le lien.

Accédez aux ressources Unreal Engine sur GitHub
Accédez à votre page du tableau de bord des comptes liés Unreal Engine.
Liez le compte GitHub à votre compte Epic.
Autorisez Epic Games à accéder à votre compte GitHub.
Acceptez l'invitation par e-mail pour rejoindre l'organisation Epic Games sur GitHub.
Générer un jeton d'accès personnel GitHub (classique)
activer uniquement l'autorisation
[lecture:packages],générer le jeton - stockez cette valeur en lieu sûr, vous ne la verrez plus.
Confiant dans vos builds de serveur ? Passez à Unreal Engine et Fonctionnalités avancées.
⚙️ 1. Configurer le projet
Que vous utilisiez une machine Windows, Mac ou Linux, vous allez devez construire votre serveur pour l'exécution sous Linux, car la plupart des fournisseurs cloud aujourd'hui (y compris Edgegap) fonctionnent sous Linux. Ne vous inquiétez pas, aucune connaissance en Linux n'est requise.
Cette méthode ne nécessite pas de télécharger le code source d’Unreal Engine, ni de le compiler à partir des sources !
☑️ Commencez par vérifier votre version d’Unreal Engine - prérempli avec la valeur de vos fichiers de projet.
☑️ Saisissez le nom d’utilisateur GitHub et PAT de ✔️ Préparation, pour télécharger les dépendances depuis GitHub.
Générer un jeton d'accès personnel GitHub (classique)
activer uniquement l'autorisation
[lecture:packages],générer le jeton - stockez cette valeur en lieu sûr, vous ne la verrez plus.
☑️ Désactiver la vérification de compatibilité de la version d'Unreal Engine pour les serveurs dédiés et définir IpNetDriver comme le pilote par défaut ou le pilote de secours pour le réseau de réplication :
Assurez-vous de saisir votre DefaultServerTarget à la fin de cet extrait!
☑️ Redémarrer Unreal Engine pour recharger les derniers changements.
☑️ Créer un script de cible pour serveur dédié en copiant votre <PROJECT>Editor.Target.cs fichier dans le dossier racine du projet et en renommant la copie en <PROJECT>Server.Target.cs.
☑️ Remplacez toutes les références à mot Editor par Server dans votre script de cible serveur.
☑️ Modifier les paramètres par défaut de la build serveur en éditant votre script de cible serveur :
✅ Vous pouvez maintenant passer à l'étape suivante.
Facultatif : Intégration Steam
Pour intégrer Steam, utilisez IpNetDriver comme votre pilote réseau par défaut et vérifiez que le steamclient.so 64 bits pour Linux est copié dans l'image sur le chemin /home/ubuntu/.steam/sdk64/ .
Ajouter steamclient.so bibliothèque Linux en un clic en utilisant notre extension Docker.
Assurez-vous de désactiver le réseautage Steam, qui envoie des paquets via Steam Relay et peut causer des problèmes de connexion ou des pics de latence. Ceci ne vous empêche pas d'utiliser d'autres fonctionnalités Steamworks comme les classements, les succès, la voix ou la publication de votre jeu sur le Steam Store.
🔧 2. Compiler le serveur de jeu
Nous allons maintenant compiler et cuisiner votre projet, puis le regrouper dans une image Docker facilement réutilisable.
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.
☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :
Nom de l’image est un identifiant unique de votre choix, qui étiquette votre build de serveur avant son déploiement.
En général, 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 les tags, par exemple
2024.01.30-16.23.00-UTC(par défaut).
☑️ Compiler le projet une fois que vous êtes satisfait de votre configuration. En terminant cette étape, une nouvelle image contenant l’exécutable de votre serveur de jeu Linux sera ajoutée dans votre client Docker local.
✅ Vous pouvez maintenant passer à l’étape suivante.
🧪 3. 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).
☑️ Sélectionnez le tag de l’image que vous souhaitez exécuter localement (les images distantes seront téléchargées). En option, davantage arguments docker run peuvent être fournis pour personnaliser votre test local :
-p 7777:7777/udp- il s’agit du mappage de port de votre conteneur local,-e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777est une variable d’environnement qui simule un véritable déploiement Edgegap, indiquant à votre serveur de jeu le port interne sur lequel écouter les connexions des joueurs.
☑️ Une fois votre configuration prête, cliquez sur Démarrer le serveur local. En terminant cette étape, un nouveau conteneur sera lancé sur votre machine de développement.
☑️ Il est maintenant temps de connecter votre client de jeu de l’éditeur Unreal Engine (PIE) à votre conteneur de serveur local. Ouvrez la console Unreal PIE avec ~ (tilde) et connectez-vous avec open <ip>:<port>:
ip=localhostou127.0.0.1(équivalent dans la plupart des cas),port= valeur de port externe aléatoire du conteneur dans l’interface Docker.

☑️ 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
Impossible de connecter les clients au serveur - Délai de la requête dépassé. , 请求超时 , ConnectionFailed , ou Échec de la vérification du port
Vérifiez d’abord que le conteneur est démarré et qu’il n’y a aucune erreur d’exécution dans vos journaux.
Veuillez vérifier que les valeurs de port dans la commande
docker runcorrespondent.Veuillez vous assurer que votre client de jeu se connecte au port externe affiché sur la page des détails de votre conteneur ; cette valeur sera toujours aléatoire pour des raisons de sécurité.
Assurez-vous d’avoir renommé votre fichier cible et configuré les builds de jeu comme décrit à l’étape ⚙️ 1. Configurer le projet.
Mon conteneur est démarré, mais je ne parviens pas à m’y connecter pendant plusieurs minutes ensuite.
Une fois qu’un conteneur est démarré, l’initialisation de votre moteur de jeu commence. Ce processus peut durer 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 pour réduire cette période.
Les clients de jeu doivent retenter la connexion à intervalles d’1 seconde pendant une durée limitée (selon la durée de votre initialisation), puis revenir au matchmaking.
Envisagez d’ajouter une scène de chargement afin que le serveur puisse effectuer l’initialisation (et le déplacement dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux.
Avertissement : impossible de créer le socket pour l’adresse de liaison
Veuillez installer le plugin Steam Subsystem d’Epic via la boutique d’assets Fab.
Lors de l’utilisation d’Edgegap Integration Kit (EGIK) avec la version source de SteamCore téléchargée depuis GitHub, le plugin Steam Subsystem d’Epic n’est pas inclus en raison des politiques de distribution des plugins d’Epic Games.
Je me suis connecté, mais mon écran est complètement noir.
Vérifiez que vous avez le bon Carte par défaut du jeu défini sous Édition / Paramètres du projet / Cartes et modes.
☁️ 4. Publier 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).
☑️ Choisissez un nom d’application pour étiqueter et regrouper des images similaires sur Edgegap.
☑️ Sélectionnez le tag de l’image que vous souhaitez publier et Téléverser l’image. En terminant cette étape, vous téléverserez l’image de votre serveur vers le registre Edgeap et une nouvelle version de l’application sera créée dans votre navigateur web. Assurez-vous de créer votre de votre conteneur local lorsque cela vous est demandé, avec les valeurs par défaut.
Vous avez trouvé un bug et devez reconstruire/publier à nouveau ? Utilisez Reconstruire depuis la source pour Unreal Engine et Unreal Engine avec les valeurs d’entrée actuelles de l’extension rapidement.
✅ 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.
🚀 5. 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 éditeur Unreal Engine à votre déploiement cloud. Récupérez votre hôte du déploiement à la place de l’IP du serveur et du port externe, ouvrez la console Unreal dans le client de jeu (tilde ~) et saisissez open {host}:{port} .

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.
Désactiver le VPN lors des tests pour des conditions plus réalistes et recevoir un déploiement à faible latence.
☑️ 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.
En cas de problème, inspectez les journaux du tableau de bord de votre déploiement.
Si vous ne parvenez pas à identifier le problème, nous traînons dans notre Discord Communautaire et heureux de vous aider.
🙌 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 la requête dépassé. , 请求超时 , ConnectionFailed , ou Échec de la vérification du port
Vérifiez d’abord que le déploiement est prêt et qu’il n’y a aucune exception ni erreur d’exécution dans le journal de votre déploiement. Si votre déploiement s’est arrêté, consultez les journaux dans notre tableau de bord.
Veuillez vérifier que le paramètre de port dans les réglages netcode de votre build de serveur correspond au port interne dans votre version de l’application. Pour les builds avec plugin, le port est défini automatiquement pour vous. Vous pouvez modifier le mappage de port en modifiant 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 aléatoire pour des raisons de sécurité.
Assurez-vous d’avoir renommé votre fichier cible et configuré les builds de jeu comme décrit à l’étape Unreal Engine.
Ê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 est prêt, mais je ne parviens pas à m’y 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 durer 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 pour réduire cette période.
Les clients de jeu doivent retenter la connexion à intervalles d’1 seconde pendant une durée limitée (selon la durée de votre initialisation), puis revenir au matchmaking.
Envisagez d’ajouter une scène de chargement afin que le serveur puisse effectuer l’initialisation (et le déplacement dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux.
Avertissement : impossible de créer le socket pour l’adresse de liaison
Veuillez installer le plugin Steam Subsystem d’Epic via la boutique d’assets Fab.
Lors de l’utilisation d’Edgegap Integration Kit (EGIK) avec la version source de SteamCore Integration Kit (SIK) téléchargée depuis GitHub, le plugin Steam Subsystem d’Epic n’est pas inclus en raison des politiques de distribution des plugins d’Epic Games.
Je me suis connecté, mais mon écran est complètement noir.
Vérifiez que vous avez le bon Carte par défaut du jeu défini sous Édition / Paramètres du projet / Cartes et modes.
Vérifiez que le la vérification de compatibilité de la version d’Unreal Engine a été désactivée dans
DefaultEngine.ini.
Mon déploiement s’est arrêté/redémarré et je n’ai plus accès à 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 identifier la cause racine.
Nous conservons les journaux uniquement pendant la durée du déploiement ; si vous souhaitez les consulter 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 du niveau gratuit ont une limite de 60 minutes, veuillez envisager de mettre à niveau votre compte.
Tous les déploiements seront arrêtés après 24 heures d’exécution, conformément à notre politique de nettoyage des serveurs, pour la maintenance de l’infrastructure, et afin d’éviter d’engendrer des coûts inattendus lorsqu’un 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.
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 et fournisseurs d’authentification différents peuvent être utilisés.
Les clients de jeu peuvent stocker localement les informations de connexion afin de tenter une reconnexion en cas de plantage inattendu du client.
Pour permettre aux joueurs de rejoindre des parties en cours, envisagez d’utiliser Coup d'œil approfondi ou Sessions.
Mon serveur affiche une utilisation CPU de 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 redescend pas après 2 à 3 minutes suivant le démarrage du déploiement, vous devrez peut-être optimiser votre serveur ou augmenter les ressources de la version de l’application.
Réduire la fréquence des ticks peut aider à maîtriser l’utilisation du CPU en traitant moins de messages.
Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le niveau gratuit.
Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version de l’application. Vous pouvez dupliquer votre version de l’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.
Mon déploiement redémarre en boucle et affiche l’erreur OOM kill
Cela est dû au dépassement de la quantité de mémoire allouée. Envisagez d’optimiser l’utilisation de la mémoire avec du pooling d’objets, de la compression ou en supprimant les objets inutiles dans votre scène.
Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le niveau gratuit.
Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version de l’application. Vous pouvez dupliquer votre version de l’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.
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 provoquera
OOM kill(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.
👉 É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 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é.
Arrêter les déploiements
Une fois que la partie se termine (ou que les joueurs partent), votre déploiement peut être arrêté pour réduire les coûts. Laisser des instances vides ou seulement partiellement remplies peut augmenter inutilement vos coûts !
Si vous avez suivi ce guide et construit avec notre extension Docker, vous pouvez simplement appeler la méthode FGenericPlatformMisc::RequestExit . Nous avons ajouté un script gérant le processus de votre serveur dans l’image empaquetée, qui effectuera automatiquement un arrêt gracieux du déploiement.
Pour personnaliser la gestion du cycle de vie du serveur, modifiez notre exemple script StartServer.sh .
Vous préférez gérer le cycle de vie depuis Unreal ? Voir Outils de développement pour le blueprint de l’API d’arrêt automatique.
Connectez votre Stockage des points de terminaison pour obtenir vos journaux de déploiement, sinon ils seront supprimés !
Variables injectées
Lisez des informations utiles comme l’ID du 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 :
Variables de déploiement - fournies automatiquement par Edgegap,
Variables de matchmaking - fournies automatiquement par Edgegap lors de l’utilisation de Appariement,
Variables de version de l’application - paires clé-valeur personnalisées configurables par vous.
Importez notre Outils de développement pour lisez facilement des variables typées à l’aide des Blueprints.
Profilage des serveurs
Pour comprendre et optimiser les problèmes de performance des serveurs sur Edgegap, explorez Déploiements, Déploiements, et plus encore Déploiements outils à votre disposition.
Vous pouvez également utiliser les outils de profilage Unreal Engine existants avec Edgegap :
Configurez le tracing dans votre serveur Unreal Engine (événements intégrés et personnalisés) :
enregistrez la trace sur le disque du serveur avec
-tracefile, téléversez-la vers un stockage tiers et analysez-la hors ligne,ou diffusez les données de trace avec Déploiements pour le port interne
1981via le protocole UDP.
Analyser Aperçus mémoire et Aperçus réseau et Unreal Engine.
Automatisation des sessions
Lancer vos déploiements manuellement, en collant l’URL et les ports, ne suffira pas pour un jeu en direct.
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 :
Manches plus courtes
Parties à la demande
Classement par niveau et/ou Règles personnalisées
Persistant ou en manches
Hubs régionaux sociaux
Affectation automatique et/ou Recherche personnalisée
Backend personnalisé :
Migrer des parties en cours
Optimiser les builds
Configurez le fractionnement des ressources pour isoler les ressources réservées au client des ressources du serveur.
Explorez les techniques et recommandations de fractionnement des ressources d’Epic.
Excluez les ressources et plugins qui sont réservés au client et non requis pour l’exécution du serveur.
En savoir plus sur l’exclusion des ressources et plugins au moment du build.
Passez en revue votre stratégie de cuisson du contenu.
Envisagez la cuisson à la volée (COTF) pour retarder la cuisson des ressources client et accélérer les builds du serveur.
Mettez en œuvre le streaming de niveaux pour réduire la charge mémoire à l’exécution.
Si votre conception garde les joueurs principalement ensemble dans la même zone de carte, le streaming de niveaux peut réduire de plus de 60 % l’utilisation mémoire de votre serveur et améliorer les performances du client !
N’incluez que ce qui est absolument nécessaire au fonctionnement de votre serveur.
Copier des fichiers inutilisés dans vos images entraîne une inflation de l’image, des téléversements plus longs, des vitesses de cache plus lentes et un démarrage global du serveur plus lent. Consultez les सुझाव d’optimisation des images Docker.
Envisagez d’utiliser les builds Docker multi-étapes (lien).
Séparez les grandes dépendances du serveur dans une image distincte pour les 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éversement de cette partie sauf instruction contraire explicite, ce qui vous fera économiser de la bande passante et du temps d’attente jusqu’à la fin du téléversement.
Si vous ne savez pas pourquoi l’une de vos commandes Dockerfile provoque une erreur, essayez de déboguer localement. Créez une nouvelle étape juste avant que le problème ne se produise (ajoutez une deuxième
FROMcommande), utilisez--targetpour indiquer au processus de build de s’arrêter à l’étape problématique, puisdocker exec -it {container} /bin/bashpour entrer dans le terminal interactif à l’intérieur de votre conteneur. Ensuite, vous pouvez utiliser des commandes shell dans votre image de base pour approfondir l’investigation (par ex.topsur 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 du build, de dépendances superflues ou d’un processus de démarrage plus complexe. Nous allons maintenant partager quelques conseils « faites-le vous-même » et bonnes pratiques.
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 nécessite aucune ressource Edgegap.
Lorsque vous testez localement, assurez-vous de définir correctement votre port interne :
Assurez-vous d’avoir les bases. Chaque Dockerfile a besoin de quelques commandes essentielles :
FROM {image}est votre image de base ; pour les projets Unity nous utilisons généralement une distribution Linux prise en charge à long terme, mais toute image de base basée sur Linux fera l’affaire. Ce sont généralement des 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 un commande useradd (ubuntu) ou équivalent, il est préférable de ne pas tout exécuter en tant querootpour être du côté sûr. Référence Dockerfile ici.CMD {command}sera la dernière ligne, appelant très probablement unStartServer.shou une sorte de script de démarrage pour s’assurer que votre serveur s’initialise correctement une fois tout configuré. Référence Dockerfile ici.NE PAS utiliser
VOLUME- vous ne pourrez pas monter de stockage local de cette manière sur Edgegap, considérez plutôt notre fonctionnalité Endpoint Storage et utilisez un bucket S3, voir Endpoint Storage,EXPOSE 7777/UDPn’est pas requis ! Cela ne rendra pas réellement le port interne du serveur disponible depuis l’extérieur du conteneur, c’est seulement un indice pour le développeur et le port doit êtrepublié 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 longs temps de build serveur. Appliquez cette approche aux commandes Dockerfile pour construire et téléverser plus rapidement.
Scénario : vous devez définir des paramètres tels que 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 :
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,
paramètres de version - partagés pour tous les déploiements sur une version d’application - stade de déploiement, tag de l’artifact, secrets et points de terminaison tiers, et similaires ; puis
une seule image - contient et charge toutes les options de configuration lors du lancement.
NE PAS exécuter de bases de données sur les déploiements Edgegap.
Les déploiements Edgegap ne sont pas conçus pour 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 interrompue 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 à longue durée d’exécution.
Mis à jour
Ce contenu vous a-t-il été utile ?

