Skip to content

Typical ECS Concepts

(these are what makes most ECS architectures tick)

Entities are spawned in a World.

Entities can be spawned solo, or in bulk with pre-configured components.

Components can be added to / removed from Entities.

Components can be backed by any type; Value or Reference, even empty structs.

Queries filter Entities using Match Expressions.

This matching is done by Component types and targets (presence or absence).

Queries let your code Act on streams of Component data.

You provide logic in Runner Delegates which are executed on a single or multiple threads.

Component data is always kept contiguous* in Memory.

Structurally similar Entities are packed into Archetypes for improved cache locality.

* per Archetype

Unique Concepts

(weird cool stuff specific to fennecs)

Relations are Components with an Entity Target.

These add expressive, powerful grouping semantics. Relations can be backed by any type.

Group Entities logically and in memory by linking them to shared data, like a physics world.

Runners let you pass uniform data to your Workloads.

A tiny tidbit that streamlines the process of passing data into a job or run.

Queries expose fast Structural Change, SIMD, and Memory Ops

Efficiently and safely add, remove, or modify components in bulk - even entire memory blocks.

Worlds and Queries are IEnumerable<Entity>.

It's amazing to be able to every now and then just LINQ it up and be done somewhere.

There are no formalized Systems.

You have a higher degree of freedom when and how to interact with Queries.

There is no formalized Scheduler.

Parallel Jobs execute synchronously, as fast as possible. Runners are invokable anytime, anywhere.

Structural Changes may be submitted* at any time.

Worlds process them at the end of a Query Runner's scope, otherwise immediately.
* never type EndInitializationEntityCommandBufferSystem nor AddJobHandleForProducer(JobHandle) again! 🦊

fennecs is released under the MIT License. Neofox is released under the CC BY-NC-SA 4.0 License.