Skip to content

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
Step-by-step guide: how to use EnTTInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
entt (this)13.2kLibraryadvanced4 days agoC++ game developers who want an ECS
JoltPhysics12.1kLibraryadvanced4 days agoC++ game developers who need a physics engine for rigid bodies and collisions
flame10.8kLibraryintermediate4 days agoFlutter developers who want to add a game to an app
godot119kAppbeginner7 days agoIndie game developers who want a free engine with no royalties
engine17.2kLibraryintermediate4 days agoWeb developers who want to add 3D scenes or games to a website
modern-cpp-tutorial25.9kLearning resourceintermediate29 days agoExperienced 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.