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.](images/combined_api_interactions_vsd.png)
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.
-
Amazon GameLift inicia el archivo ejecutable del servidor en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) (Amazon EC2).
-
El servidor de juegos llama a los siguientes elementos:
-
InitSDK()
para inicializar el SDK del servidor. -
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.
-
-
Amazon GameLift actualiza el estado del proceso del servidor a
ACTIVE
para habilitar la ubicación de las sesiones de juego. -
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.
-
El servicio de backend llama a la operación del SDK
StartGameSessionPlacement()
. -
Amazon GameLift crea un nuevo ticket
GameSessionPlacement
con el estadoPENDING
y lo devuelve al servicio de backend. -
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..
-
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:-
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 estadoACTIVATING
. -
Invoca la devolución de llamada de
onStartGameSession
del proceso del servidor. Amazon GameLift transfiere información al objetoGameSession
que indica que el proceso del servidor puede configurar la sesión de juego. -
Cambia el número de sesiones de juego del proceso del servidor a
1
.
-
-
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 aActivateGameSession()
y espera las conexiones de los jugadores. -
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ó conProcessReady()
). Amazon GameLift también cambia el estado aACTIVE
. -
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.
-
El servicio de backend llama a la operación de la API del cliente
CreatePlayerSession()
con un ID de sesión de juego. -
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:-
Crea un objeto
PlayerSession
nuevo y establece el estado enRESERVED
. -
Responde a la solicitud de servicio de backend con el objeto
PlayerSession
.
-
-
El servicio de backend conecta el cliente de juegos directamente con el proceso del servidor con el ID de sesión de jugador.
-
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 objetoPlayerSession
al proceso del servidor. A continuación, el proceso del servidor acepta o rechaza la conexión. -
Amazon GameLift realiza uno de los siguientes procedimientos:
-
Si se acepta la conexión, Amazon GameLift establece el estado
PlayerSession
enACTIVE
. -
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 dePlayerSession
aTIMEDOUT
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.
-
Un jugador se desconecta del juego.
-
El servidor detecta la pérdida de conexión y llama a la acción de la API de servidor
RemovePlayerSession()
. -
Amazon GameLift cambia el estado
PlayerSession
aCOMPLETED
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.
-
El servidor cierra la sesión de juego y el servidor.
-
El servidor llama a
ProcessEnding()
en Amazon GameLift. -
Amazon GameLift realiza el siguiente procedimiento:
-
Carga registros de sesión de juego en Amazon Simple Storage Service (Amazon S3).
-
Cambia el estado
GameSession
aTERMINATED
. -
Cambia el estado del proceso del servidor a
TERMINATED
. -
Recicla los recursos de la instancia.
-