DOTS ejecuta el juego futurista Megacity en celulares

Nordeus: Caso de estudio de un desarrollador Unity

¿Qué inspira los impresionantes demos como Megacity presentados en los eventos de la comunidad de Unity? ¿Son solo algo bonito o existen beneficios reales para los desarrolladores Unity? La compañía Nordeus, con sede en Belgrado, ha sido destacada en muchas conferencias de desarrolladores Unite, en las que se demostró el trabajo logrado con sus juegos más exitosos. Pero sus clips más innovadores no son para alardear, sino para demostrar las nuevas funciones de Unity, que cambiarán drásticamente lo que se puede lograr tanto de forma creativa como en la programación.

El proyecto

Demostrar periódicamente las últimas evoluciones de nuestra iniciativa "Rendimiento por defecto"/DOTS
l

El objetivo

Mejorar el rendimiento de código multitarea para todos los desarrolladores Unity
l

Plataformas

Android, iOS, PC

Miembros del equipo

3 para Megacity, 20 para Battle Demo

Ubicación

Belgrado, Serbia

El código DOTS orientado a los datos permite llevar Megacity a los dispositivos móviles rápidamente

A medida que las CPU van incorporando más y más núcleos, el multiprocesamiento de alto rendimiento es una característica esencial de cualquier motor informático moderno. La solución de Unity para núcleos y procesos múltiples es el conjunto de tecnología orientada a los datos (DOTS), un término abarcativo para referirse al sistema de componentes de entidad (ECS), el sistema de trabajos de C# y al compilador Burst.

Nordeus, compañía que impresionó a la audiencia Unity desde Los Ángeles hasta Berlín, ha demostrado los beneficios de esta y otra funciones de Unity, como la tubería de renderizado ligera (LWRP) y los Prefabs anidados.

Los resultados:

  • Códigos multiproceso eficientes y fáciles de escribir
  • Renderizado optimizado para plataformas de bajo desempeño como celulares
  • Controles de calidad más rápidos con un número de bugs considerablemente menor
Conectando DOTS a un hackatón

Un equipo internacional y altamente creativo

Fundada en 2010 por los antiguos ingenieros de Microsoft Branko Milutinovic, Milan Jovovic y Ivan Stojisavljevic, Nordeus publicó primeramente Top Eleven – Be a Soccer Manager, un juego freemium de gestión de un equipo de fútbol. Tuvo un gran éxito en Facebook y se volvió rentable en tres semanas. En 2011 se lanzó para Android e iSO. Desde entonces, la compañía publicó Golden Boot en iOS y Android, hizo el prelanzamiento de Heroic: Magic Duel y tiene muchos otros juego en etapas de desarrollo.

Nordeus atrajo talento de 22 países a su sede central en Belgrado, un lugar muy rico en cultura e historia. Frecuentemente se la considera una de las mejores empresas para trabajar de Europa y se la conoce como una gran donante a organizaciones humanitarias.

Dos de sus principales ingenieros de software son oriundos de Belgrado: ozef Oros y Srdja Stetic-Kozic, quienes son parte de los ocho miembros del equipo Nordeus Central Tech. Son responsables de fomentar las herramientas y técnicas utilizadas en todos los juegos de Nordeus, y como declara Srdja: "Todos nuestros juegos se crean con Unity".

Conectando DOTS a un hackatón

"Apenas nos enteramos de DOTS, nos contactamos con Unity para probarlo y ver si podíamos colaborar —declaró Jozef—. Siempre queremos brindarles a nuestros jugadores la mejor experiencia de usuario posible, y una jugabilidad fluida es muy importante para eso. Naturalmente, tenemos especial interés en todo lo que ayude a que nuestros juegos se ejecuten de forma más rápida".

La colaboración empezó con una reunión en Belgrado entre los directores de tecnología de Unity y de Nordeus. Este último recibió ayuda para familiarizarse con las nuevas tecnologías y Unity quería aplicar DOTS en el mundo real para probar sus límites. Srdja agregó: "También queríamos hacer algo genial y épico para que Joachim Ante (cofundador de Unity) hiciera una demostración. Así que para la Unite Austin (2017), pensamos: '¡Demostremos una batalla de Heroic: Magic Duel con 100 000 unidades para sorprenderlos a todos!'. Fue algo muy emocionante para nosotros".

Jozef y Srdja fueron los primeros usuarios de DOTS en Nordeus. Calculan haber pasado el 90 % de su tiempo escribiendo sistemas de jugabilidad, particularmente para el render, el movimiento de unidades y la lógica. Jozef contó: "DOTS de Unity nos permitió crear algunos efectos fantásticos como explosiones grandiosas, que sabíamos que dejarían atónita al público".

El equipo completo la demostración de batalla de Nordeus para la Unite Austin en dos meses, destinando las primeras dos semanas a la programación y a la creación del prototipo. Pasaron una de esas semanas en Copenhage con un equipo de Unity trabajando todos juntos al estilo hackatón en una habitación. "Trabajar con Joe y su equipo fue una experiencia fantástica. Aprendimos muchísimo sobre el ECS, el sistema de trabajos de C#, el compilador Burst y la programación orientada a los datos en general directo desde la fuente", agregó Jozef.

Despidiéndose de la programación orientada a los objetos

Pasarse a una programación orientada a los datos es un cambio significativo y puede parecer intimidatorio en un principio. Sin embargo, según Srdja: "DOTS exige un modo de pensar diferente, pero en una o dos semanas logramos entenderlo y fuimos capaces de escribir un código mucho mejor. Y cuando tenemos que integrar un código viejo, el ECS nos permite hacerlo de una forma bastante sencilla".

Una parte integral de DOTS es el sistema de trabajos de C#, que escribe códigos seguros para subprocesos, administra condiciones de ejecución (procesos que se ejecutan en orden inesperado y causan resultados inesperados) y optimiza el cambio de contextos para ganar casi el 100 % del uso de los múltiples núcleos. Otro componente es el compilador Burst, una tecnología de compilación basada en LLVM que toma trabajos de C# y produce un código de máquina altamente optimizado para las capacidades particulares de la plataforma meta.

Según Joachim Ante: "Nuestro compilador Burst comprende las matemáticas y la geometría en un nivel profundo y puede realizar optimizaciones matemáticas imposibles para otros. Vectoriza automáticamente el código C# y genera las instrucciones vectorizadas para una plataforma meta específica. Como resultado, un código puede ejecutarse muchísimo más rápido". El compilador Burst también elimina un número significativo de bugs de integración que, de otro modo, habría que solucionar en la etapa de control de calidad.

Ganando la batalla de Megacity

La demostración de batalla que se exhibió en la Unite Austin utilizó componentes de Heroic: Magic Duel. El equipo de Nordeus aplicó sus conocimientos de DOTS principalmente en elementos de jugabilidad dinámica, con grandes cantidades de unidades animadas en un terreno de tamaño limitado.

Esto allanó el camino para su siguiente desafío con Megacity, que es un mundo grande y abierto con 4,5 millones de objetos que tenían que ser renderizados, seleccionados y cargados, 5000 vehículos voladores que debían ser simulados y 100 000 fuentes de audio que había que reproducir simultáneamente. Y todo esto tiene que funcionar tanto en un dispositivo móvil como en un PC. Jozef declaró: "Con Megacity, el DOTS de Unity se utilizó para todo, desde nuevas renderizaciones y técnicas de animación hasta sistemas de UI e incluso audio. Podemos utilizar todo esto tanto en nuestros juegos existentes como en los que están en desarrollo".

LWRP lleva una metrópolis a un dispositivo móvil

La ponencia de Joachim Ante en Unite LA 2018 incluyó una asombrosamente compleja demostración en vivo de Megacity. La demo contiene 4.5 millones de renderizados de meshes, 5000 vehículos dinámicos y 200 000 objetos de construcción únicos. Los vehículos vuelan en carriles de tráfico basados en splines, nunca colisionan, y hay 100 000 fuentes de audio únicas, incluyendo letreros de neón, ventiladores de aire acondicionado y autos que producen sonidos únicos para formar un entorno sonoro realista y detallado. Y todo funciona a la perfección en dispositivos móviles.

"Para la demo de Megacity, queríamos mostrar nuestros complejos gráficos en una versión móvil con una velocidad de fotogramas muy rápida. Usamos LWRP y algunos ajustes de shader personalizados para que se pareciera lo más posible a la versión de PC", dijo Jozef. Srdja añadió: "Cuando estás trabajando en un juego que se supone que tiene que expandir los límites de las PC, y luego decides portarlo a móvil más tarde, normalmente tienes que reconstruir gran parte del mismo debido a las limitaciones de rendimiento de las plataformas móviles. Este no fue el caso de Megacity. DOTS nos permitió utilizar exactamente el mismo código ejecutando la lógica de juego y el renderizado en una PC y reducirlo sin problemas a plataformas móviles".

La tubería de renderizado ligera de Unity optimiza el rendimiento en tiempo real en dispositivos móviles al hacer concesiones con la iluminación y el shader. Realiza una sola pasada de renderizado hacia adelante con una luz de sombra en tiempo real y una selección de luz por objeto (con todas las luces sombreadas) en una sola pasada, minimizando los draw calls.

Prefabs anidados e inmersión en DOTS

"La demostración de Megacity también fue nuestro primer acercamiento al nuevo sistema Prefabs anidados de Unity, y a nuestros artistas les encantó", cuenta Jozef. Por ejemplo, con Prefabs anidados, un edificio grande puede contener varios Prefabs de ambientes, que a su vez puede contener múltiples Prefabs de muebles, y así sucesivamente. Los desarrolladores pueden dividir los Prefabs en diferentes entidades para una mejor eficacia, reutilizar cualquier contenido, ya sea pequeño o grande, y trabajar en distintas partes del contenido simultáneamente.

El mapa de productos de Nordeus es ambicioso y está comprometido con Unity y el sistema de codificación de DOTS en un 100 %. Como declara Srdja: "Si estás pensando en adoptar DOTS de Unity, no lo dudes. ¡Y no temas olvidar mucho de lo que sabes sobre la programación orientada a los objetos!".

"DOTS exige un modo de pensar diferente, pero en una o dos semanas logramos entenderlo y fuimos capaces de escribir un código mucho mejor. Y cuando tenemos que integrar un código viejo, el ECS nos permite hacerlo de una forma bastante sencilla".

Srdja Stetic-Kozic, Senior Software Engineer

"Apenas nos enteramos de DOTS, nos contactamos con Unity para probarlo y ver si podíamos colaborar. Queremos brindarles a nuestros jugadores la mejor experiencia de usuario posible, y una jugabilidad fluida es muy importante para eso. Naturalmente, tenemos especial interés en todo lo que ayude a que nuestros juegos se ejecuten de forma más rápida".

Jozef Oros, Software Engineer

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