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.
Session-based alojamiento de servidores de juegos 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 gestión operativa que estás dispuesto a asumir. Para ofrecer el mejor equilibrio entre facilidad operativa y flexibilidad, puedes crear tu juego con los servicios gestionados de los proveedores de 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.
Organizar un juego multijugador basado en sesiones requiere disponer de una infraestructura de servidores para alojar los procesos del servidor del juego, así como de un backend escalable para el emparejamiento y la gestión de las sesiones. La siguiente arquitectura de referencia muestra cómo se puede utilizar el alojamiento GameLift gestionado por Amazon y un backend sin servidor para gestionar los juegos basados en sesiones.
Amazon GameLift gestionó el alojamiento de juegos basados en sesiones
El diagrama describe el proceso de hacer que los jugadores accedan a 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 a 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 puerta de enlace de API de Amazon firmando la solicitud con las credenciales de Amazon Cognito.
-
API Gateway invoca una AWS Lambda función.
-
La función Lambda solicita los datos del jugador desde 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 el emparejamiento. GameLift FlexMatch Puedes definir una configuración de FlexMatch emparejamiento con JSON-based los documentos de configuración. El cliente del juego puede generar métricas de latencia haciendo ping a los terminales de los servidores en varias regiones, y los datos de latencia se pueden usar para respaldar el emparejamiento basado en la latencia.
-
Cuando un FlexMatch grupo adecuado de jugadores tiene la latencia adecuada para una región, solicita que la sesión de juego se clasifique en una cola. GameLift La cola contiene flotas con una o más ubicaciones de región registradas.
-
Cuando la sesión se realiza 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 de Lambda recibirá el evento de 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 de tiempo de vida (TTL) para garantizar que los tickets de matchmaking se eliminen de DynamoDB cuando ya no sean necesarios.
-
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 de 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 envía la dirección IP, el puerto y el ID de sesión del reproductor al cliente. Si el ticket falla, 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 backend. Envía el identificador de sesión del jugador al servidor del juego y este lo valida mediante el Amazon GameLift Server SDK.
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 WebSocket-based implementación. Esta implementación se puede usar 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 WebSocket lugar de implementar un modelo de sondeo.