├── LICENSE
└── README.md
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT No Attribution
2 |
3 | Copyright 2022 Chillu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # What is this?
2 |
3 | This is a rough comparison table of all the "popular" ECS frameworks written and used in C#.
4 |
5 | # Table
6 |
7 | Support...
8 | :heavy_check_mark: **= Full**
9 | :heavy_check_mark:Ex **= Full with extension**
10 | :heavy_minus_sign: **= Partial**
11 | :x: **= None**
12 |
13 | [//]: # (TODO: Link the names to URLS)
14 | [//]: # (TODO: Ease of use?)
15 | [//]: # (TODO: Performance benchmarks?)
16 | [//]: # (TODO: https://github.com/scellecs/morpeh/pull/88)
17 | [//]: # (TODO: https://github.com/Doraku/DefaultEcs/issues/137)
18 |
19 | | Feature | [Leo
ECS] | [Leo
EcsLite] | [Default
Ecs] | [Svelto
.ECS] | [Morpeh] | [Unity
ECS] | [Entitas] | [chrome
alex
/ecs] | [Nano
ECS] | [Ego
CS] | [actors
.unity] | Feature |
20 | |--------------------------------------------|-----------------------|-----------------------|----------------------------------|-----------------------|--------------------------------------------|---------------------------------|-----------------------------|----------------------------|---------------------------------|---------------------|---------------------|--------------------------------------------|
21 | | Archetype based | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark:? | :x:? | :x: | :x: | Archetype based |
22 | | 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 |
23 | | Components Type support | struct | struct | struct
/class
/interface | struct
/interface | struct | struct
/class | class | struct | class | class | class? | Components Type support |
24 | | Code Generation based | :x: | :x: | :x: | | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | Code Generation based |
25 | | Dependencies | None | None | None | None | :heavy_minus_sign:Unity
Odin Inspector | Unity | :heavy_minus_sign:Unity | Unity | Unity | Unity | Unity | Dependencies |
26 | | 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 |
27 | | 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 |
28 | | 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 |
29 | | 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 |
30 | | One-Frame Components | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark:EX | :x:? | :heavy_check_mark: | | | | | One-Frame Components |
31 | | Dependency Injection
Support | :heavy_check_mark: | :heavy_check_mark: | :x: | | :x: | :x: | :x: | :x: | :x: | :x: | | Dependency Injection
Support |
32 | | 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 |
33 | | Thread-safe | :x: | :x: | :heavy_minus_sign: | :heavy_minus_sign: | :x: | :x: | :x: | :x:? | :x: | :x: | :x:? | Thread-safe |
34 | | Reactive System | :x: | :x: | :heavy_check_mark: | :heavy_minus_sign: | :x: | :x:? | :heavy_check_mark: | | :heavy_check_mark: | | :heavy_check_mark: | Reactive System |
35 | | Multiple components of same type on entity | :x: | :x: | :x: | :x: | :x: | :x: | :x: | | | :x: | | Multiple components of same type on entity |
36 | | Components can live without entities | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | | | | | Components can live without entities |
37 | | Entities can live without components | :x: | :x: | | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | | | | | Entities can live without components |
38 | | 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 |
39 | | 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* |
40 | | 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 |
41 | | 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 |
42 | | License | MIT | MIT | MIT-0 | MIT | MIT | Unity
Companion
License | MIT | MIT | MIT | MIT | MIT | License |
43 | | Last Major Version Release Date | Feb
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 |
44 | | | | | | | | | | | | | | |
45 | | Feature | [Leo
ECS] | [Leo
EcsLite] | [Default
Ecs] | [Svelto
.ECS] | [Morpeh] | [Unity
ECS] | [Entitas] | [chrome
alex
/ecs] | [Nano
ECS] | [Ego
CS] | [actors
.unity] | Feature |
46 |
47 | *(Unity Editor) Full Integration means that systems & components can be made, disabled, enabled, and configured in Unity Editor.
48 |
49 | # How can I contribute?
50 | 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).
51 | OR
52 | Find a table cell (or multiple) that has a quesiton mark, and source why it's true/untrue with an issue or pull request.
53 |
54 | # FAQ
55 | Q: Why not split the table?
56 | 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.
57 |
58 | Q: xECS isn't here, why's that?
59 | A: Idk, ask about it in a new issue, it might be too niche, or something.
60 |
61 |
62 | [Leo
ECS]: https://github.com/LeoECSCommunity/ecs
63 | [Leo
EcsLite]: https://github.com/LeoECSCommunity/ecslite
64 | [Entitas]: https://github.com/sschmid/Entitas-CSharp
65 | [Morpeh]: https://github.com/scellecs/morpeh
66 | [Default
Ecs]: https://github.com/Doraku/DefaultEcs
67 | [Unity
ECS]: https://docs.unity3d.com/Packages/com.unity.entities@latest/index.html
68 | [Nano
ECS]: https://github.com/SinyavtsevIlya/NanoECS
69 | [Ego
CS]: https://github.com/andoowhy/EgoCS
70 | [Svelto
.ECS]: https://github.com/sebas77/Svelto.ECS
71 | [actors
.unity]: https://github.com/PixeyeHQ/actors.unity
72 | [chrome
alex
/ecs]: https://github.com/chromealex/ecs
--------------------------------------------------------------------------------