About this project

EnTT (Entity-Component-System) is a header-only C++20 library designed primarily for game programming but applicable to broader software development. It provides a high-performance ECS implementation with a 'pay for what you use' policy, unconstrained component types, optional pointer stability, and customizable storage hooks. The library offers multiple iteration patterns through views and groups, ranging from perfect structure-of-arrays (SoA) to random access. Beyond the core ECS, EnTT includes a built-in RTTI system, constexpr resource naming, a minimal configuration system, an execution graph builder for optimal scheduling, a service locator, a non-intrusive macro-free runtime reflection system, static polymorphism utilities, custom containers (including a sparse-set based hash map), a cooperative scheduler, resource management (cache, loaders, handles), delegates, signal handlers, an event dispatcher, and a CRTP-based event emitter. EnTT is used in production by major projects including Minecraft (Mojang), ArcGIS Runtime SDKs (Esri), and Ragdoll Dynamics. It integrates via CMake, Conan, vcpkg, Homebrew, build2, and Bazel (bzlmod). The library requires a C++20-compliant compiler and provides comprehensive documentation via Doxygen, with Natvis debugging support. Licensed under MIT for code, CC BY 4.0 for documentation, and CC BY-SA 4.0 for logos.