Entity component system


Entity-component-system (ECS) is a software architecture pattern that implements concepts from Composition over inheritance using a database-like structure. Common ECS approaches are highly compatible with Data-driven programming techniques, and the two approaches are often combined

the Unity game engine launched in 2005 using the same terminology of ECS (Entities, Components, composition-over-inheritance) but slightly different concepts and meaning.


The entity is a general purpose object. Usually, it only consists of a unique id and a container. The component consists of a minimal set of data needed for a specific purpose. Systems are single purpose functions that take a set of entities which have a specific component (or set of components) and update them.

A typical application of ECS is in games design when there are many type of objects with many type of attributes. Instead of using a complex inheritance hierarchy of object types, entities are used with components.