Awesome ECS
A curated list of Entity-Component-System (ECS) libraries and resources.
Contents
Legend: π’ Active (<1yr) Β· π‘ Slow (1-2yr) Β· π΄ Stale (>2yr) Β· π Archived
ECS Libraries
Libraries and frameworks implementing the Entity-Component-System pattern.
C/C++
- π anax - Open source C++ entity system. β 463
- π ECS - C++ single-header entity component system library. β 482
- π΄ ecs.hpp - A single header C++14 entity component system library. β 41
- π΄ ecst - Experimental C++14 multithreaded compile-time entity-compnent-system library. β 491
- π΄ EntityFu - A simple, fast entity component system written in C++. β 86
- π΄ EntityPlus - C++14 entity component system. β 191
- π’ EntityX - Fast, type-safe C++ entity component system. β 2.3k
- π’ entt - Fast and reliable entity-component system. β 12.3k
- π’ Flecs - A Multithreaded Entity Component System written for C89 & C99. β 8.0k
- π’ Gaia-ECS - Fast and type-safe C++17 archetype-based entity component system. β 118
- π΄ Ginseng - An ESC library designed for use in games. β 56
- π΄ goomy - A tiny, experimental ECS framework. β 14
- π΄ Kengine - Game engine with an Entity-Component-System (ECS) architecture. β 616
- π΄ matter - C++17/20 ECS implementation. β 21
- π’ mustache - A fast, modern C++ entity component system. β 68
- π’ pico_ecs - Single-header and cross-platform ECS. β 490
- π’ WickedEngineβs ECS - WickedEngineβs ECS implementation. β 6.9k
C#
- π’ Arch - A high-performance Archetype & Chunks Entity Component System for game development and data-oriented programming. β 1.6k
- π‘ DefaultEcs - ECS for syntax and usage simplicity with maximum performance. β 746
- π’ DragonECS - ECS for Unity and .NET. β 292
- π΄ Entitas - The Entity Component System Framework for C# and Unity. β 7.6k
- π’ Fennecs - β¦ the tiny, tiny, high-energy Entity-Component System! β 411
- π’ Frent - Data oriented ECF with an ECS api for C#, Godot, and Unity. β 156
- π’ Friflo Engine ECS - ECS for .NET with focus on performance, cache locality and DX. β 536
- π΄ LeoEcsLite - Lightweight C# Entity Component System framework. β 60
- π’ Massive ECS - Bitset-based ECS with rollbacks. C# library and Unity package. β 189
- π’ ME.BECS - ECS for Unity with full game state automatic rollbacks. β 243
- π’ Morpeh - ECS Framework for Unity Game Engine and .NET Platform. β 634
- π’ Static ECS - C# Hierarchical Inverted Bitmap ECS framework. β 142
- π’ Svelto.ECS - Lightweight data oriented entity component system framework. β 1.4k
- π’ TinyEcs - A tiny bevy-like archetype-style ECS library for dotnet. β 135
Common Lisp
- π΄ beast - Basic Entity/Aspect/System Toolkit. β 30
- π΄ cl-ecs - An implementation of the Entity-Component-System pattern mostly used in game development. β 8
- cl-fast-ecs - Blazingly fast Entity-Component-System microframework. gitlab
Dart
Elixir
Python
Rust
- π’ bevy_ecs - Simple to use, ergonomic, fast, massively parallel, opinionated, and featureful written in Rust. β 44.6k
- π’ hecs - High-performance, minimalist entity-component-system. β 1.2k
- π΄ legion - High performance Rust ECS library. β 1.7k
- π’ shipyard - Entity Component System written in Rust. β 834
- π‘ specs - Parallel entity component system written in Rust. β 2.6k
Go
- π’ Ark - An archetype-based Entity Component System for Go. β 215
- π΄ ecs - A Go-implementation of the Entity-Component-System paradigm. β 331
Lua
- π’ Concord - A feature-complete ECS library. β 303
- π‘ ECS Lua - A fast and easy to use ECS engine for game development. β 224
- π’ evolved.lua - Evolved ECS (Entity-Component-System) for Lua. β 172
- π΄ Nata - Entity management for Lua. β 51
- π΄ tiny-ecs - Entity Component System for Lua thatβs simple, flexible, and useful. β 773
Java
- π΄ Artemis-odb - A continuation of the popular Artemis ECS framework. β 827
Julia
- π’ Ark.jl - An archetype-based Entity Component System (ECS) for Julia. It is a port of the Go ECS Ark. β 54
Kotlin
JavaScript / TypeScript
- π’ becsy - A multithreaded Entity Component System (ECS) for TypeScript and JavaScript, inspired by ECSY and bitecs. β 285
- π’ bitECS - Functional, minimal, data-oriented, ultra-high performance ECS library. β 1.3k
- π ECSY - Entity Component System for javascript. β 1.1k
- π΄ miniplex - The gentle game entity manager, focused on ease of use and developer experience. β 983
- π‘ Thyseus - An archetypal Entity Component System, built entirely in Typescript. β 86
Zig
- π’ Comptime ECS - Comptime-defined ECS implementation in Zig. β 4
- π’ knoedel - Data oriented application framework written in Zig (ECS). β 27
- π‘ mach-ecs - Entity Component System from first-principles designed for Zig. β 35
- π’ ZCS - An archetype based entity component system written in Zig. β 145
- π’ Zig ECS - A Zig port of the fantasic Entt. β 393
Haskell
Applications powered by ECS
Game Engines
Game engines built on ECS architecture.
C++
- π’ crown - General purpose data-driven game engine. β 27
- π΄ Engine - Basic cross-platform 3D game engine. β 301
- π’ halley - A lightweight game engine written in modern C++. β 3.8k
- π΄ igneous - Open source game engine written in C++. β 51
- π΄ kengine - Game engine focused on ease-of-use, runtime extensibility and compile-time type safety. β 616
- π’ Lina Engine - Modular, tiny and fast C++ game engine, aimed to develop 3D desktop games. β 890
- π’ Lumos - Cross-Platform C++ 2D/3D game engine. β 1.5k
- π‘ MxEngine - C++ open source 3D game engine. β 1.2k
- π’ Nazara Engine - Cross-platform framework aimed at real-time applications requiring audio, 2D and 3D real-time rendering, network and more. β 812
- π’ nebula - Open-source and free-to-use modern C++ game engine. β 1.1k
- π shiva - Modern Cross-Platform C++ Engine with modularity. β 159
- π΄ Sparky - Cross-Platform High Performance 2D/3D game engine. β 1.2k
- π’ supernova - Game engine for 2D and 3D projects with ECS and data-oriented design. β 376
- π‘ Usagi - Hierarchical component entity system based game engine. β 53
- π’ WickedEngine - 3D engine with modern graphics. β 6.9k
Go
- π’ Engo - A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. β 1.8k
Rust
- π‘ Ambient - The multiplayer game engine. β 3.9k
- π Amethyst - Data-oriented and data-driven game engine written in Rust. β 8.0k
- π’ Bevy - A refreshingly simple data-driven game engine built in Rust. β 44.6k
- π’ Bones - An easy-to-use game engine for making real games. β 292
Zig
- π’ mach - Game engine & graphics toolkit for building high-performance, truly cross-platform, robust & modular games, visualizations, and desktop/mobile GUI apps. β 4.6k
Graphics Engines
Graphics and rendering engines using ECS.
C++
- π΄ bs::framework - Modern C++14 library for the development of real-time graphical applications. β 1.8k
- π’ The Forge - Cross-Platform Rendering Framework with support for PC Windows, Linux, Ray Tracing, macOS/iOS, Android, XBOX, PS4, PS5, Switch, Quest 2. β 5.5k
Physics Libraries
Physics simulation libraries organized as ECS.
C++
Other Resources
Benchmarks
Performance benchmarks comparing ECS frameworks.
- π΄ CSharpECSComparison - Benchmarks of common ECS Frameworks for C#. β 53
- π’ ECS C# Benchmark - Benchmarks of the main ECS Frameworks for: C#. β 174
- π’ ECS C# Benchmark - Common uses-cases - Benchmark many common use cases in the simplest and most performant variant. β 43
- π‘ ecs_benchmark - Benchmarks of common ECS (Entity-Component-System)-Frameworks in C/C++. β 280
- π’ Lua ECS Library Benchmark - Benchmarks of common ECS Frameworks in Lua. β 6
Blog Posts
Articles and blog posts about ECS and data-oriented design.
- Building an ECS
- Data-oriented design
- ECS back and forth
- Entity Systems are the future of MMOG development
- Letβs build an Entity Component System from scratch
- Overview of ECS variants & definitions
- Sebaβs Lab
- Systems Interaction in Entity-Component-System (events)
- Understand data-oriented design
- Unity ECS series
- WickedEngineβs ECS implementation
Talks & Slides
Conference talks and presentations about ECS.
- Codestar 2018 ECS - A Different Approach to Game Development
- CppCon 2014: Mike Acton βData-Oriented Design and C++β
- CppCon 2018: Stoyan Nikolov βOOP Is Dead, Long Live Data-oriented Designβ
- Data Oriented Design Resources
- Data Oriented GUI in Rust
- GDC 2018: Unity at GDC - A Data Oriented Approach to Using Component Systems
- Is There More to Game Architecture than ECS - Bob Nystrom (Roguelike Celebration 2018)
- itCppCon19: ECS back and forth
- Meeting C++ 2018: Data oriented design in practice
- Unite 2018: C# Job System + ECS usage and demo with Intel
Books
Books on ECS and data-oriented design.
Tutorials
Tutorial series for learning ECS.
Lists
Related curated lists.
ETC
Other ECS-related resources.
Contributing
Contributions are very welcome! Please read the contribution guidelines first. Also, please feel free to report any error.
