Sube una compilación de servidor personalizada a Amazon GameLift - Amazon GameLift

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.

Sube una compilación de servidor personalizada a Amazon GameLift

Tras integrar tu servidor de juegos con Amazon GameLift, sube los archivos de compilación a Amazon GameLift. En este tema se explica cómo empaquetar los archivos de compilación del juego, crear un script de instalación de la compilación opcional y, a continuación, cargar los archivos con AWS Command Line Interface (AWS CLI) o una AWS SDK.

Empaquetado de los archivos de compilación del juego

Antes de subir tu servidor de juegos configurado a Amazon GameLift, empaqueta los archivos de compilación del juego en un directorio de compilación. Este directorio debe incluir todos los componentes necesarios para ejecutar los servidores de juegos y las sesiones de juego alojadas, entre los que se incluyen los siguientes:

  • Archivos binarios del servidor de juegos: son los archivos binarios necesarios para ejecutar el servidor de juegos. Una compilación puede incluir archivos binarios para varios servidores de juegos diseñados para ejecutarlos en la misma plataforma. Para obtener una lista de plataformas admitidas, consulte Soporte de desarrollo con Amazon GameLift.

  • Dependencias: cualquier archivo dependiente necesario para que los archivos ejecutables del servidor de juegos funcione. Por ejemplo, activos, archivos de configuración y bibliotecas dependientes.

    nota

    En el caso de las compilaciones de juegos creadas con el GameLift servidor Amazon SDK para C++ (incluidas las creadas con el complemento Unreal), incluye Open SSL DLL para la misma versión de Open SDK con la SSL que creaste el servidor. Consulta el SDK README archivo del servidor para obtener más información.

  • Script de instalación (opcional): un archivo de script para gestionar las tareas de instalación de la compilación del juego en los servidores de GameLift alojamiento de Amazon. Coloque ese archivo en la raíz del directorio de compilación. Amazon GameLift ejecuta el script de instalación como parte de la creación de la flota.

Puedes configurar cualquier aplicación de tu compilación, incluido el script de instalación, para acceder a tus recursos de forma segura desde otros AWS servicios. Para obtener información sobre cómo hacerlo, consulte Comunicación con otros recursos de AWS de sus flotas.

Después de empaquetar los archivos de compilación, asegúrese de que el servidor de juegos pueda ejecutarse en una instalación limpia de su sistema operativo de destino. De esa forma, se asegurará de que se incluyen todas las dependencias necesarias en el paquete y de que el script de instalación es correcto.

Crea una versión de Amazon GameLift

Al crear una compilación y cargar sus archivos, tiene dos opciones:

Con ambos métodos, Amazon GameLift crea un nuevo recurso de compilación con un ID de compilación único y otros metadatos. La compilación comienza con el estado Inicializado. Cuando Amazon GameLift adquiere los archivos del servidor del juego, la compilación pasa al estado Listo.

Cuando la versión esté lista, podrás desplegarla en una nueva GameLift flota de Amazon. Para obtener más información, consulte Crea una flota GameLift gestionada por Amazon .Cuando Amazon GameLift configura la nueva flota, descarga los archivos de compilación en cada instancia de la flota e instala los archivos de compilación.

Creación de una compilación a partir de un directorio de archivos

Para crear una compilación de juego almacenada en cualquier ubicación, incluido un directorio local, usa el upload-build AWS CLI comando. Este comando crea un nuevo registro de compilación en Amazon GameLift y carga los archivos desde la ubicación que especifiques.

Envíe una solicitud de carga. En una ventana de línea de comandos, especifique el comando upload-build y los parámetros siguientes.

aws gamelift upload-build \ --name user-defined name of build \ --operating-system supported OS \ --server-sdk-version Amazon GameLift server SDK version \ --build-root build path \ --build-version user-defined build number \ --region region name
  • operating-system: el entorno de tiempo de ejecución de la compilación del servidor de juegos. Debe especificar un valor para el sistema operativo. El valor no podrá actualizarse más tarde.

  • server-sdk-version— La versión del GameLift servidor de Amazon con la SDK que está integrado tu servidor de juegos. Si no indicas un valor, Amazon GameLift utilizará el valor predeterminado4.0.2. Si especificas una SDK versión de servidor incorrecta, es posible que la compilación del servidor del juego falle InitSdk al llamar para establecer una conexión con el GameLift servicio de Amazon.

  • build-root: es la ruta del directorio de los archivos de compilación.

  • name: es un nombre descriptivo para la nueva compilación.

  • build-version: los detalles de la versión de los archivos de compilación.

  • region— La AWS región en la que quieres crear tu versión. Cree la compilación en la región en la que tiene previsto implementar las flotas. Si va a implementar el juego en varias regiones, cree una compilación en cada región.

    nota

    Vea su región predeterminada actual mediante el comando aws configure get region. Utilice el comando aws configure set region region name para cambiar la región predeterminada.

Ejemplos

aws gamelift upload-build \ --operating-system AMAZON_LINUX_2023 \ --server-sdk-version "5.0.0" \ --build-root "~/mygame" \ --name "My Game Nightly Build" \ --build-version "build 255" \ --region us-west-2
aws gamelift upload-build \ --operating-system WINDOWS_2016 \ --server-sdk-version "5.0.0" \ --build-root "C:\mygame" \ --name "My Game Nightly Build" \ --build-version "build 255" \ --region us-west-2

En respuesta a tu solicitud de carga, Amazon GameLift proporciona el progreso de la carga. Si la carga se realiza correctamente, Amazon GameLift devuelve el nuevo ID de registro de compilación. El tiempo de carga depende del tamaño de los archivos del juego y de la velocidad de conexión.

Creación de una compilación con archivos en Amazon S3

Puede almacenar sus archivos de compilación en Amazon S3 y subirlos a Amazon GameLift desde allí. Al crear la compilación, debe especificar la ubicación del depósito de S3 y Amazon GameLift recupera los archivos de compilación directamente de Amazon S3.

Para crear un recurso de compilación, realice el siguiente procedimiento:
  1. Almacene los archivos de compilación en Amazon S.. Cree un archivo.zip que contenga los archivos de compilación empaquetados y cárguelo en un bucket de S3 que tenga. Cuenta de AWS Toma nota de la etiqueta del depósito y del nombre del archivo, ya que los necesitarás para crear una versión de Amazon GameLift .

  2. Da GameLift acceso a Amazon a tus archivos de compilación. Cree un IAM rol siguiendo las instrucciones que se indican enAcceso a un archivo de compilación de un juego en Amazon S3. Una vez que hayas creado el rol, toma nota del nombre de recurso de Amazon del nuevo rol (ARN), que necesitarás al crear una compilación.

  3. Cree una compilación. Usa la GameLift consola de Amazon o la AWS CLI para crear un nuevo registro de compilación. Debe tener el permiso PassRole, tal y como se describe en Ejemplos de permisos de IAM para Amazon GameLift.

Console
  1. En la GameLiftconsola de Amazon, en el panel de navegación, selecciona Hosting, Builds.

  2. En la página Compilaciones, seleccione Crear compilación.

  3. En la página Crear compilación, en Configuración de compilación, realice el siguiente procedimiento:

    1. En Nombre, especifique un nombre de script.

    2. En Versión, escriba una versión. Como puede actualizar el contenido de una compilación, los datos de la versión pueden ayudarle a realizar un seguimiento de las actualizaciones.

    3. Para Sistema operativo (SO), elija el sistema operativo de la compilación del servidor de juegos. El valor no podrá actualizarse más tarde.

    4. Para la compilación del servidor de juegos, introduzca el S3 URI del objeto de compilación que cargó en Amazon S3 y elija la versión del objeto. Si no recuerda la versión de Amazon S3 URI y del objeto, elija Browse S3 y busque el objeto de compilación.

    5. Como IAMrol, elige el rol que creaste y que da a Amazon GameLift acceso a tu bucket de S3 y al objeto de compilación.

  4. En Etiquetas, añada etiquetas a la compilación introduciendo los pares Clave y Valor (opcional).

  5. Seleccione Crear.

Amazon GameLift asigna un ID a la nueva compilación y carga el archivo.zip designado. Puede ver la nueva compilación, incluido su estado, en la página Compilaciones

AWS CLI

Utilice el comando create-build para definir la nueva compilación y cargar los archivos de compilación del servidor.

  1. Abra una ventana de línea de comandos y cambie a un directorio en el que pueda usar la AWS CLI.

  2. Escriba el siguiente comando create-build:

    aws gamelift create-build \ --name user-defined name of build \ --server-sdk-version Amazon GameLift server SDK version \ --operating-system supported OS \ --build-version user-defined build number \ --storage-location "Bucket"=S3 bucket label,"Key"=Build .zip file name,"RoleArn"=Access role ARN} \ --region region name
    • name: es un nombre descriptivo para la nueva compilación.

    • server-sdk-version— La versión del GameLift servidor de Amazon SDK que utilizaste para integrar tu servidor de juegos con Amazon GameLift. Si no indicas un valor, Amazon GameLift utilizará el valor predeterminado4.0.2.

    • operating-system: el entorno de tiempo de ejecución de la compilación del servidor de juegos. Debe especificar un valor para el sistema operativo. El valor no podrá actualizarse más tarde.

    • build-version: los detalles de la versión de los archivos de compilación. Esa información puede resultar útil porque cada nueva versión del servidor de juegos requiere un nuevo recurso de compilación.

    • storage-location

      • Bucket: nombre del bucket de S3 que contiene la compilación. Por ejemplo, “my_build_files”.

      • Key: nombre del archivo .zip que contiene los archivos de compilación. Por ejemplo, “my_game_build_7.0.1, 7.0.2”.

      • RoleARN— El ARN asignado al IAM rol que has creado. Por ejemplo, «arn:aws:iam: :111122223333:role/». GameLiftAccess Para ver una política de ejemplo, consulte Acceso a un archivo de compilación de un juego en Amazon S3.

    • region— Crea la construcción en la región en la que planeas desplegar las flotas. AWS Si va a implementar el juego en varias regiones, cree una compilación en cada región.

      nota

      Le recomendamos que compruebe la región predeterminada actual mediante el comando configure get. Utilice el comando configure set para cambiar la región predeterminada.

    Ejemplo

    aws gamelift create-build \ --operating-system WINDOWS_2016 \ --storage-location "Bucket"="my_game_build_files","Key"="mygame_build_101.zip","RoleArn"="arn:aws:iam::111122223333:role/gamelift" \ --name "My Game Nightly Build" \ --build-version "build 101" \ --region us-west-2
  3. Para ver la nueva compilación, utilice el comando describe-build.

Actualización de los archivos de compilación

Puedes actualizar los metadatos de un recurso de compilación mediante la GameLift consola de Amazon o el update-build AWS CLI comando.

Una vez que hayas creado una GameLift compilación de Amazon, no podrás actualizar los archivos de compilación asociados a ella. Para cada nuevo conjunto de archivos, crea una nueva versión de Amazon GameLift . Con el upload-buildcomando, Amazon crea GameLift automáticamente un nuevo registro de compilación para cada solicitud. Si proporciona archivos de compilación mediante el comando create-build, cargue un nuevo archivo .zip de compilación con un nombre distinto en Amazon S3 y cree una compilación que haga referencia al nombre de archivo nuevo.

Prueba estos consejos para implementar versiones actualizadas en las flotas GameLift gestionadas por Amazon:

  • Utilice colas e intercambie las flotas según sea necesario. Al configurar tu cliente de juego con Amazon GameLift, especifica una cola en lugar de una flota. Con las colas, puede añadir nuevas flotas con la nueva compilación para la cola y eliminar las flotas antiguas. Para obtener más información, consulte Configuración de colas de Amazon GameLift para la ubicación de las sesiones de juego.

  • Utilice alias para transferir jugadores a una compilación del juego nueva. Al integrar tu cliente de juego con Amazon GameLift, especifica un alias de flota en lugar de un identificador de flota. Para obtener más información, consulte Añadir un alias a una GameLift flota de Amazon.

  • Configure actualizaciones de compilación automatizadas. Para ver ejemplos de scripts e información sobre cómo incorporar GameLift las implementaciones de Amazon a su sistema de compilación, consulte Automating Deployments to Amazon GameLift en el blog AWS Game Tech.

Herramienta de actualización Fast Build (solo para desarrollo)

Con EC2 las flotas gestionadas, para implementar una actualización de compilación de un servidor de juegos, debes subir cada nueva versión a Amazon GameLift y crear una nueva flota para ella.

La herramienta de actualización Fast Build te permite saltarte estos pasos durante el desarrollo, lo que te permite ahorrar tiempo y agilizar la iteración del desarrollo. Con esta herramienta, puedes actualizar rápidamente los archivos de compilación del juego en todos los ordenadores de una flota existente. La herramienta tiene varias opciones: puedes reemplazar una versión completa del juego o cambiar archivos específicos, y puedes gestionar cómo reiniciar los procesos del servidor del juego tras las actualizaciones. También puedes usarla para actualizar los ordenadores individuales de una flota.

Para obtener la herramienta Fast Build Update Tool y obtener más información sobre cómo usarla, visita el repositorio de Amazon GameLift Toolkit de The Fast Build Update Tool en Github.

Agregar un script de instalación de la compilación

Cree un script de instalación para el sistema operativo (SO) de la compilación del juego:

  • Windows: cree un archivo de procesamiento por lotes denominado «install.bat».

  • Linux: cree un archivo de script de shell denominado “install.sh“.

Al crear un script de instalación, tenga en cuenta lo siguiente:

  • El script no puede aceptar ninguna entrada por parte del usuario.

  • Amazon GameLift instala la compilación y vuelve a crear los directorios de archivos del paquete de compilación en un servidor de alojamiento en las siguientes ubicaciones:

    • Flotas de Windows: C:\game

    • Flotas de Linux: /local/game

  • Durante el proceso de instalación para flotas de Linux, el usuario que realiza la ejecución tiene acceso limitado a la estructura de archivos de la instancia. Dicho usuario dispone de acceso completo al directorio en el que se instalan los archivos de compilación. Si el script de instalación realiza acciones que requieren permisos de administrador, especifique el acceso de administrador mediante sudo. El usuario en ejecución para las flotas de Windows dispone de permisos de administrador de forma predeterminada. Los errores de permisos relacionados con el script de instalación generan un mensaje de evento que indica un problema con el script.

  • En Linux, Amazon GameLift admite lenguajes de interpretación de shell comunes, como bash. Añada un shebang (como #!/bin/bash) al principio del script de instalación. Para verificar la compatibilidad con los comandos de shell que prefiera, inicie una sesión remota en una instancia de Linux activa y abra una solicitud del shell. Para obtener más información, consulte Conéctese remotamente a las instancias de GameLift la flota de Amazon.

  • El script de instalación no puede basarse en una conexión entre VPC pares. La conexión entre VPC pares no estará disponible hasta que Amazon GameLift instale la versión en las instancias de flota.

ejemplo Archivo bash de instalación de Windows

En este ejemplo, el archivo install.bat instala los componentes del tiempo de ejecución de Visual C++ necesarios para el servidor de juegos y escribe los resultados en un archivo de registro. El script incluye el archivo de componente en el paquete de compilación en la raíz.

vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
ejemplo Script de shell de instalación de Linux

Este archivo install.sh de ejemplo utiliza bash en el script de instalación y escribe los resultados en un archivo de registro.

#!/bin/bash echo 'Hello World' > install.log

Este install.sh archivo de ejemplo muestra cómo puedes usar el CloudWatch agente de Amazon para recopilar métricas personalizadas y a nivel del sistema y gestionar la rotación de registros. Como Amazon GameLift opera en un servicioVPC, debes conceder GameLift permisos a Amazon para que asuma una función AWS Identity and Access Management (IAM) en tu nombre. Para permitir que Amazon GameLift asuma un rol, crea un rol que incluya la política AWS CloudWatchAgentAdminPolicy gestionada y utilízalo cuando crees una flota.

sudo yum install -y amazon-cloudwatch-agent sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install -y collectd cat <<'EOF' > /tmp/config.json { "agent": { "metrics_collection_interval": 60, "run_as_user": "root", "credentials": { "role_arn": "arn:aws:iam::account#:role/rolename" } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/tmp/log", "log_group_name": "gllog", "log_stream_name": "{instance_id}" } ] } } }, "metrics": { "namespace": "GL_Metric", "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { // Configure metrics you want to collect. // For more information, see Manually create or edit the CloudWatch agent configuration file. } } } EOF sudo mv /tmp/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json sudo systemctl enable amazon-cloudwatch-agent.service