Hoja de ruta de desarrollo para el alojamiento con contenedores administrados por Amazon GameLift Servers - Amazon GameLift Servers

Hoja de ruta de desarrollo para el alojamiento con contenedores administrados por Amazon GameLift Servers

Esta hoja de ruta describe cómo desarrollar una solución de alojamiento administrada por Amazon GameLift Servers para servidores de juegos en contenedor. Los contenedores administrados son solo una de las soluciones de alojamiento que ofrece Amazon GameLift Servers. Para obtener más información acerca de las opciones de alojamiento, consulte opciones de alojamiento de juegos de Amazon GameLift Servers.

Una solución de contenedores administrados por Amazon GameLift Servers tiene los siguientes componentes:

  • Una imagen de contenedor con la compilación del servidor de juegos, cargada en el repositorio privado de Amazon Elastic Container Registry (Amazon ECR). La compilación del servidor de juegos está integrada con el SDK del servidor de Amazon GameLift Servers y diseñada para ejecutarse en Linux.

  • Un servicio de backend que interactúa con el servicio Amazon GameLift Servers en nombre de los clientes de juegos. El servicio de backend utiliza la funcionalidad de la API de servicio de Amazon GameLift Servers, que forma parte del SDK de AWS.

  • Una cola de sesiones de juego de Amazon GameLift Servers u otro mecanismo de ubicación que procese las solicitudes de nuevas sesiones de juego, busque los servidores de juegos disponibles en todas las flotas y solicite al servidor de juegos que inicie una sesión de juego.

  • (Opcional) Un emparejador de FlexMatch para crear partidas multijugador y configurar sesiones de juego para ellas.

  • Una o más flotas de contenedores, que utilizan instancias de Amazon Elastic Compute Cloud (Amazon EC2) y están optimizadas para el alojamiento de juegos multijugador.

Esta hoja de ruta presenta una ruta simplificada para que el juego multijugador funcione correctamente con contenedores administrados por Amazon GameLift Servers. Cuando tenga los componentes necesarios, podrá continuar con la iteración del desarrollo del juego y personalizar la solución de alojamiento. A medida que se acerque el lanzamiento, consulte Preparativos para el lanzamiento con alojamiento en Amazon GameLift Servers: le resultará de ayuda a fin de preparar la solución de alojamiento para el uso en producción.

Acelere la incorporación con estas herramientas para contenedores administrados:
  • El kit básico para contenedores agiliza la integración y la configuración de flotas. Añade características esenciales de administración de sesiones de juego al servidor de juegos y utiliza plantillas preconfiguradas para crear una flota de contenedores y una canalización de implementación automatizada para el servidor de juegos. Tras la implementación, utilice la consola de Amazon GameLift Servers y las herramientas de la API para supervisar el rendimiento de la flota, administrar las sesiones de juego y analizar las métricas.

  • Los desarrolladores de Unreal Engine y Unity pueden utilizar los complementos de Amazon GameLift Servers para integrar el servidor de juegos y crear una flota de contenedores desde el entorno de desarrollo del motor de juegos. Los flujos de trabajo guiados del complemento ayudan a crear una solución rápida y sencilla con alojamiento en la nube mediante contenedores administrados. Puede basarse en ellos para crear una solución de alojamiento personalizada para su juego.

Añada funciones al servidor de juegos para que pueda comunicarse con el servicio Amazon GameLift Servers cuando se implemente para el alojamiento.

  • Obtenga el SDK del servidor de Amazon GameLift Servers (versión 5.2 o superior) para su proyecto de juego. El SDK del servidor está disponible en C++, C# y Go. Descargue el SDK del servidor de Amazon GameLift Servers. El SDK del servidor está disponible en C++, C# y Go.

  • Modifique el código del servidor de juegos para añadir la funcionalidad del SDK del servidor. Para obtener instrucciones, consulte Preparación de un juego para su alojamiento con Amazon GameLift Servers. Como mínimo, haga lo siguiente:

    • Añada código para inicializar el SDK de Amazon GameLift Servers y establecer una conexión de WebSocket con el servicio Amazon GameLift Servers. Use la acción del SDK del servidor InitSdk().

    • Añada código para indicar al servicio Amazon GameLift Servers que el proceso del servidor está listo para alojar sesiones de juego. Use la acción del SDK del servidor ProcessReady().

    • Implemente las funciones de devolución de llamada OnProcessTerminate() y OnStartGameSession() necesarias. Con estas funciones, los procesos del servidor de juegos pueden mantener una conexión con el servicio Amazon GameLift Servers, iniciar una sesión de juego cuando Amazon GameLift Servers lo solicite y responder a una petición para finalizar el proceso del servidor de juegos.

    • Añada código para informar al servicio Amazon GameLift Servers cuando el proceso del servidor esté finalizando una sesión de juego. Use la acción del SDK del servidor ProcessEnding().

  • Empaquete la compilación del servidor de juegos. Compile el servidor de juegos para que se ejecute en Linux. Prepare la compilación y otros archivos necesarios para ejecutar el servidor de juegos. Si está desarrollando en Windows, este paso puede implicar la configuración de un espacio de trabajo de Linux independiente o el uso de una herramienta como el subsistema de Windows para Linux (WSL). Necesitará un entorno Linux para probar la compilación del servidor de juegos, así como para crear y probar las imágenes de contenedor.

  • Pruebe la integración del servidor de juegos. Verifique que el servidor de juegos integrado pueda conectarse al servicio Amazon GameLift Servers y responder a las peticiones. Recomendamos configurar una flota sencilla de Amazon GameLift Servers Anywhere con una estación de trabajo local como host de pruebas, tal y como se describe en Configuración de pruebas locales con Amazon GameLift Servers Anywhere. Instale manualmente la compilación del servidor de juegos en el host de prueba e inicie un proceso del servidor. Utilice la CLI de AWS para solicitar una nueva sesión de juego y compruebe que el servicio Amazon GameLift Servers le pida correctamente al proceso del servidor que inicie una sesión de juego.

Una vez que haya integrado correctamente el servidor de juegos, cree una imagen de contenedor con el ejecutable del servidor de juegos. Almacénela en un repositorio de Amazon Elastic Container Registry (Amazon ECR) para usarla con Amazon GameLift Servers. Para obtener instrucciones detalladas, consulte Creación de una imagen de contenedor para Amazon GameLift Servers.

  • Obtenga la plantilla de Dockerfile para un contenedor de servidor de juegos (proporcionada por Amazon GameLift Servers). Modifique el archivo general de los archivos de compilación del servidor de juegos.

  • Creación de una imagen de contenedor del servidor de juegos. Si trabaja en un entorno Linux, utilice la herramienta Docker para crear la imagen.

  • Inserción de la imagen de contenedor en Amazon ECR. Cree un repositorio público o privado en Amazon ECR, utilizando la misma Cuenta de AWS y Región de AWS donde tiene previsto implementar la flota de contenedores. Inserte en él la imagen de contenedor.

  • Pruebe sus imágenes de contenedor con su flota de Anywhere (opcional). Es posible que desee probar sus imágenes de contenedor de forma local antes de implementarlas en una flota de contenedores alojada en la nube. Puede utilizar su flota de Amazon GameLift Servers Anywhere existente con una estación de trabajo local para hacer pruebas. Instale y ejecute el contenedor del servidor de juegos y compruebe que: (1) el servicio Amazon GameLift Servers solicita correctamente al proceso del servidor que inicie una sesión de juego; y que (2) un cliente de juego pueda conectarse a la sesión de juego.

Hasta ahora, ha trabajado con una flota de Anywhere autoadministrada para probar los componentes del juego y hacer iteraciones sobre ellos. Cuando disponga de una compilación operativa del servidor de juegos integrada con Amazon GameLift Servers, podrá empezar a configurar los recursos de alojamiento de flotas de contenedores administradas por Amazon GameLift Servers en la nube que necesitará para un entorno de producción.

  • Creación de definiciones de grupos de contenedores. Las definiciones de grupo de contenedores describen la arquitectura de contenedores de una flota e identifican qué imágenes de contenedor se deben implementar. Consulte Creación de una definición de grupo de contenedores para una flota de contenedores de Amazon GameLift Servers. Cree su definición de grupo de contenedores en la misma Región de AWS donde se almacenan las imágenes de contenedor. Para obtener más información sobre cómo elegir la ubicación de una flota, consulte Ubicaciones geográficas. Como mínimo, haga lo siguiente:

    • Cree una definición de grupo de contenedores de servidor de juegos.

    • Añada una definición de contenedor con una imagen de contenedor a su compilación del servidor de juegos.

    • Configure un rango de puertos para los procesos del servidor de juegos del contenedor.

  • Cree una flota de contenedores administrada. Cuando crea una flota, Amazon GameLift Servers comienza inmediatamente a implementar la compilación del servidor de juegos para el alojamiento. Puede configurar muchos elementos de una flota administrada. Para obtener instrucciones, consulte Creación de una flota de contenedores administrada por Amazon GameLift Servers. Como mínimo, haga lo siguiente:

    • Configure un rol de servicio de AWS Identity and Access Management (IAM) para la flota de contenedores. Consulte Configuración de un rol de servicio de IAM para Amazon GameLift Servers.

    • Especifique la definición de grupo de contenedores de servidor de juegos que desea implementar en las instancias de la flota.

    • Utilice los valores predeterminados cuando estén disponibles para todos los demás parámetros. Amazon GameLift Servers calcula algunos parámetros para una configuración óptima.

  • Añada las flotas de contenedores a la cola. En la cola de sesiones de juego, sustituya la flota de prueba de Anywhere por su flota de contenedores administrada.

  • Pruebe el alojamiento de juegos con las flotas de contenedores. En este punto, debería poder probar toda la solución. Inicie un cliente de juego y solicite una sesión de juego a través del servicio de backend. Obtenga información de conexión y conéctese a una sesión de juego en la flota de contenedores.

  • Itere las implementaciones de flota. Puede actualizar las definiciones de grupos de contenedores y las configuraciones de flota y, a continuación, implementar las actualizaciones en las flotas existentes.

Cree un método para que el cliente de juego solicite unirse a una sesión de juego, obtenga la información de conexión y, a continuación, se conecte directamente a una sesión de juego alojada. El método más común consiste en configurar una funcionalidad de servicio de backend que sirva de intermediario entre el cliente de juego y el servicio Amazon GameLift Servers. Esto protege los recursos de alojamiento y le aporta un mayor control sobre la ubicación de los jugadores en las sesiones de juego.

  • Desarrolle una funcionalidad de servicio de backend para el alojamiento. El servicio de backend se comunica con el servicio Amazon GameLift Servers y le envía datos de conexión a un cliente de juego. Esta funcionalidad incluye iniciar sesiones de juego, colocar a los jugadores en juegos y recuperar la información de las sesiones de juego. Para obtener instrucciones, consulte Preparación de un juego para su alojamiento con Amazon GameLift Servers. Como mínimo, haga lo siguiente:

  • Añada una función en el cliente de juego que permita a los jugadores unirse a una sesión de juego alojada. El cliente de juego hace solicitudes al servicio de backend, no directamente a Amazon GameLift Servers. Cuando el servicio de backend proporciona la información de conexión de la sesión de juego, el cliente de juego se conecta directamente con la sesión de juego para empezar a jugar.

  • Pruebe la integración del cliente de juego. Puede utilizar su flota de Amazon GameLift Servers Anywhere existente con una estación de trabajo local para hacer pruebas. Utilice el nuevo servicio de backend para solicitar una nueva sesión de juego y compruebe que: (1) el servicio Amazon GameLift Servers le pide correctamente al proceso del servidor que inicie una sesión de juego y (2) que un cliente de juego pueda conectarse a la sesión de juego.

Personalice cómo desea que Amazon GameLift Servers procese las solicitudes de nuevas sesiones de juego y ubique los servidores de juego disponibles para alojarlos. Amazon GameLift Servers monitoriza automáticamente la disponibilidad de todos los servidores de juego en todas las flotas. Cuando un cliente de juego envía una solicitud para unirse a una sesión de juego, Amazon GameLift Servers busca la mejor ubicación posible en función de un conjunto de prioridades definidas, como el costo, la disponibilidad y un nivel mínimo de latencia.

  • Cree una cola de sesiones de juego para colocar una nueva sesión de juego con los servidores de juego disponibles. Las colas son el mecanismo principal para la ubicación de las sesiones de juego. Para obtener instrucciones, consulte Creación de una cola de sesión de juego.

    • Como mínimo, añada las flotas de Anywhere como destinos en la cola. Todos los demás ajustes son personalizaciones opcionales.

  • En el código del servicio de backend, convierta la llamada a CreateGameSession() en StartGameSessionPlacement(). Consulte Create a game session in a multi-location queue.

  • Cree un mecanismo para notificar a un cliente del juego cuando una sesión de juego ya se pueda unir. Durante el desarrollo, puede sondear el estado de las sesiones de juego con una llamada a DescribeGameSessionPlacement. Sin embargo, antes de utilizar una cola para procesar grandes volúmenes, deberá activar las notificaciones de eventos. Consulte Configuración de la notificación de eventos para la ubicación de sesiones de juego..

  • Añada el emparejamiento de FlexMatch (opcional). Cree un conjunto de reglas de emparejamiento y una configuración de emparejamiento que se adapte a la cola de sesiones de juego. Para obtener información sobre cómo configurar un sistema de emparejamiento, consulte la Guía para desarrolladores de Amazon GameLift Servers FlexMatch.

  • Pruebe el sistema de ubicación. Puede utilizar su flota de Amazon GameLift Servers Anywhere existente con una estación de trabajo local para hacer pruebas. Utilice el servicio de backend para solicitar una nueva sesión de juego y compruebe que el servicio Amazon GameLift Servers solicite correctamente al proceso del servidor que inicie una sesión de juego.

Durante la preparación para el lanzamiento del juego, tendrá que afinar los recursos de alojamiento administrado. Estos son algunos de los factores en los que deberá pensar: