What is this?

July 18, 2023 ยท View on GitHub

This is a rough comparison table of all the "popular" ECS frameworks written and used in C#.

Table

Support...
:heavy_check_mark: = Full
:heavy_check_mark:Ex = Full with extension
:heavy_minus_sign: = Partial
:x: = None

FeatureLeo
ECS
Leo
EcsLite
Default
Ecs
Svelto
.ECS
MorpehUnity
ECS
Entitaschrome
alex
/ecs
Nano
ECS
Ego
CS
actors
.unity
Feature
Archetype based:x::x::x::heavy_check_mark::x::heavy_check_mark::x::heavy_check_mark:?:x:?:x::x:Archetype based
Filter/Query operationsHas/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, AnyHas/Not
(With/
Without)
HasHasFilter/Query operations
Components Type supportstructstructstruct
/class
/interface
struct
/interface
structstruct
/class
classstructclassclassclass?Components Type support
Code Generation based:x::x::x::x::x::heavy_check_mark::heavy_check_mark::heavy_check_mark::x::x:Code Generation based
DependenciesNoneNoneNoneNone:heavy_minus_sign:Unity
Odin Inspector
Unity:heavy_minus_sign:UnityUnityUnityUnityUnityDependencies
Engine agnostic:heavy_check_mark::heavy_check_mark::x:?:heavy_check_mark::heavy_minus_sign::x::heavy_check_mark::x::x::x::x:Engine agnostic
Custom Engine Support:heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::x::heavy_minus_sign::x::x::x::x:Custom Engine Support
Threading support:heavy_check_mark:Ex:heavy_check_mark:Ex:heavy_check_mark::x::heavy_minus_sign::heavy_minus_sign:?:x::x:?:heavy_minus_sign:?Threading support
World Events/Messages:heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::x:?:x::x:?:heavy_check_mark::heavy_check_mark:World Events/Messages
One-Frame Components:heavy_check_mark::heavy_check_mark::heavy_check_mark:EX:x:?:heavy_check_mark:One-Frame Components
Dependency Injection
Support
:heavy_check_mark::heavy_check_mark::x::x::x::x::x::x::x:Dependency Injection
Support
Shared Resource:heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark:Shared Resource
Thread-safe:x::x::heavy_minus_sign::heavy_minus_sign::x::x::x::x:?:x::x::x:?Thread-safe
Reactive System:x::x::heavy_check_mark::heavy_minus_sign::x::x:?:heavy_check_mark::heavy_check_mark::heavy_check_mark:Reactive System
Multiple components of same type on entity:x::x::x::x::x::x::x::x:Multiple components of same type on entity
Components can live without entities:x::x::heavy_check_mark::x::x::x::heavy_check_mark:Components can live without entities
Entities can live without components:x::x::x::x::heavy_check_mark::heavy_check_mark:Entities can live without components
Unity Editor View support:heavy_check_mark:Ex:heavy_check_mark:Ex:x::x::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark::heavy_check_mark:Unity Editor View support
Unity Editor Full Integration*:x::x::x::x::heavy_minus_sign:?:x:(WIP):heavy_check_mark::heavy_check_mark::heavy_check_mark:?Unity Editor Full Integration*
Unity Burst Compatible:x::heavy_check_mark:Ex:x::heavy_check_mark::heavy_minus_sign::heavy_check_mark::x::heavy_check_mark::x:?:x:?:x:Unity Burst Compatible
Unity Jobs Compatible:x::heavy_check_mark:Ex:x::heavy_check_mark::heavy_minus_sign::heavy_check_mark::x::heavy_check_mark::x:?:x:?:heavy_minus_sign:?Unity Jobs Compatible
LicenseMITMITMIT-0MITMITUnity
Companion
License
MITMITMITMITMITLicense
Last Major Version Release DateFeb
2022
Feb
2022
Feb
2022
May
2023
May
2023
Sep
2022
Sep
2022
Sep
2020?
Dec
2019
Mar
2017
Jul
2020
Last Major Version Release Date
FeatureLeo
ECS
Leo
EcsLite
Default
Ecs
Svelto
.ECS
MorpehUnity
ECS
Entitaschrome
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.

How can I contribute?

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.

FAQ

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.