DOTS betreibt die futuristische Megacity auf Mobilgeräten

Eine Unity-Entwicklerfallstudie: Nordeus führte DOTS ein, um ihre Programmierung drastisch zu ändern – und die Mobilversion von Megacity zu erschaffen

Woher kommt die Inspiration für so atemberaubende Demos wie Megacity bei Community-Events von Unity? Sollen sie bloß schön anzusehen sein oder gibt es wirkliche Vorteile für Unity-Entwickler? Nordeus aus Belgrad ist ein Studio, das schon bei vielen Unite-Entwicklerkonferenzen dabei war und Werke aus Nordeus’ Erfolgsspielen vorgestellt hat. Bei diesen hochmodernen Clips geht es allerdings nicht um Prahlerei – sie sollen neue Möglichkeiten mit Unity aufzeigen, die auf drastische Weise verändern werden, was Sie in kreativer und programmiertechnischer Hinsicht erreichen können.

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

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

Gegründet im Jahr 2010 von den ehemaligen Microsoft-Technikern Branko Milutinovic, Milan Jovovic, und Ivan Stojisavljevic veröffentlichte Nordeus zuerst das Fußballspiel Top Eleven – Be a Soccer Manager, ein Freemium-Spiel über Teammanagement. Es war auf Facebook enorm erfolgreich und wurde bereits innerhalb von drei Wochen profitabel. 2011 wurde es auf Android und iOS portiert. Seit diesem Erfolg hat Nordeus Golden Boot auf iOS und Android veröffentlicht, Heroic: Magic Duel befindet sich in der Soft-Launch-Phase und viele weitere Spiele stecken in der Entwicklung.

Nordeus beschäftigt Talente aus 22 Ländern im Hauptsitz in Belgrad, einer Stadt, die mit einer außerordentlichen Kultur und Geschichte aufwarten kann. Das Studio wird regelmäßig als einer der Top-Arbeitsplätze in Europa gelobt und ist zudem als Unterstützer zahlreicher gemeinnütziger Organisationen bekannt.

Zwei ihrer besten Software-Ingenieure stammen aus Belgrad: Jozef Oros und Srdja Stetic-Kozic, die zusammen mit acht anderen im Team Nordeus Central Tech arbeiten. Sie sind verantwortlich für die Förderung der Werkzeuge und Methoden, die in allen Spielen von Nordeus verwendet werden, und Srdja merkt an: „All unsere Spiele werden in Unity erschaffen.“

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

Die Kampfdemo, die bei Unite Austin gezeigt wurde, nutzte Bestandteile von Heroic: Magic Duel. Das Nordeus-Team hatte seine DOTS-Expertise primär auf dynamische Gameplay-Elemente angewendet, um eine riesige Anzahl an Einheiten auf einem begrenzten Gebiet zu animieren.

Dies hat ihnen den Weg für die nächste Herausforderung bereitet – Nordeus versuchte sich an Megacity, einer riesigen offenen Welt mit 4,5 Millionen Objekten, die gerendert, geglättet und geladen werden mussten, mit 5.000 fliegenden Autos, die simuliert werden mussten, und mit 100.000 Audioquellen, die simultan gespielt werden mussten. Und all das sollte sowohl auf Mobilgeräten als auch auf dem PC funktionieren. Jozef sagt: „Bei Megacity wurde Unitys DOTS für alles verwendet, wie zum Beispiel für das Rendering und für Animationstechniken, für Benutzeroberflächen, selbst für das Audio. Wir können all das sowohl in unseren existierenden Spielen als auch in den Spielen nutzen, die sich gerade in der Entwicklung befinden.“

Dank LWRP kommt eine Metropole auf Mobilgeräte

Joachim Ante’s keynote address at Unite LA 2018 included an astonishingly complex live demo from Megacity. The demo contains 4.5M mesh renderers, 5,000 dynamic vehicles and 200,000 unique building objects. The vehicles fly on spline-based traffic lanes, never colliding, and there are 100,000 unique audio sources, including neon signs, air-conditioning fans, and cars producing unique sounds to form a rich, realistic audioscape. And it all runs smoothly on smartphones.

“For the Megacity demo, we wanted to show our complex graphics on a mobile version with a very fast frame rate. We used LWRP plus a few custom shader tweaks to make it resemble the PC version as much as possible,” said Jozef. Srdja added, “When you are working on a game that is supposed to stretch the limits of PCs, and then you decide to port it to mobile later, you usually have to rework large parts of it due to performance limitations of mobile platforms. This was not the case with Megacity. DOTS enabled us to use the exact same code running gameplay logic and rendering on a PC and seamlessly scale it down to mobile platforms.”

The Unity Lightweight Render Pipeline optimizes real-time performance on mobile devices by making tradeoffs with lighting and shading. It performs single-pass forward-rendering with one real-time shadow light and light culling per-object (with all lights shaded) in a single pass, minimizing 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!“

„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

„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

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