Unreal Engine
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.
Créer avec Docker Desktop est la méthode la plus rapide, la plus simple et la plus fiable pour commencer.
✔️ Préparation
Installer l’extension Docker Edgegap Quickstart
Installer depuis Docker Desktop / Extensions / Parcourir ou en utilisant le lien.

Vous êtes à l’aise avec vos builds de serveur ? Passez à Unreal Engine et Fonctionnalités avancées.
⚙️ 1. Configurer le projet
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 - renseignée automatiquement à partir des fichiers de votre projet.
☑️ Saisissez le nom d’utilisateur GitHub et PAT depuis ✔️ Préparation, pour télécharger les dépendances depuis GitHub.
🔧 2. Construire le serveur de jeu
Nous allons maintenant compiler et cuisiner votre projet, puis le empaqueter dans une image Docker facilement réutilisable.
☑️ 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 la build de votre serveur avant sa mise en ligne.
En général, il 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 pour le balisage, par ex.
2024.01.30-16.23.00-UTC(par défaut).
☑️ Construire le projet une fois que vous êtes satisfait de votre configuration. La réalisation de cette étape ajoutera une nouvelle image avec l’exécutable de votre serveur de jeu Linux dans votre client Docker local.
✅ Vous pouvez maintenant passer à l’étape suivante.
🧪 3. Tester le serveur localement
☑️ Sélectionnez la balise 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- voici votre conteneur local mappage des ports,-e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777est une variable d’environnement simulant un vrai déploiement Edgegap, indiquant à votre serveur de jeu le port interne sur lequel écouter les connexions des joueurs.
☑️ Une fois que vous êtes satisfait de votre configuration, cliquez sur Démarrer le serveur local. La réalisation de cette étape entraînera le démarrage d’un nouveau conteneur sur votre machine de développement.
☑️ Il est maintenant temps de connecter votre client de jeu Unreal Engine Editor (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.
✅ 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
Tout d’abord, assurez-vous que le conteneur est en cours d’exécution 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é.
Veuillez vous assurer d’avoir renommé votre fichier cible et configuré les builds du jeu comme décrit à l’étape ⚙️ 1. Configurer le projet.
Mon conteneur est en cours d’exécution, mais je n’arrive pas à me connecter pendant plusieurs minutes ensuite.
Une fois qu’un conteneur est en cours d’exécution, 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 pour réduire cette durée.
Les clients de jeu devraient réessayer la connexion à intervalles de 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 travel dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux côtés.
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 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 dans Modifier / Paramètres du projet / Cartes et modes.
☁️ 4. Publier sur Edgegap
☑️ Choisissez un nom d’application pour étiqueter et regrouper des images similaires sur Edgegap.
☑️ Sélectionnez la balise de l’image que vous souhaitez publier et Téléverser l’image. La réalisation de cette étape entraînera le téléversement de l’image de votre serveur vers le registre Edgeap et la création d’une nouvelle version de l’application dans votre navigateur web. Assurez-vous de créer votre mappage des ports lorsqu’on vous y invite, avec les valeurs par défaut.
Vous avez trouvé un bug et devez reconstruire/publier à nouveau ? Utilisez Reconstruire à partir des sources pour Unreal Engine et Unreal Engine rapidement avec les valeurs d’entrée actuelles de l’extension.
✅ Vous pouvez maintenant passer à l’étape suivante.
🚀 5. Déployer dans le cloud
☑️ 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 externedu déploiement, ouvrez la console Unreal dans le client de jeu (tilde ~) et tapez open {host}:{port} .
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
Tout d’abord, assurez-vous que le déploiement est prêt et qu’il n’y a aucune exception d’exécution ni erreur 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 la build de votre serveur correspond au port interne de votre version de l’application. Pour les builds de plugin, le port est configuré automatiquement pour vous. Vous pouvez modifier le mappage de 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 aléatoire pour des raisons de sécurité.
Veuillez vous assurer d’avoir renommé votre fichier cible et configuré les builds du 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 Pare-feu. Envisagez d’ajouter à votre flotte un serveur situé en Chine, ou d’utiliser un VPN pour vous connecter.
Mon déploiement est prêt, mais je n’arrive 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 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 pour réduire cette durée.
Les clients de jeu devraient réessayer la connexion à intervalles de 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 travel dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux côtés.
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 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 dans Modifier / Paramètres du projet / Cartes et modes.
Vérifiez que la vérification de compatibilité de 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.
En cas de plantage du processus serveur 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 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 service tiers de stockage des journaux.
Voir Déploiements pour découvrir toutes les causes possibles de l’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 terminé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’accumuler des coûts inattendus lorsque le déploiement n’a pas été arrêté correctement. Pour les serveurs longue durée, envisagez d’utiliser Flottes privées avec Persistance.
Voir Déploiements pour découvrir toutes les causes possibles de l’arrêt de votre déploiement.
Que se passera-t-il si un joueur quitte mon déploiement ?
Par défaut, les serveurs ne refusent pas les connexions des joueurs. L’authentification des joueurs dépend de vos développeurs, car de nombreuses méthodes et fournisseurs d’authentification des joueurs 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 Vue approfondie ou Sessions.
Mon serveur affiche 100 % d’utilisation du CPU après être devenu prêt.
Cela ne pose peut-être pas problème, car les moteurs de jeu ont tendance à effectuer des opérations gourmandes en CPU pendant l’initialisation du serveur. Si l’utilisation du CPU ne baisse 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 le tick rate peut aider à contrôler 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 d’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 causé par le 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 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 d’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 monte soudainement à 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
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.
👉 Prochaines étapes
Arrêter les déploiements
Découvrez différentes méthodes pour arrêter les déploiements une fois le match terminé et les joueurs partis.
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 StartServer.sh .
Vous préférez gérer le cycle de vie depuis Unreal ? Voir Outils pour développeurs pour le blueprint de self-stop API.
Connectez votre Stockage des points de terminaison pour récupérer les journaux de votre 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.
Vérifiez si l’instance actuelle est un client de jeu ou un serveur en vérifiant si la variable Edgegap est définie :
Profilage des serveurs
Pour comprendre et optimiser les problèmes de performance du serveur 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 la capture de traces dans votre serveur Unreal Engine (événements intégrés et personnalisés) :
enregistrer la trace sur le disque du serveur avec
-tracefile, téléverser vers un stockage tiers et analyser hors ligne,ou diffuser les données de trace avec Déploiements pour le port interne
1981sur le protocole UDP.
Analyser Aperçus mémoire et Aperçus réseau et Unreal Engine.
Matchmaking
Démarrer vos déploiements manuellement, en collant l’URL et les ports, ne suffira pas pour un jeu en direct.
En savoir plus sur le matchmaking pour déployer automatiquement, juste à temps, lorsque les joueurs se connectent.
Optimiser les builds du serveur
Configurez le découpage des assets pour isoler les assets réservés au client des assets du serveur.
Explorez les techniques et recommandations de découpage des assets par Epic.
Excluez les assets et plugins qui sont réservés au client et qui ne sont pas nécessaires au fonctionnement du serveur.
Apprenez-en davantage sur l’exclusion des assets et plugins au moment de la compilation.
Examinez votre stratégie de cuisson du contenu.
Envisagez Cooking on the Fly (COTF) pour retarder la cuisson des assets client et accélérer les builds du serveur.
Implémentez le streaming des niveaux pour réduire la charge mémoire à l’exécution.
Si votre conception maintient les joueurs principalement ensemble dans la même zone de la carte, le streaming des niveaux peut réduire la consommation mémoire de votre serveur de plus de 60 % et améliorer les performances client !
N’incluez que ce qui est absolument nécessaire au fonctionnement de votre serveur.
Le fait de copier des fichiers inutilisés dans vos images provoque un gonflement de l’image, des téléversements plus longs, des vitesses de mise en cache plus lentes et un démarrage global du serveur plus lent. Consultez les सुझाव d’optimisation des images Docker.
Envisagez d’utiliser des builds Docker multi-étapes (lien).
Séparez les grandes dépendances du serveur dans une image distincte afin de les réutiliser dans les 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 pour la fin du téléversement.
Si vous ne savez pas pourquoi une de vos commandes Dockerfile génère 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 un terminal interactif à l’intérieur de votre conteneur. Ensuite, vous pouvez utiliser les commandes shell dans votre image de base pour approfondir l’analyse (par ex.topsur Ubuntu).
Personnaliser l’image du serveur
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 des builds, de dépendances superflues, ou de la nécessité d’un processus de démarrage plus complexe. Nous allons maintenant partager quelques conseils « faites-le vous-même » et bonnes pratiques.
Mis à jour
Ce contenu vous a-t-il été utile ?

