Interacciones entre Amazon GameLift y el servidor de cliente del juego - 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.

Interacciones entre Amazon GameLift y el servidor de cliente del juego

En este tema se describen las interacciones entre un cliente de juegos, un servicio de backend, un servidor de juegos y Amazon GameLift.

El siguiente diagrama muestra las interacciones entre el cliente de juegos, el servicio de backend, el SDK de Amazon GameLift, el servidor de juegos EC2 administrado, el SDK del servidor de Amazon GameLift y Amazon GameLift. Para obtener una descripción detallada de las interacciones mostradas, consulte las siguientes secciones de esta página.

Interacciones entre cliente y servidor de juegos para los casos de uso que se detallan en las siguientes secciones.

Inicialización de un servidor de juegos

Los siguientes pasos describen las interacciones que se producen al preparar el servidor de juegos para albergar sesiones de juego.

  1. Amazon GameLift inicia el archivo ejecutable del servidor en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) (Amazon EC2).

  2. El servidor de juegos llama a los siguientes elementos:

    1. InitSDK() para inicializar el SDK del servidor.

    2. ProcessReady() para comunicar que la sesión de juego está lista, la información de la conexión y la ubicación de los archivos de registro de la sesión de juego.

    A continuación, el proceso del servidor espera a que Amazon GameLift le devuelva la llamada.

  3. Amazon GameLift actualiza el estado del proceso del servidor a ACTIVE para habilitar la ubicación de las sesiones de juego.

  4. Amazon GameLift comienza a solicitar la devolución de llamada de onHealthCheck y continúa realizando la llamada periódicamente mientras el proceso del servidor está activo. El proceso del servidor puede informar sobre el estado en el plazo de un minuto.

Crear una sesión de juego.

Una vez inicializado el servidor de juegos, se producen las siguientes interacciones al crear sesiones de juego para alojar a los jugadores.

  1. El servicio de backend llama a la operación del SDK StartGameSessionPlacement().

  2. Amazon GameLift crea un nuevo ticket GameSessionPlacement con el estado PENDING y lo devuelve al servicio de backend.

  3. El servicio de backend obtiene el estado de un ticket de ubicación a partir de una cola. Para obtener más información, consulte Configuración de la notificación de eventos para la ubicación de sesiones de juego..

  4. Amazon GameLift inicia la ubicación de las sesiones de juego mediante la selección una flota adecuada y la búsqueda de un proceso de servidor activo en una flota con 0 sesiones de juego. Cuando Amazon GameLift localiza un proceso de servidor, Amazon GameLift realiza el siguiente procedimiento:

    1. Crea un objeto GameSession con la configuración de la sesión del juego y los datos del jugador a partir de la solicitud de ubicación con un estado ACTIVATING.

    2. Invoca la devolución de llamada de onStartGameSession del proceso del servidor. Amazon GameLift transfiere información al objeto GameSession que indica que el proceso del servidor puede configurar la sesión de juego.

    3. Cambia el número de sesiones de juego del proceso del servidor a 1.

  5. El proceso del servidor ejecuta la función de devolución de llamada de onStartGameSession. Cuando el proceso del servidor está listo para aceptar las conexiones del jugador, llama a ActivateGameSession() y espera las conexiones de los jugadores.

  6. Amazon GameLift actualiza el objeto GameSession con información de conexión para el proceso del servidor (esa información incluye la configuración de puerto de la que se informó con ProcessReady()). Amazon GameLift también cambia el estado a ACTIVE.

  7. El servicio de backend llama a DescribeGameSessionPlacement() para detectar el estado actualizado del ticket. A continuación, el servicio de backend utiliza la información de conexión para conectar el cliente del juego con el proceso del servidor y unirse a la sesión de juego.

Adición de un jugador a un juego

Esta secuencia describe el proceso de adición de un jugador a una sesión de juego existente. También se pueden solicitar sesiones de jugador como parte de una solicitud de ubicación de sesión de juego.

  1. El servicio de backend llama a la operación de la API del cliente CreatePlayerSession() con un ID de sesión de juego.

  2. Amazon GameLift comprueba el estado de la sesión de juego (debe ser ACTIVE) y busca una ranura de jugador abierta en la sesión de juego. Si hay una ranura disponible, Amazon GameLift realiza el siguiente procedimiento:

    1. Crea un objeto PlayerSession nuevo y establece el estado en RESERVED.

    2. Responde a la solicitud de servicio de backend con el objeto PlayerSession.

  3. El servicio de backend conecta el cliente de juegos directamente con el proceso del servidor con el ID de sesión de jugador.

  4. El servidor llama a la operación de la API de servidor AcceptPlayerSession() para validar el ID de sesión de jugador. Si se valida, Amazon GameLift transfiere el objeto PlayerSession al proceso del servidor. A continuación, el proceso del servidor acepta o rechaza la conexión.

  5. Amazon GameLift realiza uno de los siguientes procedimientos:

    1. Si se acepta la conexión, Amazon GameLift establece el estado PlayerSession en ACTIVE.

    2. Si no se recibe respuesta en un plazo de 60 segundos de la llamada CreatePlayerSession() original del servidor de backend, Amazon GameLift cambia el estado de PlayerSession a TIMEDOUT y vuelve a abrir la ranura de jugador en la sesión de juego.

Eliminación de un jugador

Cuando se eliminan jugadores de una sesión de juego para crear espacio para que se unan nuevos jugadores, se producen las siguientes interacciones.

  1. Un jugador se desconecta del juego.

  2. El servidor detecta la pérdida de conexión y llama a la acción de la API de servidor RemovePlayerSession().

  3. Amazon GameLift cambia el estado PlayerSession a COMPLETED y vuelve a abrir la ranura del jugador en la sesión de juego.

Cierre de la sesión de juego

Esta secuencia de interacciones se produce cuando un proceso del servidor cierra la sesión de juego actual.

  1. El servidor cierra la sesión de juego y el servidor.

  2. El servidor llama a ProcessEnding() en Amazon GameLift.

  3. Amazon GameLift realiza el siguiente procedimiento:

    1. Carga registros de sesión de juego en Amazon Simple Storage Service (Amazon S3).

    2. Cambia el estado GameSession a TERMINATED.

    3. Cambia el estado del proceso del servidor a TERMINATED.

    4. Recicla los recursos de la instancia.