diff --git a/TODO b/TODO index 9f394c4b1..c35cc4fc9 100644 --- a/TODO +++ b/TODO @@ -18,7 +18,7 @@ Next: * replace observer class with observer functions -* patch rather than replace, emplace rather then assign (when we have args... ofc) +* get(cmp, entity) -> void *, set(cmp, entity, void *) * WIP: - deprecate snapshot, loader, ... diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index be485545d..2b63bf7bb 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -24,6 +24,7 @@ add_custom_target( md/locator.md md/meta.md md/process.md + md/references.md md/resource.md md/signal.md doxy.in diff --git a/docs/md/references.md b/docs/md/references.md new file mode 100644 index 000000000..77cdaa4ee --- /dev/null +++ b/docs/md/references.md @@ -0,0 +1,42 @@ +# Similar projects + +There are many projects similar to `EnTT`, both open source and not.
+Some even borrowed some ideas from this library and expressed them in different +languages.
+Others developed different architectures from scratch and therefore offer +alternative solutions with their pros and cons. + +Below an incomplete list of those that I've come across so far.
+If some terms or designs aren't clear, I recommend referring to the +[_ECS Back and Forth_](https://skypjack.github.io/tags/#ecs) series for all the +details. + +I hope this list can grow much more in the future: + +* C: + * [Diana](https://github.com/discoloda/Diana): an ECS that uses sparse sets to + keep track of entities in systems. + * [Flecs](https://github.com/SanderMertens/flecs): a multithreaded archetype + ECS based on semi-contiguous arrays rather than chunks. + * [lent](https://github.com/nem0/lent): the Donald Trump of the ECS libraries. + +* C++: + * [decs](https://github.com/vblanco20-1/decs): a chunk based archetype ECS. + * [ecst](https://github.com/SuperV1234/ecst): a multithreaded compile-time + ECS that uses sparse sets to keep track of entities in systems. + * [EntityX](https://github.com/alecthomas/entityx): a bitset based ECS that + uses a single large matrix of components indexed with entities. + +* Javascript: + * [ecsy](https://github.com/MozillaReality/ecsy): I haven't had the time to + investigate the underlying design of `ecsy` but it looks cool anyway. + +* Rust: + * [Legion](https://github.com/TomGillen/legion): a chunk based archetype ECS. + * [Shipyard](https://github.com/leudz/shipyard): it borrows some ideas from + `EnTT` and offers a sparse-sets based ECS with grouping functionalities. + * [Specs](https://github.com/amethyst/specs): a parallel ECS based mainly on + hierarchical bitsets that allows different types of storage as needed. + +If you know of other resources out there that can be of interest for the reader, +feel free to open an issue or a PR and I'll be glad to add them to this page.