Servidores de sesión de juego independientes con un backend sin servidor - 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.

Servidores de sesión de juego independientes con un backend sin servidor

Al utilizar una arquitectura de servicio de cliente sin servidor, el backend puede ver el estado de los tickets de emparejamiento desde una base de datos altamente escalable en lugar de acceder directamente a la API de Amazon GameLift.

En el siguiente diagrama se muestra un backend sin servidor creado con Servicios de AWS que empareja jugadores con juegos que se ejecutan en las flotas de Amazon GameLift. La siguiente lista proporciona una descripción de cada aviso numerado en el diagrama. Para probar este ejemplo, consulte Alojamiento de juegos multijugador basados en sesiones en AWS en GitHub.

Ejemplo de arquitectura sin servidor que empareja a los jugadores con los juegos que se ejecutan en las flotas de Amazon GameLift.
  1. El cliente del juego solicita una identidad de usuario de Amazon Cognito de un grupo de identidades de Amazon Cognito.

  2. El cliente del juego recibe credenciales de acceso temporales y solicita una sesión de juego a través de una API de Amazon API Gateway.

  3. API Gateway invoca una función AWS Lambda.

  4. La función de Lambda solicita los datos del reproductor de una tabla NoSQL de Amazon DynamoDB. La función proporciona la identidad de Amazon Cognito en los datos de contexto de la solicitud.

  5. La función de Lambda solicita una coincidencia mediante el emparejamiento de Amazon GameLift FlexMatch.

  6. FlexMatch empareja a un grupo de jugadores con la latencia adecuada y, a continuación, solicita la ubicación de una sesión de juego a través de una cola de Amazon GameLift. La cola tiene flotas con una o más ubicaciones de Región de AWS en ella.

  7. Cuando Amazon GameLift coloca la sesión en una de las ubicaciones de la flota, Amazon GameLift envía una notificación de evento a un tema de Amazon Simple Notification Service (Amazon SNS).

  8. Una función de Lambda recibe el evento de Amazon SNS y lo procesa.

  9. Si el ticket de emparejamiento es un evento MatchmakingSucceeded, la función de Lambda escribe el resultado, junto con el puerto y la dirección IP del servidor de juegos, en una tabla de DynamoDB.

  10. El cliente del juego envía una solicitud firmada a API Gateway para ver el estado del ticket de emparejamiento en un intervalo específico.

  11. API Gateway utiliza una función de Lambda que comprueba el estado del ticket de emparejamiento.

  12. La función de Lambda comprueba la tabla de DynamoDB para comprobar si el ticket es correcto. Si lo es, la función devuelve al cliente el puerto y la dirección IP del servidor de juegos, junto con el ID de sesión del jugador. Si el ticket no es correcto, la función envía una respuesta verificando que el emparejamiento no está listo aún.

  13. El cliente del juego se conecta al servidor de juegos mediante TCP o UDP mediante el puerto y la dirección IP que proporciona el servicio de backend. A continuación, el cliente del juego envía el ID de sesión del jugador al servidor de juegos, que lo valida mediante el SDK del servidor de Amazon GameLift.