View a markdown version of this page

Definiciones - 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.

Definiciones

El AWS Well-Architected Framework se basa en seis pilares: excelencia operativa, seguridad, confiabilidad, eficiencia del rendimiento, optimización de costos y sustentabilidad. AWS proporciona varios componentes principales que te permiten diseñar state-of-the-art arquitecturas para las cargas de trabajo de tus juegos. En esta sección, presentaremos un resumen de las definiciones clave.

A los efectos de este paper, la arquitectura de un juego abarca la infraestructura técnica de backend necesaria para construir y operar un juego. Es posible que algunos juegos no tengan funciones sociales, multijugador u otras funciones en línea y que no requieran el uso de ciertos aspectos de la infraestructura técnica de backend que se describen en este paper. Para ver un análisis detallado de los distintos tipos de cargas de trabajo que se utilizan con frecuencia para dar soporte a 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 en el 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 desplegar algunos componentes de la arquitectura del juego en varias regiones, por ejemplo, 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 fondo necesaria para dar soporte a 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 multijugador masivos en línea (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, incluidos los de escritorio, la web, los dispositivos móviles, las consolas y los modos de interacción más nuevos, como la realidad aumentada (AR), la realidad virtual (VR) y las soluciones de transmisión de juegos. Los juegos suelen ser compatibles con varios 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 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 suscripciones de pago obligatorias para jugar al juego. Algunos de los indicadores clave de rendimiento (KPIs) más comunes en la industria de los videojuegos incluyen:

  • 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 vida útil del jugador (LTV)

  • Ingresos medios por usuario (ARPU)

Sistema de juego

Los videojuegos están desarrollados para jugarse en un sistema de juego que proporciona controles de entrada para el cliente, gráficos, software cliente (conocido como cliente del juego) y hardware y, en algunos casos, funciones exclusivas del sistema para respaldar el juego.

Por lo general, los sistemas de juego se dividen en las siguientes categorías:

  • Consolas: sistemas de entretenimiento diseñados específicamente 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 físico o distribuido 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 destinada a ser utilizada 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 que están 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 se han desarrollado para jugarse en un teléfono móvil, normalmente el sistema operativo de un teléfono inteligente. Por lo general, los juegos móviles se descargan de una tienda de aplicaciones digitales 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 en crecimiento, 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 a un jugador jugar a un juego que está alojado completamente 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 juego).

Servidor de juegos

Los servidores de juegos representan uno de los aspectos más importantes de la infraestructura informática del juego. Los servidores de juegos, a veces denominados servidores de juegos dedicados, se utilizan al desarrollar un juego multijugador o cuando se requiere un procesamiento autorizado por parte del servidor de los eventos del juego. El servidor del juego está en el centro de la arquitectura del juego y es el lugar donde se ejecuta la lógica principal, que incluye la gestión del estado del jugador y del juego, así como la gestión de las interacciones entre los clientes de juego conectados y el servidor de juegos. El servidor de juegos suele ser uno de los aspectos más importantes de la arquitectura de un juego, ya que es responsable de procesar las entradas del cliente de juego del jugador y distribuirlas adecuadamente a otros jugadores conectados en tiempo real. Un servidor de juegos 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 la capacidad suficiente, especialmente durante el lanzamiento del juego o en los períodos de mayor actividad.

A los efectos de este documento, un servidor de juegos o una instancia de servidor de juegos se refiere a la computación, como una máquina virtual, que aloja uno o más procesos del servidor de juegos. Un proceso de servidor de juegos representa una instancia única de la versió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 hacer referencia 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 juegos que la aloja. Existen varias opciones informáticas para alojar servidores de juegos, que permiten acceder a una capacidad escalable basada en la nube mediante un aprovisionamiento flexible de los recursos. AWS

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 servidores de juegos en una instancia para mejorar la eficiencia y reducir los costos. Amazon EC2 es una buena opción para los servidores de juegos si deseas tener el mayor 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. GameLiftproporciona una capa de abstracción superior 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 Regiones de AWS para que puedas alojar los servidores de juegos cerca de los jugadores y 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 juegos existentes, es especialmente útil para los desarrolladores de juegos que no desean desarrollar sus propias soluciones de gestión de servidores de juegos y emparejamiento y prefieren una solución que sea administrada por AWS y que pueda escalar a medida que su juego crece.

Amazon Elastic Container Service (Amazon ECS) es un servicio de organización de contenedores totalmente gestionado que puede utilizar para ejecutar contenedores basados en Docker. También puede usar Amazon Elastic Kubernetes Service (Amazon EKS) para ejecutar contenedores basados en Docker creados con Kubernetes. El uso de tecnologías de contenedores, como las que proporcionan Amazon ECS y Amazon EKS, puede ayudarle a mejorar el uso de la computación al empaquetar de manera eficiente muchos procesos de servidores de juegos u otras instancias de aplicaciones de juegos en una EC2 instancia.

El uso de contenedores también puede mejorar la productividad de los desarrolladores, ya que aloja las aplicaciones con la misma imagen de Docker que utilizan los desarrolladores en sus máquinas locales durante el desarrollo. Puede reducir aún más la sobrecarga operativa mediante AWS Fargate el uso de una solución informática sin servidor para ejecutar contenedores y que es compatible con Amazon EKS y Amazon ECS. Fargate es ideal para los casos de uso en los que quieres ejecutar servidores de juegos en contenedores sin tener la responsabilidad de operar las instancias subyacentes en las que se ejecutan los contenedores.

Puede utilizarlos AWS Outposts para ejecutar la AWS infraestructura y los servicios en un centro de datos o en una instalación local, lo que permite que los juegos se ejecuten en entornos locales y AWS utilicen 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 se ejecuten más cerca de tus jugadores o equipos de desarrollo. Además, para reducir la latencia de la red global 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 los servidores, lo que lo hace útil para casos de uso asíncronos de servidores de juegos, como los juegos por turnos o aquellos que tienen requisitos de procesamiento livianos, una base de código pequeña y donde la funcionalidad del 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 en tiempo de ejecución de las opciones de este paper, ya que la aplicación subyacente está fácilmente disponible para que los desarrolladores la elijan para alojar su código.

A la hora de elegir el enfoque para el alojamiento de servidores de juegos, tenga en cuenta varios requisitos, como la sobrecarga operativa, las bases de código heredadas, los requisitos de rendimiento y la escalabilidad. EC2las instancias y los contenedores son buenas opciones para las bases de código heredadas, ya que requieren el menor cambio para trasladarse a la nube y se pueden usar las EC2 instancias para dedicar los recursos de una instancia de cómputo, 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 se puede utilizar para definir código que solo se ejecute en respuesta a eventos, lo que puede reducir los costes.

Cliente de juegos

El cliente del juego representa el dispositivo de software y hardware que el jugador utiliza 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 los resultados, como gráficos, al jugador. 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 una 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 de backend.

Mensajería

Por lo general, hay tres categorías principales de mensajes en los juegos: 

  • Mensajes sobre la 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

  • ervice-to-serviceMensajería S, como los mensajes JSON que se utilizan para integrar dos o más aplicaciones

Una estrategia común para enviar y recibir este tipo de mensajes es 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 entregar mensajes entre editores y suscriptores mediante un patrón de arquitectura. pub/sub Los editores envían mensajes mediante una API a Amazon SNS, que entrega los mensajes de forma asíncrona a las aplicaciones suscritas y puede enviar notificaciones push directamente a clientes móviles o de escritorio con soporte para algunos de los servicios de notificaciones push más utilizados. Amazon SNS se puede utilizar para notificaciones push a los clientes, así como para casos de uso service-to-service de mensajería.

  • Amazon Simple Queue Service (SQS): un servicio de colas totalmente gestionado que facilita la integración de los servidores de juegos con tu juego, independientemente del lenguaje de programación utilizado en cada uno de ellos. Muchas tareas de los juegos se pueden disociar 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 interno.

  • Amazon Managed Streaming for Apache Kafka (MSK): un servicio totalmente gestionado que simplifica la creación de aplicaciones de streaming de datos y de productores o consumidores 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 enviar mensajes. service-to-service

  • Amazon ElastiCache (Redis OSS): proporciona un almacén de datos en memoria totalmente gestionado que incluye compatibilidad con la popular pub/sub función de Redis, que se utiliza habitualmente para desarrollar aplicaciones de salas de chat y mensajería de alto rendimiento. service-to-service Redis también admite tipos de datos enriquecidos, como listas y conjuntos, de modo que los desarrolladores pueden utilizar Redis para hacer colas de alto rendimiento.

  • Amazon Pinpoint: proporciona mensajes de participación de los usuarios a través de correo electrónico, SMS, 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 transaccional, como admitir tokens de autenticación multifactorial, confirmaciones de pedidos y correos electrónicos de restablecimiento de contraseñas.

Operaciones de juego en directo (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 en el 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 versiones o secuelas posteriores en lugar de incorporarse al producto lanzado. Con el enfoque de gestión de juegos de Live Ops, un equipo de operaciones de juego puede lanzar un juego y mantener una comunidad de jugadores comprometida mediante la experimentación, las promociones, los eventos del juego y la innovación para entretener a los jugadores.

Si bien este enfoque tiene la ventaja de permitir nuevas estrategias de participación de los jugadores y generar fuentes de ingresos recurrentes, requiere más experiencia operativa. Por ejemplo, para implementar una estrategia de Live Ops exitosa, es posible que un desarrollador necesite 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.