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 del juego
En este tema se describen las interacciones entre el cliente del juego, un servicio de backend, un servidor de juegos y Amazon GameLift.
El siguiente diagrama ilustra las interacciones entre el cliente del juego, el servicio de backend, el GameLift SDK de Amazon, el servidor de juegos EC2 administrado, el SDK GameLift del servidor de Amazon y Amazon GameLift. Para obtener una descripción detallada de las interacciones que se muestran, consulte las siguientes secciones de esta página.

Inicializar un servidor de juegos
Los siguientes pasos describen las interacciones que se producen cuando preparas el servidor de juegos para albergar sesiones de juego.
-
Amazon GameLift Lanza el servidor en una instancia de Amazon Elastic Compute Cloud (Amazon EC2).
-
El servidor del juego llama a:
-
InitSDK()
para inicializar el SDK del servidor. -
ProcessReady()
para comunicar la preparación de la sesión de juego, la información de conexión y la ubicación de los archivos de registro de la sesión del juego.
A continuación, el proceso del servidor espera a que Amazon le devuelva la llamada GameLift.
-
-
Amazon GameLift actualiza el estado del proceso del servidor para
ACTIVE
permitir la ubicación de las sesiones de juego. -
Amazon GameLift comienza a llamar a la
onHealthCheck
devolución de llamada y continúa llamándola periódicamente mientras el proceso del servidor está activo. El proceso del servidor puede indicar que está bien o no en buen estado en un minuto.
Crear una sesión de juego.
Una vez inicializado el servidor de juegos, se producen las siguientes interacciones cuando creas sesiones de juego para alojar a tus jugadores.
-
El servicio de backend llama a la operación del SDK
StartGameSessionPlacement()
. -
Amazon GameLift crea un nuevo
GameSessionPlacement
ticket con el estadoPENDING
y lo devuelve al servicio de backend. -
El servicio de backend obtiene el estado de un ticket de colocación de una cola. Para obtener más información, consulte Configurar la notificación de eventos para la colocación de las sesiones de juego.
-
Amazon GameLift inicia la colocación de las sesiones de juego seleccionando una flota adecuada y buscando un proceso de servidor activo en una flota con sesiones de
0
juego. Cuando Amazon GameLift localiza un proceso de servidor, Amazon GameLift hace lo siguiente:-
Crea un
GameSession
objeto con la configuración de la sesión de juego y los datos del jugador a partir de la solicitud de ubicación con unACTIVATING
estado. -
Invoca la
onStartGameSession
devolución de llamada en el proceso del servidor. Amazon GameLift pasa información alGameSession
objeto 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
onStartGameSession
devolución de llamada. Cuando el proceso del servidor está listo para aceptar las conexiones de los jugadores, llamaActivateGameSession()
y espera las conexiones de los jugadores. -
Amazon GameLift actualiza el
GameSession
objeto con la información de conexión para el proceso del servidor. (Esta información incluye la configuración del puerto con la que se informó)ProcessReady()
. Amazon GameLift también cambia el estado aACTIVE
. -
El servicio de backend llama
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 al proceso del servidor y unirse a la sesión del juego.
Añadir un jugador a un juego
Esta secuencia describe el proceso de añadir un jugador a una sesión de juego existente. También se pueden solicitar sesiones de juego 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
ACTIVE
estarlo) y busca un espacio libre para jugadores en la sesión de juego. Si hay un espacio disponible, Amazon GameLift hace lo siguiente:-
Crea un
PlayerSession
objeto nuevo y establece el estado enRESERVED
. -
Responde a la solicitud de servicio de backend con el
PlayerSession
objeto.
-
-
El servicio de backend conecta el cliente del juego directamente al proceso del servidor con el ID de sesión del jugador.
-
El servidor llama a la operación de la API del servidor
AcceptPlayerSession()
para validar el ID de sesión del jugador. Si se valida, Amazon GameLift pasa elPlayerSession
objeto al proceso del servidor. A continuación, el proceso del servidor acepta o rechaza la conexión. -
Amazon GameLift realiza una de las siguientes acciones:
-
Si se acepta la conexión, Amazon GameLift establece el
PlayerSession
estado enACTIVE
. -
Si no se recibe ninguna respuesta en un plazo de 60 segundos desde la
CreatePlayerSession()
llamada original del servidor de fondo, Amazon GameLift cambia elPlayerSession
estadoTIMEDOUT
y vuelve a abrir el espacio de jugador durante la sesión de juego.
-
Apague un marco del
Al eliminar 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 conexión perdida y llama a la operación de la API del servidor
RemovePlayerSession()
. -
Amazon GameLift cambia el
PlayerSession
estadoCOMPLETED
y vuelve a abrir el espacio de jugador en la sesión de juego.
Apague 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 del juego y el servidor.
-
El servidor llama
ProcessEnding()
a Amazon GameLift. -
Amazon GameLift hace lo siguiente:
-
Carga registros de sesión de juego en Amazon Simple Storage Service (Amazon S3).
-
Cambia el
GameSession
estado aTERMINATED
. -
Cambia el estado del proceso del servidor a
TERMINATED
. -
Recicla los recursos de la instancia.
-