Pruebe su integración con Amazon GameLift Servers Local - Amazon GameLift Servers

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.

Pruebe su integración con Amazon GameLift Servers Local

nota

En este tema se tratan las pruebas de juegos que están integrados con el SDK del servidor únicamente para las Amazon GameLift Servers versiones 3.x y 4.x. El paquete de SDK de su servidor incluye una versión compatible de Amazon GameLift Servers Local. Si utilizas la versión 5.x del SDK para servidores, consulta Pruebas locales con GameLift Server SDK 5.x para ver las pruebas locales con una flota de Amazon GameLift Servers Anywhere. Para obtener información sobre cómo migrar del SDK 4.x a la 5.x, consulta Migrar al SDK 5.x de Server. GameLift

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 (cargar cada nueva versión Amazon GameLift Servers y configurar una flota para alojar tu juego) puede llevar varias o más veces 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.

  • El cliente del juego está correctamente integrado con el AWS SDK Amazon GameLift Servers y es capaz de recuperar información sobre las sesiones de juego existentes, iniciar nuevas sesiones de juego, unir a los jugadores a las partidas y conectarse a la sesión de juego.

Amazon GameLift ServersLocal es una herramienta de línea de comandos que inicia una versión autónoma del servicio gestionado. Amazon GameLift Servers Amazon GameLift Servers Local también proporciona un registro de eventos en ejecución sobre la inicialización del proceso del servidor, las comprobaciones de estado y las llamadas y respuestas a la API. Amazon GameLift Servers Local reconoce un subconjunto de las acciones del AWS SDK paraAmazon GameLift Servers. Puedes realizar llamadas desde AWS CLI o desde el cliente del 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 ejecutable que utilizas para conectarte 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 Amazon GameLift Servers local con Local, puedes iniciar varios procesos de 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 Serverslocal admite lo siguiente APIs:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Configurar Amazon GameLift Servers local

Amazon GameLift Servers Local se suministra en un archivo .jar ejecutable que se incluye en el SDK del servidor. Se puede ejecutar en Windows o Linux y utilizarse con cualquier lenguaje compatible con Amazon GameLift Servers. Para la versión 4.0.2 del SDK, puedes descargarla desde las GitHub versiones oficiales. El GameLiftLocal archivo.jar está incluido 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 3.1.5 a 4.xAmazon GameLift Servers.

  • Java 8

Prueba de un servidor de juegos

Si solo quieres probar tu servidor de juegos, puedes usarlo AWS CLI para simular las llamadas del cliente del 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 del juego se inicia correctamente e inicializa el SDK del servidor paraAmazon 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.

  2. 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 tu servidor de juegos ha inicializado correctamente el SDK del servidor para Amazon GameLift Servers (conInitSDK()). 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 se encontró un proceso con PiD:<process ID>! ¿Se ha invocado InitSDK()?»

    • Advertencia: «¡El estado del proceso ya existe para el proceso con PiD:<process ID>! ¿Se invoca ProcessReady (...) más de una vez?»

  3. Inicie el 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 AWS CLI predeterminada, utiliza el punto final del servicio Amazon GameLift Servers web. 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 AWS CLI ventana de la línea de AWS gamelift comandos, los comandos generan respuestas, tal como se documenta en la Referencia de AWS CLI comandos.

  4. Cree una sesión de juego.

    Con el AWS CLI, envíe una solicitud CreateGameSession(). 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 AWS CLI ventana, Amazon GameLift Servers responde con un objeto de sesión de juego que incluye un identificador de sesión de juego. Observe que el estado de la nueva sesión de juego es Activating. El estado cambia a Activo una vez que se invoca ActivateGameSession el servidor de juegos. Si quieres ver el cambio de estado, usa el AWS CLI para llamarDescribeGameSessions().

    { "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

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 del juego realiza correctamente las solicitudes de AWS SDK al servicio Amazon GameLift Servers local, por ejemplo, para crear sesiones de juego, recuperar información sobre las sesiones de juego existentes y crear sesiones de jugadores.

  • 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.

  2. Inicie el servidor de juegos.

    Arranque el servidor de juegos integrado en Amazon GameLift Servers localmente. Consulte Prueba de un servidor de juegos para obtener más información acerca de los registros de mensajes.

  3. 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 Configúralo Amazon GameLift Servers en un servicio de back-end:

    • 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.

    • Establece AWS las credenciales. 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.

  4. 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:

    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.

  5. 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 utilizas la AWS CLI para llamarDescribePlayerSessions(), el estado de la sesión del jugador debería cambiar de Reservada a Activa.

  6. 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. También puedes utilizarla para hacer un seguimiento de AWS CLI los cambios de estado.

    • El jugador se desconecta de una sesión de juego: los mensajes de registro Amazon GameLift Servers local deberían mostrar que el servidor del juego ha llamadoRemovePlayerSession(). 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.

    • Finaliza la sesión de juego: Amazon GameLift Servers los mensajes de registro local deberían mostrar que tu servidor de juegos ha llamadoTerminateGameSession().

      nota

      La guía anterior consistía en llamar a TerminateGameSession() al finalizar una sesión de juego. Este método está obsoleto en la versión 4.0.1 Amazon GameLift Servers del SDK del servidor. Consulte Finalización de una sesión de juego.

    • El proceso del servidor ha finalizado: los mensajes de registro Amazon GameLift Servers locales deberían mostrar que el servidor del juego ha realizado llamadas. ProcessEnding() Una AWS CLI llamada a DescribeGameSessions() debe reflejar un cambio de estado de Active a Terminated (oTerminating).

Variaciones de Local

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.

  • En el caso de las llamadas al AWS SDK, la flota no IDs está validada y puede ser cualquier valor de cadena que cumpla los requisitos del parámetro (^fleet-\S+).

  • Las sesiones de juego IDs creadas 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