DOTS betreibt die futuristische Megacity auf Mobilgeräten

Nordeus – Eine Unity-Entwickler-Fallstudie

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.

Das Projekt

Regelmäßige Demonstration der neuesten Entwicklung unserer „Leistung als Standard“ / DOTS-Initiative

Das Ziel

Verbesserung der Leistung von Multithread-Code für alle Unity-Entwickler

Plattformen

Android, iOS, PC

Teammitglieder

3 für Megacity, 20 für Kampf-Demo

Standort

Belgrad, Serbien

Datenorientiertes DOTS-Coding bringt Megacity schnell auf Mobilgeräte

Da der Trend bei CPUs hin zu mehr und mehr Kernen geht, ist hochleistungsfähiges Multithreading eine essentielle Funktion jeder modernen Rechnereinheit. Die Unity-Lösung für mehrere Kerne und Threads ist Data-Oriented Technology Stack (DOTS), ein Überbegriff für das Entity Component System (ECS), das C#-Jobsystem, und den Burst Compiler.

Nordeus verblüfft regelmäßig Unite-Besucher von Los Angeles bis Berlin und hat immer wieder die Vorteile dieser und anderer Unity-Funktionen aufgezeigt, wie zum Beispiel die Lightweight Render Pipeline (LWRP) und geschachtelte Prefabs.

Die Ergebnisse:

  • Einfach zu schreibender und effizienter Multithread-Code
  • Optimiertes Rendering für Plattformen mit niedrigerer Leistung, z. B. Mobilgeräte
  • Schnellere QA mit wesentlich weniger Integrationsfehlern
Der Einsatz von DOTS bei einem Hackathon

Ein äußerst kreatives und internationales Team

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

Der Einsatz von DOTS bei einem Hackathon

„Sobald wir von DOTS gehört hatten, haben wir Unity kontaktiert, damit wir es ausprobieren und vielleicht zusammenarbeiten können“, sagt Jozef. „Wir möchten unseren Spielern stets die bestmögliche Nutzererfahrung bieten, und reibungsloses Gameplay ist ein großer Teil davon. Natürlich sind wir besonders an allem interessiert, das unsere Spiele dabei unterstützt, schneller zu laufen.“

Die Zusammenarbeit begann mit einem Treffen zwischen den CTOs von Unity und Nordeus in Belgrad. Nordeus begrüßte die Hilfe bei der Einarbeitung in die neuen Technologien, und Unity wollte eine praktische Anwendung, die DOTs bis an die Grenzen testen sollte. Srdja fügte hinzu: „Wir wollten außerdem etwas Cooles und Episches schaffen, das wir Joachim Ante (einem der Gründer von Unity) zeigen können. Also haben wir uns für Unite Austin (2017) gedacht, wir nehmen uns einen Kampf aus Heroic: Magic Duel, vergrößern diesen auf 100.000 Einheiten und jagen dann alle in die Luft! Das war echt aufregend für uns.“

Jozef und Srdja waren die ersten DOTS-Nutzer bei Nordeus. Sie schätzen, dass sie 90 % ihrer Zeit damit verbracht haben, Gameplay-Systeme zu schreiben, insbesondere für Rendering, Einheitenbewegung und Logik. Jozef berichtet: „Mit DOTS von Unity können wir ein paar wirklich coole Zaubersprüche erschaffen, die große Explosionen verursachen – Effekte, von denen wir wussten, dass sie die Zuschauer beeindrucken werden.

Das Team vollendete die Nordeus Battle Demo für Unite Austin innerhalb von zwei Monaten, von denen die ersten vier Wochen dem Programmieren und Prototyping gewidmet waren. Eine dieser Wochen haben sie mit dem Unity-Team in Kopenhagen verbracht, wo sie in Hackathon-Manier in einem Raum zusammenarbeiteten. „Mit Joe und seinem Team zusammenzuarbeiten war eine unglaubliche Erfahrung. Wir haben direkt von der Quelle eine Menge über ECS, das C#-Jobsystem, den Burst Compiler und datenorientiertes Programmieren im Allgemeinen gelernt“, erklärt Jozef.

Ein Abschied von objektorientiertem Programmieren

Der Schritt hin zu datenorientierter Programmierung ist ein signifikanter Wechsel, der am Anfang beängstigend wirken kann. Doch laut Srdja ist „DOTS eine ganz andere Denkweise, aber nach einer oder zwei Wochen hat es endlich Klick gemacht und dann waren wir in der Lage, viel besseren Code zu schreiben. Und wenn wir alten Code integrieren mussten, konnten wir das dank ECS ganz einfach tun.“

Ein integraler Bestandteil von DOTS ist das C#-Jobsystem, das thread-sicheren Code schreibt, Race Conditions verwaltet (also Threads, die in unerwarteter Reihenfolge ablaufen und so unerwartete Resultate verursachen können) und Kontextwechsel optimiert, um mehrere Kerne zu nahezu 100 % zu nutzen. Ein weiterer Bestandteil ist der Burst Compiler, eine LLVM-basierte, mathematisch orientierte Compiler-Technologie, die C#-Jobs übernimmt und hochoptimierten Maschinencode für die besonderen Fähigkeiten der Zielplattform produziert.

Joachim Ante meint dazu: „Unser Burst Compiler versteht Mathematik und Geometrie auf einer tieferen Ebene und kann mathematische Optimierungen durchführen, die andere Compiler einfach nicht schaffen. Er vektorisiert automatisch C#-Code und generiert diese vektorisierten Instruktionen für eine bestimmte Zielplattform. Als Resultat kann der Code dann viel, viel schneller laufen.“ Der Burst Compiler eliminiert außerdem eine erhebliche Anzahl an Integrationsfehlern, die normalerweise während der QA ausgemerzt werden müssten.

Den Kampf um Megacity gewinnen

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

Dank LWRP kommt eine Metropole auf Mobilgeräte

Joachim Antes Keynote-Ansprache auf der Unite LA 2018 umfasste eine erstaunlich komplexe Live-Demo von Megacity mit 4,5 Millionen Mesh-Renderern, 5.000 dynamischen Fahrzeugen und 200.000 einzigartigen Gebäuden. Die Fahrzeuge fliegen auf splinebasierten Fahrbahnen und kollidieren nie. 100.000 individuelle Audioquellen, inklusive Neonschilder, Belüftungsventilatoren und Autos, erzeugen eine reiche und authentische Geräuschkulisse. Und all das läuft auch reibungslos auf Smartphones.

„Für die Megacity-Demo wollten wir unsere komplexen Grafiken in einer mobilen Version mit einer sehr schnellen Framerate zeigen. Dafür haben wir LWRP und ein paar speziell angepasste Shader-Optimierungen benutzt, damit es so weit wie möglich der PC-Version gleicht“, sagt Jozef. Und Srdja fügt hinzu: „Wenn man an einem Spiel arbeitet, das die Grenzen von PCs austesten soll, und sich dann später entscheidet, es auf eine Mobilversion zu portieren, muss man üblicherweise große Teile überarbeiten, da es auf mobilen Plattformen Leistungsgrenzen gibt. Bei Megacity war das nicht der Fall. DOTS hat es uns ermöglicht, den exakt gleichen Code zu verwenden, den wir für die Spiellogik und das Rendering am PC genutzt haben, und diesen nahtlos auf die Leistungsfähigkeit von mobilen Plattformen anzupassen.“

Die Unity Lightweight Render Pipeline optimiert die Echtzeitleistung auf mobilen Geräten, indem sie Kompromisse bei der Beleuchtung und den Schatten eingeht. Sie leistet Single-Pass Forward-Rendering mit einem Schatten- und Licht-Culling pro Objekt in Echtzeit (wobei alle Lichter schattiert sind) bei einem Single-Pass, und minimiert somit Draw-Calls.

Geschachtelte Prefabs und ein Abtauchen in DOTS

„Die Megacity-Demo war auch unsere erste Begegnung mit dem neuen geschachtelten Prefabs-System von Unity, und unsere Künstler haben es wirklich geliebt,“ behauptet Jozef. Mit geschachtelten Prefabs kann ein großes Gebäude zum Beispiel aus vielen Raum-Prefabs bestehen, die wiederum aus vielen Möbel-Prefabs bestehen können, und so weiter. Entwickler können die Prefabs für höhere Effizienz in mehrere Einheiten aufteilen, alle großen oder kleinen Inhalten erneut verwenden, und an verschiedenen Teilen des Inhalts simultan arbeiten.

Der Produktplan von Nordeus ist ambitioniert und sieht einen vollständigen Einsatz von Unity und die DOTS-Herangehensweise ans Coding vor. Wie Srdja sagt: „Wenn Sie darüber nachdenken, Unity DOTS selbst anzuwenden, dann zögern Sie nicht. Und haben Sie keine Angst davor, einiges altes Wissen über objektorientiertes Programmieren wieder zu verlernen!“

Srdja Stetic-Kozic, Senior Software Engineer

„DOTS ist eine komplett andere Denkweise, aber innerhalb von ein oder zwei Wochen hat es endlich Klick gemacht und dann waren wir in der Lage, viel besseren Code zu schreiben. Und wenn wir alten Code integrieren mussten, dann konnten wir das dank ECS ganz einfach tun.“

Srdja Stetic-Kozic, Senior Software Engineer
Jozef Oros, Software Engineer

„Sobald wir von DOTS gehört hatten, haben wir Unity kontaktiert, damit wir es ausprobieren und vielleicht zusammenarbeiten können“, sagt Jozef. „Wir möchten unseren Spielern stets die bestmögliche Nutzererfahrung bieten, und reibungsloses Gameplay ist ein großer Teil davon. Natürlich sind wir besonders an allem interessiert, das unsere Spiele dabei unterstützt, schneller zu laufen.“

Jozef Oros, Software Engineer

Wir verwenden Cookies, damit wir Ihnen die beste Erfahrung auf unserer Website bieten können. In unseren Cookie-Richtlinien erhalten Sie weitere Informationen.

Verstanden