# Similar projects

There are many projects similar to `EnTT`, both open source and not.<br/>
Some even borrowed some ideas from this library and expressed them in different
languages.<br/>
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.<br/>
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:
  * [destral_ecs](https://github.com/roig/destral_ecs): a single-file ECS based
    on sparse sets.
  * [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.
  * [Gaia-ECS](https://github.com/richardbiely/gaia-ecs): a chunk based
    archetype ECS.
  * [Polypropylene](https://github.com/pmbittner/Polypropylene): a hybrid
    solution between an ECS and dynamic mixins.

* C#
  * [Entitas](https://github.com/sschmid/Entitas-CSharp): the ECS framework for
    C# and Unity, where _reactive systems_ were invented.
  * [LeoECS](https://github.com/Leopotam/ecs): simple lightweight C# Entity
    Component System framework.
  * [Svelto.ECS](https://github.com/sebas77/Svelto.ECS): a very interesting
    platform agnostic and table based ECS framework.

* Go:
  * [gecs](https://github.com/tutumagi/gecs): a sparse sets based ECS inspired 
    by `EnTT`.

* Javascript:
  * [\@javelin/ecs](https://github.com/3mcd/javelin/tree/master/packages/ecs):
    an archetype ECS in TypeScript.
  * [ecsy](https://github.com/MozillaReality/ecsy): I haven't had the time to
    investigate the underlying design of `ecsy` but it looks cool anyway.

* Perl:
  * [Game::Entities](https://gitlab.com/jjatria/perl-game-entities): a simple
    entity registry for ECS designs inspired by `EnTT`.

* Raku:
  * [Game::Entities](https://gitlab.com/jjatria/raku-game-entities): a simple
    entity registry for ECS designs inspired by `EnTT`.

* 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.
  * [Sparsey](https://github.com/LechintanTudor/sparsey): sparse set based ECS
    written in Rust.
  * [Specs](https://github.com/amethyst/specs): a parallel ECS based mainly on
    hierarchical bitsets that allows different types of storage as needed.

* Zig
  * [zig-ecs](https://github.com/prime31/zig-ecs): a _zig-ification_ of `EnTT`.

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.
