Plan de desarrollo para el alojamiento administrado con Amazon GameLift
Este plan le muestra cómo desarrollar una solución de alojamiento administrada con Amazon GameLift para juegos multijugador. Amazon GameLift ofrece varias opciones de alojamiento de juegos; para obtener más información sobre estas opciones, consulte Soluciones de Amazon GameLift.
Con el alojamiento administrado de Amazon GameLift, el servidor de juegos se aloja en recursos de computación virtuales basados en Nube de AWS que Amazon GameLift posee y gestiona en función de su configuración. Usted obtiene la seguridad, la fiabilidad y la disponibilidad global de las instancias de Amazon Elastic Compute Cloud (Amazon EC2), que están aún más optimizadas para el uso con alojamiento de juegos multijugador. Amazon GameLift simplifica la administración del alojamiento con herramientas como la implementación automática de servidores, la gestión del ciclo de vida y el autoescalado de la capacidad.
Una solución administrada de Amazon GameLift cuenta con los siguientes componentes:
-
Una o más flotas administradas por Amazon GameLift, con instancias de Amazon Elastic Compute Cloud (Amazon EC2) optimizadas para el alojamiento de juegos multijugador.
-
Una compilación de servidor de juegos, integrada con el SDK del servidor de Amazon GameLift, para la implementación en todas las flotas.
-
Un cliente de juegos y un servicio de backend, integrados con el AWS SDK, para interactuar con el servicio de Amazon GameLift y solicitar sesiones de juego.
-
Una cola de Amazon GameLift para colocar nuevas sesiones de juego con servidores de juego disponibles en todas las flotas.
-
(Opcional) Un emparejador de FlexMatch para crear partidas multijugador y configurar sesiones de juego para ellas.
Este plan presenta una ruta simplificada para que el juego multijugador funcione correctamente con el alojamiento administrado de Amazon GameLift. 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 Preparación del juego para el lanzamiento con el alojamiento de Amazon GameLift: le resultará de ayuda a fin de preparar la solución de alojamiento para el uso en producción.
Comience a utilizar el complemento de Amazon GameLift
Si está desarrollando proyectos con Unreal Engine o Unity, comience a configurar el juego para el alojamiento con el complemento de Amazon GameLift. Con el complemento, puede añadir los SDK de Amazon GameLift al proyecto de juego, y utilizar los flujos de trabajo guiados para crear una versión funcional y sencilla de una solución de alojamiento administrada con Amazon GameLift. Luego, sobre la base de esos elementos fundamentales, podrá seguir con el desarrollo y personalizar lo que sea necesario.
Añada funciones al servidor de juegos para que pueda comunicarse con el servicio de Amazon GameLift cuando se implemente para el alojamiento.
-
Obtenga el SDK del servidor de Amazon GameLift (versión 5.x) para el proyecto de juego. El SDK del servidor está disponible en C++, C# y Go. Descargue el SDK del servidor de Amazon GameLift
. -
Modifique el código del servidor de juegos para añadir la funcionalidad del SDK del servidor. Para obtener instrucciones, consulte Integración de juegos con servidores de juegos personalizados. Como mínimo, haga lo siguiente:
-
Añada código para inicializar el SDK de Amazon GameLift y establecer una conexión de WebSocket con el servicio de Amazon GameLift. Use la acción
InitSdk()
del SDK del servidor. -
Añada código para decirle al servicio de Amazon GameLift que el proceso del servidor está listo para alojar sesiones de juego. Use la acción
ProcessReady()
del SDK del servidor. -
Implemente las funciones de devolución de llamada
OnRefreshConnection()
,OnProcessTerminate()
yOnStartGameSession()
necesarias. Con estas funciones, los procesos del servidor de juegos pueden mantener una conexión con el servicio de Amazon GameLift, iniciar una sesión de juego cuando Amazon GameLift lo solicite y responder a una petición para finalizar el proceso del servidor de juegos. -
Añada código para informar al servicio de Amazon GameLift cuando el proceso del servidor esté finalizando una sesión de juego. Use la acción
ProcessEnding()
del SDK del servidor.
-
-
Empaquete la compilación del servidor de juegos. Cree un script de instalación con los archivos de compilación, las dependencias y el software de soporte. Consulte Empaquetado de los archivos de compilación del juego. Es recomendable utilizar un bucket de Amazon Simple Storage Service (Amazon S3) para almacenar las versiones de la compilación del juego.
-
Pruebe la integración del servidor de juegos. Para esta tarea, recomendamos configurar una flota de Amazon GameLift Anywhere para una estación de trabajo local, tal y como se describe en Configuración de pruebas locales con Amazon GameLift Anywhere. Para este paso, instale manualmente la compilación del servidor de juegos en el dispositivo de prueba e inicie un proceso de servidor. Utilice la CLI de AWS para solicitar una nueva sesión de juego y compruebe que el servicio de Amazon GameLift le pida correctamente al proceso del servidor que inicie una sesión de juego.
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 de Amazon GameLift. 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 de Amazon GameLift 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 Integración de juegos con servidores de juegos personalizados. Como mínimo, haga lo siguiente:
-
Obtenga el AWS SDK para Amazon GameLift y añádalo al proyecto de servicio de backend. Consulte los recursos del SDK de Amazon GameLift para servicios de cliente.
-
Añada código para inicializar un cliente de Amazon GameLift y almacenar la configuración clave. Consulte Configuración de Amazon GameLift en un servicio de backend.
-
Añada funciones para llamar a la acción
CreateGameSession()
de AWS SDK y enviar datos de conexión de la sesión de juego a un cliente de juego. Consulte Create a game session on a specific fleet.Llamar a
CreateGameSession()
es un punto de partida muy práctico para solicitar nuevas sesiones de juego. Cuando disponga de un sistema de ubicación de sesiones de juego (consulte el paso 3), sustituirá ese código por una llamada aStartGameSessionPlacement()
(o aStartMatchmaking()
si utiliza FlexMatch).Para obtener orientación sobre el diseño de un servicio de backend, consulte Diseño del servicio de cliente de juegos.
-
-
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. 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 la misma flota de Amazon GameLift Anywhere con una estación de trabajo local para hacer pruebas.
Para un desarrollo iterativo rápido, o cuando trabaje con equipos de varias personas, le recomendamos que configure un entorno de pruebas basado en la nube. Esta solución del kit de herramientas de Amazon GameLift imita el comportamiento de una flota administrada de Amazon GameLift, pero le permite actualizar las compilaciones de los servidores de juegos con un tiempo de entrega mínimo.
Personalice cómo desea que Amazon GameLift procese las solicitudes de nuevas sesiones de juego y cómo ubicará a los servidores de juego disponibles para alojarlos. Amazon GameLift hace un seguimiento automático de 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 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()
enStartGameSessionPlacement()
. 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..
-
(Opcional) Añada componentes de emparejamiento de FlexMatch. Para obtener más orientación, consulte la guía para desarrolladores de Amazon GameLift FlexMatch.
Hasta ahora, ha trabajado con flotas de Anywhere autoadministradas para probar los componentes del juego y hacer iteraciones sobre ellos, y también ha afinado la ubicación de las sesiones de juego.La última parte de la solución consiste en configurar el tipo de recursos de alojamiento que necesitará para un sistema de producción. Para empezar a planificar y configurar la producción, es recomendable que pase a trabajar con una flota administrada por Amazon GameLift.
-
Empaquete la compilación del servidor de juegos y haga la carga en Amazon GameLift. Cree un script de instalación con los archivos de compilación, las dependencias y el software de soporte. Consulte Implementación de una compilación de servidor personalizada para el alojamiento en Amazon GameLift. Puede cargar la compilación en Amazon GameLift mediante la consola o la CLI de AWS.
Antes de cargar la compilación, decida en qué Región de AWS quiere crear la flota. Debe cargar la compilación en la misma región. Para obtener más información sobre cómo elegir la ubicación de una flota, consulte Ubicación de la flota.
-
Cree una flota de EC2 administrada. Cuando crea una flota, Amazon GameLift 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 EC2 administrada por Amazon GameLift. Como mínimo, haga lo siguiente:
-
Póngale un nombre a la flota y especifique qué compilación del juego cargado desea implementar.
-
Elija instancias bajo demanda para la flota y seleccione un tipo de instancia que esté disponible en la ubicación de la flota. Las flotas de spot son una opción valiosa, pero requieren un nivel adicional de diseño y configuración.
-
Cree una configuración de tiempo de ejecución para la flota. Como mínimo, especifique la ruta de lanzamiento del ejecutable para el servidor de juegos.
-
Especifique la configuración del puerto para permitir que el tráfico entrante acceda a los servidores de juegos.
-
-
Añada las flotas administradas a la cola. En la cola de sesiones de juego, sustituya las flotas de Anywhere por las flotas administradas.
-
Prueba el alojamiento de juegos con las flotas administradas. En este momento, debería poder probar todo el ciclo de alojamiento, con un cliente de juego que solicite una sesión de juego, obtenga los datos de conexión y se conecte correctamente a 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:
Valore la posibilidad de añadir flotas de spot para ahorrar costos. Consulte Tutorial: Creación de una cola de Amazon GameLift con instancias de spot.
-
Si el servidor de juegos necesita comunicarse con otros recursos de AWS, configure los roles de IAM para administrar el acceso. Consulte Comunicación con otros recursos de AWS de sus flotas.
Decida dónde desea ubicar geográficamente los servidores de juegos. Añada ubicaciones remotas a las flotas administradas. Consulte Guía de diseño para flotas administradas.
Optimice el rendimiento de la flota seleccionando un tipo y tamaño de instancia y configurando el tiempo de ejecución para ejecutar varios procesos de servidor. Consulte Administración de la forma en que Amazon GameLift lanza los servidores de juegos.
Experimente con las opciones de ubicación de sesiones de juego para las flotas administradas, lo que incluye personalizar los ajustes de priorización. Consulte Diseño de colas de sesiones de juego.
-
Configure el escalado automático de la capacidad para satisfacer la demanda prevista de jugadores. Consulte Escalado de la capacidad de alojamiento de juegos con Amazon GameLift.
-
Configure flotas en espera en otras Regiones de AWS y modifique las colas y el escalado automático para la gestión de conmutaciones por error en caso de que sea necesario.
-
Configure las herramientas de observabilidad del alojamiento, como los análisis y el registro. Consulte Supervisión de Amazon GameLift.
-
Automatice la implementación mediante la infraestructura como código (IaC). Consulte Administración de los recursos de alojamiento de Amazon GameLift con AWS CloudFormation.
Amazon GameLift admite el uso de plantillas de AWS CloudFormation para cualquier configuración específica de la implementación. También puede utilizar AWS Cloud Development Kit (AWS CDK) para definir sus recursos de Amazon GameLift. Para obtener más información acerca de AWS CDK, consulte la Guía para desarrolladores de AWS Cloud Development Kit (CDK).
Para administrar la implementación de sus pilas de AWS CloudFormation, le recomendamos utilizar herramientas y servicios de integración y entrega continuas (CI/CD), como AWS CodePipeline. Estas herramientas le ayudarán con la implementación automática y la aprobación cada vez que cree un archivo binario para el servidor de juegos. Con una herramienta o un servicio de CI/CD, la implementación de recursos para una nueva versión del servidor de juegos puede tener este aspecto:
-
Compilar y probar el archivo binario del servidor de juegos.
-
Cargar el archivo binario en Amazon GameLift.
-
Implementar nuevas flotas con la nueva compilación.
-
Añadir las nuevas flotas a la lista de sesiones de juego y eliminar las flotas de la versión de compilación anterior.
-
Cuando las flotas de la versión anterior ya no alojen sesiones de juego activas, eliminar las pilas de AWS CloudFormation de esas flotas.
-