Skip to content
Unity DOTS logo

Unity DOTS

Data-Oriented Technology Stack (ECS, Job System, Burst). Authoring, baking, systems, queries, jobs paralleles. Triggers: /dots, /ecs, 'DOTS', 'ECS', 'ISystem', 'SystemAPI', 'IJobEntity', 'Burst', 'NativeArray', 'Entity', 'IComponentData', 'data oriented'.

SKILL.md

Full skill instructions

Unity DOTS — Data-Oriented Technology Stack

Ce que fait cette skill

Guide l'implementation DOTS (Entity Component System + Job System + Burst Compiler) dans Unity 6+. Couvre le workflow complet authoring -> baking -> system -> query -> job pour des scenarios haute performance (milliers d'entites). Se concentre sur les API modernes : ISystem, SystemAPI.Query, IJobEntity. Les API depreciees (Entities.ForEach, SystemBase comme choix par defaut) ne sont pas recommandees.

Prerequis

Packages obligatoires (via Package Manager ou manifest.json) :

  • com.unity.entities (>= 1.3.x pour Unity 6)
  • com.unity.burst (>= 1.8.x)
  • com.unity.collections (>= 2.4.x)

Optionnels :

  • com.unity.entities.graphics — rendu DOTS (Entities Graphics / Hybrid Renderer)
  • com.unity.physics — physique DOTS (remplace PhysX classique pour les entites)
  • com.unity.transforms — inclus dans entities, gestion LocalTransform

Connaissances : MonoBehaviour de base pour comprendre la transition authoring -> baking.

Demarrage rapide

  1. Installer les packages DOTS via Package Manager
  2. Creer un authoring MonoBehaviour + un IComponentData (struct)
  3. Creer un Baker pour la conversion authoring -> entity
  4. Placer le GameObject dans un SubScene (obligatoire pour le baking)
  5. Creer un ISystem avec SystemAPI.Query pour la logique
  6. Ajouter [BurstCompile] sur le system et les jobs

Arbre de decision

DOTS n'est pas toujours necessaire. Evaluer avant d'adopter :

Mon projet a-t-il besoin de DOTS ?
|
+-- Prototype / petit jeu (< 100 entites dynamiques) ?
|   --> NON. MonoBehaviour est plus simple et suffisant
|
+-- Jeu moyen (100-1000 entites) ?
|   --> PROBABLEMENT NON. Optimiser les MonoBehaviours d'abord
|
+-- Simulation massive (1000+ entites similaires) ?
|   --> OUI. DOTS brille ici (foules, particules custom, voxels, RTS)
|
+-- Besoin de calcul CPU intensif (pathfinding, IA, physique custom) ?
|   --> Job System + Burst SANS ECS. On peut utiliser les jobs seuls
|
+-- Migration d'un projet existant ?
|   --> Hybride : garder MonoBehaviours + ajouter DOTS pour les systemes critiques
|
+-- Nouveau projet from scratch avec beaucoup d'entites ?
    --> Full DOTS avec authoring/​baking

Roadmap ECS (Unity 6.4+)

  • Unity 6.4 : le package com.unity.entities transite vers un package core (integre a l'editeur, plus besoin de l'installer manuellement)
  • Unity 6.5 (prevu) : changements structurels sur le type Entity (passage a un ID 64-bit). Impact : la serialisation custom et le stockage d'Entity dans des NativeContainer pourront etre affectes. Anticiper en evitant de persister des Entity bruts — utiliser des identifiants metier a la place.

Ces changements ne cassent pas le code existant dans Unity 6.0-6.3 mais sont importants pour les decisions d'architecture a long terme.

Guide etape par etape

Step 1 : Component (data only)

// IComponentData = struct pure, pas de logique, juste des donnees
public struct MoveSpeed : IComponentData
{
    public float Value;
}

public struct RotationSpeed : IComponentData
{
    public float RadiansPerSecond;
}

Regles : pas de types managed (string, class, List), pas de methodes complexes. Un component = un aspect de l'entite.

Step 2 : Authoring + Baker

public class MoveSpeedAuthoring : MonoBehaviour
{
    public float Speed = 5f;
}

public class MoveSpeedBaker : Baker<MoveSpeedAuthoring>
{
    public override void Bake(MoveSpeedAuthoring authoring)
    {
        var entity = GetEntity(TransformUsageFlags.Dynamic);
        AddComponent(entity, new MoveSpeed { Value = authoring.Speed });
    }
}

L'authoring MonoBehaviour va sur le GameObject dans le SubScene. Le Baker convertit les donnees en entity au bake time.

Step 3 : System (logique)

[BurstCompile]
public partial struct MoveForwardSystem : ISystem
{
    [BurstCompile]
    public void OnUpdate(ref SystemState state)
    {
        float dt = SystemAPI.Time.DeltaTime;

        foreach (var (transform, speed) in
            SystemAPI.Query<RefRW<LocalTransform>, RefRO<MoveSpeed>>())
        {
            transform.ValueRW.Position +=
                transform.ValueRO.Forward() * speed.ValueRO.Value * dt;
        }
    }
}

Step 4 : Job parallele (optionnel, pour encore plus de perf)

[BurstCompile]
public partial struct MoveJob : IJobEntity
{
    public float DeltaTime;

    void Execute(ref LocalTransform transform, in MoveSpeed speed)
    {
        transform.Position += transform.Forward() * speed.Value * DeltaTime;
    }
}

// Dans le system :
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
    new MoveJob { DeltaTime = SystemAPI.Time.DeltaTime }
        .ScheduleParallel();
}

Regles strictes

TOUJOURS :

  • Utiliser ISystem (struct) au lieu de SystemBase (class) — compatible Burst
  • Ajouter [BurstCompile] sur les ISystem et les jobs
  • Utiliser SystemAPI.Query (pas Entities.ForEach qui est deprecie)
  • Utiliser RefRO<T> (lecture) / RefRW<T> (ecriture) pour l'acces aux components
  • Placer les GameObjects authoring dans un SubScene
  • Dispose les NativeContainers (sauf Allocator.Temp)
  • Preferer IJobEntity pour le traitement parallele sur entites
  • Preferer les enableable components (IEnableableComponent) aux ajouts/​retraits dynamiques

JAMAIS :

  • De types managed (string, class, List, arrays) dans les IComponentData
  • D'acces au main thread depuis un job (pas de Debug.Log, pas d'API Unity classique)
  • De NativeContainer sans Dispose (memory leak)
  • De Entities.ForEach (deprecie Unity 6+)
  • De SystemBase comme choix par defaut (sauf si managed types necessaires)

Troubleshooting

ProblemeSolution
"Burst compilation failed"Types managed dans le code Burst. Utiliser FixedString au lieu de string, NativeArray au lieu de List
Entity pas creeeBaker manquant ou authoring pas dans un SubScene
System pas executeVerifier le World. Ajouter [UpdateInGroup(typeof(...))] si necessaire
Performance pas meilleureVerifier [BurstCompile] present. Profiler avec Burst Inspector
NativeArray leak warningToujours Dispose() dans OnDestroy ou utiliser Allocator.Temp
Query retourne 0 resultatsVerifier que les components sont bien ajoutes dans le Baker
"InvalidOperationException" dans un jobAcces concurrent. Utiliser [NativeDisableParallelForRestriction] ou revoir le design
SubScene ne bake pasReimporter le SubScene (clic droit > Reimport) ou redemarrer l'editeur

Skills connexes

  • /​perf-audit — Evaluer si DOTS est justifie pour le cas d'usage
  • /​unity-code-gen — Generation de boilerplate authoring/​baker
  • /​unity-animation — DOTS animation (Entities Graphics animation)

References

  • Voir references/​ecs-patterns.md pour les patterns de base (authoring, baking, queries, jobs)
  • Voir references/​ecs-advanced.md pour les patterns avances (Burst, NativeContainers, hybride, Aspects, DynamicBuffer)
  • Unity DOTS documentation officielle
  • Unity DOTS samples

More skills from JulianKerignard

Unity Debug logo
JulianKerignard/Unity-Skills

Unity Debug

Diagnostic et correction systematique de bugs Unity par analyse de code. Classifie le bug, trace le chemin d'execution, propose un fix avec prevention. Triggers: /unity-debug, /debug, 'bug Unity', 'NullReferenceException', 'crash Unity', 'erreur Unity', 'ne marche pas', 'comportement bizarre', 'M...

7 0
View
Unity UI Toolkit logo
JulianKerignard/Unity-Skills

Unity UI Toolkit

Creation d'interfaces utilisateur avec UI Toolkit (UXML, USS, C# bindings). Genere des ecrans complets avec structure UXML, styling USS et presenter C#. Triggers: /uitk, /ui, 'UI Toolkit', 'UXML', 'USS', 'UIDocument', 'data binding UI', 'runtime UI', 'menu principal', 'HUD', 'interface utilisateu...

7 0
View
Unity Refactor logo
JulianKerignard/Unity-Skills

Unity Refactor

Refactoring incremental et securise de code C# Unity. Detecte les code smells, propose un plan priorise par risque, et execute les changements un par un avec verification de compilation. Triggers: /unity-refactor, 'refactor', 'code smell', 'clean code', 'dette technique', 'refactoring unity'. Pro...

7 0
View
Unity Editor Tools logo
JulianKerignard/Unity-Skills

Unity Editor Tools

Cree des outils custom pour l'editeur Unity : inspectors personnalises, fenetres d'outils, drawers, menu items, wizards et asset processors. Triggers: /unity-editor-tools, /editor, 'custom inspector', 'editor window', 'property drawer', 'menu item', 'editor tool', 'outil editeur'. Produit des scr...

7 0
View
Unity Perf Audit logo
JulianKerignard/Unity-Skills

Unity Perf Audit

Audit statique de performance pour projets Unity. Triggers: /perf, /perf-audit, 'audit performance', 'optimiser performance', 'anti-pattern performance', 'frame rate', 'profiler', 'budget fps'. Analyse le code C# du projet pour detecter les anti-patterns de performance (CPU, GPU, memoire). Produi...

7 0
View
Unity Build & CI/CD Configurator logo
JulianKerignard/Unity-Skills

Unity Build & CI/CD Configurator

Configure le pipeline de build Unity, CI/CD, et deployment. Triggers: /build-config, /ci, /deploy, 'configurer build', 'github actions unity', 'gitlab ci unity', 'gitignore unity', 'build automation'. Scanne le projet, genere les scripts de build C#, les workflows CI/CD, et les fichiers Git optim...

7 0
View
Unity Save System logo
JulianKerignard/Unity-Skills

Unity Save System

Implementer un systeme de sauvegarde et persistence : /unity-save, /save, sauvegarde, save system, persistence, sauvegarder, charger une partie, save game, PlayerPrefs, serialisation, JSON save, cloud save, slot de sauvegarde

7 0
View
Unity Addressables logo
JulianKerignard/Unity-Skills

Unity Addressables

Asset loading et content management avec Addressables. Organisation des groupes, chargement async, memory management, remote content. Triggers: /addressables, /assets, 'Addressables', 'AssetReference', 'chargement async', 'remote content', 'DLC', 'asset bundles', 'Resources.Load migration', 'load...

7 0
View
Unity Code Gen logo
JulianKerignard/Unity-Skills

Unity Code Gen

Generation de code C# Unity production-ready a partir de specifications fonctionnelles. Analyse la codebase existante, choisit le bon pattern architectural, genere le code et les tests. Triggers: /unity-code-gen, 'generer script Unity', 'creer composant', 'nouveau MonoBehaviour', 'creer Scriptabl...

7 0
View
Unity 2D logo
JulianKerignard/Unity-Skills

Unity 2D

Guide complet pour le developpement 2D dans Unity 6+ : Tilemap, Sprite, 2D platformer, top-down 2D, 2D physics, Light2D, Sprite Atlas, pixel art, 2D game, jeu 2D, tile, Rule Tile. Commandes : /unity-2d, /2d

7 0
View
Unity Audio logo
JulianKerignard/Unity-Skills

Unity Audio

Systeme audio complet Unity 6+ : SFX, musique, ambiance, spatialisation 3D, AudioMixer, pooling, Audio Random Container, Scriptable Audio Pipeline. Triggers: /unity-audio, /audio, audio, son, musique, AudioMixer, AudioSource, spatial audio, 3D sound, sound design, SFX

7 0
View
Unity Shader Generator logo
JulianKerignard/Unity-Skills

Unity Shader Generator

Genere des shaders Unity (HLSL/ShaderLab) pour effets visuels. Triggers: /shader, /shader-gen, 'creer un shader', 'effet visuel shader', 'dissolve', 'outline', 'toon shading', 'hologram', 'water shader'. Detecte automatiquement le render pipeline (URP/HDRP/Built-in) et produit un fichier .shader ...

7 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View