Complemento para Unreal: implementación de un juego en flotas de EC2 administradas - Amazon GameLift Servers

Complemento para Unreal: implementación de un juego en flotas de EC2 administradas

En este flujo de trabajo, implemente el juego para el alojamiento en recursos de computación basados en la nube administrados por Amazon GameLift Servers. Sube la versión de tu servidor de juegos integrado al Amazon GameLift Servers servicio para su implementación. Si todavía no ha integrado el código del juego, consulte Complemento para Unreal: integración del código del juego. Cuando se complete este flujo de trabajo, dispondrá de un cliente de juego en funcionamiento que podrá conectarse a los servidores de juegos en la nube.

Para iniciar el flujo de trabajo de Amazon EC2 administrado por Amazon GameLift Servers:
  • En la barra de herramientas principal del editor de Unreal, elija el menú de Amazon GameLift Servers y seleccione Alojamiento con EC2 administrado. Con esta acción, se abrirá la página del complemento Implementar flota de Amazon EC2, que presenta un proceso de seis pasos para integrar, compilar y lanzar los componentes del juego.

Paso 1: Configuración del perfil

Elija el perfil que desee utilizar al seguir este flujo de trabajo. El perfil que seleccione afectará a todos los pasos del flujo de trabajo. Todos los recursos que cree estarán asociados a la cuenta de AWS del perfil y se colocarán en la región de AWS predeterminada del perfil. Los permisos del usuario del perfil determinan su acceso a los recursos y acciones de AWS.

Configuración de un perfil de usuario
  1. Seleccione un perfil de la lista desplegable de perfiles disponibles. Si aún no tiene un perfil o quiere crear uno nuevo, vaya al menú de Amazon GameLift y seleccione Set AWS User Profiles.

  2. Si el estado del arranque no es “Active”, seleccione Bootstrap profile y espere a que el estado cambie a “Active”.

Paso 2: Configuración del código de juego

En este paso, prepara las compilaciones del servidor y del cliente del juego para que funcionen con el SDK de servidor Amazon GameLift Servers C++ para Unreal. Si aún no has integrado el código del juego ni has creado los ejecutables de cliente y servidor del juego, consulta. Complemento para Unreal: integración del código del juego Introduzca las rutas a los archivos ejecutables del juego en su estación de trabajo local.

En este paso del flujo de trabajo, el complemento proporciona enlaces a instrucciones y código fuente para configurar una versión compilada en origen del editor de Unreal. Debe utilizar la versión original al crear sus componentes de cliente y servidor.

Después de compilar un servidor de juegos que esté integrado con el SDK del servidor, realice las siguientes tareas para prepararlo para la subida al Amazon GameLift Servers alojamiento.

En la carpeta WindowsServer, donde el editor de Unreal almacena los archivos de compilación del servidor de forma predeterminada, realice las adiciones siguientes:

  1. Copia el script de instalación de la compilación del servidor en la raíz de la WindowsServer carpeta. El script de instalación se incluye en la descarga del complemento. Busque el archivo [project-name]/Plugins/Resources/CloudFormation/extra_server_resources/install.bat. Amazon GameLift Servers utiliza este archivo para instalar la compilación del servidor en los ordenadores de alojamiento.

  2. Copie el archivo VC_redist.x64.exe en el directorio raíz de la carpeta WindowsServer. Puede omitir este paso si utiliza la versión 5.6 o posterior de Unreal Engine. Este archivo se incluye en la instalación de Visual Studio. Por lo general, se encuentra en C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Redist/MSVC/v142.

  3. Añada los archivos de la biblioteca de OpenSSL a la compilación del servidor de juegos. Puede saltarse este paso si el servidor de juegos está integrado con el SDK del servidor 5.3 o posterior. Esta versión se incluye en el Amazon GameLift Servers complemento para Unreal, versión 3.0 o posterior.

    Busque y copie manualmente las bibliotecas de OpenSSL en el directorio de paquetes de compilación del juego en <YourGame>/Binaries/Win64. Debe usar la misma versión de OpenSSL que usa su versión de Unreal Engine 5. Las compilaciones de juegos que se implementen con bibliotecas OpenSSL incorrectas no podrán comunicarse con el servicio Amazon GameLift Servers.

    Busca las bibliotecas de OpenSSL en la fuente de tu motor de juego. La ubicación varía en función del entorno de desarrollo:

    En Windows:

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll

    En Linux:

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1

Para obtener instrucciones más detalladas sobre cómo preparar un servidor de juegos creado para Linux, consulta Cómo crear el SDK del servidor Amazon GameLift Servers para Unreal Engine 5 en Amazon Linux.

  1. Designa un directorio de trabajo para organizar tus archivos de compilación. La estructura del directorio de trabajo se implementa tal cual en cada ordenador de alojamiento. Añada su servidor de juegos creado en Linux y todos los archivos dependientes.

  2. Cree un script de instalación para compilar un servidor en la raíz de su directorio de trabajo. Si es necesario, cree un archivo install.sh y añada los comandos necesarios para instalar correctamente la versión del servidor de juegos. Amazon GameLift Servers utiliza este archivo para instalar la compilación del servidor en cada recurso de alojamiento de EC2.

  3. Añada los archivos de la biblioteca de OpenSSL a la compilación del servidor de juegos. Puede saltarse este paso si el servidor de juegos está integrado con el SDK del servidor 5.3 o posterior.

    Localiza y copia las bibliotecas manualmente. Debe usar la misma versión de OpenSSL que usa su versión de Unreal Engine 5. Las compilaciones de juegos que se implementen con bibliotecas OpenSSL incorrectas no podrán comunicarse con el servicio Amazon GameLift Servers.

    1. Busca las bibliotecas de OpenSSL en la fuente de tu motor de juego. La ubicación varía en función del entorno de desarrollo:

      En Windows:

      • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll

      • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll

      En Linux:

      • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1

      • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1

    2. Cuando encuentre las bibliotecas de OpenSSL, cópielas en el directorio de paquetes de compilación del juego en <YourGame>/Binaries/Linux.

Paso 3: Selección del escenario de implementación

En este paso, tendrá que elegir la solución de alojamiento de juegos que desee implementar en ese momento. Puede disponer de varias implementaciones del juego mediante cualquiera de los escenarios.

  • Flota de una sola región: permite implementar el servidor de juegos en una sola flota de recursos de alojamiento en la región de AWS predeterminada del perfil activo. Este escenario es un buen punto de partida para probar la integración del servidor con AWS y la configuración de compilación del servidor. Permite implementar los siguientes recursos:

    • La flota de AWS (bajo demanda) con la compilación del servidor de juegos instalada y en ejecución.

    • Grupo de usuarios y cliente de Amazon Cognito para permitir a los jugadores autenticarse e iniciar un juego.

    • Autorizador de la puerta de enlace de la API que vincula el grupo de usuarios con las API.

    • WebACI para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten una ranura de juego. Esta función llama a CreateGameSession() si no hay ninguna disponible.

    • Puerta de enlace de la API + función de Lambda para que los jugadores obtengan información de la conexión para su solicitud de juego.

  • Flota de FlexMatch: implementa el servidor de juegos en un conjunto de flotas y configura un emparejador de FlexMatch con reglas para crear emparejamiento de jugadores. En este escenario, se utiliza un alojamiento de spot de bajo costo con una estructura con múltiples flotas y con múltiples ubicaciones para garantizar la disponibilidad. Este método resultará útil cuando esté listo para empezar a diseñar un componente del emparejador para la solución de alojamiento. En este escenario, se crearán los recursos básicos para esta solución, que podrá personalizar después según sea necesario. Permite implementar los siguientes recursos:

    • Configuración de emparejamiento de FlexMatch y reglas de emparejamiento establecidas para aceptar las solicitudes de los jugadores y formar emparejamientos.

    • Tres flotas de AWS con la compilación del servidor de juegos instalada y en ejecución en varios lugares. Incluye dos flotas de spot y una flota bajo demanda como respaldo.

    • Cola de ubicación de sesión de juego de AWS que responde a las solicitudes de emparejamientos propuestos mediante la búsqueda del mejor recurso de alojamiento posible (en función de la viabilidad, el costo, la latencia de los jugadores, etc.) y el inicio de una sesión de juego.

    • Grupo de usuarios y cliente de Amazon Cognito para permitir a los jugadores autenticarse e iniciar un juego.

    • Autorizador de la puerta de enlace de la API que vincula el grupo de usuarios con las API.

    • WebACI para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten una ranura de juego. Esta función llama a StartMatchmaking().

    • Puerta de enlace de la API + función de Lambda para que los jugadores obtengan información de la conexión para su solicitud de juego.

    • Tablas de Amazon DynamoDB para almacenar tickets de emparejamiento para jugadores e información sobre las sesiones de juego.

    • Tema de SNS + función de Lambda para administrar los eventos de GameSessionQueue.

Paso 4: Configuración de los parámetros del juego

En este paso, deberá describir el juego que quiera subir a AWS.

  • Nombre de la compilación del servidor: proporcione un nombre significativo para la compilación del servidor de juegos. AWS utiliza ese nombre para hacer referencia a la copia de la compilación del servidor que se carga y se usa para las implementaciones.

  • SO de compilación del servidor: especifique el sistema operativo para el que se ha diseñado el servidor. Esto indica a AWS qué tipo de recursos informáticos utilizar para alojar el juego.

  • Carpeta del servidor de juegos: permite identifica la ruta a la carpeta de compilación del servidor local.

  • Compilación del servidor de juegos: permite identificar la ruta al archivo ejecutable del servidor de juegos.

  • Ruta del cliente de juego: permite identificar la ruta al archivo ejecutable del cliente de juego.

  • Resultado de la configuración del cliente: este campo debe apuntar a una carpeta de la compilación del cliente que contenga la configuración de AWS. Búsquelo en la siguiente ubicación: [client-build]/[project-name]/Content/CloudFormation.

Paso 5: Implementación del escenario

En este paso deberá implementar el juego en una solución de alojamiento en la nube en función del escenario de implementación que elija. Este proceso puede tardar varios minutos, mientras AWS valida la compilación del servidor, realiza un aprovisionamiento de los recursos de alojamiento, instala el servidor de juegos y lanza los procesos del servidor y los prepara para alojar sesiones de juego.

Para iniciar la implementación, elija Implementar CloudFormation. Puede realizar el seguimiento del estado del alojamiento de su juego aquí. Para obtener información más detallada, puede iniciar sesión en la consola de administración de AWS para AWS y ver las notificaciones de eventos. Asegúrese de iniciar sesión con la misma cuenta, usuario y región de AWS que el perfil de usuario activo del complemento.

Cuando se complete la implementación, tendrá el servidor de juegos instalado en una instancia de EC2 de AWS. Hay al menos un proceso del servidor en ejecución y listo para iniciar una sesión de juego.

Paso 6: Lanzamiento del cliente

Ya ha completado todas las tareas necesarias para iniciar el juego multijugador alojado con Amazon GameLift Servers. Para jugar al juego, inicie una instancia del cliente de juego.

Si ha implementado el escenario de flota única, puede abrir una instancia de cliente única con un jugador, especificar el mapa del servidor y desplazarse. Abra instancias adicionales del cliente de juego para añadir un segundo jugador al mismo mapa de juego del servidor.

Si ha implementado el escenario de FlexMatch, la solución espera a que, al menos, dos clientes estén en cola para situarse en la sesión de juego antes de que los jugadores puedan entrar en el mapa del servidor.