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.
Definiciones
El AWS Well-Architected marco se basa en seis pilares: excelencia operativa, seguridad, confiabilidad, eficiencia en el rendimiento, optimización de costos y sostenibilidad. AWS proporciona varios componentes principales que te permiten diseñar arquitecturas de última generación para las cargas de trabajo de tus juegos. En esta sección, presentaremos una descripción general de las definiciones clave.
Para los fines de este documento, la arquitectura de un juego abarca la infraestructura técnica de backend necesaria para crear y operar un juego. Es posible que algunos juegos no tengan funciones sociales, multijugador u otras funciones en línea y es posible que no requieran el uso de ciertos aspectos de la infraestructura técnica de fondo que se describen en este documento. Para obtener información detallada sobre los diferentes tipos de cargas de trabajo que se implementan con frecuencia para respaldar la arquitectura de un juego, consulta Escenarios.
La Nube de AWS infraestructura se basa en regiones y zonas de disponibilidad.
-
Una región es una ubicación física del mundo en la que tenemos varias zonas de disponibilidad.
-
Las zonas de disponibilidad constan de uno o más centros de datos discretos, cada uno con alimentación, redes y conectividad redundantes, alojados en instalaciones independientes.
En función de las características del juego, es posible que desees implementar ciertos componentes de la arquitectura de tu juego en varias regiones para mejorar el rendimiento de los jugadores o para ofrecerles experiencias personalizadas en función de su ubicación.
Hay muchos tipos diferentes de juegos, y la infraestructura técnica de backend necesaria para respaldar un juego varía según el tipo de juego que se esté desarrollando. Por ejemplo, los tipos de juegos más populares pueden incluir los juegos de disparos en primera persona (FPS), los juegos de rol (RPG), los juegos en línea multijugador masivo (MMOG), los battle royales (BR), los juegos de deportes, los juegos de rompecabezas y más. También hay diferentes modos de interacción que influyen en la arquitectura del juego, como el juego por turnos y el juego simultáneo, con diferentes características de rendimiento.
Los juegos están diseñados para jugarse en uno o más sistemas de juego, como ordenadores de sobremesa, web, móviles, consolas y modos de interacción más novedosos, como la realidad aumentada (AR), la realidad virtual (VR) y las soluciones de streaming de juegos. Los juegos suelen admitir la jugabilidad entre sistemas, lo que significa que los jugadores pueden guardar su progreso en el juego y reanudar el juego en otros sistemas, así como iniciar sesiones de juego con jugadores de otros sistemas.
La monetización de los videojuegos permite a los editores de videojuegos generar ingresos mediante diferentes estrategias, como la publicidad, las compras de juegos digitales y minoristas, las compras de contenido descargable (DLC) dentro del juego, conocidas como microtransacciones, y mediante las suscripciones de pago necesarias para jugar. Algunos de los indicadores clave de rendimiento (KPI) más comunes en la industria de los videojuegos son:
-
Usuarios activos diarios (DAU)
-
Usuarios activos mensuales (MAU)
-
Usuarios simultáneos (CCU)
-
Duración de la sesión
-
Coste por instalación (CPI)
-
Valor de por vida del jugador (LTV)
-
Ingresos promedio por usuario (ARPU)
Sistema de juego
Los videojuegos están diseñados para jugarse en un sistema de juego que proporciona controles de entrada para el cliente, gráficos, software de cliente (conocido como cliente del juego) y hardware y, en algunos casos, funciones exclusivas del sistema para facilitar el juego.
Los sistemas de juego suelen dividirse en las siguientes categorías:
-
Consolas: sistemas de Purpose-built entretenimiento diseñados para jugar, incluidos ejemplos populares como Sony PlayStation, Microsoft Xbox y Nintendo Switch. Las consolas ofrecen la posibilidad de jugar mediante la instalación de contenido de juego distribuido física o digitalmente en el hardware de la consola fabricado por el proveedor del sistema de juego. Según esta definición, una consola puede ser portátil o fija y estar diseñada para usarse en un entorno de entretenimiento doméstico.
-
Ordenador personal (PC): juegos que se juegan con un software informático instalado en una máquina cliente y que el jugador puede personalizar. Por esta razón, los juegos de PC son populares entre los jugadores debido a la flexibilidad y el control que proporcionan.
-
Web: juegos diseñados para jugarse con un navegador web y que, por lo general, ofrecen la ventaja de permitir al jugador acceder al juego independientemente de su sistema operativo.
-
Móvil: juegos que están desarrollados para jugarse en un teléfono móvil, por lo general un sistema operativo para teléfonos inteligentes. Los juegos móviles normalmente se descargan de una tienda digital de aplicaciones y se instalan en el teléfono.
Además de los sistemas mencionados anteriormente, también hay sistemas incipientes que todavía son relativamente nuevos y están creciendo y tienen una cuota de mercado mucho menor en comparación con los sistemas más predominantes. Algunos ejemplos de sistemas de juego de esta categoría son la realidad aumentada, la realidad virtual y la transmisión de juegos, a veces denominados juegos en la nube.
La transmisión de juegos implica renderizar el juego en la nube y transmitirlo a un cliente ligero, normalmente un navegador. La transmisión de juegos permite al jugador jugar a un juego que está completamente alojado de forma remota, normalmente en la nube por un proveedor de servicios de transmisión de juegos. En la transmisión de juegos, el jugador se conecta a un juego basado en la nube a través de un navegador o un cliente ligero proporcionado por el proveedor de servicios de juegos en la nube (sistema de juegos).
Servidor de juegos
Los servidores de juegos representan uno de los aspectos más importantes de la infraestructura informática de tu juego. Los servidores de juegos, a veces denominados servidores de juegos dedicados, se utilizan al desarrollar un juego multijugador o cuando se requiere el procesamiento autorizado de los eventos del juego por parte del servidor. El servidor de juego ocupa un lugar central en la arquitectura del juego y es el lugar donde se ejecuta la lógica básica, que incluye la gestión del estado del jugador y del juego, así como la gestión de las interacciones entre los clientes del juego conectados y el servidor del juego. El servidor de juego suele ser uno de los aspectos más sensibles al rendimiento de la arquitectura de un juego, ya que es responsable de procesar las entradas del cliente de juego de un jugador y distribuirlas correctamente a otros jugadores conectados en tiempo real. Un servidor de juego con un rendimiento deficiente afecta al rendimiento general de la experiencia de juego. Por lo tanto, debes optimizar el rendimiento del servidor de juegos y proporcionar suficiente capacidad, especialmente al iniciar el juego o en los períodos de mayor actividad de juego.
A los efectos de este documento, un servidor de juegos o una instancia de servidor de juegos se refiere al proceso, como una máquina virtual, que aloja uno o más procesos del servidor de juegos. Un proceso de servidor de juegos representa una única instancia de la compilación de tu servidor de juegos que aloja una sesión de juego, que es una instancia de tu juego en ejecución a la que los jugadores pueden conectarse a través de una sesión de jugador. Por este motivo, solemos referirnos indistintamente al proceso del servidor de juegos o a la sesión de juego debido a la relación implícita de uno a uno entre una sesión de juego y el proceso del servidor de juego que la aloja. En AWS, existen varias opciones de computación para hospedar servidores de juegos, que brindan acceso a una capacidad escalable basada en la nube mediante el aprovisionamiento elástico de los recursos.
Amazon EC2 proporciona servidores virtuales basados en la nube, conocidos como instancias, compatibles con varias versiones de Linux y Windows. Puede crear instancias y administrarlas directamente como si fuera otro servidor o máquina virtual. Por lo general, se implementan varios procesos de servidor de juegos en una instancia para mejorar la eficiencia y reducir los costos. Amazon EC2 es una buena opción para servidores de juegos si deseas tener el máximo control sobre la infraestructura informática.
Amazon GameLift ofrece una solución totalmente gestionada para el alojamiento de servidores de juegos dedicados en la nube, así como funciones adicionales, como el emparejamiento con. GameLift FlexMatch GameLiftofrece una capa de abstracción adicional a la de Amazon EC2 para facilitar la administración de los servidores de juegos y está disponible en la mayoría de los casos, de Regiones de AWS modo que puedes hospedar los servidores de juegos cerca de los jugadores para reducir la latencia, lograr una alta disponibilidad y reducir significativamente los costos mediante el uso de instancias puntuales. Si bien se GameLift puede integrar en los backends de los juegos existentes, es especialmente útil para los desarrolladores de juegos que no desean desarrollar sus propias soluciones de administración de servidores de juegos y emparejamiento y prefieren una solución que sea administrada AWS y que pueda escalar a medida que su juego crezca.
Amazon Elastic Container Service (Amazon ECS) es un servicio de organización de contenedores totalmente gestionado que puede utilizar para ejecutar contenedores. Docker-based También puede usar Amazon Elastic Kubernetes Service (Amazon EKS) para ejecutar Docker-based contenedores creados con Kubernetes. El uso de tecnologías de contenedores, como las que ofrecen Amazon ECS y Amazon EKS, puede ayudarlo a mejorar la utilización de la computación al empaquetar de manera eficiente muchos procesos de servidores de juegos u otras instancias de aplicaciones de juegos en una instancia EC2.
El uso de contenedores también puede mejorar la productividad de los desarrolladores al alojar aplicaciones que utilizan el mismo tiempo de ejecución operativo de imágenes de Docker que utilizan los desarrolladores en sus máquinas locales durante el desarrollo. Puede reducir aún más la sobrecarga operativa si utiliza Amazon EKS y Amazon ECS AWS Fargate, que es una solución informática sin servidor para ejecutar contenedores. Fargate es el más adecuado para los casos de uso en los que quieres ejecutar servidores de juegos en contenedores sin tener que asumir la responsabilidad de operar las instancias subyacentes en las que se ejecutan los contenedores.
Puedes usarlo AWS Outposts para ejecutar la AWS infraestructura y los servicios en un centro de datos o en una instalación local, lo que puede permitir que los juegos se ejecuten en entornos locales y AWS usar la misma infraestructura para respaldar una estrategia de adopción de la nube híbrida. AWS Las zonas locales funcionan como extensiones Regiones de AWS que permiten que tus servidores de juegos y otras cargas de trabajo sensibles a la latencia funcionen más cerca de tus jugadores o equipos de desarrollo. Además, para reducir la latencia global de la red de tus servidores de juegos, puedes usar AWS Global Accelerator para mejorar el rendimiento del tráfico de jugadores a tus servidores de juegos.
AWS Lambda es un servicio informático sin servidor que ejecuta código sin aprovisionar ni administrar servidores, lo que lo hace útil para casos de uso de servidores de juegos asincrónicos, como los juegos por turnos o aquellos que requieren pocos requisitos de procesamiento, una base de código pequeña y donde la funcionalidad de juego se puede diseñar mediante una arquitectura de microservicios sin estado. Es importante tener en cuenta que las funciones de Lambda se ejecutan en función de eventos y por solicitud, en lugar de ejecutar un proceso de servidor de juegos de larga duración. Lambda proporciona la mayor abstracción del tiempo de ejecución de las opciones de este documento, ya que la aplicación subyacente está fácilmente disponible para que los desarrolladores elijan entre ellas para alojar su código.
Al seleccionar su enfoque para el alojamiento de servidores de juegos, tenga en cuenta varios requisitos, como la sobrecarga operativa, las bases de código antiguas, los requisitos de rendimiento y la escalabilidad. Las instancias y los contenedores EC2 son buenas opciones para las bases de código antiguas, ya que requieren el mínimo cambio para migrar a la nube. Además, puedes usar las instancias EC2 para dedicar los recursos de una instancia de procesamiento, mientras que los contenedores pueden facilitar la administración y la alta utilización. Las funciones sin servidor ofrecen el nivel más alto de abstracción, que puedes usar para definir código que solo se ejecute en respuesta a eventos, lo que puede reducir los costos.
Cliente de juegos
El cliente del juego representa el dispositivo de software y hardware que el jugador usa para jugar a un juego. El cliente del juego proporciona el software para traducir las entradas del jugador en mensajes que se envían a un servidor para su procesamiento, y es responsable de gestionar las respuestas entrantes del servidor y de mostrar al jugador los resultados, como los gráficos. En los juegos multijugador en red en tiempo real, el cliente del juego suele mantener una conexión de red persistente con un servidor de juego durante toda la sesión de juego para reducir la latencia de la red y minimizar el tiempo de procesamiento. Sin embargo, el cliente del juego también puede interactuar mediante REST con un servidor de juegos o servicios secundarios.
Mensajería
Normalmente hay tres categorías principales de mensajes en los juegos:
-
Mensajes de participación de los jugadores dirigidos a un usuario o grupo de usuarios específicos, como invitaciones a juegos o notificaciones push
-
Mensajes grupales entre jugadores, como el chat del juego
-
Service-to-servicemensajería, como los mensajes JSON que se utilizan para integrar dos o más aplicaciones
Una estrategia habitual para enviar y recibir este tipo de mensajes consiste en utilizar patrones de arquitectura de procesamiento asíncrono y publicador-suscriptor. AWS ofrece varios servicios que pueden ayudarte a implementar la mensajería en tu juego.
-
Amazon Simple Notification Service (SNS): servicio gestionado para enviar mensajes entre editores y suscriptores mediante un patrón de pub/sub arquitectura. Los editores envían mensajes mediante una API a Amazon SNS, que envía los mensajes de forma asíncrona a las aplicaciones que se suscriban y puede enviar las notificaciones push directamente a los clientes móviles o a los ordenadores de escritorio, y es compatible con algunos de los servicios de notificaciones push más utilizados. Amazon SNS se puede utilizar para enviar notificaciones push a los clientes, así como para casos prácticos de mensajería de servicio a servicio.
-
Amazon Simple Queue Service (SQS): un servicio de colas totalmente gestionado que facilita la integración de los servidores de juegos con el juego, independientemente del lenguaje de programación que se utilice en cada uno de ellos. Muchas tareas de los juegos se pueden desvincular y gestionar en segundo plano, como actualizar una tabla de clasificación o los valores del tiempo de juego en una base de datos. Este enfoque es una forma eficaz de desvincular varias partes del juego y escalar de forma independiente las funciones orientadas al jugador a partir del procesamiento en segundo plano.
-
Amazon Managed Streaming para Apache Kafka (MSK): un servicio totalmente gestionado que simplifica la creación de aplicaciones de streaming de datos y de producción o de consumo mediante Apache Kafka, una popular solución de código abierto. Kafka se suele utilizar para ingerir y procesar datos de streaming en tiempo real y se puede utilizar para la mensajería de servicio a servicio.
-
Amazon ElastiCache (Redis OSS): proporciona un almacén de datos en memoria totalmente gestionado que admite la popular pub/sub función de Redis, que se utiliza habitualmente para desarrollar aplicaciones de salas de chat y mensajería de servicio a servicio de alto rendimiento. Redis también admite tipos de datos enriquecidos, como listas y conjuntos, de modo que los desarrolladores pueden usar Redis para hacer colas de alto rendimiento.
-
Amazon Pinpoint: proporciona mensajes de participación de los usuarios a través de correos electrónicos, SMS, mensajes de voz y notificaciones push. Por ejemplo, Amazon Pinpoint se puede usar para enviar mensajes de participación de los usuarios a los jugadores para invitarlos a volver al juego y se puede usar para casos de uso transaccionales, como la compatibilidad con tokens de autenticación multifactorial, la confirmación de pedidos y los correos electrónicos para restablecer contraseñas.
Operaciones de juego en vivo (Live Ops)
Las operaciones de juego en vivo (Live Ops) son un estilo de gestión y operaciones de juego que trata el juego como un servicio en vivo y ofrece continuamente nuevas funciones, actualizaciones, promociones, eventos dentro del juego y mejoras al juego lanzado para mejorar la experiencia de la comunidad de jugadores.
Tradicionalmente, los juegos se ofrecían como productos y no como servicios, y con frecuencia se incorporaban nuevos contenidos y funciones en lanzamientos o secuelas posteriores en lugar de en el producto lanzado. Con un enfoque de Live Ops para la gestión de juegos, un equipo de operaciones del juego puede lanzar un juego y mantener una comunidad de jugadores comprometida mediante la experimentación, las promociones, los eventos dentro del juego y la innovación para mantener a los jugadores entretenidos.
Si bien este enfoque tiene la ventaja de desbloquear nuevas estrategias de participación de los jugadores y generar flujos de ingresos recurrentes, requiere más experiencia operativa. Por ejemplo, para implementar una estrategia de Live Ops exitosa, un desarrollador puede necesitar integrarse con los servicios en la nube u operar su propia infraestructura técnica de back-end. También necesitan una forma eficaz de identificar y responder a los problemas que surjan en el juego o en la comunidad de jugadores y que puedan afectar negativamente a la experiencia del jugador.