1
ECS
Deep Dive and Overview
Fabrice Lété
Software Engineer, Unity
fabricel@unity3d.com
Generative Art – Made with Unity
2
GameObject
Position
Rotation
Renderer
Rigid Body
GameObject
Position
Rotation
Renderer
Rigid Body
GameObject
Position
Rotation
Renderer
OOP → A GameObject is a container.
3
Position
Position
Position
Rotation
Rotation
Rotation
Renderer
Renderer
Renderer
Rigid Body
Rigid Body
Entity
Entity
Entity
ECS → An entity is a key.
4
Archetype
Archetype
Position
Position
Position
Rotation
Rotation
Rotation
Renderer
Renderer
Renderer
Rigid Body
Rigid Body
Entity
Entity
Entity
ECS + DoD → An archetype is a unique set of arrays.
5
Frame (t+1)
Frame (t)
A system is a data transform.
System
Position Arrays
Rotation Arrays
Renderer Arrays
System
System
Position Arrays
Rotation Arrays
Renderer Arrays
6
Group
A group is a query on archetypes.
System
Archetype
Archetype
Archetype
Group
7
Group
Subtractive Components / Tag Components
System
Archetype
Archetype
Archetype
Group
8
16K Chunk
Position Array
Rotation Array
Renderer Array
Archetypes are made of chunks.
16K Chunk
Position Array
Rotation Array
Renderer Array
16K Chunk
Position Array
Rotation Array
Renderer Array
16K Chunk
Position Array
Renderer Array
16K Chunk
Position Array
Renderer Array
16K Chunk
Position Array
Renderer Array
Archetype
Archetype
9
16K Chunk
Position Array
Rotation Array
Renderer Array
Shared components are for grouping.
16K Chunk
Position Array
Rotation Array
Renderer Array
16K Chunk
Position Array
Rotation Array
Renderer Array
Archetype
Shared Value A
Shared Value A
Shared Value B
10
Shared Component Manager
16K Chunk
Position Array
Rotation Array
Renderer Array
Shared components are stored outside the chunks.
16K Chunk
Position Array
Rotation Array
Renderer Array
16K Chunk
Position Array
Rotation Array
Renderer Array
Archetype
Value A
Value B
11
Worlds are for isolation.
World
Archetypes
Entities
World
Archetypes
Entities
Systems
Systems
12
16K Chunk
Position Array
Rotation Array
Renderer Array
Version Number
Version Number
Version Number
Reactive systems - Detecting Changes.
Group
R
RW
Version Number
13
System
Reactive systems - New Entities.
New Group
Archetype
Existing Group
SSC
Archetype
SSC
14
System
Reactive systems - Deleted Entities.
Deleted Group
SSC
Archetype
Existing Group
SSC
Archetype
SSC
SSC
15
Component System
Component
System
Component
System
Component
System
Main Thread
16
Job Component System
Main Thread
Worker Thread
Worker Thread
Worker Thread
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
JCS
JCS
JCS
17
Sync Point
Main Thread
Worker Thread
Worker Thread
Worker Thread
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Component
System
JCS
JCS
JCS
18
Thank you.
Generative Art – Made with Unity