tomato/docs/md/reference.md
Green Sky 5c7231b7a3 Squashed 'external/entt/entt/' content from commit fef92113
git-subtree-dir: external/entt/entt
git-subtree-split: fef921132cae7588213d0f9bcd2fb9c8ffd8b7fc
2023-07-25 11:29:51 +02:00

3.3 KiB

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 series for all the details.

I hope this list can grow much more in the future:

  • C:

    • destral_ecs: a single-file ECS based on sparse sets.
    • Diana: an ECS that uses sparse sets to keep track of entities in systems.
    • Flecs: a multithreaded archetype ECS based on semi-contiguous arrays rather than chunks.
    • lent: the Donald Trump of the ECS libraries.
  • C++:

    • decs: a chunk based archetype ECS.
    • ecst: a multithreaded compile-time ECS that uses sparse sets to keep track of entities in systems.
    • EntityX: a bitset based ECS that uses a single large matrix of components indexed with entities.
    • Gaia-ECS: a chunk based archetype ECS.
    • Polypropylene: a hybrid solution between an ECS and dynamic mixins.
  • C#

    • Entitas: the ECS framework for C# and Unity, where reactive systems were invented.
    • LeoECS: simple lightweight C# Entity Component System framework.
    • Svelto.ECS: a very interesting platform agnostic and table based ECS framework.
  • Go:

    • gecs: a sparse sets based ECS inspired by EnTT.
  • Javascript:

    • @javelin/ecs: an archetype ECS in TypeScript.
    • ecsy: I haven't had the time to investigate the underlying design of ecsy but it looks cool anyway.
  • Perl:

    • Game::Entities: a simple entity registry for ECS designs inspired by EnTT.
  • Raku:

    • Game::Entities: a simple entity registry for ECS designs inspired by EnTT.
  • Rust:

    • Legion: a chunk based archetype ECS.
    • Shipyard: it borrows some ideas from EnTT and offers a sparse sets based ECS with grouping functionalities.
    • Sparsey: sparse set based ECS written in Rust.
    • Specs: a parallel ECS based mainly on hierarchical bitsets that allows different types of storage as needed.
  • Zig

    • 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.