
EnTT
A header-only C++ library for entity-component systems and other game-programming tools.
- Stars
- 13.2k
- Forks
- 1.1k
- Licence
- MIT
- Language
- C++
- Last update
- 4 days ago
- Type
- Library
What it is
EnTT is a C++ library, written in modern C++, that provides an entity-component system (ECS), a pattern where game objects are plain IDs with attached data components, used mostly in game development. The README also lists other pieces such as a reflection system, signal handlers, resource management and an execution graph builder. It is header-only, so you include it in your project rather than linking a separate binary.
- Store positions and velocities as components and update every entity that has both in one loop
- Use the reflection system to inspect types at runtime without macros
- Dispatch events with the tiny event dispatcher or signal handlers
- Manage loaded assets with the built-in cache, loaders and handles
Great for
- C++ game developers who want an ECS
- Developers building simulations or engines who need a data-oriented entity store
- C++ programmers who want reusable utilities like signals, hash maps or resource handles
- Projects that already use CMake or a C++ package manager such as vcpkg or Conan
Not ideal for
- Developers who want a full game engine with editor and rendering out of the box, since EnTT is a library of building blocks
- Developers not working in C++, because the library is written in C++
- Teams needing a ready-made binary release, since the latest release has no binaries
How to get it
- 1
Clone and build from source
You'll need: A C++17 compatible compiler · CMake
Clone the repository
git clone https://github.com/skypjack/entt.git - 2
Run it
- Clone the repository and add its src directory to your include path.
- Include <entt/entt.hpp> in a C++ source file.
- Create an entt::registry, add components with emplace, and iterate with registry.view.
- Compile and run your program.
- 3
Get the most out of it
- Use view.each with a callback or range-for to iterate entities that share components.
- Enable the ENTT_BUILD_BENCHMARK CMake option to build the benchmark in release mode if you want to measure performance yourself.
- Read the wiki and FAQ linked from the README for design guidance.
Downloads
Strengths
- Header-only, so integration is mostly adding the include path
- Documented API and a wiki with FAQs
- Used by projects the README names, including Minecraft and ArcGIS Runtime SDKs
Trade-offs
- Large feature surface described only briefly in the README, so learning the whole library takes time
- Requires familiarity with C++ and ECS concepts to use effectively
- Latest release has no prebuilt binaries
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| entt (this) | 13.2k | Library | advanced | 4 days ago | C++ game developers who want an ECS |
| JoltPhysics | 12.1k | Library | advanced | 4 days ago | C++ game developers who need a physics engine for rigid bodies and collisions |
| flame | 10.8k | Library | intermediate | 4 days ago | Flutter developers who want to add a game to an app |
| godot | 119k | App | beginner | 7 days ago | Indie game developers who want a free engine with no royalties |
| engine | 17.2k | Library | intermediate | 4 days ago | Web developers who want to add 3D scenes or games to a website |
| modern-cpp-tutorial | 25.9k | Learning resource | intermediate | 29 days ago | Experienced C++ developers who want a quick overview of modern features |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.