Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Hoja de ruta de desarrollo para el alojamiento híbrido con Amazon GameLift
Este plan le muestra cómo desarrollar una solución de alojamiento para juegos multijugador. Amazon GameLift ofrece varias opciones de alojamiento de juegos; para obtener más información sobre estas opciones, consulta GameLift Soluciones de Amazon.
Una solución híbrida utiliza una combinación de recursos de alojamiento, incluidos los recursos basados en la nube gestionados por Amazon GameLift y tus propios recursos de alojamiento autogestionados. Para obtener información más detallada sobre el alojamiento híbrido, consulta este artículo: Alojamiento de servidores de juegos híbridos con Amazon GameLift Anywhere
Una arquitectura híbrida consta de los siguientes componentes:
-
Una o más flotas GameLift gestionadas por Amazon, que utilizan instancias de Amazon Elastic Compute Cloud (Amazon EC2) optimizadas para el alojamiento de juegos multijugador.
-
Una o más flotas de Amazon GameLift Anywhere, que utilizan sus recursos de alojamiento locales u otros recursos de alojamiento existentes, incluidas las herramientas de implementación y administración de la configuración. (si lo prefiere, puede utilizar AWS Systems Manager).
-
Una compilación de servidor de juegos única, integrada con el SDK de GameLift servidores de Amazon, para implementarla en todas las flotas.
-
Un único cliente de juego y servicio de backend, integrado con el AWS SDK, para interactuar con el GameLift servicio de Amazon y solicitar sesiones de juego.
-
Una GameLift cola compartida de Amazon para organizar nuevas sesiones de juego con los servidores de juegos disponibles y equilibrar la carga en todas las flotas.
-
El Amazon GameLift Agent, que se implementa con una flota de Anywhere, simplifica las tareas de administración de los procesos del servidor en todos los ordenadores de todas las flotas.
-
(Opcional) Un sistema de FlexMatch emparejamiento para crear partidas multijugador y configurar sesiones de juego para ellas.
Esta hoja de ruta presenta una ruta simplificada para poner en marcha tu juego multijugador con éxito en una solución de alojamiento híbrida con 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.
Empieza con el GameLift plugin de Amazon
Si estás desarrollando proyectos con Unreal Engine o Unity, comienza a configurar tu juego para su alojamiento con el GameLift complemento Amazon. Con el complemento, puedes añadir Amazon GameLift SDKs a tu proyecto de juego y utilizar los flujos de trabajo guiados para crear una versión funcional sencilla de una solución de alojamiento híbrida con una flota de Anywhere y una flota GameLift gestionada por Amazon. Luego, sobre la base de esos elementos fundamentales, podrá seguir con el desarrollo y personalizar lo que sea necesario.
Añade funcionalidad a tu servidor de juegos para que pueda comunicarse con el GameLift servicio de Amazon cuando se despliegue como alojamiento. Se requiere la misma funcionalidad si el servidor del juego se ejecuta en una flota GameLift gestionada por Amazon o en una flota de Anywhere.
-
Obtén el SDK GameLift del servidor Amazon (versión 5.x) para tu proyecto de juego. El SDK del servidor está disponible en C++, C# y Go. Descarga un SDK de GameLift servidor de Amazon
. -
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ñade código para inicializar el Amazon GameLift SDK y establecer una WebSocket conexión con el GameLift servicio de Amazon. Use la acción
InitSdk()
del SDK del servidor. Incluya código para especificar los parámetros del servidor cuando se ejecute en el recurso de computación de una flota de Anywhere. -
Agrega código para informar al GameLift servicio de Amazon cuando el proceso del servidor esté listo para albergar 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 GameLift servicio de Amazon, iniciar una sesión de juego cuando Amazon GameLift lo solicite y responder a una solicitud para finalizar el proceso del servidor de juegos. -
Agrega código para informar al GameLift servicio de Amazon cuando el proceso del servidor finalice 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, te recomendamos configurar un Amazon GameLift Anywhere flota con una estación de trabajo local, tal y como se describe enConfiguració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. Usa la AWS CLI para solicitar una nueva sesión de juego y verifica que el GameLift servicio Amazon solicite correctamente al proceso de tu 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 enfoque más común consiste en configurar una funcionalidad de servicio de back-end que sirva de intermediario entre el cliente del 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 GameLift servicio de Amazon y entrega la información de conexión a un cliente del 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:
-
Obtén el AWS SDK para Amazon GameLift y agrégalo a tu proyecto de servicio de backend. Consulte los recursos GameLift del SDK de Amazon para obtener información sobre los servicios al cliente.
-
Agrega código para inicializar un GameLift cliente de Amazon y almacenar la configuración clave. Consulte Configurar Amazon GameLift en un servicio de back-end.
-
Añade funciones para activar la acción del AWS SDK
CreateGameSession()
y proporcionar información sobre la conexión de la sesión de juego a un cliente de juego. Consulte Create a game session on a specific fleet.Llamar
CreateGameSession()
es un práctico punto de partida para solicitar nuevas sesiones de juego. Cuando dispongas de un sistema de ubicación de las sesiones de juego (consulta el paso 3), sustituirás este código por una llamada aStartGameSessionPlacement()
(oStartMatchmaking()
si lo estás utilizando 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 del juego realiza solicitudes a tu 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. Puedes usar el mismo Amazon GameLift Anywhere flota con una estación de trabajo local para realizar pruebas.
Durante la fase de desarrollo, si quieres probar el comportamiento de la compilación de tu juego en una flota GameLift gestionada por Amazon, te recomendamos que también configures un entorno de pruebas basado en la nube. Esta solución de Amazon GameLift Toolkit imita el comportamiento de una flota gestionada, pero te permite actualizar las versiones de los servidores de juegos con un tiempo de respuesta mínimo.
Personaliza la forma en que quieres que Amazon GameLift procese las solicitudes de nuevas sesiones de juego y localiza los servidores de juegos disponibles para alojarlas. Amazon rastrea GameLift automáticamente la disponibilidad de todos los servidores de juegos 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 la latencia mínima, el coste y la disponibilidad.
-
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 proceso de desarrollo, puedes sondear el estado de la sesión del juego mediante 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ñade componentes de FlexMatch emparejamiento. Para obtener orientación, consulta la guía para GameLift FlexMatch desarrolladores de Amazon.
Hasta este momento, has estado trabajando con dispositivos locales (registrados como Anywhere fleet computa) para probar e iterar los componentes del juego. El siguiente paso es configurar el tipo de flotas que necesitará para un sistema de producción. Comience con una flota de Anywhere y añada el Amazon GameLift Agent para gestionar algunas tareas clave de administración de hosts en el entorno informático. Para obtener más información, consulta El trabajo con el agente de Amazon GameLift.
-
Obtén el Amazon GameLift Agent y agrégalo al paquete de instalación de tu servidor de juegos. Obtenga y cree el código fuente del agente, disponible en el repositorio Github de Amazon GameLift Agent
. Ponga el archivo ejecutable JAR resultante en el mismo directorio que el ejecutable de la compilación del juego. -
Modifique el script de arranque del agente según sea necesario. Asegúrese de que el ejecutable del agente se inicie en cuanto el recurso de computación comience a ejecutarse. Consulte el archivo readme del repositorio del agente para obtener ayuda sobre la instalación y ejecución del agente en los recursos de computación de alojamiento. El comando de lanzamiento debe incluir opciones para especificar, como mínimo, el identificador de flota de Anywhere Región de AWS, una ubicación personalizada y un nombre de procesamiento.
El agente se encarga automáticamente de las siguientes tareas, así que ya puede eliminarlas si ha estado gestionándolas con scripts:
-
Llama a
RegisterCompute()
para añadir el recurso de computación a una flota de Anywhere. -
Llamadas
GetComputeAuthToken()
para autenticar los servidores de juegos cuando se conectan al GameLift servicio de Amazon. El agente se encarga de obtener y actualizar el token de autenticación; todos los procesos del servidor de juegos que se ejecutan en el recurso de computación podrán usarlo. -
Inicia nuevos procesos de servidor en el recurso de computación, en función de un conjunto de instrucciones de tiempo de ejecución.
-
-
Cree una configuración de tiempo de ejecución para recursos de computación en la flota de Anywhere. Como mínimo, especifique la ruta de lanzamiento del ejecutable para el servidor de juegos. Puede usar la GameLift consola de Amazon o la AWS CLI para crear o modificar instrucciones de tiempo de ejecución para la flota. El agente sigue estas instrucciones y solicita periódicamente actualizaciones al GameLift servicio de Amazon.
-
Configure o modifique la cola de sesiones de juego según sea necesario. Crea una nueva cola (o actualiza una existente) y designa un destino para la flota de Anywhere desplegada con Amazon GameLift Agent.
-
Pruebe la integración del agente con las flotas de Anywhere. Compruebe que el agente esté iniciando correctamente los procesos del servidor, de acuerdo con la configuración del tiempo de ejecución.
Crea una EC2 flota GameLift gestionada por Amazon para complementar tu flota de Anywhere. Si ha configurado un entorno de pruebas basado en la nube en el paso 2 para acelerar el desarrollo, planee crear una flota administrada tras completar la mayor parte del desarrollo y las pruebas del juego. Necesita una flota totalmente administrada para configurar y probar ajustes adicionales, como el escalado automático de la capacidad.
-
Package la compilación de su servidor de juegos y cárguela en Amazon GameLift. Cree un script de instalación con los archivos de compilación, las dependencias y el software de soporte. Puede usar el mismo software de compilación en la flota de Anywhere y en la flota administrada. Consulte Implementación de una compilación de servidor personalizada para el alojamiento en Amazon GameLift. Puede cargar su compilación en Amazon GameLift mediante la consola o la AWS CLI.
Antes de cargar la compilación, decida en qué Región de AWS quiere crear la flota administrada. 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 EC2 flota gestionada. Puedes usar la GameLift consola de Amazon o la AWS CLI para crear una flota gestionada. Cuando creas una flota, Amazon comienza GameLift inmediatamente a implementar tu versión de servidor de juegos como alojamiento. Puede configurar muchos elementos de una flota administrada. Para obtener instrucciones, consulte Crea una EC2 flota GameLift gestionada por Amazon. 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 con ajustes similares a los que ha usado con la flota de Anywhere. 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 la flota administrada a la cola de sesiones de juego compartida. Actualiza la cola del paso 4 para que incluya los destinos tanto de la flota gestionada como de la flota Anywhere desplegada con Amazon GameLift Agent.
-
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 las soluciones de alojamiento. Estos son algunos de los factores en los que deberá pensar:
-
Para las flotas de Anywhere, automatice el proceso de inicio y apagado de los recursos de computación según sea necesario, lo que incluye la instalación y la ejecución del software del servidor de juegos. Reciclar los recursos de computación resulta útil para garantizar que estos se actualicen periódicamente, y el apagado de dichos recursos cuando no son necesarios puede ahorrar costos.
-
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 Personaliza tus flotas GameLift EC2 gestionadas por Amazon.
-
En el caso de las flotas administradas, valore la opción de usar flotas de Spot para ahorrar costos. Consulte Tutorial: Creación de una cola de Amazon GameLift con instancias de spot.
-
Optimice el rendimiento de las flotas; para ello, seleccione las configuraciones de los recursos de computación y, a continuación, configure las instrucciones de tiempo de ejecución de tal modo que se ejecute el número óptimo de procesos de servidor por cada recurso de computación. Haga esto tanto para las flotas de Anywhere como para las flotas administradas. 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 Personaliza la cola de una sesión de juego.
-
En el caso de las flotas administradas, configure el escalado automático de la capacidad para satisfacer la demanda prevista de jugadores. Consulte Ampliar la capacidad de alojamiento de juegos con Amazon GameLift.
-
Para las flotas de Anywhere, cree mecanismos para gestionar el escalado automático o manual de la capacidad, a fin de satisfacer la demanda prevista de jugadores.
-
Diseñe e implemente medidas de conmutación por error a otros recursos cuando sea necesario. 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. Cree grupos de métricas a fin de agregar análisis para todos los recursos de alojamiento.
-
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 AWS CloudFormation plantillas para cualquier configuración específica de la implementación. También puedes usar el AWS Cloud Development Kit (AWS CDK) para definir tus GameLift recursos de Amazon. Para obtener más información sobre el AWS CDK, consulte la Guía para AWS Cloud Development Kit (AWS CDK) desarrolladores.
Para gestionar el despliegue de sus AWS CloudFormation pilas, le recomendamos que utilice 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.
-
Sube el archivo binario a 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.
-