1 of 18

1

ECS

Deep Dive and Overview

Fabrice Lété

Software Engineer, Unity

fabricel@unity3d.com

Generative Art – Made with Unity

2 of 18

2

GameObject

Position

Rotation

Renderer

Rigid Body

GameObject

Position

Rotation

Renderer

Rigid Body

GameObject

Position

Rotation

Renderer

OOP → A GameObject is a container.

3 of 18

3

Position

Position

Position

Rotation

Rotation

Rotation

Renderer

Renderer

Renderer

Rigid Body

Rigid Body

Entity

Entity

Entity

ECS → An entity is a key.

4 of 18

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 of 18

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 of 18

6

Group

A group is a query on archetypes.

System

Archetype

Archetype

Archetype

Group

7 of 18

7

Group

Subtractive Components / Tag Components

System

Archetype

Archetype

Archetype

Group

8 of 18

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 of 18

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 of 18

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 of 18

11

Worlds are for isolation.

World

Archetypes

Entities

World

Archetypes

Entities

Systems

Systems

12 of 18

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 of 18

13

System

Reactive systems - New Entities.

New Group

Archetype

Existing Group

SSC

Archetype

SSC

14 of 18

14

System

Reactive systems - Deleted Entities.

Deleted Group

SSC

Archetype

Existing Group

SSC

Archetype

SSC

SSC

15 of 18

15

Component System

Component

System

Component

System

Component

System

Main Thread

16 of 18

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 of 18

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 of 18

18

Thank you.

Generative Art – Made with Unity