Awesome
awesome-ecs
:sunglasses: A curated list of Entity-Component-System (ECS) libraries and resources
ECS Libraries
C/C++
- anax - Open source C++ entity system
- ECS - C++ single-header entity component system library
- ecs.hpp - A single header C++14 entity component system library
- ecst - Experimental C++14 multithreaded compile-time entity-compnent-system library
- EntityFu - A simple, fast entity component system written in C++
- EntityPlus - C++14 entity component system
- EntityX - Fast, type-safe C++ entity component system
- entt - Fast and reliable entity-component system
- Flecs - A Multithreaded Entity Component System written for C89 & C99
- Gaia-ECS - Fast and type-safe C++17 archetype-based entity component system
- Ginseng - An ESC library designed for use in games
- goomy - A tiny, experimental ECS framework
- Kengine - Game engine with an Entity-Component-System (ECS) architecture
- matter - C++17/20 ECS implementation
- mustache - A fast, modern C++ entity component system
- pico_ecs - Single-header and cross-platform ECS
C#
- Arch - A high-performance Archetype & Chunks Entity Component System for game development and data-oriented programming
- DefaultEcs - ECS for syntax and usage simplicity with maximum performance
- DragonECS - ECS for Unity and .NET
- Entitas - The Entity Component System Framework for C# and Unity
- Friflo Engine ECS - ECS for .NET with focus on performance, cache locality and DX
- LeoEcsLite - Lightweight C# Entity Component System framework
- ME.BECS - ECS for Unity with full game state automatic rollbacks
- Morpeh - ECS Framework for Unity Game Engine and .NET Platform
- Svelto.ECS - Lightweight data oriented entity component system framework
- Fennecs - ... the tiny, tiny, high-energy Entity-Component System!
- TinyEcs - A tiny bevy-like archetype-style ECS library for dotnet
Common Lisp
- beast - Basic Entity/Aspect/System Toolkit
- cl-ecs - An implementation of the Entity-Component-System pattern mostly used in game development
- cl-fast-ecs - Blazingly fast Entity-Component-System microframework
Dart
Elixir
Python
Rust
- shipyard - Entity Component System written in Rust
- specs - Parallel entity component system written in Rust
- legion - High performance Rust ECS library
- bevy_ecs - Simple to use, ergonomic, fast, massively parallel, opinionated, and featureful written in Rust
- hecs - High-performance, minimalist entity-component-system
Go
- Arche - An archetype-based Entity Component System for Go
- ecs - A Go-implementation of the Entity-Component-System paradigm
Lua
- ECS Lua - A fast and easy to use ECS engine for game development
- tiny-ecs - Entity Component System for Lua that's simple, flexible, and useful
Java
Kotlin
JavaScript / Typescript
- becsy - A multithreaded Entity Component System (ECS) for TypeScript and JavaScript, inspired by ECSY and bitecs.
- bitECS - Functional, minimal, data-oriented, ultra-high performance ECS library
- ECSY - Entity Component System for javascript
- miniplex - The gentle game entity manager, focused on ease of use and developer experience.
- Thyseus - An archetypal Entity Component System, built entirely in Typescript
Zig
- mach-ecs - Entity Component System from first-principles designed for Zig
- Zig ECS - A Zig port of the fantasic Entt
Applications powered by ECS
Game Engines
C++
- crown - General purpose data-driven game engine
- Engine - Basic cross-platform 3D game engine
- halley - A lightweight game engine written in modern C++
- igneous - Open source game engine written in C++
- kengine - Game engine focused on ease-of-use, runtime extensibility and compile-time type safety
- Lina Engine - Modular, tiny and fast C++ game engine, aimed to develop 3D desktop games
- Lumos - Cross-Platform C++ 2D/3D game engine
- MxEngine - C++ open source 3D game engine
- nebula - Open-source and free-to-use modern C++ game engine
- Nazara Engine - Cross-platform framework aimed at real-time applications requiring audio, 2D and 3D real-time rendering, network and more
- shiva - Modern Cross-Platform C++ Engine with modularity
- Sparky - Cross-Platform High Performance 2D/3D game engine
- supernova - Game engine for 2D and 3D projects with ECS and data-oriented design
- Usagi - Hierarchical component entity system based game engine
- Lumos - Cross-Platform C++ 2D/3D game engine
- supernova - Game engine for 2D and 3D projects with ECS and data-oriented design
- kengine - Game engine focused on ease-of-use, runtime extensibility and compile-time type safety
- MxEngine - C++ open source 3D game engine
- nebula - Open-source and free-to-use modern C++ game engine
- halley - A lightweight game engine written in modern C++
- Nazara Engine - Cross-platform framework aimed at real-time applications requiring audio, 2D and 3D real-time rendering, network and more
- Lina Engine - Modular, tiny and fast C++ game engine, aimed to develop 3D desktop games
Go
- Engo - A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm
Rust
- Ambient - The multiplayer game engine
- Amethyst - Data-oriented and data-driven game engine written in Rust
- Bevy - A refreshingly simple data-driven game engine built in Rust
- Bones - An easy-to-use game engine for making real games
Zig
- mach - Game engine & graphics toolkit for building high-performance, truly cross-platform, robust & modular games, visualizations, and desktop/mobile GUI apps
Graphics Engines
C++
- bs::framework - Modern C++14 library for the development of real-time graphical applications
- The Forge - Cross-Platform Rendering Framework with support for PC Windows, Linux, Ray Tracing, macOS/iOS, Android, XBOX, PS4, PS5, Switch, Quest 2
Physics libraries
C++
Other Resources
Benchmarks
- ecs_benchmark: Benchmarks of common ECS (Entity-Component-System)-Frameworks in C/C++
- ECS C# Benchmark: Benchmarks of the main ECS Frameworks for: C#
- ECS C# Benchmark - Common uses-cases: Benchmark many common use cases in the simplest and most performant variant
- CSharpECSComparison: Benchmarks of common ECS Frameworks for C#
Blog Posts
- Data-oriented design
- ECS back and forth
- Let's build an Entity Component System from scratch
- Entity Systems are the future of MMOG development
- Building an ECS
- Systems Interaction in Entity-Component-System (events)
- Overview of ECS variants & definitions
- Understand data-oriented design
- Unity ECS series
- Seba's Lab
Talks & Slides
- itCppCon19: ECS back and forth
- GDC 2018: Unity at GDC - A Data Oriented Approach to Using Component Systems
- Meeting C++ 2018: Data oriented design in practice
- CppCon 2018: Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design”
- Data Oriented Design Resources
- Data Oriented GUI in Rust
- Is There More to Game Architecture than ECS - Bob Nystrom (Roguelike Celebration 2018)
- Unite 2018: C# Job System + ECS usage and demo with Intel
- Codestar 2018 ECS - A Different Approach to Game Development
- CppCon 2014: Mike Acton "Data-Oriented Design and C++")