DOTS acelera los juegos móviles y el desarrollo

Importantes ventajas de la nueva pila de tecnología basada en datos para los juegos de Tic Toc

Tic Toc: un estudio de caso de desarrolladores de Unity

How do you speed up development and improve the user experience while adding unprecedented numbers of components to game graphics? Tic Toc Games leveraged Unity’s high-performance Data-Oriented Technology Stack (DOTS) – which includes the Entity Component System (ECS), the C# Job System, and the Burst Compiler – to enable 60 frames per second (fps) performance on mobile devices without draining batteries or overheating phones.

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

ECS replaces object-oriented coding with a data-oriented approach much more appropriate for many parts of gaming applications. It decouples data from processing, eliminating an enormous amount of data scattering and enables true multithreading as events no longer have to be processed sequentially.

For example, two entities might be a bullet and a player, each with references to different attributes like position, spawning, and health data. The entities and the attributes are pure data with no attached functionality. The system applies a function to an entity, such as a motion system to a bullet or a spawning system to a player. This separation of data and function lets Unity create jobs that can be processed in parallel on multiple cores. According to Mike Geig, Unity’s Global Head of Evangelism Content, “Once it clicks, it’s pretty easy to wrap your head around it.”

The benefits of using ECS are significant. Simply because of the way data is organized, it’s easier to write optimized code – thus the tagline, “Performance by default.” Smith added, “Some of the doors that ECS opened showed us how to make better algorithms.” In addition, ECS code is highly reusable, archetypes (unique entities) are tightly packed in memory, and perhaps most importantly, ECS can take advantage of increasing numbers of CPU cores. Today, mainstream CPUs have up to 4-6 physical and 8-12 logical cores, while “enthusiast” CPUs have up to 16 physical and 32 logical cores. Most go unused, but DOTS takes full advantage of them all.

Watch Mike Geig’s 5-part Intro to the Entity Component System (ECS) and C# Job System.

Ú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!".

Garth Smith, Lead Programmer, Tic Toc Games

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

Garth Smith, un adoptante temprano de DOTS, comparte su experiencia con el nuevo enfoque orientado a los datos de Unity.

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.

Usamos cookies para brindarte la mejor experiencia en nuestro sitio web. Visita nuestra página de política de cookies si deseas más información.

Listo