Carga de una compilación del servidor de juegos personalizada en 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.

Carga de una compilación del servidor de juegos personalizada en Amazon GameLift

Después de integrar el servidor de juegos con Amazon GameLift, cargue los archivos de compilación en 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 mediante AWS Command Line Interface (AWS CLI) o un SDK de AWS.

Empaquetado de los archivos de compilación del juego

Antes de cargar el servidor de juegos configurado en Amazon GameLift, empaquete 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 compilaciones de juegos creadas con el SDK del servidor Amazon GameLift para C++ (incluidas las creadas con el complemento Unreal), incluya el DLL de OpenSSL para la misma versión de OpenSSL con la que creó el SDK del servidor. Consulte el archivo README del SDK del servidor para obtener más información.

  • Script de instalación (opcional): archivo de script para administrar las tareas de instalación de la compilación del juego en los servidores de alojamiento de Amazon GameLift. 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.

Puede configurar cualquier aplicación de la compilación, incluido el script de instalación, para obtener acceso seguro a los recursos de otros servicios de AWS. 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.

Creación de una compilació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 de juegos, la compilación pasa al estado Listo.

Cuando la compilación esté lista, podrá implementarla en una nueva flota de Amazon GameLift. Para obtener más información, consulte Creación de una flota administrada por Amazon GameLift .Cuando Amazon GameLift configure la nueva flota, descargará los archivos de compilación en cada instancia de la flota e instalará 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, utilice el comando de la AWS CLI upload-build. Este comando crea un registro de compilación nuevo en Amazon GameLift y carga archivos desde la ubicación que especifique.

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 SDK del servidor de Amazon GameLift con la que se ha integrado el servidor de juegos. Si no proporciona un valor, Amazon GameLift utiliza el valor predeterminado 4.0.2. Si especifica una versión incorrecta del SDK del servidor, es posible que la compilación del servidor de juegos falle al llamar a InitSdk para establecer una conexión con el servicio de Amazon GameLift.

  • 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 región de AWS en la que desea crear la compilació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

Como respuesta a su 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 cargarlos en Amazon GameLift desde allí. Al crear la compilación, debe especificar la ubicación del bucket de S3 y Amazon GameLift recuperará los archivos de compilación directamente desde 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árguelos en un bucket de S3 en su Cuenta de AWS. Tome nota de la etiqueta del bucket y el nombre de archivo, ya que los necesitará para crear una compilación de Amazon GameLift.

  2. Otorgue acceso a Amazon GameLift a los archivos de compilación. Para crear un rol de IAM;, siga las instrucciones en Acceso a un archivo de compilación de un juego en Amazon S3. En cuanto haya creado el rol, tome nota del nombre de recurso de Amazon (ARN) del nuevo rol, ya que lo necesitará para crear una compilación.

  3. Cree una compilación. Utilice la consola de Amazon GameLift 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 consola de Amazon GameLift, en el panel de navegación, elija Alojamiento, Compilaciones.

  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. En Compilación del servidor de juegos, especifique el URI de S3 del objeto de compilación que cargó en Amazon S3 y elija la versión del objeto. Si no recuerda el URI y la versión del objeto de Amazon S3, elija Explorar S3 y busque el objeto de compilación.

    5. Para el rol de IAM, elija el rol creado que permite a Amazon GameLift acceder a su 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 Create (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 SDK del servidor de Amazon GameLift utilizado para integrar el servidor de juegos con Amazon GameLift. Si no proporciona un valor, Amazon GameLift utiliza el valor predeterminado 4.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 rol de IAM 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: cree la compilación en la región de AWS 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

      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

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

Una vez que haya creado una compilación de Amazon GameLift, no podrá actualizar los archivos de compilación asociados a ella. Para cada nuevo conjunto de archivos, cree una nueva compilación de Amazon GameLift. Con el comando upload-build, Amazon GameLift creará 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.

Tenga en cuenta estos consejos a la hora de implementar compilaciones actualizadas:

  • Utilice colas e intercambie las flotas según sea necesario. Al configurar el cliente del juego con Amazon GameLift, especifique 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 el cliente de juegos con Amazon GameLift, especifique un alias de flota en lugar de un ID de la 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 las implementaciones de Amazon GameLift a su sistema de compilación, consulte Automatización de las implementaciones en Amazon GameLift en el blog de tecnología de juegos de AWS

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 comunes de intérprete de shell, 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 confiar en una conexión de emparejamiento de VPC. La conexión de emparejamiento de VPC no estará disponible hasta que Amazon GameLift instale la compilación en las instancias de la 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 archivo install.sh de ejemplo muestra cómo puede utilizar el agente de Amazon CloudWatch para recopilar métricas personalizadas y de nivel del sistema, y gestionar la rotación de registros. Puesto que Amazon GameLift se ejecuta en una VPC de servicio, debe conceder permisos a Amazon GameLift para que asuma un rol AWS Identity and Access Management (IAM) en su nombre. Para permitir que Amazon GameLift asuma un rol, cree un rol que incluya la política administrada de AWS y utilice ese rol cuando cree 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