This is a rough comparison table of all the "popular" ECS frameworks written and used in C#.
Support...
✔️ = Full
✔️Ex = Full with extension
➖ = Partial
❌ = None
| Feature | Leo ECS |
Leo EcsLite |
Default Ecs |
Svelto .ECS |
Morpeh | Unity ECS |
Entitas | chrome alex /ecs |
Nano ECS |
Ego CS |
actors .unity |
Feature |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Archetype based | ❌ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ✔️? | ❌? | ❌ | ❌ | Archetype based |
| Filter/Query operations | Has/Not (Inc/Exc) |
Has/Not (Inc/Exc) |
Has/Not Or/Nor |
Has/Not (With/ Without) |
Has/Not/Or (All/Any/None) |
Has/Not, Any (All/None) |
Has/Not, Any | Has/Not (With/ Without) |
Has | Has | Filter/Query operations | |
| Components Type support | struct | struct | struct /class /interface |
struct /interface |
struct | struct /class |
class | struct | class | class | class? | Components Type support |
| Code Generation based | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | Code Generation based | |
| Dependencies | None | None | None | None | Unity Odin Inspector |
Unity | ➖Unity | Unity | Unity | Unity | Unity | Dependencies |
| Engine agnostic | ✔️ | ✔️ | ❌? | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | Engine agnostic |
| Custom Engine Support | ✔️ | ✔️ | ✔️ | ➖? | ❌ | ➖ | ❌ | ❌ | ❌ | ❌ | Custom Engine Support | |
| Threading support | ✔️Ex | ✔️Ex | ✔️ | ❌ | ➖ | ➖? | ❌ | ❌? | ➖? | Threading support | ||
| World Events/Messages | ✔️ | ✔️ | ✔️ | ✔️ | ❌? | ❌ | ❌? | ✔️ | ✔️ | World Events/Messages | ||
| One-Frame Components | ✔️ | ✔️ | ✔️EX | ❌? | ✔️ | One-Frame Components | ||||||
| Dependency Injection Support |
✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Dependency Injection Support |
||
| Shared Resource | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Shared Resource | ||||
| Thread-safe | ❌ | ❌ | ➖ | ➖ | ❌ | ❌ | ❌ | ❌? | ❌ | ❌ | ❌? | Thread-safe |
| Reactive System | ❌ | ❌ | ✔️ | ➖ | ❌? | ❌? | ✔️ | ✔️ | ✔️ | Reactive System | ||
| Multiple components of same type on entity | ❌ | ❌ | ❌ | ❌ | ❌? | ❌ | ❌ | ❌ | Multiple components of same type on entity | |||
| Components can live without entities | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | Components can live without entities | ||||
| Entities can live without components | ❌ | ❌ | ❌ | ❌? | ✔️ | ✔️ | Entities can live without components | |||||
| Unity Editor View support | ✔️Ex | ✔️Ex | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Unity Editor View support |
| Unity Editor Full Integration* | ❌ | ❌ | ❌ | ❌ | ➖? | ❌(WIP) | ✔️ | ✔️ | ✔️? | Unity Editor Full Integration* | ||
| Unity Burst Compatible | ❌ | ✔️Ex | ❌ | ✔️ | ❌ | ✔️ | ❌ | ✔️ | ❌? | ❌? | ❌ | Unity Burst Compatible |
| Unity Jobs Compatible | ❌ | ✔️Ex | ❌ | ✔️ | ❌ | ✔️ | ❌ | ✔️ | ❌? | ❌? | ➖? | Unity Jobs Compatible |
| License | MIT | MIT | MIT-0 | MIT | MIT | Unity Companion License |
MIT | MIT | MIT | MIT | MIT | License |
| Last Major Version Release Date | Feb 2022 |
Feb 2022 |
Feb 2022 |
Feb 2022 |
Aug 2020 |
Nov 2020 |
Feb 2019 |
Sep 2020? |
Dec 2019 |
Mar 2017 |
Jul 2020 |
Last Major Version Release Date |
| Feature | Leo ECS |
Leo EcsLite |
Default Ecs |
Svelto .ECS |
Morpeh | Unity ECS |
Entitas | chrome alex /ecs |
Nano ECS |
Ego CS |
actors .unity |
Feature |
*(Unity Editor) Full Integration means that systems & components can be made, disabled, enabled, and configured in Unity Editor.
Find a table cell (or multiple) that isn't filled out, and make an issue/pull request about it. While stating why it's true (explanation doesn't have to be very sophisticated or sourced/grounded, most of the time).
OR
Find a table cell (or multiple) that has a quesiton mark, and source why it's true/untrue with an issue or pull request.
Q: Why not split the table?
A: I think the table isn't big enough for a split to be valuable, and it's easier to check for all the features you'd want with one glance, instead of going back and forth between two tables.
Q: xECS isn't here, why's that?
A: Idk, ask about it in a new issue, it might be too niche, or something.