DOTS ejecuta el juego futurista Megacity en celulares

Nordeus: Caso de estudio de un desarrollador Unity

What inspires wow-factor demos like Megacity at Unity community events? Are they just eye-candy or are there real benefits for Unity developers? Belgrade-based Nordeus has been a featured studio at many Unite developer conferences, demoing work drawn from their hit games. But their cutting-edge clips aren’t about showing off – they’re about demonstrating new Unity capabilities that will dramatically change what you can achieve both creatively and programmatically.

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

Founded in 2010 by ex-Microsoft engineers Branko Milutinovic, Milan Jovovic, and Ivan Stojisavljevic, Nordeus first published Top Eleven – Be a Soccer Manager (“Football” outside the US), a freemium team-management game. It was enormously successful on Facebook, becoming profitable in three weeks, and was ported to Android and iOS in 2011. Since then, the company has published Golden Boot on iOS and Android, has Heroic: Magic Duel in soft launch, and numerous other games in development stages.

Nordeus has drawn talent from 22 countries to its headquarters in Belgrade, a locale extraordinarily rich in culture and history. They’re routinely cited as a top workplace in Europe and are known as generous contributors to a number of philanthropic organizations.

Two of their top software engineers are Belgrade locals: Jozef Oros and Srdja Stetic-Kozic, who work in the Nordeus Central Tech team with eight others. They are responsible for fostering the tools and techniques used in all Nordeus games, and as Srdja notes, “All of our games are made in 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

The Battle Demo shown at Unite Austin used components from Heroic: Magic Duel. The Nordeus team applied its DOTS expertise primarily on dynamic gameplay elements, with huge numbers of animated units on a limited-size terrain.

This paved the way for its next challenge, as Nordeus took on Megacity, which is a big, open world with 4.5 million objects that need to be rendered, culled, and loaded, 5,000 flying cars needing to be simulated, and 100,000 audio sources that had to be played simultaneously. And all of this needs to work on mobile as well as PC. Jozef said, “For Megacity, Unity’s DOTS was used for everything, like new rendering and animation techniques, UI systems, and even audio. We can use all of this in our existing games, as well as those in development.”

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

Srdja Stetic-Kozic, Senior Software Engineer

"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
Jozef Oros, 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