

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.

# Preparación para el desarrollo iterativo con Amazon GameLift Servers Anywhere
<a name="integration-dev-iteration"></a>

Amazon GameLift Servers proporciona herramientas y soluciones para ayudarlo a configurar un entorno de pruebas alojado para el uso durante el desarrollo de juegos. Con estas herramientas, puede crear un entorno que refleje la experiencia real de los jugadores con el alojamiento administrado con Amazon GameLift Servers y que permita un proceso de desarrollo rápido e iterativo.

Con un entorno de pruebas independiente, se eliminan los gastos generales de una flota administrada por Amazon GameLift Servers durante las pruebas. Ya no es necesario cargar cada nueva iteración de compilación del servidor de juegos, crear una flota para esta y esperar más de 15 minutos para que se active. En lugar de todo eso, puede crear una nueva compilación, actualizar rápidamente la flota de pruebas con la nueva compilación, iniciarla y empezar las pruebas.

Con una flota de Amazon GameLift Servers Anywhere, puede configurar un entorno de prueba con un dispositivo local, como una estación de trabajo de desarrollo. También puede configurar un entorno de prueba mediante un recurso de alojamiento basado en la nube.

Configure un entorno de prueba de Anywhere para desarrollar y probar distintos escenarios, como los siguientes: 
+ Pruebe la integración del servidor de juegos con el SDK del servidor de Amazon GameLift Servers. Puedes realizar pruebas incluso sin un cliente de juego que funcione mediante llamadas AWS CLI para iniciar nuevas sesiones de juego y realizar un seguimiento de los eventos de las sesiones de juego.
+ Pruebe las interacciones entre el cliente del juego, el servicio de backend y el servicio de Amazon GameLift Servers a medida que desarrolla componentes para el juego. Afine la experiencia del jugador al unirse a una partida.
+ Experimente con el diseño de emparejador de FlexMatch. Pruebe las variaciones del conjunto de reglas y otras implementaciones de características de emparejamiento. Configure y pruebe el relleno de emparejamiento.
+ Pruebe otras características de alojamiento de Amazon GameLift Servers, como los ajustes de configuración del tiempo de ejecución (con el agente de Amazon GameLift Servers) para administrar el ciclo de vida de los servidores de juegos.
+ Cree, pruebe y repita rápidamente para validar todos los aspectos de la experiencia del jugador, lo que incluye las interacciones multijugador, en un entorno alojado y en directo. 

Más adelante, cuando prepare el juego para el lanzamiento, será recomendable que añada flotas administradas por Amazon GameLift Servers para refinar las configuraciones de alojamiento y probar escenarios adicionales, como los siguientes: 
+ Experimente y haga pruebas con los diseños de colas de las sesiones de juego, lo que incluye el uso de flotas con múltiples ubicaciones, flotas de spot y bajo demanda y muchos tipos de instancias.
+ Pruebe las opciones de ubicación de las sesiones de juego con flotas administradas, como el uso de políticas de latencia opcionales y los ajustes de priorización de flotas.
+ Configure el escalado de la capacidad para adaptarlo a la demanda de jugadores, usando para ello opciones de escalado manual o automático.
+ Configure AWS CloudFormation con flotas Amazon GameLift Servers gestionadas para gestionar sus recursos de alojamiento a largo plazo.

**Fast Build Update Tool (solo para desarrollo)**  
Con EC2 las flotas gestionadas, para implementar una actualización de compilación de un servidor de juegos, debes cargar cada nueva versión Amazon GameLift Servers y crear una nueva flota para ella.   
Con Fast Build Update Tool, puede omitir estos pasos durante el desarrollo, lo que le permite ahorrar tiempo y agilizar la iteración del desarrollo. Con esta herramienta, puede actualizar rápidamente los archivos de compilación de juegos en todos los recursos de computación de una flota existente. La herramienta tiene varias opciones: puede reemplazar una compilación de juego completa o cambiar 6 archivos específicos, y puede administrar cómo reiniciar los procesos del servidor de juegos tras las actualizaciones; también puede usarla para actualizar los recursos de computación de una flota.  
Para conseguir Fast Build Update Tool y obtener más información sobre su uso, visite el repositorio del kit de herramientas de Amazon GameLift Servers para [Fast Build Update Tool](https://github.com/aws/amazon-gamelift-toolkit/tree/main/fast-build-update-tool) en GitHub. 

**Topics**
+ [Creación de un entorno de pruebas basado en la nube](integration-dev-iteration-cloud.md)
+ [Configuración de pruebas locales con Amazon GameLift Servers Anywhere](integration-testing.md)
+ [Prueba de la integración con Amazon GameLift Servers local](integration-testing-local.md)

# Creación de un entorno de pruebas basado en la nube
<a name="integration-dev-iteration-cloud"></a>

**nota**  
En este tema se cubren únicamente las pruebas iterativas de juegos integrados en la versión 5.x del SDK del servidor de Amazon GameLift Servers. Si el juego usa la versión 4.x o anterior del SDK del servidor, consulte [Prueba de la integración con Amazon GameLift Servers local](integration-testing-local.md).

Utilice una flota de Amazon GameLift Servers Anywhere para compilar y probar de forma iterativa los componentes de un juego en un entorno de alojamiento basado en la nube. Cree una flota de Anywhere con recursos de alojamiento y una conexión al servicio Amazon GameLift Servers, ejecute los servidores de juegos en ellos y pruebe las funciones del juego según sea necesario. 

**Implementación de una flota de Anywhere con el agente de Amazon GameLift Servers**  
Si la compilación del servidor de juegos está integrada con el SDK 5.x (o una versión posterior) de Amazon GameLift Servers, puede implementarla en una flota de basada en la nube con el agente de Amazon GameLift Servers. El agente es un proceso en segundo plano que administra los ciclos de vida de los servidores de juegos, así como otras tareas en todos los recursos de computación de una flota. Estas tareas incluyen el registro de la computación en una flota de Anywhere, la adquisición de un token de autenticación y los procesos del servidor del starting/stopping juego en función de un conjunto de instrucciones. El agente se controla mediante una configuración de tiempo de ejecución de la flota, que puede actualizar en cualquier momento durante la vida útil de la flota (el agente se implementa automáticamente en las flotas de EC2 administradas). Para obtener más información y descargar el agente, consulte el [Amazon GameLift Servers GitHubrepositorio](https://github.com/aws/amazon-gamelift-agent).

## Configuración de pruebas iterativas con Amazon EC2
<a name="integration-dev-iteration-cloud-ec2"></a>

Utilice el flujo de trabajo guiado de esta [solución del kit de herramientas de Amazon GameLift Servers]( https://github.com/aws/amazon-gamelift-toolkit/tree/main/development-instance-with-amazon-gamelift-anywhere-and-gamelift-agent) a fin de configurar un entorno de alojamiento basado en la nube que simule la experiencia de alojamiento administrado por Amazon GameLift Servers. 

El GitHub repositorio proporciona un conjunto de scripts que automatizan la mayoría de los procesos para configurar un entorno de prueba con Amazon GameLift Servers Anywhere y el Amazon GameLift Servers agente. También encontrará orientación para actualizar el entorno cuando tenga que probar una nueva compilación del servidor de juegos. Puede ejecutar un único script que implemente un entorno de pruebas con una compilación de servidor de juegos de muestra, o puede seguir los pasos para configurarlo con su propia compilación de servidor de juegos. 

En este flujo de trabajo, trabajará completamente en el Consola de administración de AWS, utilizando AWS CloudShell para ejecutar scripts y completar tareas de línea de comandos. 

**nota**  
Para las tareas de este tutorial, necesita un usuario de AWS cuenta con permisos para los siguientes servicios: Amazon GameLift Servers AWS CloudShell,, Amazon S3 AWS Systems Manager, Amazon EC2 y. AWS Identity and Access Management Los usuarios con acceso de nivel de administrador a la AWS cuenta ya tienen los permisos necesarios. 

El flujo de trabajo abarca las siguientes tareas: 
+ **Empaquetado de una la compilación de servidor de juegos para Amazon GameLift Servers.**El flujo de trabajo incluye un script para crear un ejemplo de servidor de juegos en C\$1\$1, que ya se ha integrado en el SDK 5.x del servidor de Amazon GameLift Servers y está listo para el alojamiento. Si lo prefiere, también puede trabajar con su propio proyecto de juego si ha completado la integración.
+ **Configurar un bucket de Amazon Simple Storage Service para almacenar las compilaciones y dependencias de los servidores de juegos.** Al crear nuevas versiones de compilaciones de juegos, podrá almacenarlas en S3 y utilizar los scripts para actualizar la flota de Anywhere a fin de probarlas.
+ **Obtención y compilación del agente de Amazon GameLift Servers.** El agente administra los procesos del servidor de juegos en un recurso de alojamiento basado en la configuración. Utiliza la misma lógica que el alojamiento de EC2 administrado por Amazon GameLift Servers, y se comporta de forma idéntica a este. 
+ **Configuración de una flota de Anywhere para sus recursos de alojamiento.** Con una flota de Anywhere, puede utilizar el servicio Amazon GameLift Servers para alojar recursos que Amazon GameLift Servers no administre. En este paso, también establecerá la configuración del tiempo de ejecución, que le indica al agente de Amazon GameLift Servers cuándo y cómo debe iniciar los procesos del servidor de juegos.
+ **Configurar una instancia de Amazon EC2.** Este es el entorno de pruebas para llevar a cabo las pruebas iterativas. Es mucho más rápido utilizar una instancia de EC2 estándar que una instancia de Amazon GameLift Servers totalmente administrada (que está optimizada para el uso en producción). Con una instancia de EC2 estándar, puede actualizar el servidor de juegos de forma rápida y continua, según sea necesario.
+ **Implementación de la compilación del servidor de juegos y el agente de Amazon GameLift Servers en la instancia de Amazon EC2.**El flujo de trabajo proporciona un script que obtiene la última versión de la compilación del juego y todas las dependencias, y la instala en la instancia de EC2. En este flujo de trabajo, las dependencias incluyen el Amazon GameLift Servers agente y el agente. CloudWatch 
+ **Inicio del agente de Amazon GameLift Servers.** Tras la instalación, el agente se inicia automáticamente y empieza a ejecutar las instrucciones. Entre ellos se incluyen: 
  + Registrar la instancia de EC2 como recurso de computación en la flota de Amazon GameLift Servers Anywhere. 
  + Establezca una WebSocket conexión con el Amazon GameLift Servers servicio y obtenga la configuración de tiempo de ejecución más reciente. 
  + Iniciar los procesos del servidor de juegos con base en las instrucciones de la configuración del tiempo de ejecución. En este flujo de trabajo, el agente recibe la indicación de iniciar un único proceso del ejecutable del servidor de juegos. 
+ **Probar los escenarios de juego.** Cuando el entorno de pruebas esté configurado y se haya instalado la última versión del servidor de juegos, podrá empezar las pruebas. El flujo de trabajo incluye varios pasos para realizar las pruebas, como el inicio de una sesión de juego. Accede a los registros del servidor del CloudWatch juego para hacer un seguimiento del progreso a medida que se inicia la sesión de juego y se prepara para aceptar jugadores. 

  A medida que vaya desarrollando los componentes del juego, como un cliente de juego y un servicio de backend en el cliente, podrá incluirlos en los escenarios de prueba. Use un cliente de juego para solicitar una sesión de juego, recuperar los datos de conexión del servicio Amazon GameLift Servers y, luego, conectarse directamente a la sesión de juego.
+ **Implementar una nueva compilación del servidor de juegos y repetir las pruebas.** Durante el desarrollo del juego, podrá generar nuevas compilaciones del servidor de juegos y, a continuación, implementarlas rápidamente en el entorno de pruebas de EC2 para probarlas. Cárguelas en el bucket de Amazon S3 y utilice los scripts del flujo de trabajo para actualizar el entorno de pruebas.

## Transición de un juego a las flotas administradas por Amazon GameLift Servers
<a name="integration-dev-iteration-cloud-transition"></a>

Cuando haya completado las pruebas de desarrollo y esté listo para preparar el lanzamiento, es un buen momento para cambiar a las flotas administradas por Amazon GameLift Servers. Utilice las flotas administradas para afinar y probar los recursos de alojamiento de juegos. Implemente la solución de ubicación de las sesiones de juego (colas y emparejadores), seleccione las mejores ubicaciones y el mejor hardware de alojamiento (lo que incluye las flotas de spot) posible y elija una estrategia para escalar la capacidad. También puedes empezar a utilizarlos AWS CloudFormation para gestionar de forma más eficiente los ciclos de vida de todos tus recursos de alojamiento de juegos, incluidas las flotas, las colas y los matchmakers.

La transición de una flota de pruebas de Anywhere basada en la nube a una flota administrada por Amazon GameLift Servers es muy sencilla. No es necesario cambiar el código del juego y puede utilizar las mismas colas y los mismos emparejadores. Haga lo siguiente: 
+ **Creación de un recurso de compilación de Amazon GameLift Servers.** Con una flota de prueba de Anywhere, tendrá que implementar manualmente la compilación y las dependencias del servidor de juegos en cada uno de los recursos de computación de la flota. Con una flota administrada, solo tiene que cargar el paquete de compilación del juego a Amazon GameLift Servers: este lo implementará automáticamente en todos los recursos de computación de la flota. Consulte [Creación de una compilación de servidor de juegos para Amazon GameLift Servers](gamelift-build-cli-uploading.md) para obtener más información sobre cómo empaquetar los archivos de compilación del juego y cómo crear un recurso de compilación con archivos en un bucket de Amazon S3.
+ **Cree una flota administrada.** Cree una flota mediante la consola o la CLI de AWS , y especifique que se trata de una flota de EC2 administrada. Este tipo de flotas requiere ajustes de configuración adicionales; por ejemplo, debe especificar cuáles son los tipos de instancia y recursos de compilación. Puede usar la misma configuración de tiempo de ejecución para administrar el ciclo de vida de los servidores de juegos en todos los recursos de computación de la flota. Consulte [Cree una EC2 flota Amazon GameLift Servers gestionada](fleets-creating.md) para obtener más información sobre la creación de una flota administrada.
+ **Redireccione los alias de la flota (opcional).** Si ha configurado alias para usarlos en las flotas de Anywhere, puede reutilizar los mismos alias para las flotas administradas. Consulte [Creación de un alias de Amazon GameLift Servers](aliases-creating.md) para obtener más información sobre cómo crear o actualizar un alias.

# Configuración de pruebas locales con Amazon GameLift Servers Anywhere
<a name="integration-testing"></a>

**nota**  
En este se cubren únicamente las pruebas de juegos integrados en la versión 5.x del SDK del servidor de Amazon GameLift Servers. Si el juego usa la versión 4.x o anterior del SDK del servidor, consulte [Prueba de la integración con Amazon GameLift Servers local](integration-testing-local.md).

Utilice una flota de Amazon GameLift Servers Anywhere y su propio hardware para compilar y probar de forma iterativa los componentes de un juego en un entorno de alojamiento simulado. Configure una flota de Anywhere y registre un dispositivo local para establecer una conexión con el servicio Amazon GameLift Servers. Instale la compilación del servidor de juegos en el dispositivo, inicie un proceso de servidor de juegos y pruebe la funcionalidad del juego según sea necesario. Puede actualizar la versión de la compilación del servidor de juegos tantas veces como sea necesario para probar las nuevas iteraciones de la compilación.

Con una flota de Anywhere, puede realizar pruebas mediante la AWS CLI o con scripts de prueba. Si ha integrado un cliente de juegos en Amazon GameLift Servers, puede ejecutar el cliente en el mismo dispositivo local o en un dispositivo diferente. 

Las pruebas locales con una flota de Anywhere son especialmente útiles para probar la integración del servidor de juegos con Amazon GameLift Servers. Dispone de visibilidad total sobre toda la actividad de alojamiento en el equipo local, así como sobre los datos de registro y eventos. 

**nota**  
¿Utiliza el complemento de Amazon GameLift Servers para Unreal Engine o Unity? Estas herramientas incluyen flujos de trabajo guiados para configurar las pruebas locales con una flota de Anywhere. Siga la documentación para [Complemento para Unity: configuración de pruebas locales con Amazon GameLift Servers Anywhere](unity-plug-in-anywhere.md) o [Complemento para Unreal: alojamiento local del juego con Amazon GameLift Servers Anywhere](unreal-plugin-anywhere.md).

**Topics**
+ [Configuración de una flota de Anywhere local](#integration-testing-anywhere-fleet)
+ [Actualización e instalación del servidor de juegos](#integration-testing-dev)
+ [Pruebas en la actividad de la sesión de juego](#integration-testing-test)
+ [Iteración en el servidor de juegos](#fleet-anywhere-iteration)
+ [Transición de un juego a las flotas administradas por Amazon GameLift Servers](#fleet-anywhere-transition)

## Configuración de una flota de Anywhere local
<a name="integration-testing-anywhere-fleet"></a>

Siga estos pasos para crear una flota de Anywhere en su estación de trabajo local. Para obtener instrucciones detalladas mediante la AWS CLI o el Consola de administración de AWS forAmazon GameLift Servers, consulte[Creación de una flota de Amazon GameLift Servers Anywhere](fleets-creating-anywhere.md).

**Creación de la flota de Anywhere**

1. **Cree una ubicación personalizada para la estación de trabajo local (AWS CLI o consola).** Una ubicación personalizada no es más que una etiqueta para el recurso de computación que planea incluir en la flota de Anywhere. Los nombres de ubicaciones personalizadas deben empezar por `custom-`. Por ejemplo: `custom-my_laptop`. Consulte [Creación de una ubicación personalizada](fleets-creating-anywhere.md#fleet-anywhere-location).

1. **Cree una flota en cualquier lugar (AWS CLI o consola).** En este paso, cree el recurso de flota con la ubicación personalizada para la estación de trabajo local. Consulte [Creación de una flota de Anywhere](fleets-creating-anywhere.md#fleet-anywhere-create).

   Anote el valor de ID o ARN de la nueva flota. Lo necesitará para el siguiente paso.

1. **Registre su estación de trabajo local como informática de flota (solo AWS CLI).** Una flota de Anywhere debe tener, al menos, un recurso de computación para alojar servidores de juegos. Consulte [Añadir un recurso de computación a la flota](fleets-creating-anywhere.md#fleet-anywhere-compute). Para añadir un recurso de computación a la flota, necesita la siguiente información: 
   + Un nombre de recurso de computación. Todos los recursos de computación de una flota deben tener un nombre exclusivo.
   + El identificador de la flota de Anywhere. Puede usar el `FleetID` o el `FleetArn`.
   + Los datos de conexión del recurso de computación. Especifique un `IpAddress` o `DnsName`. Así es como Amazon GameLift Servers y los clientes de juego se conectarán a los servidores del juego.
   + Una ubicación personalizada en la flota de Anywhere.

   Anote el valor de retorno de `GameLiftServiceSdkEndpoint`. Necesitará este valor cuando actualice el servidor del juego para que se ejecute en una flota de Anywhere.

## Actualización e instalación del servidor de juegos
<a name="integration-testing-dev"></a>

En esta tarea, se presupone que ya ha integrado una compilación del servidor de juegos en el SDK 5.x del servidor de Amazon GameLift Servers. El proceso de integración implica añadir un código al servidor de juegos para que pueda interactuar con el servicio Amazon GameLift Servers a fin de iniciar y administrar las sesiones de juego. 

En el caso de una flota de Anywhere, debe configurar manualmente algunos ajustes del servidor de juegos. En una flota administrada por Amazon GameLift Servers, estos ajustes se configuran automáticamente. 

**Preparación del servidor de juegos para una flota de Anywhere**

1. **Obtener un token de autenticación.** El servidor de juegos debe incluir un token de autenticación en todas las comunicaciones con el servicio Amazon GameLift Servers. Los tokens de autenticación de Amazon GameLift Servers son de corta duración y deben actualizarse regularmente.

   Una práctica recomendada es crear un script para completar las siguientes tareas:
   + Llame a la acción AWS CLI`get-compute-auth-token`.
   + Guardar el valor del token devuelto en un lugar en el que los procesos del servidor del juego lo puedan recuperar; por ejemplo, en una variable de entorno del recurso de computación local.

   Instale el script con el servidor de juegos en el recurso de computación. Configure el script para que se ejecute antes de que se inicie el primer proceso del servidor de juegos. Mientras los procesos del servidor de juegos estén activos, ejecute el script regularmente para seguir teniendo un token de autenticación válido. Todos los procesos del servidor de juegos del recurso de computación pueden usar el mismo token de autenticación.

1. **Actualice el código del servidor de juegos de Amazon GameLift Servers.** Al integrar el código del servidor de juegos en el SDK del servidor de Amazon GameLift Servers, ha añadido una llamada a la acción `InitSdk()`. Cuando el servidor de juegos se ejecuta en una flota de Anywhere, esta llamada requiere parámetros de servidor adicionales. Para obtener más información, consulte los artículos [Inicialización del proceso del servidor](gamelift-sdk-server-api.md#gamelift-sdk-server-initialize) y [SDK 5.x del servidor de Amazon GameLift Servers](reference-serversdk.md) correspondientes para su lenguaje de desarrollo. A continuación, tiene una lista con los parámetros del servidor.
   + `webSocketUrl`: en este parámetro, ponga el valor `GameLiftServiceSdkEndpoint` que se devuelve al registrar un recurso de computación en la flota. 
   + `hostId`— Defina este parámetro con el nombre de cálculo que especifique al registrar un cálculo en la flota de Anywhere.
   + `fleetId`: en este parámetro, ponga el ID de la flota de Anywhere.
   + `authToken`: en este parámetro, ponga el token devuelto en respuesta a una solicitud de recuperación de token de autenticación para un recurso de computación. 
   + `processId`: ponga este parámetro de modo que identifique a un proceso del servidor de juegos que se esté ejecutando en el recurso de computación local; cada proceso simultáneo del servidor de juegos debe tener un ID de proceso único.

   Los valores de los parámetros del servidor empleados por cada proceso del servidor de juegos deben ser específicos para el recurso de computación de la flota de Anywhere en la que se esté ejecutando el proceso. Para obtener información detallada sobre cómo obtener los valores adecuados para un recurso de computación, consulte [Añadir un recurso de computación a la flota](fleets-creating-anywhere.md#fleet-anywhere-compute). Como práctica recomendada, defina `webSocketUrl`, `hostId`, `fleetId` y `authToken` como variables de entorno en el recurso de computación local. Todos los procesos del servidor que se ejecuten en el recurso de computación utilizarán estos valores. 

1. Instale la compilación del servidor de juegos en el recurso de computación local. Incluya todas las dependencias necesarias para ejecutar el servidor de juegos.

1. Inicie uno o más de los procesos de servidor de juegos ejecutados en el recurso de computación local. Cuando el proceso del servidor de juegos llame a la acción `ProcessReady()` del SDK del servidor, el proceso estará listo para alojar una sesión de juego.

## Pruebas en la actividad de la sesión de juego
<a name="integration-testing-test"></a>

Para probar la integración del servidor de juegos, trabaje con las sesiones de juego. Si no tiene un cliente de juego integrado con la funcionalidad de Amazon GameLift Servers, puede usar la CLI de AWS para iniciar sesiones de juego. Pruebe los siguientes escenarios:
+ **Cree una sesión de juego.** Llame al [create-game-session ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-game-session.html)comando (o a la operación [ CreateGameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateGameSession.html)de la API). Especifique la ubicación personalizada y el ID de la flota de Anywhere. Esta llamada devuelve un identificador único para la nueva sesión de juego.
+ **Comprobar el estado de la sesión de juego.**[describe-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-game-sessions.html)Comando de llamada (o acción [DescribeGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_DescribeGameSessions.html)de la API). Especifique el ID de la sesión de juego. Esta llamada devuelve información detallada de la sesión de juego, lo que incluye el estado de la sesión de juego. Las sesiones de juego en estado activo están listas para que los jugadores se conecten. Para obtener una lista de todas las sesiones de juego de la flota, llama al [list-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-game-sessions.html)comando (o a la acción de la [ListGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_ListGameSessions.html)API).
+ **Conectarse a la sesión de juego.** Si el cliente de juego puede unirse a una sesión de juego, use los datos de conexión incluidos en la información de la sesión de juego.

## Iteración en el servidor de juegos
<a name="fleet-anywhere-iteration"></a>

Puede usar el mismo recurso de computación y la misma flota de Anywhere para probar otras versiones de la compilación del servidor de juegos. 

1. **Limpiar la `GameSession` existente.** Si el proceso del servidor de juegos se bloquea o no llama a `ProcessEnding()`, Amazon GameLift Servers limpiará la `GameSession` cuando el servidor de juegos deje de enviar comprobaciones de estado.

1. **Generar una nueva compilación del servidor de juegos.** Haga cambios en el servidor de juegos y empaquete una compilación revisada. 

1. **Actualizar la compilación del servidor de juegos en el recurso de computación local.** Su flota de Anywhere anterior sigue activa y su portátil sigue registrado como recurso informático en la flota.

1. **Obtener un token de autorización actualizado.** Llame al comando [get-compute-auth-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html)CLI y almacene el token en el equipo local. 

1. **Iniciar uno o más de los procesos de servidor de juegos ejecutados en el recurso de computación local.** Cuando el proceso del servidor de juegos llame a `ProcessReady()`, estará listo para el uso en las pruebas.

## Transición de un juego a las flotas administradas por Amazon GameLift Servers
<a name="fleet-anywhere-transition"></a>

Cuando haya completado las pruebas de desarrollo y esté listo para preparar el lanzamiento, es un buen momento para cambiar a las flotas administradas por Amazon GameLift Servers. Utilice las flotas administradas para afinar y probar los recursos de alojamiento de juegos. Implemente la solución de ubicación de las sesiones de juego (colas y emparejadores), seleccione las mejores ubicaciones y el mejor hardware de alojamiento (lo que incluye las flotas de spot) posible y elija una estrategia para escalar la capacidad. También puedes empezar a utilizarlos AWS CloudFormation para gestionar de forma más eficiente los ciclos de vida de todos tus recursos de alojamiento de juegos, incluidas las flotas, las colas y los matchmakers.

Para pasar de una flota de prueba local de Anywhere a una flota administrada por Amazon GameLift Servers, debe hacer una serie de pequeños cambios. Puede volver a utilizar las mismas colas y los mismos emparejadores. Haga lo siguiente: 
+ **Cambie la llamada del código del servidor de juegos a `InitSdk()`.** Elimine los parámetros del servidor. En el caso de una flota administrada, Amazon GameLift Servers hace un seguimiento automático de esta información.
+ **Creación de un recurso de compilación de Amazon GameLift Servers.** Con una flota de prueba de Anywhere, tendrá que implementar manualmente la compilación y las dependencias del servidor de juegos en cada uno de los recursos de computación de la flota. Con una flota administrada, usted crea y carga el paquete de compilación del juego en Amazon GameLift Servers, y este lo implementa automáticamente en todos los recursos de computación de la flota. Consulte [Creación de una compilación de servidor de juegos para Amazon GameLift Servers](gamelift-build-cli-uploading.md) para obtener más información sobre cómo empaquetar los archivos de compilación del juego y cómo crear un recurso de compilación con archivos en un bucket de Amazon S3. No incluya scripts que registren un recurso de computación y obtengan un token de autenticación, ya que, para flotas administradas, Amazon GameLift Servers gestiona automáticamente estas tareas.
+ **Cree una flota administrada.** Cree una flota mediante la consola o la AWS CLI, especificando una flota gestionada por EC2. Este tipo de flotas requiere ajustes de configuración adicionales; por ejemplo, debe especificar cuáles son los tipos de instancia y recursos de compilación. Debe establecer una configuración de tiempo de ejecución para administrar el ciclo de vida de los servidores de juegos en todos los recursos de computación de la flota. Consulte [Cree una EC2 flota Amazon GameLift Servers gestionada](fleets-creating.md) para obtener más información sobre la creación de una flota administrada.
+ **Redireccione los alias de la flota (opcional).** Si ha configurado alias para usarlos en las flotas de Anywhere, puede reutilizar los mismos alias para las flotas administradas. Consulte [Creación de un alias de Amazon GameLift Servers](aliases-creating.md) para obtener más información sobre cómo crear o actualizar un alias.

# Prueba de la integración con Amazon GameLift Servers local
<a name="integration-testing-local"></a>

**nota**  
En este se cubren únicamente las pruebas de juegos integrados en las versiones 3.x y 4.x del SDK del servidor de Amazon GameLift Servers. El paquete del SDK del servidor incluye una versión compatible de Amazon GameLift Servers local. Si utiliza la versión 5.x del SDK del servidor, consulte [Pruebas locales con el SDK 5.x del SDK del servidor de GameLift](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-testing-local.html) para realizar pruebas locales con una flota de Amazon GameLift Servers Anywhere. Para obtener instrucciones sobre cómo migrar del SDK 4.x a 5.x, consulte [Migración al SDK 5.x del servidor de GameLift](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-serversdk5-migration.html).

Utilice Amazon GameLift Servers Local para ejecutar una versión limitada del servicio Amazon GameLift Servers administrado en un dispositivo local y probar cómo se integra el juego. Esta herramienta es útil al realizar el desarrollo iterativo en la integración del juego. La alternativa, que consiste en cargar cada nueva compilación en Amazon GameLift Servers y configurar una flota para alojar el juego, puede tardar varios minutos, o más, cada vez. 

Con Amazon GameLift Servers Local, puede verificar lo siguiente:
+ Que el servidor de juegos se integra correctamente con el SDK del servidor y comunica de forma adecuada con el servicio Amazon GameLift Servers para empezar nuevas sesiones de juego, aceptar jugadores nuevos e informar sobre el estado. 
+ Que el cliente de juego está integrado correctamente con el SDK de AWS para Amazon GameLift Servers y que puede recuperar información sobre sesiones de juego existentes, iniciar sesiones de juego nuevas, conectar jugadores a juegos y conectarse a la sesión de juego.

Amazon GameLift Servers Local es una herramienta de línea de comandos que inicia una versión autónoma del servicio Amazon GameLift Servers administrado. Amazon GameLift Servers local también proporciona un registro de evento de ejecución de la inicialización del proceso del servidor, comprobaciones de estado y llamadas y respuestas de la API. Amazon GameLift Servers local reconoce un subconjunto de las acciones del SDK de AWS para Amazon GameLift Servers. Puede realizar llamadas desde la AWS CLI o desde el cliente de juego. Todas las acciones de la API que se ejecutan localmente lo hacen de la misma forma que en el servicio web de Amazon GameLift Servers.

Cada proceso del servidor solo debe alojar una sesión de juego. La sesión de juego es el archivo ejecutable que se utiliza para conectarse a Amazon GameLift Servers local. Cuando se complete la sesión de juego, debe llamar a `GameLiftServerSDK::ProcessEnding` y salir del proceso. Al realizar pruebas de forma local con Amazon GameLift Servers local, puede iniciar varios procesos del servidor. Cada proceso se conectará a Amazon GameLift Servers local. A continuación, podrá crear una sesión de juego para cada proceso del servidor. Cuando finalice la sesión de juego, el proceso del servidor de juegos debería cerrarse. A continuación, debe iniciar manualmente otro proceso de servidor. 

Amazon GameLift Servers admite las siguientes API:
+ CreateGameSession
+ CreatePlayerSession
+ CreatePlayerSessions
+ DescribeGameSessions
+ DescribePlayerSessions

## Configuración de Amazon GameLift Servers local
<a name="integration-testing-local-start"></a>

Amazon GameLift Servers Local se suministra en un archivo `.jar` ejecutable que se incluye en el [SDK del servidor](https://aws.amazon.com/gamelift/servers/getting-started/). Se puede ejecutar en Windows o Linux y utilizarse con cualquier lenguaje compatible con Amazon GameLift Servers. La versión 4.0.2 del SDK se puede descargar desde las [versiones oficiales de GitHub](https://github.com/amazon-gamelift/amazon-gamelift-servers-csharp-server-sdk/releases). El archivo GameLiftLocal.jar se incluye en el artefacto GameLift-CSharp-ServerSDK-4.0.2.zip.

Antes de ejecutar Local, también debe tener instalado lo siguiente.
+ Una compilación del SDK del servidor para las versiones de la 3.1.5 a la 4.x. de Amazon GameLift Servers.
+ Java 8 

## Prueba de un servidor de juegos
<a name="integration-testing-local-server"></a>

Si solo desea probar el servidor de juegos, puede utilizar la AWS CLI para simular llamadas del cliente de juego al servicio Amazon GameLift Servers Local. De este modo, se verifica que el servidor de juegos se comporta según lo esperado: 
+ El servidor de juegos se lanza correctamente e inicializa el SDK del servidor de Amazon GameLift Servers.
+ Como parte del proceso de lanzamiento, el servidor de juegos notifica a Amazon GameLift Servers que el servidor está listo para alojar sesiones de juego.
+ El servidor de juegos envía estados a Amazon GameLift Servers cada minuto mientras se ejecuta.
+ El servidor de juegos responde a las solicitudes para iniciar una sesión de juego nueva.

1. **Inicie Amazon GameLift Servers Local.**

   Abra una ventana de símbolo del sistema, vaya al directorio que contiene el archivo `GameLiftLocal.jar` y ejecútelo. De forma predeterminada, Local atiende a las solicitudes de clientes de juego en el puerto 8080. Para especificar un número de puerto diferente, utilice el parámetro `-p`, tal y como se muestra en el ejemplo siguiente:

   ```
   java -jar GameLiftLocal.jar -p 9080
   ```

   En cuanto Local arranque, verá los registros que indican que se iniciaron dos servidores locales, uno que atiende al servidor de juegos y otro al cliente de juego o a la AWS CLI. Los registros continúan informando sobre la actividad de los dos servidores locales, incluida la comunicación a y desde los componentes de juego.

1. **Inicie el servidor de juegos.**

   Arranque el servidor de juegos integrado en Amazon GameLift Servers localmente. No es necesario cambiar el punto de enlace del servidor de juegos. 

   En la ventana de símbolo del sistema de Local, los mensajes de registro indican que el servidor de juegos se ha conectado al servicio Amazon GameLift Servers Local. Esto significa que el servidor de juegos ha inicializado correctamente el SDK del servidor de Amazon GameLift Servers (con `InitSDK()`). Ha llamado a `ProcessReady()` con las rutas de registro que se muestran y, en caso de éxito, está listo para alojar una sesión de juego. Mientras se ejecuta el servidor de juegos, Amazon GameLift Servers registra cada informe de estado del servidor de juegos. El siguiente ejemplo de mensajes de registro muestra un servidor de juegos integrado correctamente:

   ```
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal!
   16:50:53,451  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true
   16:50:53,543  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs"
   logPathsToUpload: "C:\\game\\error"
   port: 1935
           
   16:50:53,544  INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true,
   16:50:53,558  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy
   ```

   A continuación se presentan posibles mensajes de error y advertencia:
   + Error: “ProcessReady no encontró un proceso con pID: *<ID de proceso>.* ¿Se ha invocado InitSDK()?”
   + Advertencia: “El estado del proceso ya existe para el proceso con pID: *<ID de proceso>*. ¿Se ha invocado ProcessReady(...) más de una vez?»

1. **Inicie AWS CLI.**

   En cuanto el servidor de juegos llame a `ProcessReady()` correctamente, podrá comenzar a realizar llamadas de cliente. Abra una ventana de símbolo del sistema y empiece con la herramienta AWS CLI. De forma predeterminada, la AWS CLI utiliza el punto de enlace de servicio web de Amazon GameLift Servers. Debe anularlo con el punto de enlace de Local en cada solicitud que emplee el parámetro `--endpoint-url`, tal y como se muestra en el siguiente ejemplo.

   ```
   AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080  --fleet-id fleet-123
   ```

   En la ventana de símbolo del sistema de la AWS CLI, los comandos de `AWS gamelift` generan respuestas similares a las documentadas en la [Referencia de comandos de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/gamelift).

1. **Cree una sesión de juego.**

   Con la AWS CLI, envíe una solicitud [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html). La solicitud debería seguir la sintaxis esperada. Para Local, el parámetro `FleetId` puede adaptarse a cualquier cadena válida (`^fleet-\S+`).

   ```
   AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id
       fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
   ```

   En la ventana de símbolo del sistema de Local, los mensajes de registro indican que Amazon GameLift Servers Local ha enviado una devolución de la llamada `onStartGameSession` al servidor de juegos. Si se crea una sesión de juego correctamente, el servidor de juegos responderá llamado a `ActivateGameSession`.

   ```
   13:57:36,129  INFO || - [SDKInvokerImpl]
           Thread-2 - Finished sending event to game server to start a game session:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6.
           Waiting for ack response.13:57:36,143  INFO || - [SDKInvokerImpl]
           Thread-2 - Received ack response: true13:57:36,144  INFO || -
           [CreateGameSessionDispatcher] Thread-2 - GameSession with id:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6
           created13:57:36,227  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest
           requested? true13:57:36,230  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId:
           "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"
   ```

   En la ventana de la AWS CLI, Amazon GameLift Servers responde con un objeto de sesión de juego que incluye un ID de sesión de juego. Observe que el estado de la nueva sesión de juego es Activating. El estado cambia a Active cuando el servidor de juegos invoca a ActivateGameSession. Si desea ver el estado modificado, utilice la AWS CLI para llamar a `DescribeGameSessions()`.

   ```
   {
       "GameSession": {
         "Status": "ACTIVATING",
         "MaximumPlayerSessionCount": 2,
         "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
         "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890",
         "IpAddress": "127.0.0.1",
         "Port": 1935
       }
   }
   ```

## Prueba de un servidor y un cliente de juegos
<a name="integration-testing-local-client"></a>

Para comprobar la integración total del juego, incluidos los jugadores conectados a los juegos, puede ejecutar tanto el servidor como el cliente de juego localmente. De este modo podrá realizar llamadas programáticas desde su cliente de juego a Amazon GameLift Servers Local. Puede verificar las siguientes acciones: 
+ El cliente de juego está realizando correctamente solicitudes del SDK de AWS al servicio Amazon GameLift Servers Local, incluida la creación de sesiones de juego, la recuperación de información sobre sesiones de juego existentes y la creación de sesiones de jugador.
+ El servidor de juegos está validando jugadores correctamente al intentar conectarse a una sesión de juego. Para validar los jugadores, el servidor de juego puede recuperar datos de los jugadores (si están implementados).
+ El servidor de juegos informa sobre la pérdida de la conexión cuando un jugador abandona el juego.
+ El servidor de juegos informa sobre la finalización de una sesión de juego.

1. **Inicie Amazon GameLift Servers Local.**

   Abra una ventana de símbolo del sistema, vaya al directorio que contiene el archivo `GameLiftLocal.jar` y ejecútelo. De forma predeterminada, Local atiende a las solicitudes de clientes de juego en el puerto 8080. Para especificar un número de puerto diferente, utilice el parámetro `-p`, tal y como se muestra en el ejemplo siguiente.

   ```
   ./gamelift-local -p 9080
   ```

   En cuanto Local arranque, verá los registros que indican que se iniciaron dos servidores locales, uno que atiende al servidor de juegos y otro al cliente de juego o a la AWS CLI.

1. **Inicie el servidor de juegos.**

   Arranque el servidor de juegos integrado en Amazon GameLift Servers localmente. Consulte [Prueba de un servidor de juegos](#integration-testing-local-server) para obtener más información acerca de los registros de mensajes.

1. **Configure su cliente de juego para Local e inícielo.**

   Para utilizar el cliente de juego con el servicio Amazon GameLift Servers Local, debe realizar los siguientes cambios en la configuración del cliente de juego, tal y como se describe en [Configuración de la API de Amazon GameLift Servers](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize):
   + Modifique el objeto `ClientConfiguration` para que apunte hacia el punto de enlace de Local, por ejemplo `http://localhost:9080`.
   + Defina un valor de ID de la flota de destino. Para Local, no se requiere un ID de flota real; defina la flota de destino con cualquier cadena válida (`^fleet-\S+`), como `fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d`.
   + Defina las credenciales de AWS. Para Local, no requiere credenciales de AWS reales, de modo que puede definir la clave de acceso y la clave secreta para cualquier cadena. 

   En la ventana de símbolo del sistema de Local, después de iniciar el cliente de juego, los mensajes de registro deberían indicar que ha inicializado `GameLiftClient` y que se comunica correctamente con el servicio Amazon GameLift Servers. 

1. **Pruebe las llamadas del cliente de juego al servicio Amazon GameLift Servers.**

   Compruebe que el cliente de juego realiza correctamente alguna o todas las llamadas a la API siguientes:
   + [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html)
   + [DescribeGameSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html)
   + [CreatePlayerSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSession.html)
   + [CreatePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSessions.html)
   + [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html)

   En la ventana de símbolo del sistema de Local, solo las llamadas a `CreateGameSession()` resultan en mensajes de registro. Los mensajes de registro muestran el momento en que Amazon GameLift Servers Local solicita al servidor de juegos que inicie una sesión de juego (devolución de llamada `onStartGameSession`) y obtiene un `ActivateGameSession` correcto cuando el servidor de juegos lo llama. En la ventana de la AWS CLI, todas las llamadas a la API generan respuestas o mensajes de error tal y como se documenta. 

1. **Compruebe que el servidor de juegos valida las conexiones de jugadores nuevas.**

   Después de crear una sesión de juego y una sesión de jugador, establezca una conexión directa con la sesión de juego.

   En la ventana de símbolo del sistema de Local, los mensajes de registro deberían mostrar que el servidor de juegos ha enviado una solicitud `AcceptPlayerSession()` para validar la conexión de jugadores nueva. Si utiliza la AWS CLI para llamar a `DescribePlayerSessions()`, el estado de la sesión de jugador debería cambiar de Reserved a Active.

1. **Compruebe que el servidor de juegos informa sobre el estado del juego y del jugador al servicio Amazon GameLift Servers.**

   Para que Amazon GameLift Servers administre la demanda de los jugadores y notifique correctamente las métricas, el servidor de juegos debe informar sobre varios estados a Amazon GameLift Servers. Compruebe que Local registra los eventos relacionados con las acciones siguientes. Es posible que también desee utilizar la AWS CLI para realizar un seguimiento de los cambios de estado.
   + **El jugador se desconecta de una sesión de juego**: los mensajes de registro de Amazon GameLift Servers local deberían mostrar que el servidor de juegos llama a `RemovePlayerSession()`. Una llamada de la AWS CLI a `DescribePlayerSessions()` debería mostrar un cambio de estado de `Active` a `Completed`. También puede llamar a `DescribeGameSessions()` para comprobar que el recuento de jugadores actual de la sesión de juego resulta en un jugador menos.
   + **La sesión de juego finaliza**: los mensajes de registro de Amazon GameLift Servers local deberían mostrar que el servidor de juegos llama a `TerminateGameSession()`. 
**nota**  
La guía anterior consistía en llamar a `TerminateGameSession()` al finalizar una sesión de juego. Este método ha quedado obsoleto en la versión 4.0.1 del SDK del servidor de Amazon GameLift Servers. Consulte [Finalización de una sesión de juego](gamelift-sdk-server-api.md#gamelift-sdk-server-shutdownsession). 
   + **El proceso del servidor ha finalizado**: los mensajes de registro de Amazon GameLift Servers local deberían mostrar que el servidor de juegos llama a `ProcessEnding()`. Una llamada de la AWS CLI a `DescribeGameSessions()` debería mostrar un cambio de estado de `Active` a `Terminated` (o `Terminating`).

## Variaciones de Local
<a name="integration-testing-local-special"></a>

Al utilizar Amazon GameLift Servers Local, tenga en cuenta lo siguiente:
+ A diferencia del servicio web de Amazon GameLift Servers, Local no realiza el seguimiento del estado del servidor ni inicia la devolución de la llamada `onProcessTerminate`. Local simplemente deja de registrar los informes de estado del servidor de juegos.
+ Para realizar llamadas al SDK de AWS, los ID de la flota no están validados y puede tratarse de cualquier valor de cadena que cumpla los requisitos de parámetro (`^fleet-\S+`).
+ Los ID de sesión de juego creados con Local tienen una estructura diferente. Incluyen la cadena `local`, tal y como se muestra aquí:

  ```
  arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6
  ```