> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Déboguer des serveurs de jeu basés sur un processus à l'aide de LocalMultiplayerAgent

> Déboguez localement un serveur de jeu multijoueur PlayFab en encapsulant votre serveur existant et en l'exécutant sous LocalMultiplayerAgent en mode processus (sans conteneur).

# Exécuter un serveur de jeu à l'aide de LocalMultiplayerAgent en mode processus

Ce tutoriel explique comment :

* Créer une build à l'aide de l'exemple Wrapper
* Configurer MultiplayerSettings.json
* Exécuter LocalMultiplayerAgent
* Tester la connexion à votre jeu

## Créer une build de jeu

Pour tester vos serveurs de jeu à l'aide de LocalMultiplayerAgent (LMA), vous devez créer une build de jeu et l'enregistrer au format archive.
Pour vous faciliter la tâche, nous fournissons l'exemple Wrapper avec des instructions et un script PowerShell.

Ensuite, suivez l'étape "[Wrapping an existing game server using the wrapper app](https://github.com/PlayFab/MpsSamples/tree/main/wrappingGsdk#wrapping-an-existing-game-server-using-the-wrapper-app)" pour préparer votre serveur de jeu pour ce tutoriel.

## Configurer MultiplayerSettings.json

Accédez au dossier dans lequel vous avez extrait l'ensemble d'outils LMA et ouvrez le fichier MultiplayerSettings.json. Ce fichier est un fichier de configuration de build simulé qui reproduit la build sur MPS.

Vous pouvez générer le json à l'aide du [générateur LMA MultiplayerSettings.json](https://github.com/PlayFab/MpsAgent/tree/main/LocalMultiplayerAgent/SettingsJsonGenerator).
Le générateur est une page web simple qui crée un json en fonction de vos options. Vous le trouverez dans le dossier extrait de LMA.

Voici un exemple de MultiplayerSettings.json pour l'exemple Wrapper permettant d'exécuter LMA en mode processus.

```json theme={null}
{
  "RunContainer": false, // Set RunContainer to false if you are running LMA in Process mode.
  "OutputFolder": "C:\\output\\WindowProcess", // Path where config files and logs will be generated from LMA at each run
  "NumHeartBeatsForActivateResponse": 10, // default value
  "NumHeartBeatsForTerminateResponse": 60, // default value
  //the server will run in stand-by mode for 10 heartbeats and stay in active state for 35 heartbeats.
  "TitleId": "59F84", // default value
  "BuildId": "8624d52e-87a1-4a12-b7f6-b92720ef8919", // default value
  "Region": "EastUs", // default value
  "AgentListeningPort": 56001, // default value
  "AssetDetails": [
    {
      "MountPath": "",  // Mount Path is only required for Container mode. leave it as blank.
      "SasTokens": null,
      "LocalFilePath": "D:\\gameassets.zip" // where your game server is located as an archive format.
    }
  ],
  "ProcessStartParameters": {
    "StartGameCommand": "wrapper.exe -g fakegame.exe arg1 arg2" 
    // shell command to run Wrapper. Command will be executed where game asset is extracted.
    // Make sure the StartGameCommand provided above is an example of the Wrapper sample. 
  },
  "PortMappingsList": [
    [
      {
        "NodePort": 56100, // default value
        "GamePort": {
          "Name": "game_port",
           // Port name is already defined in the Wrapper sample. Wrapper will grab the port information using game_port via GSDK while it's running.
          "Protocol": "TCP"
        }
      }
    ]
  ],
}

```

Assurez-vous de mettre à jour correctement les champs suivants dans MultiplayerSettings.json pour exécuter LMA en mode processus.

* `LocalFilePath` : chemin local complet (sur votre station de travail) du fichier zip des actifs du serveur de jeu créé précédemment, par exemple : D:\MyAmazingGame\asset.zip (notez que les barres obliques inverses doivent être échappées pour le format JSON).

* `StartGameCommand` : pour un processus, le chemin StartGameCommand est un chemin relatif. Le répertoire de travail est celui dans lequel vos actifs de jeu sont extraits.

* `PortMappingsList` : il s'agit des ports disponibles pour votre jeu pendant son exécution.
  * `NodePort` est le port ouvert sur votre station de travail

  * `GamePort.Number` n'est pas requis en mode processus. Le numéro de port est lié au NodePort au moyen du GSDK lorsque votre serveur de jeu s'exécute. Dans un scénario réel, MPS lie dynamiquement le port pour chaque session de jeu basée sur un processus.

  * Définissez `GamePort.Name` sur la même valeur que celle définie dans votre serveur de jeu. Vous pouvez vérifier cette valeur dans la configuration du GSDK au moment de l'exécution, avec la clé GamePort.Name. Si vous utilisez l'exemple Wrapper, le nom du port est déjà défini sur "game\_port"; vous devez donc définir la même valeur ici.

  * `GamePort.Protocol` : spécifiez le type de protocole : TCP ou UDP

* `OutputFolder` : chemin d'un lecteur ou d'un dossier dans lequel les sorties et les fichiers de configuration sont générés. Assurez-vous de disposer de suffisamment d'espace, car le serveur de jeu sera extrait sous ce chemin. Si ce champ n'est pas spécifié, le dossier de l'agent est utilisé.

* `AgentListeningPort` : il s'agit du port utilisé par LMA pour communiquer avec le serveur de jeu. N'importe quel port ouvert convient; 56001 est la valeur par défaut. Si un autre processus est lié au port 56001, vous devez modifier cette valeur ou arrêter l'autre processus sur le port 56001.

* `ResourceLimits` : non requis en mode processus.

* `MountPath` : non requis en mode processus.

* `SessionCookie` (facultatif) : tout cookie de session transmis à votre serveur de jeu dans le cadre de l'appel d'API RequestMultiplayerServer. Dans un scénario réel sur MPS, une fois la connexion établie, le serveur demande au client de charger les ressources correspondantes à partir de SessionCookie.

## Exécuter LocalMultiplayerAgent

Vous êtes maintenant prêt à exécuter LocalMultiplayerAgent.

* Dans une fenêtre PowerShell :\
  Accédez au répertoire de LMA qui contient LocalMultiplayerAgent.exe.

* Exécutez `LocalMultiplayerAgent.exe`.
  À ce stade, LMA configure l'écouteur http, décompresse les actifs du jeu et démarre le serveur de jeu dans un processus distinct.

  > Si vous exécutez votre serveur de jeu en tant que processus, le Pare-feu Windows peut s'afficher et vous demander si vous souhaitez autoriser le trafic vers le NodePort que vous avez spécifié. Pour éviter cela, vous pouvez exécuter LocalMultiplayerAgent en mode administrateur ou autoriser le port dans le pare-feu.

LMA attend les pulsations du GSDK intégré à votre serveur de jeu.
Si le GSDK est correctement intégré, LMA affiche les sorties dans l'ordre suivant :

1. `CurrentGameState - Initializing`\
   (Cette ligne peut ne pas s'afficher si votre serveur de jeu appelle directement GSDK::ReadyForPlayers sans appeler GSDK::Start)
2. `CurrentGameState - StandingBy`
3. `CurrentGameState - Active`
4. `CurrentGameState - Terminating`

Pour en savoir plus sur les états d'un serveur de jeu, consultez [Cycle de vie des serveurs de jeu de PlayFab Multiplayer Server](/fr-CA/services/playfab/multiplayer/servers/multiplayer-game-server-lifecycle).

Si les rappels d'arrêt sont correctement configurés, votre serveur de jeu se ferme peu après le passage à l'état Terminating.
Il est important de vérifier que le serveur de jeu se ferme afin d'éviter des arrêts non contrôlés sur la plateforme PlayFab.

LMA doit également se terminer en même temps que le jeu.

## Tester la connexion à votre jeu

Une fois que LMA affiche **CurrentGameState - Active**, vous pouvez vous connecter à votre serveur de jeu à l'aide de l'adresse IP 127.0.0.1 et du port NodePort sur lequel votre serveur de jeu écoute.

Si vous utilisez l'exemple Wrapper, vous pouvez tester une requête GET en saisissant l'adresse [http://127.0.0.1:56100/Hello](http://127.0.0.1:56100/Hello) dans votre navigateur.
Pour plus de détails, consultez l'exemple Wrapper.

Vous pouvez également mettre à jour les valeurs de **NumHeartBeatsForActivateResponse** et de **NumHeartBeatsForTerminateResponse** dans MultiplayerSettings.json pour ajuster la durée des états StandingBy/Active.


## Related topics

- [Déboguer des serveurs de jeu en conteneur avec LocalMultiplayerAgent](/fr-CA/services/playfab/multiplayer/servers/LocalMultiplayerAgent/run-container-gameserver.md)
- [Vue d'ensemble de LocalMultiplayerAgent](/fr-CA/services/playfab/multiplayer/servers/LocalMultiplayerAgent/local-multiplayer-agent-overview.md)
- [Test et débogage du projet GSDK](/fr-CA/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
- [Débogage local des serveurs de jeu et intégration à PlayFab](/fr-CA/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab.md)
- [Se connecter directement pour déboguer les serveurs de jeu](/fr-CA/services/playfab/multiplayer/servers/directly-debugging-game-servers.md)
