Comment ajouter des serveurs dédiés aux jeux multijoueurs Unreal

Docker for Game Servers
Docker for Game Servers
Docker for Game Servers

Modifier : Présentation de l' Extension Docker, qui aide les développeurs Unreal à créer des builds à partir de conteneurs ! Cela signifie concrètement que les développeurs de jeux ont la capacité de créer des builds beaucoup plus rapidement (de 2,5 heures à 8,5 minutes en moyenne) grâce à l'absence de nécessité de construire Unreal à partir de la source. En savoir plus ici.

Pour les développeurs recherchant des solutions de serveurs dédiés ("autoritatives"), EOS recommande de s'intégrer avec des services tiers comme Edgegap.

-> Cet article est basé sur la documentation Démarrage. Si vous rencontrez des problèmes ou des divergences, veuillez vous référer au guide original, car ils sont plus fréquemment mis à jour.

0. Préparation

Déployez votre premier serveur dédié sur Edgegap

À la fin de ce guide, vous aurez déployé un serveur dédié avec Edgegap gratuitement.

1. Configurez votre projet

Que vous utilisiez une machine Windows, Mac ou Linux, vous devrez construire votre serveur pour l'exécution Linux, car la plupart des fournisseurs de cloud actuels (y compris Edgegap) fonctionnent sous Linux. Ne vous inquiétez pas, aucune connaissance en Linux n'est requise.

☑️ Commencez par vérifier votre version d'Unreal Engine - pré-remplie avec la valeur de vos fichiers de projet.

☑️ Entrez le nom d'utilisateur GitHub et le PAT de la ✔️ Préparation, pour télécharger les dépendances de GitHub.

☑️ Désactivez la vérification de la compatibilité de la version d'Unreal Engine pour les serveurs dédiés et définissez IpNetDriver comme le pilote par défaut ou de secours pour la mise en réseau de la réplication:

[ConsoleVariables]

net.IgnoreNetworkChecksumMismatch=1

net.CurrentHandshakeVersion=2

net.MinHandshakeVersion=2

net.VerifyNetSessionID=0

net.VerifyNetClientID=0

[/Script/Engine.GameEngine]

!NetDriverDefinitions=ClearArray

+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[/Script/OnlineSubsystemUtils.IpNetDriver]

MaxClientRate=1000000000

MaxInternetClientRate=1000000000

InitialConnectTimeout=120.0

MaxNetTickRate=60

NetServerMaxTickRate=60

[/Script/BuildSettings.BuildSettings]

DefaultServerTarget=LyraServer

☑️ Redémarrez Unreal Engine pour recharger les derniers changements.

☑️ Créez un script de cible de serveur dédié en copiant votre fichier <PROJECT>Editor.Target.cs dans le dossier racine du projet et en renommant la copie en <PROJECT>Server.Target.cs.

☑️ Remplacez toutes les références au mot Editor par Server dans votre script de cible de serveur.

☑️ Activez les journaux du serveur de sortie standard en ajoutant des remplacements dans votre script de cible de serveur:

bUseLoggingInShipping = true;

bOverrideBuildEnvironment = true;

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

  1. Construire le Serveur de Jeu

Nous allons maintenant construire et préparer votre projet, et le conditionner dans une image docker facilement réutilisable.

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

Pour aider à rendre votre serveur fiable, nous utilisons Docker - un logiciel de virtualisation pour 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é.

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

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

    • Généralement, cela inclura le nom de votre jeu - par exemple "mon-serveur-de-jeu".

  • Étiquette 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 marquage, par exemple 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 votre exécutable de serveur de jeu Linux dans votre client Docker local.

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

  1. 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 télécharger et de déployer (ce qui peut prendre un peu de temps).

☑️ Sélectionnez l'étiquette de l'image que vous souhaitez exécuter localement (les images distantes seront téléchargées). Optionnellement, davantage d'arguments docker run peuvent être fournis pour personnaliser votre test local :

  • -p 7777:7777/udp - c'est votre mappage de port de conteneur local,

  • -e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777 est une variable d'environnement simulant un déploiement réel Edgegap, indiquant à votre serveur de jeu le port interne sur lequel écouter pour les connexions des joueurs.

☑️ Une fois que vous êtes satisfait de votre configuration, appuyez 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.

☑️ 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.

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écharger sur Edgegap et commencer à l'exécuter n'importe où dans le monde. Dans ce guide, nous utiliserons le Registry de Conteneurs d'Edgegap (stockage pour images).

☑️ Choisissez un nom d'application pour étiqueter et regrouper des images similaires sur Edgegap.

☑️ Sélectionnez l'étiquette de l'image que vous souhaitez publier et Téléchargez l'Image. La réalisation de cette étape entraînera le téléchargement de votre image de serveur sur le registre Edgegap et la création d'une nouvelle version d'Application dans votre navigateur. Assurez-vous de créer votre mappage de port lorsque vous y êtes invité, avec les valeurs par défaut.

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

5. Déployer dans le Cloud

C'est la dernière étape de ce guide, après laquelle vous aurez un serveur déployé sur le cloud Edgegap, auquel des joueurs de partout dans le monde pourront se connecter.

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

☑️ Une fois que vous êtes prêt, appuyez sur Déployer dans le Cloud, attendez d'atteindre 3. Déploiement Prêt. La réalisation 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 votre console. Assurez-vous également que vos journaux de Conteneur ne montrent aucune erreur et que vos mesures de Conteneur n'indiquent pas une utilisation de ressources à 100% (vCPU ou mémoire), sinon de nouvelles connexions de joueurs pourraient être rejetées ou votre serveur pourrait être 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 dernier test et connecter votre Unreal Engine Editor à votre déploiement cloud. Récupérez votre Hôte de Déploiement à la place de l'IP du serveur et le port externe du Déploiement, ouvrez la console Unreal dans le client de jeu (tilde ~) et tapez open {host}:{port} .

☑️ Une fois que vous avez vérifié que vous pouvez vous connecter à votre Déploiement sans problème et que vous avez terminé vos 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 à résoudre le problème, nous sommes présents sur notre Discord Communautaire et heureux d'aider.

🙌 Félicitations pour votre premier Déploiement sur Edgegap ! Si vous souhaitez en savoir plus, continuez à lire. Assurez-vous de consulter notre mise en relation pour regrouper les joueurs avant de déployer un serveur de jeu.

Écrit par

l'équipe Edgegap

Sources et/ou collaboration de contenu avec

Services en ligne épiques

Intégrer Edgegap facilement en quelques minutes

Intégrer Edgegap facilement en quelques minutes