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

# Asignar servidores de juegos y conectar el depurador de Visual Studio

> Aprenda a asignar servidores de juegos multijugador de PlayFab con RequestMultiplayerServer y a asociar las herramientas de depuración de Visual Studio a una sesión en ejecución.

## Asignación de sesiones multijugador

Con los servidores multijugador 2.0 de PlayFab, puede asignar instancias de su aplicación de servidor multijugador mediante la API [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver).

Normalmente, esta API se llama desde sus propios servicios (quizás un servicio de emparejamiento o un servicio de sala), mediante una clave secreta de desarrollador de PlayFab configurada para el título específico. Para obtener más información sobre las claves secretas, consulte [Administración de claves secretas](/services/playfab/live-service-management/gamemanager/secret-key-management).

Un patrón típico para reunir a los jugadores y asignar servidores:

1. Los clientes recopilan información de QoS de red.
2. Los clientes interactúan con un servicio de emparejamiento personalizado, o se reúnen mediante invitaciones sociales.
3. Un servicio de emparejamiento personalizado asigna una sesión para el grupo, mediante una lista priorizada de regiones.

**RequestMultiplayerServer** tiene varios parámetros clave:

* **BuildID**: la compilación de servidor específica que se va a asignar.
* **SessionID**: un identificador para la sesión. *Se trata de una cadena GUID generada por el autor de la llamada*. Los reintentos de esta API para la misma sesión lógica deben reutilizar el mismo identificador. Esto mitiga la posibilidad de que el comportamiento de reintento del autor de la llamada cree servidores innecesarios.
* **SessionCookie**: datos arbitrarios que se comunicarán mediante el SDK del servidor de juegos a la sesión asignada en el momento de la activación. Un uso típico de este campo es comunicar una clave compartida que los servidores de juegos usan para autenticar a los clientes. *Los datos deben ocupar menos de 4 kilobytes*.
* **PreferredRegions**: una lista ordenada de regiones usada para asignar servidores. Se recomienda usar las mediciones de QoS de red recopiladas de los dispositivos cliente como factor principal para clasificar las regiones.

Una asignación correcta devolverá la siguiente información:

* La dirección **IPv4** del servidor.
* Las asignaciones de puertos **TCP/UDP** (consulte [Conexión de clientes a servidores de juegos](/services/playfab/multiplayer/servers/connecting-clients-to-game-servers)).
* La **región** del servidor.

<Note>
  Puede usar MpsAllocatorSample (disponible [aquí](https://github.com/PlayFab/MpsSamples/tree/master/MpsAllocatorSample)) como una forma sencilla de asignar servidores de juegos durante el desarrollo de su juego
</Note>

## Asignación desde el cliente

Los servidores multijugador son costosos y eficaces. De forma predeterminada, solo puede solicitar un servidor multijugador desde su *propio* servicio de confianza mediante una clave secreta de desarrollador de PlayFab.

Sin embargo, asignar servidores *directamente* desde los dispositivos de los jugadores puede ahorrarle el costo de implementar llamadas de servicio a servicio y resultar útil en algunas circunstancias.

Para habilitar la asignación desde el cliente:

* Seleccione **Settings** en el menú de la izquierda.
* Seleccione la pestaña **API Features**.
* A continuación, active la opción **Allow Client to start games**.

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/tutorials/game-manager-settings-api-features-allow-client-to-start-games.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=3096df2ab104fcd3bed5015146b33436" alt="Game Manager - Settings - API Features - Allow Client to start games" width="1133" height="1200" data-path="images/playfab/multiplayer/servers/tutorials/game-manager-settings-api-features-allow-client-to-start-games.png" />

Cuando esta opción está activada, puede llamar a [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) mediante el token de entidad de cualquier jugador asociado al título.

## Depuración de un servidor multijugador implementado

Es posible que desee depurar de forma remota un servidor de juegos mientras está implementado en Azure. Con Visual Studio, actualmente esto requiere instalar y configurar las herramientas de depuración remota de Visual Studio en el contenedor.

<Note>
  El procedimiento siguiente habilitará la depuración no segura y sin autenticación.
</Note>

El procedimiento siguiente *solo* debe aplicarse a compilaciones de servidor destinadas a desarrollo y pruebas, y *evitarse en general* en un entorno orientado a los jugadores.

1. Obtenga las herramientas de depuración remota de VS2017:

```cmd theme={null}
Invoke-WebRequest -OutFile rtools_setup_x64.exe -Uri
https://aka.ms/vs/15/release/RemoteTools.amd64ret.enu.exe
```

2. Incluya estas herramientas en el paquete de recursos de su servidor de juegos.
3. Como parte de la creación de la compilación de servidor en Game Manager o con la Entity API, configure el puerto TCP 4022 como puerto de depuración.
4. Deberá ejecutar `msvsmon` dentro del contenedor para habilitar la depuración remota. Un patrón común es especificar un script CMD como comando de inicio del juego, y usar un argumento de línea de comandos para iniciar `msvsmon` además del ejecutable de su servidor de juegos.
5. Ejecute `msvsmon` una vez con:

```cmd theme={null}
/prepcomputer /quiet
```

6. Ejecute `msvsmon` con los marcadores (que se muestran a continuación).

```cmd theme={null}
/nostatus /noauth /nosecuritywarn /anyuser /nofirewallwarn /nodiscovery /port 4022
```

<Note>
  Se recomienda *indicar específicamente* el puerto para que su programa pueda controlar el código de salida del proceso si el puerto ya está en uso, en lugar de enlazarse a un puerto aleatorio que no esté abierto.
</Note>

7. Asigne su servidor de juegos.
8. Intente depurar mediante VS, usando el puerto de depuración externo devuelto por la llamada de asignación.


## Related topics

- [Depuración de proyectos de PC en dispositivos Windows remotos en Visual Studio](/es/tools/tools-pc/visualstudio/gr-vs-debugging-with-visualstudio-remote-windows.md)
- [Propiedades de Visual Studio para el desarrollo de juegos de PC](/es/tools/tools-pc/visualstudio/gr-vs-property-pages.md)
- [Plantillas de proyecto en Visual Studio para el desarrollo de juegos de PC](/es/tools/tools-pc/visualstudio/gr-vs-templates.md)
- [Depuración de proyectos de XBOX con Visual Studio](/es/tools/tools-console/visualstudio/debugging-with-visualstudio.md)
- [Visual Studio (contenido)](/es/tools/tools-pc/visualstudio/gr-visualstudio-toc.md)
