Tutorial: Incorporación rápida con el encapsulador de Amazon GameLift Servers - Amazon GameLift Servers

Tutorial: Incorporación rápida con el encapsulador de Amazon GameLift Servers

Le damos la bienvenida al tutorial de incorporación de a Amazon GameLift Servers. En este tutorial, implementará rápidamente su servidor de juegos para que se aloje en una flota de recursos de computación basados en la nube. Utilice este tutorial para evitar la tarea de integrar el SDK del servidor de Amazon GameLift Servers en el código del juego y, en su lugar, impleméntelo con la funcionalidad mínima necesaria para comunicarse con el servicio Amazon GameLift Servers y ejecutar sesiones de juego. Configurará una solución de alojamiento básica y la utilizará para disfrutar de todo el abanico de características, como el escalado automático y el emparejamiento. También es ideal para alojar un prototipo del juego como parte de una demostración en directo o a modo de prueba.

Ventajas clave de este método de incorporación:

  • Implemente rápidamente el servidor de juegos para un alojamiento rápido.

  • No hay cambios en el código del juego ni se requieren modificaciones.

  • Utilice este método con cualquier ejecutable del juego, independientemente del motor de juegos.

  • Explore todas las herramientas de administración de Amazon GameLift Servers, incluida la supervisión de la actividad de las sesiones de juego y el estado del alojamiento.

nota

El encapsulador está diseñado para la evaluación y el uso básico en producción. Las características avanzadas, como la administración detallada de las sesiones de jugador, requieren una integración completa del SDK del servidor.

Requisitos previos

Antes de comenzar, asegúrese de que dispone de lo siguiente:

  • Una Cuenta de AWS activa con los permisos adecuados

  • AWS CLI instalada

  • Go 1.18+

  • Un archivo ejecutable de servidor de juegos multijugador

  • Make (Linux/Mac)

  • Git instalado con una cuenta activa

Descripción general

En este tutorial, podrá:

  1. Obtener y crear el encapsulador

  2. Preparar la compilación del juego

  3. Configurar el encapsulador

  4. Cargar la compilación del servidor de juegos

  5. Crear la flota de EC2 administrada

  6. Crear una sesión de juego y conectarse a ella

  7. Supervisar y administrar los servidores de juegos

  8. Escalar los servidores de juegos

Paso 1: Obtener y crear el encapsulador de servidor de juegos

Utilice los siguientes comandos para obtener la fuente del encapsulador de servidor de juegos y compilarlo. Estos comandos usan SSH, pero también puede ir directamente al repositorio de Github.

Windows

> git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git > cd amazon-gamelift-servers-game-server-wrapper > powershell -file .\build.ps1

Mac y Linux

$ git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git $ cd amazon-gamelift-servers-game-server-wrapper $ make

Si la compilación se realiza correctamente, se añade un directorio “out” a amazon-gamelift-servers-game-server-wrapper. En este directorio hay tres carpetas, una para cada opción de flota de alojamiento compatible, que contienen un conjunto de artefactos de compilación. En este tutorial, realizaremos la implementación en flotas de EC2 administradas, por lo que utilizaremos la carpeta gamelift-servers-managed-ec2.

Paso 2: Preparar la compilación del servidor de juegos

En este paso, deberá preparar los archivos de compilación de servidor de juegos para cargarlos en Amazon GameLift Servers.

Creación del directorio del juego

Ahora, prepare un directorio para el juego en su máquina local. Este directorio debe contener todos los archivos que necesita para ejecutar el servidor de juegos con Amazon GameLift Servers. Esto incluye el contenedor del servidor de juegos, la versión de tu servidor de juegos y el archivo config.yaml que hace que el contenedor funcione con tu servidor de juegos.

Utilice los siguientes pasos:

  1. Flota de EC2 administrada. En la carpeta de salida del contenedor del servidor de juegos, busque el artefacto de compilación que desee implementar en una flota de EC2 administrada. La compilación se escribirá en un directorio externo como se indica aquí: out\linux\amd64\gamelift-servers-managed-ec2.

  2. Copie el ejecutable de su servidor de juegos y todos los archivos asociados que necesite para ejecutarse en la carpeta gamelift-servers-managed-ec2. Puede tener directorios anidados según sea necesario.

Un ejemplo de estructura de directorios sería el siguiente:

gamelift-servers-managed-ec2 │-- config.yaml │-- amazon-gamelift-servers-game-server-wrapper │-- MyGame │ │-- server-executable.exe │ │-- my-game-settings │ │ ......

Paso 3: Configurar la contenedor para la flota

Amazon GameLift Servers administra el ciclo de vida de las instancias de computación de una flota, activando nuevas instancias con la versión de servidor instalada y reciclando las instancias según sea necesario. El servicio administra el ciclo de vida de los procesos del servidor de juegos que se ejecuta en cada instancia. Una flota de EC2 administrada puede tener instancias en varias ubicaciones para ayudar a los jugadores estén donde estén.

Edite el archivo config.yaml para configurar el contenedor para el registro, la configuración de los puertos y la inicialización del servidor.

  1. Configure los ajustes de registro. El contenedor del servidor de juegos genera mensajes de registro para cada proceso del servidor de juegos. De forma predeterminada, el nivel registro está establecido en Depuración para obtener la máxima verbosidad. Esto resulta muy útil durante la configuración y la solución de problemas y determina el nivel de detalle de los mensajes de registro (en este caso, los más detallados). Las opciones incluyen depuración, información, advertencia y error (las menos detalladas).

  2. Especifica la ruta al directorio de registro del servidor del juego. La ruta por defecto para los registros del servidor de juegos es ./game-server-logs. Este directorio contiene todos los registros generados por el servidor de juegos y cada instancia los contiene. Los registros se cargan automáticamente en Amazon GameLift Servers, donde se accede a ellos desde la pestaña Eventos. Consulte la sección de solución de problemas para obtener más detalles.

  3. Defina la configuración de los puertos de red. Configure el puerto del juego según su preferencia. Para este tutorial, especifique un solo puerto, ya que creará una flota que ejecutará solo un proceso de servidor de juegos simultáneo por instancia. Si decide ejecutar varios procesos a la vez, tendrás que configurar suficientes puertos para cada proceso simultáneo. El valor predeterminado es 37016, como se muestra en el archivo de configuración, pero en general, para las flotas que utilizan compilaciones de Linux, utilice los puertos 22 y 1026-60000. Para las flotas que utilizan compilaciones de Windows, utilice los puertos del 1026 al 60 000.

  4. Establezca la ruta al archivo ejecutable del servidor de juegos. Para ./MyGame/my-server-executable.exe, personalice la ruta al ejecutable de su servidor de juegos con su nombre y ubicación reales. Este es el punto de entrada para lanzar el servidor de juegos.

  5. Configure los argumentos del servidor del juego. Como mínimo, especifica un argumento -port y usa el mismo valor de puerto de juego que definió anteriormente. El valor "pos" 0 indica que este es el primer argumento. Añada otros argumentos según corresponda. Estos argumentos se pasan al servidor de juegos cuando se lanza, lo que le permite configurar su comportamiento en tiempo de ejecución.

    1. Argumento: "--port"

    2. Valor: "{{.port number here}}"

    3. Posición: 0 (primer argumento de la lista)

Ejemplo de configuración:

log-config: wrapper-log-level: debug game-server-logs-dir: ./game-server-logs ports: gamePort: 37016 game-server-details: executable-file-path: ./MyGame/my-server-executable game-server-args: - arg: "--port" val: "{{.gameport}}" pos: 0

Paso 4: Cargar la compilación del servidor de juegos

Ya ha completado todos los elementos necesarios de la compilación de su servidor de juegos (el encapsulador de servidor de juegos, config.yaml y los archivos de servidor de juegos) y está listo para cargar la compilación del juego en Amazon GameLift Servers para su alojamiento. La forma más rápida de cargar la versión del juego es mediante el comando upload-build de la AWS CLI, como se muestra en el siguiente ejemplo.

Carga de una compilación de juego con Windows:

aws gamelift upload-build \ --name gamelift-test-2025-03-11-1 \ --build-version gamelift-test-2025-03-11-1 \ --build-root out/windows/amd64/gamelift-servers-managed-ec2 \ --operating-system WINDOWS_2022 \ --server-sdk-version 5.3.0 \ --region us-west-2
nota

Para compilaciones de Mac y Linux, use --operating-system AMAZON_LINUX_2023

Al crear la compilación, registre el ID de compilación de la respuesta de la API para usarlo en la creación de la flota.

Paso 5: Crear la flota de EC2 administrada

Los siguientes pasos describen una configuración mínima de la flota para que pueda empezar a funcionar lo antes posible.

Para crear la flota:

  1. Inicie sesión en Consola de administración de AWS y navegue hasta Amazon GameLift Servers.

  2. En la barra de menús de la parte superior de la ventana de la consola, compruebe en qué región se encuentra la compilación. Apúntalo porque tu flota debe estar en la misma región o no podrás encontrar ni elegir tu construcción.

  3. En el panel de navegación, en la sección EC2 administrado, elija Compilaciones.

  4. Seleccione la compilación que cargó anteriormente para mostrar la página de detalles de la compilación.

  5. En la sección Flotas, seleccione Crear flota, que mostrará la página de detalles sobre cómo definir la flota de EC2 administrada, desde la que podrá realizar un seguimiento del estado de su flota y ver los eventos de creación de la flota en la pestaña Eventos.

  6. Rellene el nombre y la descripción y seleccione Siguiente.

  7. En la página Definir detalles de la instancia, se muestra la región de la compilación de forma predeterminada. Elija cualquier región adicional que desee agregar.

  8. En Tipo de flota, elija Bajo demanda.

  9. En Tipos de instancia, elija c5.large y Siguiente.

  10. En Configuración de tiempo de ejecución, dado que la compilación del juego que ha cargado usa el encapsulador, debe apuntar al ejecutable del encapsulador. Para los servidores de juegos de Windows, es C:\game\amazon-gamelift-servers-game-server-wrapper.exe . Para los servidores de juegos de Linux, esto es /local/game/amazon-gamelift-servers-game-server-wrapper.

    Por ejemplo: .: LaunchPath": "/local/game/amazon-gamelift-servers-game-server-wrapper", "ConcurrentExecutions": 1, "Parameters": "—port 37016

    Además, configura los valores de los puertos del juego con un rango que tenga en cuenta el puerto que se estableció en los config.yaml parámetros de inicio de la configuración del tiempo de ejecución. config.yamlNo es necesario que el puerto de entrada coincida con el especificado en la configuración de tiempo de ejecución de la flota, pero en tiempo de ejecución, si la configuración especifica un puerto diferente, ese valor anula el config.yaml que hay en. Los parámetros de lanzamiento introducidos en la configuración del tiempo de ejecución también anulan los que hay en config.yaml.

  11. En la página Revisar y crear, comprueba todas las configuraciones y, a continuación, selecciona Enviar para crear tu flota. El estado de la flota cambiará a medida que aumente su capacidad para alojar el servidor del juego y, muy pronto, aparecerá como Activa. Una vez completada la activación y desplegada la flota, el servicio lanza el contenedor, que está listo para recibir una solicitud de sesión de juego.

Paso 6: Crea una sesión de juego y conéctate a ella

Si el estado de tu flota es Activa, significa que los servidores del juego están listos para albergar una sesión de juego. Para iniciar una sesión de juego, realiza una solicitud de sesión de juego al Amazon GameLift Servers servicio. Aquí, utilizarás el AWS CLI para realizar esta solicitud.

nota

Ten en cuenta que crear una sesión de juego con la AWS CLI es útil para probar y familiarizarte con el proceso. En algún momento, añadirá llamadas programáticas del SDK de AWS al servicio de backend del juego como parte del sistema de asignación de partidas o ubicación de las sesiones de juego.

Para crear una sesión de juego, utilice lo siguiente:

aws gamelift create-game-session \ --fleet-id <FLEET_ID> \ --game-properties '[{"Key": "exampleProperty", "Value": "exampleValue"}]' \ --maximum-player-session-count 3 \ --region us-west-2

También puede pasar las propiedades personalizadas del juego al ejecutable del servidor. Consulta los argumentos del servidor de juegos en el archivo README para obtener más información. Cuando reciba la llamada a crear una sesión de juego, Amazon GameLift Servers le indicará al contenedor que inicie el ejecutable del servidor de juegos e inicie una sesión de juego. Lo que está dentro config.yaml afecta a la configuración del servidor del juego, y los parámetros de inicio establecidos en la consola determinan la configuración de la sesión de juego en sí.

Ejemplo de formato para añadir propiedades del juego:

defaultArgs: - arg: "--port" val: "{{.GamePort}}" pos: 0 - arg: "--ipAddress" val: "{{.IpAddress}}" pos: 1 - arg: "--gameSessionId" val: "{{.GameSessionId}}" pos: 2

Paso 7: Gestiona y monitorea tu flota

Ahora que tu flota de servidores de juegos está configurada y ha empezado una sesión de juego, puede administrarla y monitorizarla desde la consola de Amazon GameLift Servers. La mejor forma de hacerlo es desde la página de detalles de la flota, donde puede editar los detalles de la flota o cambiar la escala y la capacidad de la flota en la pestaña Escalado. Consulta la siguiente sección sobre cómo escalar los servidores de tus juegos.

Selecciona la pestaña Métricas para ver los gráficos que muestran la supervisión de las métricas de actividad y hardware. Para obtener más información sobre los gráficos de métricas, selecciona el enlace Información situado junto al identificador de tu flota. Además, si bien puede supervisar de cerca los servidores de juegos desde la pestaña Métricas, también puede añadir alarmas a estas métricas en el panel de CloudWatch.

Para ir al panel de CloudWatch desde la consola:

  1. Escriba “CloudWatch” en la barra de búsqueda y elíjalo en la lista de resultados de la búsqueda para mostrar la descripción general de CloudWatch.

  2. Desplázate hacia abajo y selecciona Ver panel de GameLift para ver gráficos basados en las métricas clave de tus flotas y sesiones de juego.

Paso 8: Escala tus servidores de juegos

Para el siguiente paso, deberá configurar el escalado automático. Utilice el escalado automático para escalar de forma dinámica la capacidad de la flota en respuesta a la actividad del servidor de juegos. A medida que los jugadores lleguen e inicien sesiones de juego, el escalado automático añadirá más instancias, y a medida que la demanda de los jugadores disminuya, el escalado automático liberará instancias no utilizadas. Esta es una forma eficaz de minimizar sus recursos y costos de alojamiento y, a la vez, facilitar al jugador una experiencia rápida y sin interrupciones.

Durante la preparación para el lanzamiento del juego, tendrá que configurar el escalado automático para sus flotas. El escalado automático es una práctica recomendada eficaz para minimizar los recursos y los costos del alojamiento y, a la vez, facilitar al jugador una experiencia rápida y sin interrupciones.

Para configurar manualmente la capacidad de la flota

Para configurar manualmente la capacidad de la flota

  1. Ve a la pestaña Escalamiento en la página de detalles de tu flota.

  2. Seleccione una ubicación y elija Editar.

  3. Cambie el valor de las instancias deseadas y cambie la configuración de tamaño mínimo y máximo para escalar más allá de sus valores actuales, y seleccione Confirmar.

nota

Utilice la configuración del número máximo de instancias como medida provisional para evitar un escalado y unos costos excesivos.

Para usar el escalado automático basado en objetivos

Para usar el escalado automático basado en objetivos

El ajuste de escala automático basado en objetivos (seguimiento de objetivos) vincula el escalado de la flota con el porcentaje de sesiones de juego disponibles. A medida que los jugadores se lanzan a jugar a tu juego y disminuyen las sesiones de juego disponibles, la aplicación responde añadiendo automáticamente más instancias a la flota.

  1. En Política de escalado automático basada en objetivos, selecciona Añadir política y establece la capacidad de la flota para que cambie automáticamente cuando alcance el límite del porcentaje de sesiones de juego disponibles que hayas establecido. Un búfer más grande puede gestionar mejor las oleadas de jugadores, haciendo que los nuevos jugadores se metan rápidamente en las partidas, pero también puede suponer un aumento de los costos de alojamiento.

  2. Seleccione Confirmar para aceptar los cambios.

El escalado automático basado en reglas le brinda un control más detallado, como la capacidad de vincular el escalado con otras métricas de la flota y establecer umbrales personalizados y respuestas de escalado. Ofrece opciones potentes, pero también requiere el uso de la CLI y pruebas importantes para comprender cómo se comportan las reglas personalizadas en acción. Este tutorial se centra primero en configurar el enfoque basado en objetivos.

Solución de problemas comunes

Los siguientes son problemas comunes que pueden surgir al ejecutar los servidores y las sesiones de juego. Si el servidor o la sesión de juego no funcionan correctamente, el primer paso consiste en comprobar los registros, ya que pueden revelar alguno de los problemas que se describen a continuación en relación con nuevas implementaciones o juegos en producción.

En los registros suele aparecer lo siguiente:

  • El proceso del servidor del juego no se puede iniciar. Puede que se deba a un error en la configuración del contenedor. Compruebe que el archivo tenga la ruta de inicio correcta y que los parámetros y argumentos de lanzamiento sean correctos.

  • La compilación del servidor de juegos no se puede ejecutar. Es probable que se trate de un error en el código del juego.

  • Los jugadores no se pueden conectar a las sesiones de juego. Es probable que se trate de un error de configuración del puerto.

  • Conexiones retrasadas o lentas. Revise las políticas y los umbrales de escalado.

  • Sin conexión. Verifique las reglas y la configuración de los puertos de su flota.

Para ver los registros de eventos de su Amazon GameLift Servers flota

Para ver los registros de eventos de su Amazon GameLift Servers flota

  1. Abra la consola de Amazon GameLift Servers.

  2. En la página de detalles de la flota, selecciona la pestaña Eventos y descarga el registro. También puede supervisar las métricas de actividad y hardware para comprobar el estado del servidor de juegos y las activaciones de las sesiones de juego desde la pestaña Métricas.

Para ver los registros de las sesiones de juego

Para ver los registros de las sesiones de juego

  1. Desde la consola, abre tu flota y abre la pestaña Sesiones de juego.

  2. Elija un ID de sesión de juego de la lista para mostrar la página de Información general de la sesión de juego.

  3. Selecciona Descargar registros para descargar un archivo de registro de forma local.

Para ver los registros de las sesiones del juego con la CLI, utilice la API de GetGameSessionLogURL. Amazon GameLift Servers almacena automáticamente los registros durante 14 días.

También puede configurar los registros de Amazon CloudWatch para su flota. Esto proporciona capacidades de registro adicionales e integración con otros servicios AWS de monitoreo.

Para acceder a los registros en tiempo real o prolongar los períodos de retención a través de CloudWatch:

  1. En la parte superior del panel de control de la Amazon GameLift Servers consola, escribe “CloudWatch” en la barra de búsqueda y selecciónalo en el menú desplegable de resultados.

  2. Vaya a los grupos de registro de CloudWatch y busque sesiones específicas. El método más sencillo es hacer clic en Buscar todo y filtrar con gameSessionId o clientId.

Pasos a seguir a continuación