DOTS beschleunigt mobile Spiele und Entwicklung

Wie der neue datenorientierte Technologie-Stack für Tic Toc Games wesentliche Vorteile bringt.

Tic Toc: Eine Unity-Entwicklerfallstudie

How do you speed up development and improve the user experience while adding unprecedented numbers of components to game graphics? Tic Toc Games leveraged Unity’s high-performance Data-Oriented Technology Stack (DOTS) – which includes the Entity Component System (ECS), the C# Job System, and the Burst Compiler – to enable 60 frames per second (fps) performance on mobile devices without draining batteries or overheating phones.

  • 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 replaces object-oriented coding with a data-oriented approach much more appropriate for many parts of gaming applications. It decouples data from processing, eliminating an enormous amount of data scattering and enables true multithreading as events no longer have to be processed sequentially.

For example, two entities might be a bullet and a player, each with references to different attributes like position, spawning, and health data. The entities and the attributes are pure data with no attached functionality. The system applies a function to an entity, such as a motion system to a bullet or a spawning system to a player. This separation of data and function lets Unity create jobs that can be processed in parallel on multiple cores. According to Mike Geig, Unity’s Global Head of Evangelism Content, “Once it clicks, it’s pretty easy to wrap your head around it.”

The benefits of using ECS are significant. Simply because of the way data is organized, it’s easier to write optimized code – thus the tagline, “Performance by default.” Smith added, “Some of the doors that ECS opened showed us how to make better algorithms.” In addition, ECS code is highly reusable, archetypes (unique entities) are tightly packed in memory, and perhaps most importantly, ECS can take advantage of increasing numbers of CPU cores. Today, mainstream CPUs have up to 4-6 physical and 8-12 logical cores, while “enthusiast” CPUs have up to 16 physical and 32 logical cores. Most go unused, but DOTS takes full advantage of them all.

Watch Mike Geig’s 5-part Intro to the Entity Component System (ECS) and C# Job System.

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!“

Garth Smith, Lead Programmer, Tic Toc Games

„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

The benefits of ECS for mobile game development

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.

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

Verstanden