EnTT in an open source header only Entity Component System library for C++ battle tested in several game engines and even the game Minecraft. With guest video host XenoBrain from the GameFromScratch Discord we take a hands-on look with this popular library. EnTT is by no means the only ECS library out there, we previously covered FLECS for example. The following are the key features of the EnTT library:
- Statically generated integer identifiers for types (assigned either at compile-time or at runtime).
- A
constexpr
utility for human readable resource names. - A minimal configuration system built using the monostate pattern.
- An incredibly fast entity-component system based on sparse sets, with its own pay for what you use policy to adjust performance and memory usage according to the users’ requirements.
- Views and groups to iterate entities and components and allow different access patterns, from perfect SoA to fully random.
- A lot of facilities built on top of the entity-component system to help the users and avoid reinventing the wheel (dependencies, snapshot, handles, support for reactive systems and so on).
- The smallest and most basic implementation of a service locator ever seen.
- A built-in, non-intrusive and macro-free runtime reflection system.
- Static polymorphism made simple and within everyone’s reach.
- A cooperative scheduler for processes of any type.
- All that is needed for resource management (cache, loaders, handles).
- Delegates, signal handlers (with built-in support for collectors) and a tiny event dispatcher for immediate and delayed events to integrate in loops.
- A general purpose event emitter as a CRTP idiom based class template.
- And much more! Check out the wiki.
EnTT is open source under the permissive MIT source license hosted here on GitHub. Support is available in two forms, their Gitter channel and Discord server. Special thanks to XenoBrain for recording the vast majority of the video below. If you enjoy the video, please pop into the GFS discord and say Hi.