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

# Depurar servidores de juegos basados en procesos con LocalMultiplayerAgent

> Depure localmente un servidor de juegos multijugador de PlayFab encapsulando su servidor existente y ejecutándolo con LocalMultiplayerAgent en modo de proceso (sin contenedor).

# Cómo ejecutar un servidor de juegos con LocalMultiplayerAgent en modo de proceso

Este tutorial describe cómo:

* Crear una compilación con el ejemplo Wrapper
* Configurar MultiplayerSettings.json
* Ejecutar LocalMultiplayerAgent
* Probar la conexión con su juego

## Crear una compilación del juego

Para probar sus servidores de juegos con LocalMultiplayerAgent (LMA), debe crear una compilación del juego y guardarla en formato de archivo comprimido.
Para facilitarle la tarea, proporcionamos el ejemplo Wrapper con instrucciones y un script de PowerShell.

A continuación, siga el paso "[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)" para preparar su servidor de juegos para este tutorial.

## Configurar MultiplayerSettings.json

Vaya a la carpeta donde extrajo el conjunto de herramientas de LMA y abra el archivo MultiplayerSettings.json. Este archivo es un archivo ficticio de configuración de compilación que simula la compilación en MPS.

Puede rellenar el json con el [Generador de MultiplayerSettings.json de LMA](https://github.com/PlayFab/MpsAgent/tree/main/LocalMultiplayerAgent/SettingsJsonGenerator).
El Generador es una página web sencilla que crea un json basado en sus opciones. Puede encontrar el Generador en la carpeta extraída de LMA.

Este es el ejemplo de MultiplayerSettings.json para el ejemplo Wrapper para ejecutar LMA en modo de proceso.

```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"
        }
      }
    ]
  ],
}

```

Asegúrese de actualizar correctamente los campos siguientes en el archivo MultiplayerSettings.json para ejecutar LMA en modo de proceso.

* `LocalFilePath`: ruta local completa (en su estación de trabajo) al archivo zip del recurso del servidor de juegos creado anteriormente, por ejemplo: D:\MyAmazingGame\asset.zip (tenga en cuenta que las barras diagonales inversas deben escaparse para el formato JSON).

* `StartGameCommand`: la ruta de StartGameCommand para un proceso es una ruta relativa. El directorio de trabajo será donde se extraiga su recurso de juego.

* `PortMappingsList`: estos son los puertos que están disponibles para su juego mientras se ejecuta.
  * `NodePort` es el puerto que se abre en su estación de trabajo

  * `GamePort.Number` no es necesario para el modo de proceso. El número de puerto se enlazará al Node Port mediante el GSDK cuando su servidor de juegos esté en ejecución. En el escenario real, MPS enlazará el puerto dinámicamente para cada sesión de juego basada en procesos.

  * Establezca `GamePort.Name` en el mismo valor definido en su servidor de juegos. Puede comprobar la configuración del GSDK en tiempo de ejecución para obtener el valor con la clave GamePort.Name. Si usa el ejemplo Wrapper, el nombre del puerto ya está definido como "game\_port", por lo que debe establecer el mismo valor aquí.

  * `GamePort.Protocol`: especifique el tipo de protocolo: TCP o UDP

* `OutputFolder`: ruta a una unidad o carpeta donde se generan las salidas y los archivos de configuración. Asegúrese de que haya suficiente espacio disponible, ya que el servidor de juegos se extraerá en esta ruta. Si no se especifica, se usa la carpeta del agente.

* `AgentListeningPort`: este es el puerto que usa LMA para comunicarse con el servidor de juegos. Cualquier puerto abierto funcionará; 56001 es el valor predeterminado. Si tiene otro proceso enlazado al puerto 56001, debe cambiar este valor o finalizar el otro proceso en el puerto 56001.

* `ResourceLimits`: no es necesario para el modo de proceso.

* `MountPath`: no es necesario para el modo de proceso.

* `SessionCookie` (opcional): cualquier cookie de sesión que se pasa a su servidor de juegos como parte de la llamada a la API RequestMultiplayerServer. En el escenario real en MPS, después de establecer la conexión, el servidor notificará al cliente que cargue los recursos correspondientes desde SessionCookie.

## Ejecutar LocalMultiplayerAgent

Ahora ya puede ejecutar LocalMultiplayerAgent.

* En una ventana de PowerShell:\
  Vaya al directorio de LMA que contiene LocalMultiplayerAgent.exe.

* Ejecute `LocalMultiplayerAgent.exe`.
  En este punto, LMA configura el agente de escucha http, descomprime el recurso de juego e inicia el servidor de juegos en un proceso independiente.

  > Si ejecuta su servidor de juegos como proceso, es posible que el Firewall de Windows aparezca y le pregunte si desea permitir el tráfico al NodePort que especificó. Si desea evitarlo, puede ejecutar LocalMultiplayerAgent en modo de administrador o habilitar el puerto en el firewall.

LMA esperará los latidos del GSDK integrado con su servidor de juegos.
Si el GSDK está integrado correctamente, LMA imprime las salidas en el orden siguiente:

1. `CurrentGameState - Initializing`\
   (Es posible que esto no aparezca si su servidor de juegos llama directamente a GSDK::ReadyForPlayers y no llama a GSDK::Start)
2. `CurrentGameState - StandingBy`
3. `CurrentGameState - Active`
4. `CurrentGameState - Terminating`

Para obtener más información sobre los estados de un servidor de juegos, consulte [¿Qué es el ciclo de vida del servidor de juegos de PlayFab Multiplayer Server?](/services/playfab/multiplayer/servers/multiplayer-game-server-lifecycle).

Si las devoluciones de llamada de apagado están configuradas correctamente, su servidor de juegos se cerrará poco después de que el estado se establezca en terminating.
Es importante verificar que el servidor de juegos se cierra para evitar apagados incorrectos en la plataforma de PlayFab.

LMA también debería terminar junto con el juego.

## Probar la conexión con su juego

Una vez que LMA imprime **CurrentGameState - Active**, puede conectarse a su servidor de juegos mediante la dirección IP 127.0.0.1 y el puerto NodePort en el que su servidor de juegos está escuchando.

Si usa el ejemplo Wrapper, puede probar una solicitud GET introduciendo la dirección [http://127.0.0.1:56100/Hello](http://127.0.0.1:56100/Hello) en su explorador.
Para obtener más detalles, consulte el ejemplo Wrapper.

También puede actualizar los valores de **NumHeartBeatsForActivateResponse** y **NumHeartBeatsForTerminateResponse** en MultiplayerSettings.json para ajustar la duración del estado standing-by/active.


## Related topics

- [Depurar servidores de juegos en contenedores con LocalMultiplayerAgent](/es/services/playfab/multiplayer/servers/LocalMultiplayerAgent/run-container-gameserver.md)
- [Información general de LocalMultiplayerAgent](/es/services/playfab/multiplayer/servers/LocalMultiplayerAgent/local-multiplayer-agent-overview.md)
- [Conexión directa para depurar servidores de juegos](/es/services/playfab/multiplayer/servers/directly-debugging-game-servers.md)
- [Depuración local de servidores de juego e integración con PlayFab](/es/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab.md)
- [Determinación de los archivos DLL necesarios para servidores de juegos Windows](/es/services/playfab/multiplayer/servers/determining-required-dlls.md)
