Unity durchsuchen

DOTS beschleunigt mobile Spiele und Entwicklung

Wie das neue Data-Oriented Technology Stack für Tic Toc Games wesentliche Vorteile bringt. 

Tic Toc: Eine Unity-Entwicklerfallstudie

Wie beschleunigt man die Entwicklung und verbessert das Nutzererlebnis, während man die Spielgrafik gleichzeitig um eine beispiellose Anzahl von Komponenten erweitert? Tic Toc Games nutzte Unitys leistungsstarkes Data-Oriented Technology Stack (DOTS), das den Burst Compiler, das Entity-Component-System (ECS) und das C#-Jobsystem enthält, um eine Leistung von 60 FPS auf mobilen Geräten zu ermöglichen, ohne Akkus zu strapazieren oder Handys zu überhitzen.

Das Projekt

Implementierung eines datenorientierten Ansatzes für Softwaredesign ​​​​​

Das Ziel

Verbesserung der Multithreading-Leistung und Reduzierung des Stromverbrauchs von Geräten

Plattformen

iOS, Android, Xbox One, PS4, Steam, Nintendo Wii U eShop

Teammitglieder

etwa 40 Teammitglieder, davon 5 Entwickler, die Unity verwenden

Standort

Burbank, CA

Tic Toc Games ist eine Full-Service-Entwicklerfirma mit einem erfahrenen Team von Grafikern, Designern, Programmierern und Produktionsleitern, die alle preisgekrönte interaktive Produkte entwickelt haben. Sie möchten, dass ihre Spieler das Spiel lieben, während sie es spielen, darüber nachdenken, wenn sie nicht spielen, ihre Begeisterung mit ihren Freunden teilen und das Spiel immer wieder spielen. Sie verwenden Unity, seit sie 2011 mit der Entwicklung von Spielen begannen.

Wie bei jeder Spielefirma sucht Tic Toc immer nach Wegen, um eine bessere Performance aus ihrem Code herauszuholen und gleichzeitig Designiterationen schneller zu gestalten. Garth Smith, Tic Tocs leitender Programmierer, bringt es auf den Punkt: „Wir müssen schneller bessere Spiele machen.“ Er ist langjähriger Unity-Nutzer und findet einige der neuen Hauptfunktionen in Unity 2018.x bemerkenswert leistungsstark.

Da 2019 mehrere hochkarätige Puzzle-Veröffentlichungen erscheinen sollen, darunter ein Match-3- und ein Collapse-Spiel, verpflichtete Smith sein Team, insbesondere ECS zu nutzen. „Wenn man mit ECS arbeitet, ist das Programmieren auf jeden Fall anders als das, woran man gewöhnt ist“, bemerkt Smith. „Datenorientierte Programmierung wird in der Schule nicht viel gelehrt, also liegt hier ein großer Paradigmenwechsel vor. Selbst wir hatten ein wenig Angst, etwas Neues zu beginnen.“ Aber das, was sie mit ECS erreichten, überzeugte sie.

Die Ergebnisse:

  • 60 FPS auf Mobilgeräten ohne CPU-Überhitzung
  • Effizienterer Test-Workflow
  • Weniger Iterationen und Fehlersuche/-behebungen
  • Längere Akkulaufzeit der Geräte
Tic Toc setzt DOTS ein

Um massive Leistungs- und Produktivitätssteigerungen zu erzielen, implementierte Tic Toc die Hauptkomponenten von Unitys neuem Data-Oriented Technology Stack (DOTS), das den Burst Compiler, das Entity-Component-System (ECS) und das C#-Jobsystem enthält.

ECS legt den Fokus von Objekten auf Daten

ECS ersetzt die objektorientierte Programmierung mit einem datenorientierten Ansatz, der für viele Bereiche von Gaming-Anwendungen viel besser geeignet ist. Es entkoppelt Daten von der Verarbeitung, eliminiert eine enorme Menge an Datenstreuungen und ermöglicht echtes Multithreading, da Ereignisse nicht mehr sequentiell verarbeitet werden müssen.

Zum Beispiel könnte man zwei Entitäten haben, eine Kugel und ein Spieler, jeweils mit Referenzen zu unterschiedlichen Attributen wie Positions-, Spawning- und Lebenspunktedaten. Die Entitäten und Attribute sind reine Daten ohne angehängte Funktionalität. Das System wendet eine Funktion auf eine Entität an, wie beispielsweise ein Bewegungssystem auf eine Kugel oder ein Spawningsystem auf einen Spieler. Diese Trennung von Daten und Funktion lässt Unity Aufträge erstellen, die auf mehreren Kernen verarbeitet werden kann. Laut Mike Greig, Unitys globaler Leiter für Evangelism Content: „Sobald es Klick macht, kann man es sehr leicht verstehen.“

Die Vorteile der Verwendung von ECS sind erheblich. Allein durch die Weise, wie Daten organisiert sind, ist es einfacher, optimierten Code zu schreiben – daher der Slogan: „Performance by default.“ Smith fügte hinzu: „Durch einige der Türen, die sich mit ECS öffneten, lernten wir, wie wir bessere Algorithmen entwickeln können.“ Darüber hinaus ist ECS in hohem Maße wiederverwendbar, Archetypen (eindeutige Entitäten) sind dicht im Speicher verpackt, und, was vielleicht am wichtigsten ist, kann ECS eine steigende Anzahl an CPU-Kernen zum Vorteil nutzen. Heute haben Mainstream-CPUs 4-6 physische und 8-12 logische Kerne, während CPUs für Enthusiasten bis zu 16 physische und 32 logische Kerne haben. Die meisten werden nicht verwendet, aber DOTS zieht großen Nutzen aus ihnen.

Sehen Sie sich Mike Geigs fünfteilige Einführung in das Entity-Component-System (ECS) und das C#-Jobsystem an.

Zusammenarbeit mit dem C#-Jobsystem

Durch die Kombination des datenorientierten ECS-Codes des Teams mit dem C#-Jobsystem von Unity konnte Tic Toc die Nutzung von Mehrkernverarbeitung und Multithreading weiter ausbauen. Das Schreiben von Thread-sicherem Code ist schwierig, da Race Conditions (Threads, die in unerwarteter Reihenfolge ausgeführt werden und unerwartete Ergebnisse verursachen) Einschränkungen hinzufügen und ein konstanter Kontextwechsel ineffizient ist.

Dennoch verwaltet das Jobsystem all dies, wodurch sich die Entwickler von Tic Toc auf spielspezifischen Code konzentrieren können. Smith sagte: „Ein Job ermöglicht es uns, unsere Systeme auf mehreren Threads laufen zu lassen und verschiedene Kerne einer CPU zu verwenden – Prozesse, die für uns bisher nur schwer durchführbar waren. ECS und das Jobsystem lassen uns fast 100 % der anderen Kerne nutzen, was unglaublich effizient ist.“

Der Burst Compiler kommuniziert direkt mit der Hardware

Der neue Burst Compiler ist eine LLVM-basierte, mathematisch orientierte Compiler-Technologie, die C#-Jobs übernimmt und hochoptimierten Maschinencode für die besonderen Fähigkeiten der Zielplattform produziert. Für Tic Toc bedeutete das, dass Smith und sein Team keine Zeit mehr damit verbringen mussten, neu zu lernen und komplexen Low-Level-Code zu fabrizieren, um Performance-Probleme zu beheben.

„Mit dem Burst Compiler konnten wir Annahmen darüber treffen, was wir mit ECS machen, und das hat die Sache wirklich beschleunigt. Wir fanden heraus, dass einige Loops um etwa das Dreißigfache zunehmen würden, besonders wenn Loops mehrmals während eines Frames auftraten“, sagte Smith.

Das Team fand heraus, dass, wenn große Systeme interagieren, der Burst Compiler eine beträchtliche Anzahl von Integrationsfehlern eliminiert, die typischerweise in der QA ausgemerzt werden müssten. „Mit dem Burst Compiler erhält man die Vorteile von manuell abgestimmtem Assembler-Code plattformübergreifend und ohne all den Arbeitsaufwand“, ergänzt Smith.

DOTS-Tipps für andere Studios

Tic Toc ging zunächst nur zaghaft zu einem datenorientierten Ansatz über, aber es war eine Herausforderung, die Spaß machte. „Als ich den Dreh bei ECS raushatte, bin ich damit super zurechtgekommen. Ich glaube, wir sind an einem Punkt angelangt, wo wir es tatsächlich verstehen – wenn nicht sogar lieben. Wir werden wahrscheinlich alle unsere zukünftigen Spiele mit ECS machen“, sagt Smith.

Er hat auch für andere Studios ein paar Tipps. „Man braucht keinen radikalen Schnitt, wenn man mit ECS anfängt. Man kann es schrittweise in den Workflow integrieren, und selbst wenn man damit nur die kleinen Dinge erledigt, erhält man dadurch einen enormen Performanceschub, insbesondere bei der Wiederverwendbarkeit von Code.“

Smith empfiehlt außerdem, vor Beginn der vollen Produktion ein Prototypenprojekt durchzuführen. „Man sollte etwas Einfaches wie einen Game Jam, ein Tetris- oder ein Tic-Tac-Toe-Spiel ausprobieren – im Grunde spielt es keine Rolle. Stellen Sie einfach ein Spiel in ECS fertig, bevor Sie ein komplettes Team mit Grafik und all dem in die Produktion schicken. Sie werden schon bei der ersten Begegnung eine Menge lernen.“

Schlussendlich freut sich Smith auf das, was die Spieler erwarten können. „Die andere Atmosphäre und die Performance unserer neuen Spielen wird unseren Spielern auffallen. Unsere Spiele laufen mit nahezu 60 FPS, was auf dem Bildschirm auch gerade passiert. Das verbesserte Gameplay und die schnelle Reaktionsfähigkeit werden sie sicherlich begrüßen!“

„Mit Unitys Entity-Component-System ist die Performance großartig, aber selbst wenn Sie nicht unbedingt auf Performance aus sind, gibt es immer noch erhebliche Vorteile, was die Wiederverwendbarkeit von Code und den Erhalt der Akkulaufzeit mobiler Geräte betrifft.“

Garth Smith, Lead Programmer, Tic Toc Games

Die Vorteile von ECS für die Entwicklung von Spielen für Mobilgeräte

Erfahren Sie, wie ECS zur schnelleren Entwicklung von Spielen für Mobilgeräte, weniger Bugs, einer längeren Akkulaufzeit und vielem mehr beiträgt.

Listen to DOTS early-adopter Garth Smith share his experience with Unity’s new data-oriented approach.

Wie Tic Toc ECS in seinen mobilen Puzzle-Spielen einsetzt

Auf der Unite Los Angeles leitete Tic Toc eine Session mit dem Titel „Wir lieben Performance.” In dem Vortrag erklärt Garth Smith, wie ECS die Beschleunigung von Iterationen unterstützte, und beschreibt die allgemeine Erfahrung mit der Arbeit mit Unitys Entity-Component-System. 

Leistung als Standard

Profitieren Sie von Mehrkernprozessoren mit unserem neuen leistungsstarken Multithread-System.

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