Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/jslee02/awesome-entity-component-system

:sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources
https://github.com/jslee02/awesome-entity-component-system

List: awesome-entity-component-system

awesome-list data-oriented-design ecs entity-component-system game-engine

Last synced: about 2 months ago
JSON representation

:sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources

Lists

README

        

# awesome-ecs
:sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources

## ECS Libraries

#### C/C++

* __anax__ - Open source C++ entity system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/miguelmartin75/anax) ![miguelmartin75/anax](https://img.shields.io/github/stars/miguelmartin75/anax.svg?style=flat&label=Star&maxAge=86400)
* __ECS__ - C++ single-header entity component system library [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/redxdev/ECS) ![redxdev/ECS](https://img.shields.io/github/stars/redxdev/ECS.svg?style=flat&label=Star&maxAge=86400)
* __ecs.hpp__ - A single header C++14 entity component system library [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/BlackMATov/ecs.hpp) ![BlackMATov/ecs.hpp](https://img.shields.io/github/stars/BlackMATov/ecs.hpp.svg?style=flat&label=Star&maxAge=86400)
* __ecst__ - Experimental C++14 multithreaded compile-time entity-compnent-system library [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/SuperV1234/ecst) ![SuperV1234/ecst](https://img.shields.io/github/stars/SuperV1234/ecst.svg?style=flat&label=Star&maxAge=86400)
* __EntityFu__ - A simple, fast entity component system written in C++ [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/NatWeiss/EntityFu) ![NatWeiss/EntityFu](https://img.shields.io/github/stars/NatWeiss/EntityFu.svg?style=flat&label=Star&maxAge=86400)
* __EntityPlus__ - C++14 entity component system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Yelnats321/EntityPlus) ![Yelnats321/EntityPlus](https://img.shields.io/github/stars/Yelnats321/EntityPlus.svg?style=flat&label=Star&maxAge=86400)
* __EntityX__ - Fast, type-safe C++ entity component system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/alecthomas/entityx) ![alecthomas/entityx](https://img.shields.io/github/stars/alecthomas/entityx.svg?style=flat&label=Star&maxAge=86400)
* __entt__ - Fast and reliable entity-component system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/skypjack/entt) ![skypjack/entt](https://img.shields.io/github/stars/skypjack/entt.svg?style=flat&label=Star&maxAge=86400)
* __Flecs__ - A Multithreaded Entity Component System written for C89 & C99 [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/SanderMertens/flecs) ![SanderMertens/flecs](https://img.shields.io/github/stars/SanderMertens/flecs.svg?style=flat&label=Star&maxAge=86400)
* __Gaia-ECS__ - Fast and type-safe C++17 archetype-based entity component system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/richardbiely/gaia-ecs) ![richardbiely/gaia-ecs](https://img.shields.io/github/stars/richardbiely/gaia-ecs.svg?style=flat&label=Star&maxAge=86400)
* __Ginseng__ - An ESC library designed for use in games [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/apples/ginseng) ![apples/ginseng](https://img.shields.io/github/stars/apples/ginseng.svg?style=flat&label=Star&maxAge=86400)
* __goomy__ - A tiny, experimental ECS framework [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/vberlier/goomy) ![vberlier/goomy](https://img.shields.io/github/stars/vberlier/goomy.svg?style=flat&label=Star&maxAge=86400)
* __Kengine__ - Game engine with an Entity-Component-System (ECS) architecture [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/phisko/kengine) ![phisko/kengine](https://img.shields.io/github/stars/phisko/kengine.svg?style=flat&label=Star&maxAge=86400)
* __matter__ - C++17/20 ECS implementation [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Dreyri/matter) ![Dreyri/matter](https://img.shields.io/github/stars/Dreyri/matter.svg?style=flat&label=Star&maxAge=86400)
* __mustache__ - A fast, modern C++ entity component system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/kirillochnev/mustache) ![kirillochnev/mustache](https://img.shields.io/github/stars/kirillochnev/mustache.svg?style=flat&label=Star&maxAge=86400)
* __pico_ecs__ - Single-header and cross-platform ECS [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/empyreanx/pico_headers) ![empyreanx/pico_headers](https://img.shields.io/github/stars/empyreanx/pico_headers.svg?style=flat&label=Star&maxAge=86400)

#### C#

* __DefaultEcs__ - ECS for syntax and usage simplicity with maximum performance [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Doraku/DefaultEcs) ![Doraku/DefaultEcs](https://img.shields.io/github/stars/Doraku/DefaultEcs.svg?style=flat&label=Star&maxAge=86400)
* __Svelto.ECS__ - Lightweight data oriented entity component system framework [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/sebas77/Svelto.ECS) ![sebas77/Svelto.ECS](https://img.shields.io/github/stars/sebas77/Svelto.ECS.svg?style=flat&label=Star&maxAge=86400)
* __Arch__ - A high-performance Archetype & Chunks Entity Component System for game development and data-oriented programming [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/genaray/Arch) ![genaray/Arch](https://img.shields.io/github/stars/genaray/Arch.svg?style=flat&label=Star&maxAge=86400)
* __Entitas__ - The Entity Component System Framework for C# and Unity [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/sschmid/Entitas) ![sschmid/Entitas](https://img.shields.io/github/stars/sschmid/Entitas.svg?style=flat&label=Star&maxAge=86400)
* __LeoEcsLite__ - Lightweight C# Entity Component System framework [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/LeoECSCommunity/ecslite) ![LeoECSCommunity/ecslite](https://img.shields.io/github/stars/LeoECSCommunity/ecslite.svg?style=flat&label=Star&maxAge=86400)
* __Morpeh__ - ECS Framework for Unity Game Engine and .NET Platform [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/scellecs/morpeh) ![scellecs/morpeh](https://img.shields.io/github/stars/scellecs/morpeh.svg?style=flat&label=Star&maxAge=86400)
* __Friflo Engine ECS__ - ECS for .NET with focus on performance, cache locality and DX [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/friflo/Friflo.Json.Fliox/tree/main/Engine) ![friflo/Friflo.Json.Fliox](https://img.shields.io/github/stars/friflo/Friflo.Json.Fliox.svg?style=flat&label=Star&maxAge=86400)

#### Common Lisp

* __beast__ - Basic Entity/Aspect/System Toolkit [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/sjl/beast) ![sjl/beast](https://img.shields.io/github/stars/sjl/beast.svg?style=flat&label=Star&maxAge=86400)
* __cl-ecs__ - An implementation of the Entity-Component-System pattern mostly used in game development [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/bit-phlippers/cl-ecs) ![bit-phlippers/cl-ecs](https://img.shields.io/github/stars/bit-phlippers/cl-ecs.svg?style=flat&label=Star&maxAge=86400)
* __cl-fast-ecs__ - Blazingly fast Entity-Component-System microframework [![GitLab](https://img.shields.io/badge/GitLab-grey)](https://gitlab.com/lockie/cl-fast-ecs) ![lockie/cl-fast-ecs](https://img.shields.io/gitlab/stars/lockie/cl-fast-ecs.svg?style=flat&label=Star&maxAge=86400)

#### Dart

* __Fast ECS__ - Simple and fast Entity-Component-System (ECS) library written in Dart. [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/QiXi/fast_ecs) ![QiXi/fast_ecs](https://img.shields.io/github/stars/QiXi/fast_ecs.svg?style=flat&label=Star&maxAge=86400)

#### Elixir

* __ECSx__ - An ECS framework for Elixir [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/ecsx-framework/ECSx) ![ecsx-framework/ECSx](https://img.shields.io/github/stars/ecsx-framework/ECSx.svg?style=flat&label=Star&maxAge=86400)

#### Python

* __esper__ - A lightweight Entity System for Python [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/benmoran56/esper) ![benmoran56/esper](https://img.shields.io/github/stars/benmoran56/esper.svg?style=flat&label=Star&maxAge=86400)

#### Rust

* __shipyard__ - Entity Component System written in Rust [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/leudz/shipyard) ![leudz/shipyard](https://img.shields.io/github/stars/leudz/shipyard.svg?style=flat&label=Star&maxAge=86400)
* __specs__ - Parallel entity component system written in Rust [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/slide-rs/specs) ![slide-rs/specs](https://img.shields.io/github/stars/slide-rs/specs.svg?style=flat&label=Star&maxAge=86400)
* __legion__ - High performance Rust ECS library [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/amethyst/legion) ![amethyst/legion](https://img.shields.io/github/stars/amethyst/legion.svg?style=flat&label=Star&maxAge=86400)
* __bevy_ecs__ - Simple to use, ergonomic, fast, massively parallel, opinionated, and featureful written in Rust [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/bevyengine/bevy/tree/main/crates/bevy_ecs) ![bevyengine/bevy](https://img.shields.io/github/stars/bevyengine/bevy.svg?style=flat&label=Star&maxAge=86400)
* __hecs__ - High-performance, minimalist entity-component-system [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Ralith/hecs) ![Ralith/hecs](https://img.shields.io/github/stars/Ralith/hecs.svg?style=flat&label=Star&maxAge=86400)

#### Go

* __Arche__ - An archetype-based Entity Component System for Go [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/mlange-42/arche) ![mlange-42/arche](https://img.shields.io/github/stars/mlange-42/arche.svg?style=flat&label=Star&maxAge=86400)

#### Lua

* __ECS__ Lua - A fast and easy to use ECS engine for game development [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/nidorx/ecs-lua) ![nidorx/ecs-lua](https://img.shields.io/github/stars/nidorx/ecs-lua.svg?style=flat&label=Star&maxAge=86400)
* __tiny-ecs__ - Entity Component System for Lua that's simple, flexible, and useful [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/bakpakin/tiny-ecs) ![bakpakin/tiny-ecs](https://img.shields.io/github/stars/bakpakin/tiny-ecs.svg?style=flat&label=Star&maxAge=86400)

#### Java

* __Artemis-odb__ - A continuation of the popular Artemis ECS framework [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/junkdog/artemis-odb) ![junkdog/artemis-odb](https://img.shields.io/github/stars/junkdog/artemis-odb.svg?style=flat&label=Star&maxAge=86400)

#### JavaScript

* __bitECS__ - Functional, minimal, data-oriented, ultra-high performance ECS library [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/NateTheGreatt/bitECS) ![bitecs](https://img.shields.io/github/stars/NateTheGreatt/bitecs.svg?style=flat&label=Star&maxAge=86400)
* __ECSY__ - Entity Component System for javascript [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/ecsyjs/ecsy) ![ecsyjs/ecsy](https://img.shields.io/github/stars/ecsyjs/ecsy.svg?style=flat&label=Star&maxAge=86400)

#### Zig

* __mach-ecs__ - Entity Component System from first-principles designed for Zig [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/hexops/mach-ecs) ![hexops/mach-ecs](https://img.shields.io/github/stars/hexops/mach-ecs.svg?style=flat&label=Star&maxAge=86400)
* __Zig ECS__ - A Zig port of the fantasic Entt [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/prime31/zig-ecs) ![prime31/zig-ecs](https://img.shields.io/github/stars/prime31/zig-ecs.svg?style=flat&label=Star&maxAge=86400)

## Applications powered by ECS

### Game Engines

#### C++

* __crown__ - General purpose data-driven game engine [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/dbartolini/crown) ![dbartolini/crown](https://img.shields.io/github/stars/dbartolini/crown.svg?style=flat&label=Star&maxAge=86400)
* __Engine__ - Basic cross-platform 3D game engine [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Shervanator/Engine) ![Shervanator/Engine](https://img.shields.io/github/stars/Shervanator/Engine.svg?style=flat&label=Star&maxAge=86400)
* __igneous__ - Open source game engine written in C++ [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/MissingBitStudios/igneous) ![MissingBitStudios/igneous](https://img.shields.io/github/stars/MissingBitStudios/igneous.svg?style=flat&label=Star&maxAge=86400)
* __shiva__ - Modern Cross-Platform C++ Engine with modularity [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/Milerius/shiva) ![Milerius/shiva](https://img.shields.io/github/stars/Milerius/shiva.svg?style=flat&label=Star&maxAge=86400)
* __Sparky__ - Cross-Platform High Performance 2D/3D game engine [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/TheCherno/Sparky) ![TheCherno/Sparky](https://img.shields.io/github/stars/TheCherno/Sparky.svg?style=flat&label=Star&maxAge=86400)
* __Usagi__ - Hierarchical component entity system based game engine [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/vitei/Usagi) ![vitei/Usagi](https://img.shields.io/github/stars/vitei/Usagi.svg?style=flat&label=Star&maxAge=86400)

#### Rust

* __Amethyst__ - Data-oriented and data-driven game engine written in Rust [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/amethyst/amethyst) ![amethyst/amethyst](https://img.shields.io/github/stars/amethyst/amethyst.svg?style=flat&label=Star&maxAge=86400)
* __Bevy__ - A refreshingly simple data-driven game engine built in Rust [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/bevyengine/bevy) ![bevyengine/bevy](https://img.shields.io/github/stars/bevyengine/bevy.svg?style=flat&label=Star&maxAge=86400)

### Graphics Engines

#### C++

* __bs::framework__ - Modern C++14 library for the development of real-time graphical applications [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/GameFoundry/bsf) ![GameFoundry/bsf](https://img.shields.io/github/stars/GameFoundry/bsf.svg?style=flat&label=Star&maxAge=86400)
* __The Forge__ - Cross-Platform Rendering Framework with support for PC Windows, Linux, Ray Tracing, macOS/iOS, Android, XBOX, PS4, PS5, Switch, Quest 2 [![GitHub](https://img.shields.io/badge/GitHub-grey)](https://github.com/ConfettiFX/The-Forge) ![ConfettiFX/The-Forge](https://img.shields.io/github/stars/ConfettiFX/The-Forge.svg?style=flat&label=Star&maxAge=86400)

## Other Resources

### Benchmarks

* [ecs_benchmark](https://github.com/abeimler/ecs_benchmark): Benchmarks of common ECS (Entity-Component-System)-Frameworks in C/C++
* [ECS C# Benchmark](https://github.com/Doraku/Ecs.CSharp.Benchmark): Benchmarks of the main ECS Frameworks for C#
* [CSharpECSComparison](https://github.com/Chillu1/CSharpECSComparison): Benchmarks of common ECS Frameworks for C#

### Blog Posts

* [Data-oriented design](http://gamesfromwithin.com/category/data-oriented-design)
* [ECS back and forth](https://skypjack.github.io/2019-02-14-ecs-baf-part-1/)
* [Let's build an Entity Component System from scratch](https://devlog.hexops.com/2022/lets-build-ecs-part-1/)
* [Entity Systems are the future of MMOG development](https://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/)
* [Building an ECS](https://ajmmertens.medium.com/building-an-ecs-1-where-are-my-entities-and-components-63d07c7da742)
* [Systems Interaction in Entity-Component-System (events)](https://medium.com/@ben.rasooli/systems-interaction-in-entity-component-system-events-4a050153c8ac)
* [Overview of ECS variants & definitions](https://gist.github.com/LearnCocos2D/77f0ced228292676689f)
* [Understand data-oriented design](https://learn.unity.com/tutorial/part-1-understand-data-oriented-design)
* [Unity ECS series](https://gametorrahod.com/tag/unity-ecs/)

### Talks & Slides

* [itCppCon19: ECS back and forth](https://youtu.be/WB5bRKKGRUk)
* [GDC 2018: Unity at GDC - A Data Oriented Approach to Using Component Systems](https://youtu.be/p65Yt20pw0g)
* [Meeting C++ 2018: Data oriented design in practice](https://youtu.be/NWMx1Q66c14)
* [CppCon 2018: Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design”](https://youtu.be/yy8jQgmhbAU)
* [Data Oriented Design Resources](http://aras-p.info/texts/files/2018Academy%20-%20ECS-DoD.pdf)
* [Data Oriented GUI in Rust](https://www.youtube.com/watch?v=4YTfxresvS8)
* [Is There More to Game Architecture than ECS](https://www.youtube.com/watch?v=JxI3Eu5DPwE) - Bob Nystrom (Roguelike Celebration 2018)
* [Unite 2018: C# Job System + ECS usage and demo with Intel](https://www.youtube.com/watch?v=fp1D45hhVEM)
* [Codestar 2018 ECS - A Different Approach to Game Development](https://www.youtube.com/watch?v=lt4eL4RSx7k)
* [CppCon 2014: Mike Acton "Data-Oriented Design and C++"](https://youtu.be/rX0ItVEVjHc))

### Books

* [Data-Oriented Design](http://www.dataorienteddesign.com/dodbook/)

### Tutorials

* [Starting a new 2D platformer with ECS](https://www.youtube.com/playlist?list=PLWtPciJ1UMuAoCq8NAw8J-n387U4QHFBW)

### Lists

* [Entity Component System & Data Oriented Design](https://github.com/dbartolini/data-oriented-design)

### ETC

* [Entity Systems Wiki](http://entity-systems.wikidot.com/)
* [Entity Component Systems FAQ](https://github.com/SanderMertens/ecs-faq)