If you are familiar with Entity-component-system (ECS) concepts, you might see the potential for naming conflicts with Unity's existing GameObject/Component setup.
The purpose of this page is:
- Clarify and disambiguate the concepts as used in the ECS.
- Provide a brief introduction to each concept as an entry point to a new user.
Manages memory and structural changes.
Parallel streams of concrete, blittable data.
An ID which can be used for indirect component lookups for the purposes of graph traversal.
See: Entity in detail
Type of ComponentData where each unique value is only stored once. ComponentData streams are divided into subsets by each value of all SharedComponentData.
e.g. (Mesh SharedComponentData)
Mesh = RocketShip
Mesh = Bullet
This is a type of component data that allows a variable-sized, "stretchy" buffer to be associated with an entity. Behaves as a component type that carries an internal capacity of a certain number of elements, but can allocate a heap memory block if the internal capacity is exhausted.
See: Dynamic Buffers
Specific set of ComponentData types and SharedComponentData values which define the subsets of ComponentData streams stored in the EntityManager.
e.g. In the above, there are two EntityArchetypes:
- Position, HitPoints, Mesh = RocketShip
- Position, HitPoints, Mesh = Bullet
Where gameplay/system logic/behavior occurs.
A unique EntityManager with specific instances of defined ComponentSystems. Multiple Worlds may exist and work on independent data sets.
See: World in detail
A specific type of ComponentData which is not serialized or removed by default when an Entity ID is deleted. Used for internal state and resource management inside a system. Allows you to manage construction and destruction of resources.
A type of ComponentSystem where jobs are queued independently of the JobComponentSystem's update, in the background. Those jobs are guaranteed to be completed in the same order as the systems.
A list of structural changes to the data in an EntityManager for later completion. Structural changes are:
- Adding Component
- Removing Component
- Changing SharedComponent value
A type of ComponentSystem, which provides an EntityCommandBuffer. i.e. A specific (synchronization) point in the frame where that EntityCommandBuffer will be resolved.
See: Barrier in detail