While exploring ECS design patterns and analyzing various engine architectures, I identified a recurring trade-off between flexibility, memory locality, and query overhead.
I decided to explore a different approach: an Event-Driven ECS.
In this model:
- A central
Manager
holds entity/component data. - Systems subscribe to specific component archetypes.
- At each tick, the manager dispatches relevant entity slices to the systems based on their subscriptions.
- This avoids repeated queries and improves cache coherence.
The result is EDECS.jl, a lightweight ECS framework focused on modular execution, parallelism, and data locality — suitable for both real-time and distributed applications.
Source + architecture description:
https://github.com/Gesee-y/EDECS.jl
Feedback, critique, and benchmarks welcome.