Passer au contenu principal

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

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]
Il n’est pas obligatoire de les placer tous au même emplacement, mais c’est probablement utile ; par souci d’organisation, ce guide vous y encourage.

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 \\] :
Pour les besoins de ce guide, les parties du fichier json masquées par ... 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
Une fois votre fichier zip créé et toutes ces lignes définies sur les valeurs appropriées, vous pouvez régénérer LocalMultiplayerAgent et vous préparer à déboguer 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.

Résolution des problèmes

Nombreuses instances de ThirdPersonMPServer dans le Gestionnaire des tâches

Si plusieurs instances sont répertoriées (généralement 3 ou plus), vous devrez peut-être utiliser le Gestionnaire des tâches pour forcer la fermeture des instances restantes des tentatives précédentes.

LocalMultiplayerAgent lance deux instances de ThirdPersonMPServer

Si LocalMultiplayerAgent démarre plusieurs instances, recherchez l’ID de processus dont l’utilisation de la mémoire est comparativement élevée. Certaines configurations du serveur de jeu génèrent deux exécutables, qui s’exécutent par paire. Attachez-vous à celui dont l’utilisation de la mémoire est la plus élevée.

Étapes suivantes

Vous êtes maintenant prêt à déployer votre serveur dans le cloud. Vous pouvez également revenir au guide principal du plug-in Unreal GSDK.
Dernière modification le 8 octobre 2026