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: 11 days ago
JSON representation
:sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources
- Host: GitHub
- URL: https://github.com/jslee02/awesome-entity-component-system
- Owner: jslee02
- License: unlicense
- Created: 2018-12-01T07:08:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-03-08T11:52:37.000Z (about 1 year ago)
- Last Synced: 2024-05-23T07:33:05.693Z (11 months ago)
- Topics: awesome-list, data-oriented-design, ecs, entity-component-system, game-engine
- Homepage:
- Size: 53.7 KB
- Stars: 496
- Watchers: 23
- Forks: 48
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-robotics-system-design - awesome-ecs
- AwesomeCppGameDev - awesome-entity-component-system - Component-System (ECS) libraries and resources (Awesome)
- ultimate-awesome - awesome-entity-component-system - :sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources. (Other Lists / Julia 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 [](https://github.com/miguelmartin75/anax) 
* __ECS__ - C++ single-header entity component system library [](https://github.com/redxdev/ECS) 
* __ecs.hpp__ - A single header C++14 entity component system library [](https://github.com/BlackMATov/ecs.hpp) 
* __ecst__ - Experimental C++14 multithreaded compile-time entity-compnent-system library [](https://github.com/SuperV1234/ecst) 
* __EntityFu__ - A simple, fast entity component system written in C++ [](https://github.com/NatWeiss/EntityFu) 
* __EntityPlus__ - C++14 entity component system [](https://github.com/Yelnats321/EntityPlus) 
* __EntityX__ - Fast, type-safe C++ entity component system [](https://github.com/alecthomas/entityx) 
* __entt__ - Fast and reliable entity-component system [](https://github.com/skypjack/entt) 
* __Flecs__ - A Multithreaded Entity Component System written for C89 & C99 [](https://github.com/SanderMertens/flecs) 
* __Gaia-ECS__ - Fast and type-safe C++17 archetype-based entity component system [](https://github.com/richardbiely/gaia-ecs) 
* __Ginseng__ - An ESC library designed for use in games [](https://github.com/apples/ginseng) 
* __goomy__ - A tiny, experimental ECS framework [](https://github.com/vberlier/goomy) 
* __Kengine__ - Game engine with an Entity-Component-System (ECS) architecture [](https://github.com/phisko/kengine) 
* __matter__ - C++17/20 ECS implementation [](https://github.com/Dreyri/matter) 
* __mustache__ - A fast, modern C++ entity component system [](https://github.com/kirillochnev/mustache) 
* __pico_ecs__ - Single-header and cross-platform ECS [](https://github.com/empyreanx/pico_headers) #### C#
* __Arch__ - A high-performance Archetype & Chunks Entity Component System for game development and data-oriented programming [](https://github.com/genaray/Arch) 
* __DefaultEcs__ - ECS for syntax and usage simplicity with maximum performance [](https://github.com/Doraku/DefaultEcs) 
* __DragonECS__ - ECS for Unity and .NET [](https://github.com/DCFApixels/DragonECS) 
* __Entitas__ - The Entity Component System Framework for C# and Unity [](https://github.com/sschmid/Entitas) 
* __Frent__ - Data oriented ECF with an ECS api for C#, Godot, and Unity [](https://github.com/itsBuggingMe/Frent) 
* __Friflo Engine ECS__ - ECS for .NET with focus on performance, cache locality and DX [](https://github.com/friflo/Friflo.Json.Fliox/tree/main/Engine) 
* __LeoEcsLite__ - Lightweight C# Entity Component System framework [](https://github.com/LeoECSCommunity/ecslite) 
* __ME.BECS__ - ECS for Unity with full game state automatic rollbacks [](https://github.com/chromealex/ME.BECS) 
* __Morpeh__ - ECS Framework for Unity Game Engine and .NET Platform [](https://github.com/scellecs/morpeh) 
* __Svelto.ECS__ - Lightweight data oriented entity component system framework [](https://github.com/sebas77/Svelto.ECS) 
* __Fennecs__ - ... the tiny, tiny, high-energy Entity-Component System! [](https://github.com/outfox/fennecs) 
* __TinyEcs__ - A tiny bevy-like archetype-style ECS library for dotnet [](https://github.com/andreakarasho/TinyEcs) #### Common Lisp
* __beast__ - Basic Entity/Aspect/System Toolkit [](https://github.com/sjl/beast) 
* __cl-ecs__ - An implementation of the Entity-Component-System pattern mostly used in game development [](https://github.com/bit-phlippers/cl-ecs) 
* __cl-fast-ecs__ - Blazingly fast Entity-Component-System microframework [](https://gitlab.com/lockie/cl-fast-ecs) #### Dart
* __Fast ECS__ - Simple and fast Entity-Component-System (ECS) library written in Dart. [](https://github.com/QiXi/fast_ecs) 
#### Elixir
* __ECSx__ - An ECS framework for Elixir [](https://github.com/ecsx-framework/ECSx) 
#### Python
* __esper__ - A lightweight Entity System for Python [](https://github.com/benmoran56/esper) 
#### Rust
* __shipyard__ - Entity Component System written in Rust [](https://github.com/leudz/shipyard) 
* __specs__ - Parallel entity component system written in Rust [](https://github.com/slide-rs/specs) 
* __legion__ - High performance Rust ECS library [](https://github.com/amethyst/legion) 
* __bevy_ecs__ - Simple to use, ergonomic, fast, massively parallel, opinionated, and featureful written in Rust [](https://github.com/bevyengine/bevy/tree/main/crates/bevy_ecs) 
* __hecs__ - High-performance, minimalist entity-component-system [](https://github.com/Ralith/hecs) #### Go
* __Arche__ - An archetype-based Entity Component System for Go [](https://github.com/mlange-42/arche) 
* __ecs__ - A Go-implementation of the Entity-Component-System paradigm [](https://github.com/EngoEngine/ecs) #### Lua
* __Concord__ - A feature-complete ECS library [](https://github.com/Keyslam-Group/Concord) 
* __ECS Lua__ - A fast and easy to use ECS engine for game development [](https://github.com/nidorx/ecs-lua) 
* __Nata__ - Entity management for Lua [](https://github.com/tesselode/nata) 
* __tiny-ecs__ - Entity Component System for Lua that's simple, flexible, and useful [](https://github.com/bakpakin/tiny-ecs) #### Java
* __Artemis-odb__ - A continuation of the popular Artemis ECS framework [](https://github.com/junkdog/artemis-odb) 
#### Kotlin
* __Fleks__ - Fast, lightweight, multi-platform entity component system in Kotlin [](https://github.com/Quillraven/Fleks) 
#### JavaScript / Typescript
* __becsy__ - A multithreaded Entity Component System (ECS) for TypeScript and JavaScript, inspired by ECSY and bitecs. [](https://github.com/LastOliveGames/becsy) 
* __bitECS__ - Functional, minimal, data-oriented, ultra-high performance ECS library [](https://github.com/NateTheGreatt/bitECS) 
* __ECSY__ - Entity Component System for javascript [](https://github.com/ecsyjs/ecsy) 
* __miniplex__ - The gentle game entity manager, focused on ease of use and developer experience. [](https://github.com/hmans/miniplex) 
* __Thyseus__ - An archetypal Entity Component System, built entirely in Typescript [](https://github.com/JaimeGensler/thyseus) #### Zig
* __mach-ecs__ - Entity Component System from first-principles designed for Zig [](https://github.com/hexops/mach-ecs) 
* __Zig ECS__ - A Zig port of the fantasic Entt [](https://github.com/prime31/zig-ecs) #### Haskell
* __apecs__ - A fast, extensible, type driven Haskell ECS framework for games [](https://github.com/jonascarpay/apecs) 
## Applications powered by ECS
### Game Engines
#### C++
* __crown__ - General purpose data-driven game engine [](https://github.com/dbartolini/crown) 
* __Engine__ - Basic cross-platform 3D game engine [](https://github.com/Shervanator/Engine) 
* __halley__ - A lightweight game engine written in modern C++ [](https://github.com/amzeratul/halley) 
* __igneous__ - Open source game engine written in C++ [](https://github.com/MissingBitStudios/igneous) 
* __kengine__ - Game engine focused on ease-of-use, runtime extensibility and compile-time type safety [](https://github.com/phisko/kengine) 
* __Lina Engine__ - Modular, tiny and fast C++ game engine, aimed to develop 3D desktop games [](https://github.com/inanevin/LinaEngine) 
* __Lumos__ - Cross-Platform C++ 2D/3D game engine [](https://github.com/jmorton06/Lumos) 
* __MxEngine__ - C++ open source 3D game engine [](https://github.com/asc-community/MxEngine) 
* __nebula__ - Open-source and free-to-use modern C++ game engine [](https://github.com/gscept/nebula) 
* __Nazara Engine__ - Cross-platform framework aimed at real-time applications requiring audio, 2D and 3D real-time rendering, network and more [](https://github.com/NazaraEngine/NazaraEngine) 
* __shiva__ - Modern Cross-Platform C++ Engine with modularity [](https://github.com/Milerius/shiva) 
* __Sparky__ - Cross-Platform High Performance 2D/3D game engine [](https://github.com/TheCherno/Sparky) 
* __supernova__ - Game engine for 2D and 3D projects with ECS and data-oriented design [](https://github.com/supernovaengine/supernova) 
* __Usagi__ - Hierarchical component entity system based game engine [](https://github.com/vitei/Usagi) 
* __Lumos__ - Cross-Platform C++ 2D/3D game engine [](https://github.com/jmorton06/Lumos) 
* __supernova__ - Game engine for 2D and 3D projects with ECS and data-oriented design [](https://github.com/supernovaengine/supernova) 
* __kengine__ - Game engine focused on ease-of-use, runtime extensibility and compile-time type safety [](https://github.com/phisko/kengine) 
* __MxEngine__ - C++ open source 3D game engine [](https://github.com/asc-community/MxEngine) 
* __nebula__ - Open-source and free-to-use modern C++ game engine [](https://github.com/gscept/nebula) 
* __halley__ - A lightweight game engine written in modern C++ [](https://github.com/amzeratul/halley) 
* __Nazara Engine__ - Cross-platform framework aimed at real-time applications requiring audio, 2D and 3D real-time rendering, network and more [](https://github.com/NazaraEngine/NazaraEngine) 
* __Lina Engine__ - Modular, tiny and fast C++ game engine, aimed to develop 3D desktop games [](https://github.com/inanevin/LinaEngine) #### Go
* __Engo__ - A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm [](https://github.com/EngoEngine/engo) 
#### Rust
* __Ambient__ - The multiplayer game engine [](https://github.com/AmbientRun/Ambient) 
* __Amethyst__ - Data-oriented and data-driven game engine written in Rust [](https://github.com/amethyst/amethyst) 
* __Bevy__ - A refreshingly simple data-driven game engine built in Rust [](https://github.com/bevyengine/bevy) 
* __Bones__ - An easy-to-use game engine for making real games [](https://github.com/fishfolk/bones) #### Zig
* __mach__ - Game engine & graphics toolkit for building high-performance, truly cross-platform, robust & modular games, visualizations, and desktop/mobile GUI apps [](https://github.com/hexops/mach) 
### Graphics Engines
#### C++
* __bs::framework__ - Modern C++14 library for the development of real-time graphical applications [](https://github.com/GameFoundry/bsf) 
* __The Forge__ - Cross-Platform Rendering Framework with support for PC Windows, Linux, Ray Tracing, macOS/iOS, Android, XBOX, PS4, PS5, Switch, Quest 2 [](https://github.com/ConfettiFX/The-Forge) ### Physics libraries
#### C++
* __edyn__ - A real-time physics engine organized as an ECS [](https://github.com/xissburg/edyn) 
## 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#
* [ECS C# Benchmark - Common uses-cases](https://github.com/friflo/ECS.CSharp.Benchmark-common-use-cases): Benchmark many common use cases in the simplest and most performant variant
* [CSharpECSComparison](https://github.com/Chillu1/CSharpECSComparison): Benchmarks of common ECS Frameworks for C#
* [Lua ECS Library Benchmark](https://github.com/jeffzi/lua-ecs-benchmark): Benchmarks of common ECS Frameworks in Lua### 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/)
* [Seba's Lab](https://www.sebaslab.com/)### 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)