DOTS acelera los juegos móviles y el desarrollo

Cómo la nueva Data-Oriented Technology Stack resulta en enormes ganancias de rendimiento para Tic Toc Games 

Tic Toc: un estudio de caso de desarrolladores de Unity

¿Cómo acelerar el desarrollo y mejorar la experiencia de usuario utilizando números de componentes sin precedentes a los gráficos del juego? Tic Toc Games aprovechó el alto rendimiento de Data-Oriented Technology Stack (DOTS) de Unity, lo que incluye el sistema de componentes de entidad (ECS) el sistema de trabajos de C# y el compilador Burst, para conseguir un desempeño de 60 fps en dispositivos móviles sin agotar la batería o sobrecalentar el teléfono.

El proyecto

Implementa un enfoque de diseño de software orientado en los datos 

El objetivo

Mejora el rendimiento de los subprocesos múltiples y reduce los requerimientos de energía del dispositivo

Plataformas

iOS, Android, Xbox One, PS4, Steam, Nintendo Wii U eShop

Miembros del equipo

Alrededor de 40 con 5 desarrolladores usando Unity

Ubicación

Burbank, CA

Tic Toc Games es un desarrollador de servicios con un equipo experimentado de artistas, diseñadores, programadores y gerentes de producción, todos premiados por sus trabajos en productos interactivos. Quieren que sus jugadores amen los juegos mientras los disfrutan, que piensen en estos aun cuando no estén jugando, que compartan su entusiasmo con sus amigos y vuelvan a jugarlos una y otra vez. Tic Toc Games utiliza Unity desde que empezaron a crear juegos en 2011.

Como cualquier compañía de videojuegos, Tic Toc siempre busca nuevas maneras de obtener un mejor rendimiento con su código y, al mismo tiempo, iterar más rápido al diseñar. Garth Smith, jefe en programación de Tic Toc, lo dice una forma más elegante: "Necesitamos hacer mejores juegos de una forma más rápida". Es un antiguo usuario de Unity, y considera que algunas de las principales funciones nuevas de Unity 2018.x son muy potentes.

Con varios juegos de ingenio importantes pendientes para 2019, que incluyen un Match 3 y un Collapse, Smith le pidió a su equipo que hagan uso del ECS en particular. "ESC trabaja con un modo de codificación totalmente diferente a lo que las personas están acostumbradas. La programación orientada en datos es algo que se suela enseñar en las aulas, así que se trata de un gran cambio de paradigma. Incluso para nosotros, teníamos un poco de temor de empezar con algo nuevo", declaró Smith. Sin embargo, lo que lograron con ECS los terminó convenciendo.

Los resultados:

  • 60 fps en dispositivos móviles sin sobrecalentamiento del CPU
  • Flujo de prueba más eficaz
  • Menor iteración y menos problemas/errores
  • Mayor duración de la batería
Tic Toc se conecta al DOTS

Para lograr grandes ganancias de rendimiento y de productividad, Tic Toc implementó los principales componentes del nuevo Data-Oriented Technology Stack (DOTS) de Unity, el cual incluye el sistema de componentes de entidad (ECS) el sistema de trabajos de C# y el compilador Burst.

ECS cambia de enfoque: de los objetos a los datos

El ECS reemplaza la programación orientada a los objetos por una orientada a los datos, ya que es más apropiada para muchas partes de las aplicaciones de juegos. Desacopla los datos del procesamiento, eliminando una enorme cantidad de datos dispersos, lo que permite el multiprocesamiento real ya que los eventos no necesitan ser procesados secuencialmente.

Por ejemplo, dos entidades podrían ser un bala y un jugador, cada uno con referencias a diferentes atributos como los datos de posición, aparición y salud. Las entidades y los atributos son simples datos, sin funcionalidades asociadas. El sistema aplica una función a una entidad, como un sistema de movimiento a una bala o un sistema de aparición a un jugador. Esta separación de datos y funciones permite a Unity crear trabajos que puedan ser procesados en paralelo en múltiples núcleos. Según Mike Geig, líder mundial del marketing de contenido de Unity, "Una vez que se comprende el sistema, todo se hace muy fácil".

Los beneficios de utilizar ECS son significativos. Simplemente por el modo en que se organizan los datos, es más fácil escribir códigos optimizados. De ahí el lema, "Rendimiento por defecto. Algunas de las puertas que ECS abrió nos mostraron cómo hacer mejores algoritmos", agregó Smith. Además, el código de ECS es altamente reutilizable, los arquetipos (entidades únicas) se compilan en la memoria y, quizá lo más importante, ECS puede aprovechar el número creciente de núcleos de los procesadores. Actualmente, los procesadores más comunes tienen entre 4 y 6 núcleos físicos y entre 8 y 12 núcleos lógicos, mientras que los procesadores de los más "fanáticos" cuentan con 16 núcleos físicos y 32 núcleos lógicos. La mayoría nunca se utiliza, pero DOTS los aprovecha a todos.

Mira la Presentación de 5 partes del sistema de componentes de entidad (ECS) y del sistema de trabajos de C#.

Únete al sistema de trabajos de C#

Combinar el código ECS orientado a los datos del equipo con el sistema de trabajos de C# de Unity le permitió a Tic Toc aprovechar cada vez más el procesamiento y el multiprocesamiento de varios núcleos. Escribir un código de subprocesamiento seguro es difícil por las condiciones de ejecución (los subprocesos que se ejecutan en un orden inesperado y causan resultados inesperados) añaden restricciones, y el cambio constante de contexto es ineficaz.

Pero el sistema de trabajo se encarga de todo lo anterior, y permite a los desarrolladores de Tic Toc concentrarse en el código específico del juego. Smith explicó: "Un trabajo nos permite ejecutar nuestros sistemas en múltiples subprocesos y usar diferentes núcleos de un CPU, procesos que antes considerábamos bastante complicados . El ECS y el sistema de trabajos nos permite hacer uso de casi el 100 % de los otros núcleos, lo que es increíblemente eficaz".

El compilador Burst le habla directamente al hardware

El nuevo compilador Burst es una tecnología de compilación matemática basada en LLVM que realiza trabajos C# y produce un código de máquina altamente optimizado para las capacidades particulares de la plataforma objetivo. Para Tic Toc, eso significó que Smith y su equipo no tuvieran que perder tiempo reaprendiendo y mecanizando complejos códigos de bajo nivel para solucionar problemas de desempeño.

"Con el compilador Burst, pudimos sacar conjeturas sobre lo que hacemos con el ECS, y eso acelera el trabajo. Descubrimos que algunos bucles aumentaban alrededor de 30x, en especial cuando estos se producían muchas veces durante un cuadro", declaró Smith.

El equipo descubrió que cuando interactúan grandes sistemas, el compilador Burst elimina una cantidad importante de problemas de interacción que normalmente tendrían que haber sido resueltos durante el control de calidad. "Con el compilador Burst, tienes la ventaja de un código de montaje manual para múltiples plataformas, sin todo el arduo trabajo", agregó Smith.

Consejos de otros estudios sobre DOTS

La transición de Tic Toc hacia un enfoque orientado a los datos al principio fue tentativa, pero a su vez fue un desafío interesante. "Una vez pillé el truco a ECS, todo empezó a ser más fácil. Creo que a esta altura, todos en el estudio ya lo entienden, y les encanta. Probablemente, realizaremos todos nuestros próximos juegos con el ECS", contó Smith.

También tiene buenos consejos para otros estudios. "No es recomendable entrar de lleno con ECS al principio. Se lo puede ir incorporando gradualmente, e incluso al usarlo para hacer cosas pequeñas ya se nota una mejora en el rendimiento, en especial gracias a la reutilización de códigos".

Además, Smith recomiendo probar con un proyecto prototipo antes de lanzarse a la producción completa. "Intenta con algo simple como un game jam, un Tetris, un tres en línea, no importa cuál; simplemente completa un juego en el ECS antes de poner a todo tu equipo a producir con arte y todo eso. Aprenderás mucho con tu primera prueba".

Finalmente, Smith está ansioso por la reacción de los jugadores de Tic Toc. "De seguro notarán una sensación y rendimiento diferente con nuestros nuevos juegos de 60fps, sin importar lo que está sucediendo en la pantalla. ¡Sé que disfrutarán de la jugabilidad y capacidad de respuesta mejoradas!".

"Con el sistema de componentes de entidad de Unity, el rendimiento es sorprendente, pero aunque el rendimiento no sea algo que te preocupe, hay beneficios significativos en cuanto a la reutilización de códigos y la durabilidad de la batería de dispositivos móviles".

Garth Smith, Lead Programmer, Tic Toc Games

Los beneficios de los sistemas de componentes de entidad (ECS) para el desarrollo de juegos móviles

Descubre por qué los sistemas de componentes de entidad (ECS) significan un desarrollo más rápido de juegos móviles, menos errores, mayor duración de la batería y mucho más.

Listen to DOTS early-adopter Garth Smith share his experience with Unity’s new data-oriented approach.

Cómo Tic Toc utiliza ECS para juegos móviles de ingenio

En Unite Los Angeles, Tic Toc condujo una sesión llamada "Amamos el rendimiento." Durante la charla, Garth Smith explica cómo el ECS les ayudó a acelerar las iteraciones, así como también la experiencia en general al trabajar con el sistema de componentes de entidad de Unity. 

Rendimiento por defecto

Aprovecha al máximo los procesadores de múltiples núcleos con nuestro nuevos sistema de múltiples subprocesos de alto rendimiento.

We use cookies to ensure that we give you the best experience on our website. Click here for more information.