Déploiement local et débogage de l’exemple de projet ThirdPersonMP
Ce guide montre comment exécuter votre serveur de jeu sur votre machine locale, d’une manière conforme à MPS, afin de pouvoir tester et déboguer votre serveur avant de le charger sur PlayFab.Objectifs
- Tester les options de déploiement local du projet ThirdPersonMP+GSDK.
- Vérifier que votre serveur s’exécute correctement lorsqu’il est lancé à l’aide de LocalMultiplayerAgent
- Vérifier que vous pouvez attacher un débogueur à votre instance de serveur
Exigences
- Téléchargez Visual Studio. La version Community est gratuite.
- Charges de travail requises : Développement .NET Desktop et Développement Desktop en C++
- Téléchargez le code source d’Unreal Engine. Pour obtenir des instructions, consultez Downloading Unreal Engine Source code (externe).
- Un projet Unreal finalisé dans lequel le GSDK Unreal PlayFab est installé et configuré
- La configuration “Development Server” de votre projet, générée depuis Visual Studio
- [Facultatif] Téléchargez LocalMultiplayerAgent
- [Facultatif] Vous pouvez également télécharger le code source de LocalMultiplayerAgent.
- La configuration “Debug” ou “Release” de LocalMultiplayerAgent, générée à partir de ce référentiel avec Visual Studio
- Dans Visual Studio, ouvrez MpsAgent.sln, sélectionnez la configuration Debug ou Release, puis générez LocalMultiplayerAgent.
- [Facultatif] Installez Docker pour Windows
Notation
{depot} désigne le chemin Windows complet de l’emplacement où vous téléchargez vos projets Git. Il peut s’agir de n’importe quel emplacement, par exemple C:\depot, S:\depot, Z:\gitrepos, ou tout autre lecteur et chemin qui vous conviennent. Il est généralement recommandé (en particulier pour Unreal) que votre chemin {depot} soit aussi court que possible. Pour l’auteur, {depot} correspond à :M:\depot\GSDK. Par exemple, avec la liste des exigences ci-dessus, vous disposerez probablement de tout ou partie des éléments suivants :
- {depot}/ThirdPersonMP
- {depot}/MpsAgent
- [Facultatif] {depot}/gsdk [contient le plug-in PlayFab Unreal GSDK précédemment installé dans ThirdPersonMP]
- [Facultatif] {depot}/UnrealMarketplacePlugin [contient le plug-in PlayFab de la Marketplace Unreal, qui n’est pas requis pour ce guide, mais qui l’est pour la plupart des fonctionnalités de PlayFab]
Instructions
Exécution locale, sans conteneurs
Vous devez d’abord configurer LocalMultiplayerAgent pour qu’il exécute votre projet de serveur. La première itération exécute le processus directement sur votre PC local, sans aucune isolation. Dans l’Explorateur, recherchez et ouvrez le fichier :{depot}\MpsAgent\LocalMultiplayerAgent\MultiplayerSettings.json. Voici une version abrégée de ce fichier, contenant les parties importantes pour ce guide [NOTEZ les \ échappés dans les chemins du json : comme il s’agit d’un fichier json, tous les \ doivent être échappés en \\] :
... ci-dessus utilisent simplement les valeurs par défaut du projet. Le rôle et les valeurs des champs importants sont les suivants :
- RunContainer : pour ce guide, cette valeur est toujours false. La définir sur true nécessite Docker.
- Lorsque cette valeur est true, ProcessStartParameters/StartGameCommand est ignoré et ContainerStartParameters/StartGameCommand est utilisé à la place
- Lorsque cette valeur est true, tout est généré et exécuté dans un conteneur Docker plutôt que dans le contexte de la machine locale
- Ce guide couvre le scénario où RunContainer est false, afin de pouvoir déboguer plus facilement le processus du serveur
- La définition de cette valeur sur true nécessite une build Shipping Server, ainsi que Docker pour Windows
- OutputFolder :
"<Local absolute path that will be used to store the required output artifacts>"- Cet emplacement doit être entièrement défini, et un répertoire valide doit exister à cet emplacement.
- AssetDetails/LocalFilePath : {PATH-TO-ZIP}
- Cet emplacement doit être entièrement défini, et un fichier zip valide doit exister à cet emplacement
- Ce fichier zip doit contenir une build “Shipping Server” entièrement construite
- PortMappingsList :
- Il s’agit de l’équivalent, dans LocalMultiplayerAgent, de la définition du port dans Game Manager
- Le plug-in GSDK est codé en dur pour rechercher un port nommé : gameport
- La méthode SetDefaultServerHostPort du plug-in GSDK remplace en interne le port d’hébergement du serveur Unreal pour qu’il corresponde à ce port
- Le plug-in GSDK n’utilise que le port nommé gameport, configuré dans PortMappingsList lors de l’utilisation de LocalMultiplayerAgent.
- Ce json vous permet de tester localement le pilotage de ce numéro de port par MPS et garantit que votre plug-in GSDK le recevra correctement
- ContainerStartParameters/StartGameCommand : tant que RunContainer est false, ce champ n’est pas utilisé.
- Lorsque RunContainer==true, il remplace ProcessStartParameters/StartGameCommand
- Ce chemin est le chemin interne au conteneur Docker ; il correspond à AssetDetails/MountPath, suivi du chemin interne de l’exe dans votre fichier zip défini par AssetDetails/LocalFilePath
- Pour cet exemple, il pourrait s’agir de :
C:\\Assets\\ThirdPersonMPServer.exe -log
- ProcessStartParameters/StartGameCommand : cette commande correspond en pratique au chemin de votre exe, suivi des éventuels paramètres de ligne de commande utilisés pour démarrer votre serveur de jeu
- -log est une commande Unreal qui demande au serveur de jeu d’enregistrer un journal d’exécution
- {PATH-TO-EXE} peut prendre l’une des deux formes suivantes :
- Un chemin absolu vers un exe de votre serveur de jeu (même un serveur de jeu de développement), suivi des éventuels paramètres de ligne de commande de votre serveur
- Ce choix ignore le contenu du fichier zip et exécute à la place n’importe quel exe, à n’importe quel emplacement
- Il s’agit d’une option de débogage local qui ne fonctionne que sur votre machine locale pour déboguer les builds de développement : elle ne vous aide pas à vérifier que votre fichier zip est prêt à être chargé sur MPS
- Ce choix doit être utilisé pour tester un serveur de développement, adapté à l’attachement d’un débogueur VS
- Pour cet exemple, il pourrait s’agir de :
{depot}\\ThirdPersonMP\\Binaries\\Win64\\ThirdPersonMPServer.exe -log - Pour l’auteur, il s’agit de :
M:\\depot\\GSDK\\ThirdPersonMPGSDK\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
- Un chemin relatif, qui doit indiquer le chemin relatif dans votre fichier zip permettant d’exécuter votre serveur
- Il s’agit du flux de travail standard, qui reproduit le fonctionnement sur une instance cloud MPS
- Ce choix doit être utilisé pour tester un serveur de distribution ; il permet de vérifier que votre zip est prêt à être chargé sur MPS
- Pour cet exemple, il pourrait s’agir de :
ThirdPersonMPServer.exe -log
- Un chemin absolu vers un exe de votre serveur de jeu (même un serveur de jeu de développement), suivi des éventuels paramètres de ligne de commande de votre serveur
Déboguer votre serveur
Vous pouvez exécuter LocalMultiplayerAgent depuis Visual Studio à l’aide de la commande “Start New Instance”, parfois associée à F5, ou accéder à{depot}\LocalMultiplayerAgent\bin\{configuration}\netcoreapp3.1 et double-cliquer sur “LocalMultiplayerAgent.exe”. Vous pouvez également l’exécuter depuis une fenêtre cmd pour observer ou capturer les informations du journal de débogage.
L’exécution de LocalMultiplayerAgent.exe devrait démarrer votre serveur de jeu. Il est généralement utile d’ouvrir le Gestionnaire des tâches pour cette étape. Vous trouverez l’ID de processus de votre serveur de jeu dans l’onglet Détails du Gestionnaire des tâches.
Une fois que le processus ThirdPersonMPServer apparaît en cours d’exécution dans le Gestionnaire des tâches, vous pouvez revenir à Visual Studio et sélectionner la liste déroulante Debug -> Attach to Process. Dans la fenêtre contextuelle, recherchez le nom de votre processus, ThirdPersonMPServer, puis sélectionnez l’ID de processus approprié, identifié dans le Gestionnaire des tâches.
À ce stade, vous devriez pouvoir déboguer normalement votre serveur de jeu.
REMARQUE : Unreal propose plusieurs configurations de build et plusieurs façons de générer votre serveur. Pour de meilleurs résultats, utilisez la configuration “Development Server” et la sortie générée directement depuis Visual Studio. Les builds Shipping ou les builds générées depuis le Development Editor peuvent mieux convenir à d’autres situations, mais la configuration “Development Server” générée directement depuis Visual Studio est plus facile à attacher et à déboguer dans Visual Studio.
