Un wrapper es una solución alternativa que procesa las secuencias de salida estándar y de error para llamar a los métodos del GSDK y no está pensado para su uso en producción.
Contenido del ejemplo
Este ejemplo consta de dos aplicaciones de consola de .NET Core.- Wrapper: integra el paquete NuGet más reciente del SDK de servidor de juego de PlayFab (GSDK) con su servidor de juego. Esta aplicación wrapper no está pensada para su uso en producción
- Fakegame: un servidor de juego básico que no tiene conocimiento alguno del GSDK. Es como un servidor de juego típico que tendría antes de usar PlayFab Multiplayer Servers. Inicia Kestrel, el servidor web de ASP.NET Core, que escucha en el puerto TCP 80. Está pensado para simular un servidor de juego que no tiene absolutamente ningún conocimiento del GSDK. Puede usarlo si no tiene un servidor de juego propio. Tiene dos rutas GET que podemos usar: /hello para obtener una respuesta simple y /hello/terminate, que puede terminar el servidor.
Requisitos
Para poder usar y ver los PlayFab Multiplayer Servers, debe habilitar la característica desde Game Manager. Para obtener instrucciones, consulte Habilitación de la característica de servidores de PlayFab.
Tutorial
Para ver un tutorial en vivo de la compilación de este ejemplo, consulte nuestra presentación de Microsoft Game Dev 2021 (comienza aproximadamente en el minuto 2:52):Obtención y compilación del ejecutable de Wrapper
- Obtenga el ejemplo de wrapper del GSDK usando los métodos estándar de Git o descargándolo como archivo zip
- Abra el símbolo del sistema y use el comando cd para cambiar la ruta del directorio a la ubicación del archivo wrapper.csproj. Ejemplo: cd C:/ReplaceWithYourFilePath/wrappingGsdk/wrapper
- A continuación, ejecute el siguiente comando de la CLI de .NET Core:
Creación de un recurso de servidor de juego
Hay dos maneras de crear un recurso de servidor de juego.Uso del servidor de juego Fakegame con el wrapper
Use build.ps1 para compilar y empaquetar ambos proyectos (wrapper y fakegame). Este script crea una carpeta drop con un archivo .zip que contiene los archivos necesarios.- Abra PowerShell
- Use el comando cd para cambiar la ruta del directorio a la ubicación del script build.ps1. Ejemplo: cd C:/ReplaceWithYourFilePath/wrappingGsdk/
- Ejecute \build.ps1
- Después de que el script se ejecute correctamente, vaya a la carpeta ..\wrappingGsdk\drop. Encontrará un archivo gameassets.zip que contiene la compilación del servidor de juego falso, el ejecutable del wrapper (compilado en el paso anterior) y otros archivos necesarios.
Uso de sus propios archivos de servidor de juego con el wrapper
Para usar su proyecto de juego en la evaluación, coloque el wrapper y el ejecutable de su servidor de juego en la misma carpeta.- Siga las instrucciones de Compilación del ejecutable del wrapper
- Vaya a la ubicación de publicación del wrapper en ..\wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish
- En otra ventana, vaya a la compilación de su servidor de juego y a los archivos necesarios para ejecutarla. Si no está seguro de qué archivos se necesitan, consulte Determinación de los archivos DLL necesarios
- Copie la compilación del servidor de juego y todos los archivos necesarios en la ubicación de publicación del wrapper
- Seleccione todos los archivos de la ubicación de publicación del wrapper
- Con todos los archivos seleccionados, haga clic con el botón derecho y seleccione Send to > Compressed (zip) files to zip. No seleccione la carpeta de publicación del wrapper para agregarla al zip. Esto provocaría una asignación incorrecta.
Creación y carga de la imagen de contenedor de Linux (solo para servidores Linux)
Para crear una imagen de contenedor de Linux, necesitará un Dockerfile. Un Dockerfile es un archivo de texto sin extensión que contiene todos los comandos necesarios para compilar una imagen de contenedor determinada. En este ejemplo, este archivo ya está creado para usted. Todo lo que tiene que hacer es compilar la imagen de contenedor y ejecutarla. Si desea usar su dispositivo de desarrollo de Windows, deberá instalar el Subsistema de Windows para Linux (WSL). Las instrucciones se proporcionan a continuación. Para obtener más información, consulte Diferencias entre imágenes de contenedor de Windows y Linux.- Configure su dispositivo de desarrollo de Windows (opcional)
- Obtenga sus credenciales de inicio de sesión del registro de contenedor de PlayFab
- Use un Dockerfile existente o cree el suyo propio
Este paso es diferente según use FakeGame o su propio servidor de juego.
- Si usa FakeGame, compruebe que tiene el Dockerfile
- Si usa su juego o necesita crear un Dockerfile, consulte Creación de su Dockerfile. Puede usar el Dockerfile de FakeGame como punto de partida.
- Abra su terminal de Linux con Docker instalado, como Ubuntu. Reemplace los valores de las variables TAG y ACR por sus valores. A continuación, ejecute los comandos siguientes.
- Escriba el nombre de usuario y la contraseña obtenidos en el paso anterior.
- Compile y cargue la imagen de contenedor de Linux.
Implementación de una compilación con Game Manager o la API
El proceso de implementación de compilaciones es similar para los servidores de juego de Windows y Linux.Implementación de servidores de juego de Windows
Los pasos son similares a los del ejemplo de Windows Runner en C#. Siga estos pasos con las diferencias que se indican a continuación.- Uso de Game Manager para implementar y configurar servidores
- Uso de PowerShell/API para implementar y configurar servidores
- Comando de inicio:
- Use C:\Assets\wrapper.exe -g C:\Assets\fakegame.exe arg1 arg2
- Reemplace fakegame.exe por el nombre del ejecutable de su servidor de juego, si usa su propia compilación de servidor de juego
- Configuración de red: Nombre: gameport, Puerto: 80, Protocolo: TCP
- Recursos: cuando use FakeGame, cargue gameassets.zip como recurso.
Implementación de servidores de juego de Linux
Siga los pasos generales que se indican a continuación para implementar.- Uso de Game Manager para implementar y configurar servidores
- Uso de PowerShell/API para implementar y configurar servidores
- Seleccione el contenedor que cargó
- Configuración de red: Nombre: gameport, Puerto: 80, Protocolo: TCP
- No es necesario cargar recursos ni establecer el Start Command
Durante la asignación al usar la API RequestMultiplayerServer, el puerto al que se conecte será diferente del 80. Esto se debe a que el servicio PlayFab Multiplayer Server creará una asignación entre Azure Load Balancer (que expone sus puertos a la Internet pública) y los servidores de juego que se ejecutan en las máquinas virtuales de Azure.
Ejecución del wrapper con LocalMultiplayerAgent
Se recomienda encarecidamente usar LocalMultiplayerAgent si desea probar la integración del GSDK en sus servidores de juego personalizados. Si usa LocalMultiplayerAgent con contenedores de Windows, debe configurar correctamente el archivo MultiplayerSettings.json. A continuación encontrará un ejemplo; preste especial atención a los valores de LocalFilePath y StartGameCommand. No olvide reemplazar fakegame.exe por el nombre del ejecutable de su servidor de juego.Cómo conectarse a un servidor de juego en MPS
Para establecer una conexión con un servidor de juego en MPS, es esencial determinar el número de puerto apropiado. Este requisito surge de la configuración en la que varias máquinas virtuales, cada una de las cuales puede ejecutar numerosas instancias de servidor de juego, se administran detrás de un equilibrador de carga. En tal configuración, un único puerto de IP pública puede corresponder a puertos diferentes en estas máquinas virtuales, cada uno asociado a una instancia de servidor de juego distinta.Uso de Game Manager
Puede usar la interfaz de usuario de Game Manager para asignar un servidor de juego y establecer una conexión con él.- Inicie sesión en Game Manager
- Vaya a la página Multiplayer => Servers y seleccione su compilación
- Vaya a la página Servers y haga clic en el botón “Request server”.
- En la página siguiente, tome nota de la dirección IPv4 pública y del puerto.
- Use curl para conectarse en http://[IPV4Address]:[Ports->Num]/Hello.”
Uso del ejemplo MPS Allocator
A continuación se explica cómo puede usar el ejemplo MPS Allocator para asignar un servidor de juego y establecer una conexión con él.- Compile y ejecute el ejemplo MPS Allocator.
- Aplique el comando “ListBuildSummaries” para ver las compilaciones disponibles y sus identificadores de compilación correspondientes.
- Invoque “RequestMultiplayerServer” para iniciar una solicitud de una instancia de servidor de juego.
- Introduzca el identificador de compilación seleccionado en el comando “ListMultiplayerServers” para generar una lista de servidores disponibles.
- Elija una instancia de servidor de juego activa y, a continuación, use “GetMultiplayerServerDetails” con los identificadores de compilación y de sesión obtenidos en los pasos anteriores.
- Tome nota de IPV4Address y Ports->Num que se muestran en la respuesta.
- Use curl para conectarse en http://[IPV4Address]:[Ports->Num]/Hello.
