# Efficient Event Driven Entity Component System

**URL:** https://discourse.julialang.org/t/efficient-event-driven-entity-component-system/129715
**Category:** General Usage
**Tags:** package, games
**Created:** [June 6, 2025, 9:38pm UTC](https://discourse.julialang.org/t/efficient-event-driven-entity-component-system/129715 "2025-06-06T21:38:25Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Gesee](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gesee/32/217235_2.png) [@Gesee](https://discourse.julialang.org/u/Gesee)
#### Post date: [June 6, 2025, 9:38pm UTC](https://discourse.julialang.org/t/efficient-event-driven-entity-component-system/129715/1 "2025-06-06T21:38:25Z")

</div>

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](https://github.com/Gesee-y/EDECS.jl)

Feedback, critique, and benchmarks welcome.
