View a markdown version of this page

Arquitectura de backend de juegos basada en servidores sin servidor - Lente de la industria de juegos

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.

Arquitectura de backend de juegos basada en servidores sin servidor

Muchos desarrolladores de juegos no quieren gestionar la infraestructura, sino que prefieren crear sus juegos con tecnologías que les permitan centrarse en el software. En este escenario, se recomienda una arquitectura sin servidor porque permite crear y lanzar funciones con mayor rapidez y con menos sobrecarga operativa. Las arquitecturas sin servidor se diseñan con servicios en la nube que pueden escalarse dinámicamente en función de la demanda sin necesidad de configurar, administrar ni escalar los servidores. La siguiente arquitectura de referencia ilustra cómo crear un juego con una arquitectura sin servidor.

Arquitectura de referencia del backend de un juego sin servidor

Arquitectura de referencia del backend de juegos basada en servidores sin servidor

Esta arquitectura de referencia ilustra un juego de preguntas y respuestas basado en la web que ofrece funciones para un jugador y multijugador.

  • Autenticación del jugador: los jugadores se autentican mediante Amazon Cognito, que proporciona una autenticación segura con un directorio de usuarios para la gestión de la identidad de los jugadores.

  • La lógica del juego como funciones sin servidor: las funciones del juego y la lógica empresarial interna funcionan como AWS Lambda funciones que se inician en respuesta a eventos, lo que reduce los costes, ya que solo se paga cuando se ejecuta la función. Lambda le ofrece la flexibilidad de escribir cada función del juego como un microservicio independiente mediante el lenguaje de programación que prefiera. Por ejemplo, puede optar por desarrollar funciones Lambda de.NET si tiene experiencia en el uso de C# para crear juegos de Unity, o puede optar por desarrollar funciones Lambda de Node.js si desea programar un frontend y un backend para un juego basado en la web tanto en. JavaScript

  • Almacén de datos NoSQL para datos de juegos y jugadores: utilice DynamoDB para almacenar sus datos de jugadores y juegos, ya que está diseñado específicamente para almacenar grandes cantidades de datos de microservicios. Como se ilustra en esta arquitectura, se recomienda utilizar almacenes de datos independientes para las necesidades de almacenamiento de datos de cada función del juego, lo que facilita la supervisión y la administración de las funciones de forma independiente. Esto también crea límites de separación si el propietario de una función o servicio cambia dentro de tu equipo. En esta arquitectura de referencia, las tablas de DynamoDB se utilizan para almacenar datos como el estado de la conexión, los detalles del juego, el progreso de los jugadores y la información de la tabla de clasificación.

  • Jugabilidad para un jugador: las funciones para un jugador permiten a los jugadores realizar acciones como seleccionar y jugar una partida y ver la tabla de clasificación. Estas funciones se implementan como servicios de RESTful backend alojados en una API HTTP de Amazon API Gateway que invoca la función Lambda adecuada para obtener y configurar datos en tablas de DynamoDB. Cuando finaliza el juego, el backend también envía notificaciones a los temas de Amazon SNS que inician las funciones de Lambda de forma asíncrona para almacenar el progreso y las estadísticas del jugador.

  • Jugabilidad multijugador: las características del juego multijugador requieren que los jugadores puedan interactuar con el juego para point-to-point comunicarse, así como transmitir y recibir actualizaciones de otros jugadores conectados. Una WebSockets implementación es adecuada para la point-to-point comunicación en un juego ligero, como un juego de preguntas y respuestas. Los jugadores pueden establecer una WebSockets conexión con Amazon API Gateway WebSockets, que administra la conexión y solo invoca las funciones Lambda cuando hay mensajes que enviar o recibir para un jugador. Para los casos de uso en los que es necesaria la one-to-many comunicación entre jugadores, AWS IoT Core ofrece soporte para la mensajería mediante WebSockets MQTT, lo que permite a los clientes suscribirse a los temas y actuar en función de los mensajes que reciben. En esta arquitectura, se utilizan WebSockets más MQTT para admitir casos de uso, como la transmisión en directo de actualizaciones del juego y la formulación de preguntas a los jugadores conectados. Como alternativa AWS IoT, puedes elegir Redis Pub/Sub para la entrega de mensajes o Redis Streams si necesitas retener los mensajes.

  • Utilice funciones de Lambda habilitadas para VPC para acceder a los recursos de sus subredes privadas: configure las funciones de Lambda habilitadas para VPC para acceder a los recursos de las subredes privadas de su VPC, como ElastiCache Amazon, que se utiliza para reducir los tiempos de consulta de conjuntos de datos de baja latencia, como las tablas de clasificación en vivo.

Para obtener más información, consulte la Guía para el alojamiento personalizado del backend de juegos en. AWS