92 lines
3.7 KiB
Markdown
92 lines
3.7 KiB
Markdown
# Similar projects
|
|
|
|
<!--
|
|
@cond TURN_OFF_DOXYGEN
|
|
-->
|
|
# Table of Contents
|
|
|
|
* [Introduction](#introduction)
|
|
* [Similar projects](#similar-projects)
|
|
<!--
|
|
@endcond TURN_OFF_DOXYGEN
|
|
-->
|
|
|
|
# Introduction
|
|
|
|
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.
|
|
|
|
If you know of other similar projects out there, feel free to open an issue or a
|
|
PR and I'll be glad to add them to this page.<br/>
|
|
I hope the following lists can grow much more in the future.
|
|
|
|
# Similar projects
|
|
|
|
Below an incomplete list of similar projects 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.
|
|
|
|
* 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#
|
|
* [Arch](https://github.com/genaray/Arch): a simple, fast and _unity entities_
|
|
inspired archetype ECS with optional multithreading.
|
|
* [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`.
|