Complemento para Unreal: implementación del juego en una flota de contenedores administrada - Amazon GameLift Servers

Complemento para Unreal: implementación del juego en una flota de contenedores administrada

Utilice este flujo de trabajo guiado del complemento para crear una imagen de contenedor para el servidor de juegos e implementarla en una solución de alojamiento basada en contenedores. Si todavía no ha integrado el código del juego, consulte Complemento para Unreal: integración del código del juego. Cuando haya completado correctamente este flujo de trabajo, el servidor de juegos en contenedores se ejecutará en la nube, y podrá usar el complemento para iniciar un cliente de juego, conectarse a una sesión de juego y jugar.

Antes de comenzar

Este flujo de trabajo presupone que ha completado las siguientes tareas:

  • Integre el código del servidor de juegos con el SDK del servidor de Amazon GameLift Servers. El servidor de juegos alojado debe poder comunicarse con el servicio Amazon GameLift Servers para poder responder a las solicitudes de inicio de nuevas sesiones de juego e informar sobre el estado de las sesiones de juego. Si no ha completado esta tarea, le recomendamos que siga primero el flujo de trabajo del complemento Alojamiento con Anywhere. Para obtener instrucciones sobre cómo preparar el código del servidor de juegos, consulte Actualización del código del servidor de juegos. Para las flotas de contenedores administradas, debe integrar el juego con la versión 5.2 o superior del SDK del servidor.

    nota

    Si utiliza el mapa del juego inicial, esta tarea ya estará hecha.

  • Empaquetado del archivo ejecutable del servidor de juegos para su ejecución en Linux. Si estás desarrollando en Windows e integrando la versión 5.2.x o anterior del SDK para servidores C++, tendrás que trabajar con el kit de herramientas de compilación cruzada de Unreal. Como alternativa, puede configurar un espacio de trabajo de Linux independiente o utilizar una herramienta como el subsistema de Windows para Linux (WSL).

  • Recopilación de los archivos para implementarlos con la compilación del servidor de juegos. En la máquina local, cree un directorio de trabajo para organizar los archivos que se incluirán en la imagen de contenedor del servidor de juegos. Estos pueden incluir las dependencias del juego, un script para lanzar los servidores de juegos y otros procesos al iniciar un contenedor, etc.

  • Añada los archivos de la biblioteca de OpenSSL para 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.

    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.

    Para encontrar las bibliotecas de OpenSSL, busca 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

  • Integración del código de cliente de juego con Amazon GameLift Servers. Una forma de completar esta tarea consiste en añadir un recurso de muestra (incluido con el complemento) que ya esté integrado. Para obtener instrucciones sobre cómo preparar el código del cliente de juego, consulte Integración del mapa de juego del cliente .

  • Instalación de Docker en la máquina local. Necesita tener esta herramienta instalada si desea que el complemento cree imágenes de contenedor por usted y las envíe a un repositorio de ECR. Como alternativa, puede realizar estas tareas manualmente e indicar al complemento que utilice una imagen de contenedor existente. Para obtener más información sobre cómo crear la imagen manualmente, consulte Creación de una imagen de contenedor para Amazon GameLift Servers.

Para iniciar el flujo de trabajo de contenedores administrados por Amazon GameLift Servers:
  • En la barra de herramientas principal del editor de Unreal, elija el menú Amazon GameLift Servers y seleccione Contenedores administrados. Esta acción abre la página del complemento Alojamiento con contenedores administrados, que presenta un proceso paso a paso para crear una imagen de contenedor con la compilación del servidor de juegos, implementarla en una flota de contenedores y lanzar el juego.

Paso 0: Configuración del perfil

En esta sección se muestra el perfil de usuario seleccionado. Compruebe que el perfil de usuario actual es el que desea utilizar para este flujo de trabajo. Todos los recursos que cree en este flujo de trabajo estarán asociados a la cuenta de AWS del perfil y se ubicará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.

Es posible que tenga que modificar el perfil de usuario seleccionado si:

  • Actualmente no hay ningún perfil seleccionado.

  • Desea seleccionar un perfil diferente o crear uno nuevo.

  • Debe arrancar el perfil seleccionado (si el estado de arranque está inactivo).

Configuración o cambio del perfil de usuario seleccionado
  • En el menú de Amazon GameLift Servers, elija Abrir credenciales de acceso a AWS.

Paso 1: Evaluar la preparación del contenedor

Antes de implementar el servidor de juegos en una flota de contenedores, debe empaquetarlo en una imagen de contenedor y almacenarlo en un repositorio de Amazon ECR. El complemento puede realizar estas tareas por usted, o puede hacerlas usted manualmente. En este paso se proporciona información sobre el estado de la imagen del contenedor y el repositorio de ECR.

Utilice las preguntas de evaluación para indicar al complemento qué pasos debe seguir:

  • Creación de una nueva imagen de contenedor. Si elige esta opción, el siguiente paso le pedirá la ubicación del directorio de compilación del servidor de juegos y del ejecutable de la compilación. El complemento utiliza una plantilla de Dockerfile (proporcionada por Amazon GameLift Servers) y la configura automáticamente para el juego. Puede ver la plantilla en Creación de una imagen de contenedor para Amazon GameLift Servers. Tras elegir esta opción, indique dónde desea que el complemento almacene la nueva imagen:

    • Cree un nuevo repositorio de Amazon ECR y aplíquele la imagen de contenedor. El complemento crea un repositorio de ECR privado utilizando la cuenta de AWS y la Región de AWS predeterminada en el perfil de usuario seleccionado.

    • Aplique la imagen de contenedor a un repositorio de Amazon ECR creado previamente. Si elige esta opción, el siguiente paso le pedirá que seleccione un repositorio de Amazon ECR existente de una lista. La lista incluye todos los repositorios de Amazon ECR de la cuenta de AWS y de la Región de AWS predeterminada del perfil de usuario seleccionado. Puede seleccionar un repositorio público o privado.

  • Uso de una imagen de contenedor existente. Si ha creado una imagen manualmente, le recomendamos que utilice la plantilla de Dockerfile proporcionada por Amazon GameLift Servers, que está disponible en Creación de una imagen de contenedor para Amazon GameLift Servers. Tras seleccionar esta opción, indique dónde se encuentra la imagen.

    • Imagen generada por Docker y almacenada localmente. Si elige esta opción, el complemento crea un nuevo repositorio privado de Amazon ECR y le aplica el archivo de imagen local. En el paso siguiente se le pedirá un ID de imagen, que el complemento utilizará para localizar el archivo de imagen.

    • Imagen de contenedor que ya está almacenada en un repositorio de Amazon ECR. Si elige esta opción, el siguiente paso le pedirá que seleccione un repositorio de Amazon ECR existente y una imagen de una lista. La lista incluye todos los repositorios de Amazon ECR de la cuenta de AWS y de la Región de AWS predeterminada del perfil de usuario seleccionado. Puede seleccionar un repositorio público o privado.

Paso 2: Configurar la implementación de imágenes

En este paso, proporcione la información que el complemento necesita para implementar la imagen de contenedor en una flota de contenedores. En este paso se le solicitará la siguiente información:

  • La ubicación de la compilación del servidor de juegos, la imagen del contenedor o el repositorio de Amazon ECR, según lo que seleccione en el paso 1.

  • El escenario que se utilizará para la implementación de sus contenedores administrados.

  • La ruta de salida de la configuración del cliente. Seleccione la carpeta de la compilación del cliente que contenga AWS la configuración. Búsquelo en la siguiente ubicación: [client-build]/[project-name]/Content/CloudFormation.

  • Configuración de implementación opcional. Esta sección contiene los ajustes de configuración que utiliza el complemento de forma predeterminada. Puede modificar los valores predeterminados o conservarlos.

    • El nombre del juego se establece en el nombre del proyecto de juego de forma predeterminada. Todos los recursos de AWS que crea el complemento hacen referencia al valor del nombre del juego.

    • El rango de puertos, el límite de memoria y el límite de vCPU son ajustes de configuración de la flota de contenedores. Para obtener más información sobre la personalización de estos valores, consulte Configuración de conexiones de red para conocer el rango de puertos de conexión y los límites de recursos de Establecimiento de los límites de recursos.

    • La etiqueta de imagen de contenedor se usa para clasificar las imágenes del contenedor en Amazon ECR. El valor predeterminado es unreal-gamelift-plugin.

    • Nombre del repositorio de Amazon ECR. Puede editar este campo para sugerirle un nombre personalizado solo cuando el complemento esté creando un repositorio de ECR para usted. El valor predeterminado es unreal-game lift-plugin-ecr-repository.

Opciones de escenario de implementación

En este escenario, el servidor de juegos se implementa en una sola flota de contenedores. Es un buen punto de partida para probar la integración del servidor con AWS y la configuración del contenedor. Permite implementar los siguientes recursos:

  • La definición del grupo de contenedores de Amazon GameLift Servers describe cómo implementar y ejecutar las imágenes de contenedor en una flota de contenedores.

  • La flota de contenedores de Amazon GameLift Servers (bajo demanda) con el contenedor del servidor de juegos instalado y en ejecución, con un alias.

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

  • Lista de control de acceso (ACL) web para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

  • Servicio de backend para realizar solicitudes al servicio Amazon GameLift Servers en nombre de los clientes de juego, por ejemplo, para solicitar sesiones de juego y unirse al juego:

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten un espacio de sesión de juego. Esta función llama a CreateGameSession() si no hay espacios abiertos disponibles.

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

Este escenario implementa el servidor de juegos en una flota de contenedores, configura la ubicación de las sesiones de juego y configura el emparejamiento de FlexMatch. Este escenario resultará útil cuando esté listo para empezar a diseñar un emparejador personalizado para su solución de alojamiento. Utilice este escenario para crear los recursos básicos para la solución, y que podrá personalizar más tarde según sea necesario. Permite implementar los siguientes recursos:

  • La definición del grupo de contenedores de Amazon GameLift Servers que describe cómo implementar y ejecutar las imágenes de contenedor en una flota de contenedores.

  • La flota de contenedores de Amazon GameLift Servers (bajo demanda) con el contenedor del servidor de juegos instalado y en ejecución, con un alias.

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

  • Cola de sesiones de juego de Amazon GameLift Servers que responde a las solicitudes de emparejamiento propuesto 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.

  • Lista de control de acceso (ACL) web para limitar las llamadas excesivas de los jugadores a la puerta de enlace de la API.

  • Servicio de backend para realizar solicitudes al servicio Amazon GameLift Servers en nombre de los clientes de juego, por ejemplo, para solicitar sesiones de juego y unirse al juego:

    • Puerta de enlace de la API + función de Lambda para que los jugadores soliciten un espacio de sesión de juego. Esta función llama a StartMatchmaking() si no hay espacios abiertos disponibles.

    • 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 DynamoDB para almacenar tickets de emparejamiento para jugadores e información sobre las sesiones de juego.

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

Implementación de una flota de contenedores

Cuando la configuración de la flota esté completa, seleccione el botón Implementar flota de contenedores para iniciar la implementación. Este proceso puede tardar varios minutos mientras el complemento crea una imagen de contenedor y la envía a ECR, aprovisiona los recursos de alojamiento para la flota de contenedores e implementa la flota y otros recursos de AWS para el escenario de solución de alojamiento seleccionado.

Al iniciar una implementación, puede seguir el progreso de cada paso. Dependiendo de la configuración, los pasos pueden incluir lo siguiente:

  • Configurar la imagen de contenedor

  • Creación de un nuevo repositorio de Amazon ECR

  • Crear una imagen e insertarla en Amazon ECR

  • Crear la definición del grupo de contenedores

  • Crear la flota de contenedores

Para obtener información más detallada sobre la implementación, seleccione Ver en la consola de administración de AWS. Una vez que la flota de contenedores alcance el estado activo, la flota estará ejecutando activamente los contenedores con los procesos del servidor que estén listos para alojar sesiones de juego.

Una vez que se complete la implementación, dispondrá de una flota de contenedores activa que estará lista para alojar sesiones de juego y aceptar conexiones de jugadores.

No es posible detener una implementación en curso. Si la implementación pasa a un estado defectuoso o falla, puede volver a empezar con la opción Reiniciar implementación.

Lanzamiento del cliente

En este punto, ya ha completado todas las tareas necesarias para lanzar e iniciar el juego multijugador alojado con Amazon GameLift Servers. Para jugar, elija Iniciar cliente para lanzar una instancia local del cliente de juego.

  • Si ha implementado el escenario de flota única, puede abrir una instancia de cliente única con un jugador y especificar el mapa del servidor para desplazarse. Puede abrir una segunda instancia 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 de alojamiento espera a que al menos dos clientes del juego envíen solicitudes de emparejamiento. Abra al menos dos instancias del cliente de juego con un jugador. Se emparejará a los dos jugadores y se les pedirá que se unan a una sesión de juego para la partida.

Actualización de una flota de contenedores

Si ha implementado correctamente una solución de alojamiento de contenedores administrados, puede utilizar la característica Actualizar implementación. Esta opción le permite actualizar los ajustes de configuración de una flota de contenedores implementada sin necesidad de crear una nueva flota.

Al actualizar una implementación, puede implementar una imagen de contenedor con una compilación de servidor de juegos diferente, cambiar el repositorio de Amazon ECR, elegir un escenario de implementación diferente y personalizar los ajustes de configuración opcionales.

Cuando esté listo para implementar los cambios, elija Actualizar. El tiempo necesario para una actualización de la implementación es similar al de una implementación completa. Para obtener información detallada sobre la implementación, seleccione Ver en la consola de administración de AWS.

Limpie los recursos desplegados.

Como práctica recomendada, limpie los recursos de AWS de su solución de contenedores administrados tan pronto como ya no los necesite. Podría seguir incurriendo en costos por estos recursos si no los elimina.

Elimine los siguientes recursos:

  • Pila de recursos de contenedores administrados. Los recursos de esta pila dependen del escenario de implementación que haya seleccionado. Para eliminar toda la pila, use la consola de CloudFormation. Las pilas que se generan a partir del complemento Amazon GameLift Servers utilizan la siguiente convención de nomenclatura: GameLiftPluginForUnreal-{GameName}-Containers. Espere a que se complete el proceso de eliminación de la pila antes de iniciar una nueva implementación de contenedores administrados en el complemento. Para obtener más información, consulte Eliminar una pila de la consola de CloudFormation.

  • Repositorio de Amazon ECR. Si utilizó el complemento para crear un repositorio para la imagen de contenedor, quizás le interese eliminar los repositorios que ya no son necesarios. No es necesario eliminar un repositorio antes de restablecer una implementación de contenedores administrados. Si actualiza o restablece una implementación, el complemento usará automáticamente el mismo repositorio, a menos que se le indique usar otro. Para obtener más información, consulte Eliminación de un repositorio privado en Amazon ECR.