uUnreal 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

chevron-rightInstaller l’extension Docker Edgegap Quickstartarrow-up-righthashtag
circle-info

Vous êtes à l’aise avec vos builds de serveur ? Passez à Unreal Engine et Fonctionnalités avancées.

⚙️ 1. Configurer le projet

circle-info

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 runarrow-up-right peuvent être fournis pour personnaliser votre test local :

  • -p 7777:7777/udp - voici votre conteneur local mappage des ports,

  • -e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777 est 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 = localhost ou 127.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.

chevron-rightDépannage et FAQhashtag

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 run correspondent.

  • 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.

circle-check

✅ 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} .

chevron-rightDépannage et FAQhashtag

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 bordarrow-up-right.

  • 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’applicationarrow-up-right. 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’applicationarrow-up-right 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 Fleetsarrow-up-right? 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.


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 journauxarrow-up-right.

  • 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 Sessionsarrow-up-right.


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.sharrow-up-right .

circle-info

Vous préférez gérer le cycle de vie depuis Unreal ? Voir Outils pour développeurs pour le blueprint de self-stop API.

circle-exclamation

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 :

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 :

Matchmaking

Démarrer vos déploiements manuellement, en collant l’URL et les ports, ne suffira pas pour un jeu en direct.

circle-check

Optimiser les builds du serveur

Configurez le découpage des assets pour isoler les assets réservés au client des assets du serveur.

Excluez les assets et plugins qui sont réservés au client et qui ne sont pas nécessaires au fonctionnement du serveur.

Examinez votre stratégie de cuisson du contenu.

Implémentez le streaming des niveaux pour réduire la charge mémoire à l’exécution.

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

chevron-rightExemple .dockerignore fichier pour supprimer les fichiers supplémentaires.hashtag

Envisagez d’utiliser des builds Docker multi-étapes (lien)arrow-up-right.

  • 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 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 les commandes shell dans votre image de base pour approfondir l’analyse (par ex. top sur 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 ?