Get Your Personalized Game Dev Plan Tailored tips, tools, and next steps - just for you.

Unity DOTS: Data-Oriented Technology Stack Explained

Posted by Gemma Ellison
./
February 25, 2025
The cover for Unity DOTS: Data-Oriented Technology Stack Explained

Tired of spaghetti code? Data-Oriented Design offers a radical alternative. Traditional game development often faces performance bottlenecks due to how data is organized and accessed. Data-Oriented Design tackles these issues head-on. Unlike OOP, DOD separates data and functions. OOP clumps data and functions. The core ideas are data locality and cache-friendly structures.

Data locality means keeping related data close together. This minimizes CPU access time. Cache-friendly structures arrange data for efficient CPU cache usage. This ensures the CPU can quickly access the data it needs.

A photograph of a procedurally generated landscape with varied terrain, including mountains, forests, and rivers

DOD provides real performance benefits, unlocking parallelism and slashing memory access bottlenecks. DOD directly addresses the performance issues inherent in traditional game architectures, providing a way to handle complex simulations and large numbers of entities without bogging down the system. A platform like Wayline, built to help developers at every stage, understands the importance of tools that address performance issues like these.

Overview of the Unity DOTS Stack

The Unity DOTS stack comprises Entities, Components, Systems, and Worlds. Entities are the fundamental building blocks. Components are data containers attached to entities. Systems define the logic that operates on entities. Worlds are isolated environments.

For example, an “Orc Warrior” is an entity. It has components like HealthComponent, AttackComponent, and MovementComponent. The AttackSystem then reads the AttackComponent to determine the Orc’s attack range and damage output when it identifies a valid target. Systems like AttackSystem then use these components to dictate the Orc’s behavior.

Entities and Component Systems (ECS) in Detail

ECS is the engine room of DOTS, where data is structured and processed.

A photograph of a detailed and intricate real-time strategy game map with multiple units engaged in combat.

You need to be able to quickly create, find, and destroy entities. This is especially critical in dynamic game environments where entities are constantly spawned and removed based on player actions or game events.

Components should be defined as plain structs for optimal data layout. Blittable data (directly copyable memory) is crucial.

Systems operate on entities with specific components, and scheduling these systems is key.

Entity queries efficiently find entities based on their component types. This is crucial for tasks like quickly identifying all enemies within a certain radius to trigger an attack.

The Burst Compiler: Optimizing C# for Performance

The Burst Compiler takes your C# code and transforms it into highly optimized native code, resulting in significant performance improvements. Burst analyzes your C# code and generates optimized machine code, leveraging SIMD instructions for parallel processing. This translates to your game running smoother, especially when dealing with complex calculations or large datasets.

Create a free account, or log in.

Gain access to free articles, game development tools, and game assets.