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.
Alojamiento de servidores de juegos basado en sesiones con backend sin servidor
Al desarrollar una arquitectura para tu juego, ten en cuenta las funciones y capacidades que necesitas y el nivel de sobrecarga de administración operativa que estás dispuesto a soportar. Para ofrecer el mejor equilibrio entre facilidad de operación y flexibilidad, puedes desarrollar tu juego con los servicios gestionados de los proveedores de servicios en la nube. Los servicios gestionados te permiten desarrollar y personalizar tus propias funciones de juego personalizadas y, al mismo tiempo, reducen la carga que supone implementar y gestionar la infraestructura.
Para organizar una partida multijugador basada en sesiones, es necesario disponer de una infraestructura de servidor que aloje los procesos del servidor del juego, así como de un backend escalable para gestionar las sesiones y las partidas. La siguiente arquitectura de referencia muestra cómo se pueden utilizar el alojamiento GameLift gestionado por Amazon y un backend sin servidor para gestionar tus juegos basados en sesiones.
Alojamiento GameLift gestionado por Amazon para juegos basados en sesiones
El diagrama describe el proceso de convertir a los jugadores en juegos que se ejecutan en un alojamiento de juegos GameLift gestionado. Incluye los siguientes pasos:
-
El cliente del juego solicita una identidad de Amazon Cognito de un grupo de identidades de Amazon Cognito. De forma opcional, se puede conectar a proveedores de identidad externos.
-
El cliente del juego recibe credenciales de acceso temporales y solicita una sesión de juego a través de una Amazon API Gateway firmando la solicitud con las credenciales de Amazon Cognito.
-
API Gateway invoca una AWS Lambda función.
-
La función Lambda solicita datos de los jugadores de una tabla de Amazon DynamoDB. La identidad de Amazon Cognito se utiliza para solicitar de forma segura los datos correctos del jugador, ya que la identidad autenticada se proporciona en los datos de contexto de la solicitud.
-
Al utilizar los datos correctos del jugador para obtener información adicional (como el nivel de habilidad del jugador), la función Lambda solicita una partida mediante GameLift FlexMatch el matchmaking. Puede definir una configuración de FlexMatch emparejamiento con documentos de configuración basados en JSON. El cliente del juego puede generar métricas de latencia haciendo ping a los puntos finales de los servidores en varias regiones, y los datos de latencia se pueden utilizar para respaldar el emparejamiento basado en la latencia.
-
Cuando FlexMatch empareja a un grupo adecuado de jugadores con una latencia adecuada con una región, solicita que la sesión de juego se sitúe en una cola. GameLift La cola contiene flotas con una o más ubicaciones regionales registradas.
-
Cuando la sesión se coloca en una de las ubicaciones de la flota, se envía una notificación de evento a un tema de Amazon SNS.
-
Una función Lambda recibirá el evento Amazon SNS y lo procesará.
-
Si el mensaje de Amazon SNS es un MatchmakingSucceeded evento, la función Lambda escribe el resultado en DynamoDB con el puerto del servidor y la dirección IP. Se utiliza un valor time-to-live (TTL) para garantizar que los tickets de matchmaking se eliminen de DynamoDB cuando ya no se necesiten.
-
El cliente del juego envía una solicitud firmada a API Gateway para comprobar el estado del ticket de emparejamiento en un intervalo específico.
-
API Gateway invoca una función Lambda que comprueba el estado del ticket de emparejamiento.
-
La función Lambda comprueba DynamoDB para determinar si el ticket se ha realizado correctamente. Si se ha realizado correctamente, la función Lambda devuelve la dirección IP, el puerto y el ID de sesión del reproductor al cliente. Si el ticket ha fallado, la función Lambda envía una respuesta declarando que la partida no está lista.
-
El cliente del juego se conecta al servidor del juego mediante TCP o UDP mediante el puerto y la dirección IP proporcionados por el servidor. Envía el identificador de sesión del jugador al servidor del juego y el servidor del juego lo valida mediante el SDK de Amazon GameLift Server.
Como alternativa, puede modificar la arquitectura anterior para usar API Gateway WebSockets con Amazon GameLift. En este enfoque, la comunicación entre el cliente del juego y el servicio de backend del juego se produce mediante una implementación WebSocket basada en el software. Esta implementación se puede utilizar para que la función Lambda del backend del juego inicie un mensaje del lado del servidor al cliente del juego a través de un modelo de sondeo, en lugar de implementar WebSocket un modelo de sondeo.