Adición del GSDK al proyecto
En este artículo se describe cómo actualizar un proyecto existente para que pueda hospedarse en PlayFab Multiplayer Servers (MPS). El proceso implica agregar y configurar el GSDK de PlayFab en un proyecto de Unreal. Las instrucciones aquí presentadas están escritas usando el proyecto de plantilla ThirdPersonMP de Unreal. Tenga en cuenta que su proyecto de Unreal debe tener las siguientes capacidades:- Redes
- Multijugador
- Servidor de juego dedicado
Objetivos
Agregaremos y configuraremos el GSDK de Unreal de PlayFab en su proyecto y lo probaremos localmente para verificar que se espera que funcione en PlayFab Multiplayer Services.Requisitos
- Descargue Visual Studio. La versión Community es gratuita.
- Cargas de trabajo necesarias: desarrollo de escritorio de .NET y desarrollo para el escritorio con C++
- Descargue el código fuente de Unreal Engine. Para obtener instrucciones, consulte Descarga del código fuente de Unreal Engine (externo).
- Un proyecto de ejemplo ThirdPersonMP completado, o un proyecto con capacidades similares
- Complemento GSDK de Unreal de PlayFab
- [Opcional] Complemento de PlayFab en el Marketplace o la versión de código fuente en GitHub. Este complemento no es necesario para el GSDK, pero sí lo es para muchos servicios de PlayFab, incluido el inicio de sesión.
Implementación en C++
Adición del complemento al proyecto
Siga estos pasos para agregar el GSDK de Unreal a su proyecto:- Vaya a su proyecto de Unreal
- Abra el Explorador de archivos y cree una carpeta Plugins en el directorio raíz de su juego. En la carpeta Plugins, cree una carpeta llamada PlayFabGSDK.
- Vaya a {depot}\GSDK\gsdk\UnrealPlugin. Arrastre todos los archivos de la carpeta UnrealPlugin a la carpeta Plugins/PlayFabGSDK.
- Por último, abra el archivo
{ProjectName}.uprojecten el editor de texto de su elección. En la matriz de complementos, agregue el complemento “PlayFabGSDK”.
Inclusión del complemento en sus módulos
- Actualice el archivo {ProjectName}.Build.cs para agregar “PlayFabGSDK” a la lista PublicDependencyModuleNames.AddRange(); de la siguiente manera:
- Haga clic con el botón derecho en el archivo
{ProjectName}.uprojecty seleccione la opción Switch Unreal Engine version, que es la forma de comprobar rápidamente qué versión de Unreal Engine está usando actualmente. Debería aparecer la ventana emergente que se muestra a continuación. Si ya ve que la versión de Unreal Engine es una compilación de código fuente, no necesita cambiar nada, así que haga clic en Cancel. Si la versión de Unreal no es actualmente la compilación de código fuente, selecciónela en la lista desplegable y luego haga clic en OK.
-
Haga clic de nuevo con el botón derecho en el archivo
{ProjectName}.uprojecty seleccione “Generate Visual Studio Project Files”. - Por último, compile el proyecto en Visual Studio e inicie el editor seleccionando la configuración Development Editor.
Configuración del proyecto
Una vez que su proyecto haya habilitado el modo de servidor, tendrá un archivo {ProjectName}Server.Target.cs. El resultado debería ser similar a:Creación/actualización de la clase GameInstance
Creación de una clase GameInstance
Si está creando un proyecto desde cero y aún no tiene una clase GameInstance, siga primero estas instrucciones de ejemplo para crear una clase GameInstance. Si está usando un proyecto que ya tiene una clase GameInstance (por ejemplo, ShooterGame de la biblioteca de ejemplos de Unreal), pase a la sección titulada Modificación de la clase GameInstance.En el editor de Unreal:
- Seleccione Files
- Seleccione Create a new C++ class
- Seleccione Show all classes
- Escriba
GameInstanceen el campo de búsqueda- Al seleccionarla directamente como se describe, todo debería generarse correctamente y luego podrá agregar las funciones que detallamos a continuación
- Cierre Unreal y vuelva a ejecutar Generate project files en modo de compilación de código fuente
- Con Visual Studio, abra esos archivos recién creados y siga las instrucciones para modificar la clase GameInstance.
Modificación de la clase GameInstance
Según la configuración de su proyecto, puede modificar la clase GameInstance usando C++ o Blueprints. A continuación se presentan ambas formas; debe seleccionar la que se adapte a sus necesidades.Implementación en C++
Localice su clase GameInstance, que probablemente se llame algo similar a {ProjectName}GameInstance o MyGameInstance. A partir de ahora, su clase GameInstance se denotará como [YourGameInstanceClassName].Modificación del archivo de encabezado de GameInstance
Primero, compruebe las instrucciones include y asegúrese de que las siguientes estén incluidas en el archivo de encabezado de su clase GameInstance ([YourGameInstanceClassName].h):Modificación del archivo CPP de GameInstance
A continuación, localice el archivo [YourGameInstanceClassName].cpp. Asegúrese de que se incluye lo siguiente:Creación de la función Init()
Si ya tenía una función Init(), compruebe en el archivo
[YourGameInstanceClassName].cpp si tiene una variable que indique si la instancia es para un servidor dedicado. Si puede encontrar esta variable, agregue lo siguiente al final de su función Init():
Modificación de una función Init() existente
Por último, agregue estas implementaciones de métodos al final del archivo
[YourGameInstanceClassName].cpp:
Implementación con Blueprint
Esta parte solo es necesaria si ha decidido continuar con la implementación con Blueprint y no con la implementación puramente en C++.- Observe la ventana Content Browser en el editor de Unreal
- Elija o cree una carpeta para contener los nuevos Blueprints
- Haga clic con el botón derecho y cree una clase de Blueprint
- En el menú desplegable All classes, busque su clase GameInstance
- En este ejemplo, el Blueprint se llama “MyGameInstance”
- Haga doble clic en el Blueprint
- En el lado izquierdo, sitúe el puntero sobre el campo de funciones y seleccione el menú desplegable Override
- Seleccione la función Init
- Haga clic con el botón derecho en el gráfico y agregue todas las funciones de registro del GSDK
- Para GSDK Shutdown y Maintenance Delegate, arrastre una línea desde el cuadrado rojo y seleccione “Add Custom Event”
- Para “Register GSDK Health Check Delegate”, seleccione “Create Event” en los “Event Dispatchers”.
- En el menú desplegable del nuevo nodo, “Create matching function”. Esto es importante, ya que el GSDK Health Check Delegate tiene un valor devuelto.
- En la función, asegúrese de que el valor booleano devuelto esté marcado.
- No olvide conectar todos los nodos al nodo Event Init.
- Al final, agregue el nodo “ReadyforPlayers” para poder reaccionar a la señal de listo de PlayFab.
- Además, no olvide agregar el nodo “SetDefaultServerHostPort” para conectarse al puerto que el GSDK espera.
- Para cada función/nodo del GSDK que desee agregar en su Blueprint, puede verificar que existe escribiendo las primeras letras del nombre de la función en su nuevo nodo y viendo que la función del GSDK esperada aparece en las sugerencias.
- Al final, su Blueprint debería ser similar al que se presenta en la imagen siguiente.
Establecimiento de la clase GameInstance
Después de crear una clase GameInstance personalizada que se integra con el gsdk, debe configurar su proyecto para que use realmente esta clase GameInstance recién creada. Hay dos formas de hacerlo: mediante el editor de Unreal Engine o editando DefaultEngine.ini directamente.En el editor de Unreal
En el editor, la GameInstance predeterminada se puede establecer a través de la interfaz de usuario del editor. En el editor, vaya a Edit -> Project Settings. En la ventana abierta, vaya a Maps&Modes en el lado izquierdo. Desplácese hasta la parte inferior y podrá establecer la opciónGameInstanceClass directamente en su nueva clase GameInstance (evite errores tipográficos; debe ser una coincidencia exacta).
