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

Interacciones entre el cliente y el servidor del juego con Amazon GameLift

Los componentes de tu solución de GameLift alojamiento de Amazon interactúan entre sí de formas específicas para ejecutar sesiones de juego en respuesta a la demanda de los jugadores. En este tema se describe cómo se comunican los componentes entre sí cuando el servidor de juegos está alojado en EC2 flotas GameLift gestionadas por Amazon, flotas autogestionadas de Amazon GameLift Anywhere o en una solución híbrida.

Los componentes de la solución de alojamiento incluyen un servidor de juegos, el GameLift servicio Amazon, un servicio de backend del lado del cliente y un cliente de juegos. El servidor del juego utiliza el GameLift servidor de Amazon SDK para interactuar con el GameLift servicio de Amazon. El servicio de backend utiliza el GameLift servicio de Amazon API (parte del AWS SDK) para interactuar con el servicio en nombre del cliente del juego. Al unirse a una sesión de juego, el cliente del juego se conecta directamente a una sesión de juego mediante la dirección IP y el número de puerto exclusivos de la sesión de juego.

Diagrama de interacciones

El siguiente diagrama ilustra cómo interactúan los componentes de alojamiento de juegos para que el GameLift servicio de Amazon pueda realizar un seguimiento del estado de la disponibilidad del servidor de juegos e iniciar sesiones de juego en respuesta a las demandas de los jugadores.

El comportamiento entre el cliente y el servidor del juego en las interacciones clave, tal y como se describe en este tema.

Comportamientos de interacción

En las siguientes secciones se describe la secuencia de eventos en cada una de las interacciones clave.

Inicialización de un proceso de servidor de juegos

Al iniciarse, un proceso de servidor de juegos establece la comunicación con el GameLift servicio de Amazon e informa de su estado como preparado para albergar una sesión de juego.

  1. Un nuevo proceso del ejecutable del servidor de juegos comienza a ejecutarse en un recurso de alojamiento.

  2. El proceso del servidor del juego llama a las siguientes SDK operaciones del servidor en secuencia:

    1. InitSDK()para inicializar el servidorSDK, autenticar el proceso del servidor y establecer comunicación con el servicio de Amazon GameLift .

    2. ProcessReady()para comunicar que está preparado para organizar una sesión de juego. Esta llamada también muestra la información de conexión del proceso, la que los clientes del juego utilizan para conectarse a la sesión de juego y otra información.

    A continuación, el proceso del servidor espera las indicaciones del servicio de Amazon GameLift .

  3. Amazon GameLift actualiza el estado del proceso del servidor ACTIVE y está disponible para alojar una nueva sesión de juego.

  4. Amazon GameLift comienza a llamar periódicamente a la onHealthCheck devolución de llamada para solicitar un estado de salud a los procesos del servidor. Estas llamadas continúan mientras el proceso del servidor permanece activo. El proceso del servidor debe responder correctamente o no en el plazo de un minuto. Si el proceso del servidor responde mal o no responde, en algún momento el GameLift servicio de Amazon cambia el estado activo del proceso del servidor y deja de enviar solicitudes para iniciar la sesión de juego.

Crear una sesión de juego

El GameLift servicio Amazon inicia una nueva sesión de juego en respuesta a una solicitud de un jugador para jugar al juego.

  1. Un jugador que utiliza el cliente del juego solicita unirse a una sesión de juego. En función de cómo gestione tu juego el proceso de incorporación de un jugador, el cliente del juego envía una solicitud al servicio de back-end.

  2. Si el proceso de registro del jugador requiere iniciar una nueva sesión de juego, el servicio de backend envía una solicitud para una nueva sesión de juego al GameLift servicio de Amazon. Esta solicitud llama a la API operación del servicio. StartGameSessionPlacement() (Como alternativa, es posible que el servicio de back-end llameStartMatchmaking(), oCreateGameSession().)

  3. El GameLift servicio Amazon responde creando un nuevo GameSessionPlacement ticket con estadoPENDING. Devuelve la información de las entradas al servicio de administración, de forma que este pueda hacer un seguimiento del estado de las entradas colocadas y determinar cuándo la sesión de juego está lista para los jugadores. Para obtener más información, consulte Configuración de la notificación de eventos para la ubicación de sesiones de juego..

  4. El GameLift servicio Amazon inicia el proceso de colocación de la sesión de juego. Identifica qué flotas consultar y busca en esas flotas un proceso de servidor activo que no esté alojando una sesión de juego. Al localizar un proceso de servidor disponible, el GameLift servicio de Amazon hace lo siguiente:

    1. Crea un GameSession objeto con los ajustes de la sesión de juego y los datos del jugador a partir de la solicitud de colocación y establece el estado enACTIVATING.

    2. Solicita al servidor que inicie una sesión de juego. El servicio invoca la onStartGameSession devolución de llamada del proceso del servidor y pasa el objeto. GameSession

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

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

  6. El GameLift servicio Amazon actualiza el GameSession objeto con la información de conexión para el proceso del servidor (tal y como se indica en la llamada aProcessReady()) y establece el estado de la sesión de juego enACTIVE. También actualiza el estado del GameSessionPlacement ticket aFULFILLED.

  7. El servicio de back-end llama DescribeGameSessionPlacement() para comprobar el estado de las entradas y obtener información sobre la sesión del juego. Cuando la sesión de juego está activa, el servicio de backend notifica al cliente del juego y transmite la información de conexión de la sesión de juego.

  8. El cliente del juego utiliza la información de conexión para conectarse directamente al proceso del servidor del juego y unirse a la sesión de juego.

Añadir un jugador a un juego

Opcionalmente, un juego puede usar las sesiones de los jugadores para rastrear las conexiones de los jugadores con las sesiones de juego. Las sesiones de los jugadores se pueden crear de forma individual o como parte de una solicitud de ubicación de una sesión de juego.

  1. El servicio de back-end llama a la API operación del servicio CreatePlayerSession() con un identificador de sesión de juego.

  2. El GameLift servicio de Amazon comprueba el estado de la sesión de juego (debe ACTIVE estarlo) y busca un espacio libre para jugadores en la sesión de juego. Si hay un espacio disponible, el servicio hace lo siguiente:

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

    2. Responde a la solicitud de servicio de backend con información sobre la sesión del jugador.

  3. El servicio de backend pasa la información de la sesión del jugador al cliente del juego junto con la información de conexión de la sesión del juego.

  4. El cliente del juego utiliza la información de conexión y el identificador de sesión del jugador para conectarse directamente al proceso del servidor del juego y solicitar unirse a la sesión del juego.

  5. En respuesta a un intento de unirse al cliente del juego, el proceso del servidor del juego llama a la API operación de servicio AcceptPlayerSession() para validar el identificador de sesión del jugador. A continuación, el proceso del servidor acepta o rechaza la conexión.

  6. El GameLift servicio Amazon realiza una de las siguientes acciones:

    1. Si se acepta la conexión, Amazon GameLift establece el PlayerSession estado en ACTIVE y pasa el proceso PlayerSession al servidor del juego.

    2. Si el proceso del servidor del juego no requiere el AcceptPlayerSession() identificador de sesión del jugador dentro de un período de tiempo determinado después de la CreatePlayerSession() solicitud original, el GameLift servicio de Amazon cambia el PlayerSession estado TIMEDOUT y vuelve a abrir el espacio del jugador en la sesión de juego.

Eliminar a un jugador

En el caso de los juegos que utilizan sesiones de jugadores, el proceso del servidor de juegos notifica al GameLift servicio de Amazon cuando un jugador se desconecta. El servicio utiliza esta información para rastrear el estado de las tragaperras de los jugadores en una sesión de juego y permite a los nuevos jugadores utilizar las tragaperras abiertas.

  1. Un jugador se desconecta de la sesión de juego.

  2. El proceso del servidor del juego detecta la conexión perdida y pone en marcha la SDK operación del servidor. RemovePlayerSession()

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

Cerrar la sesión de juego

Al final de una sesión de juego o al cerrar la sesión de juego, el proceso del servidor notifica al GameLift servicio de Amazon el estado de la sesión de juego.

  1. El proceso del servidor del juego finaliza la sesión de juego e inicia el cierre del proceso mediante una llamada a la operación del servidor. SDK ProcessEnding()

  2. El GameLift servicio Amazon hace lo siguiente:

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

    2. Cambia el estado de la sesión de juego aTERMINATED.

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

    4. Según el diseño de la solución de alojamiento, los nuevos recursos de alojamiento disponibles se asignan para ejecutar un nuevo proceso de servidor de juegos.