À propos du projet

EnTT (Entity-Component-System) est une bibliothèque C++20 à en-tête seule conçue principalement pour la programmation de jeux, mais applicable au développement logiciel plus large. Elle fournit une implémentation ECS haute performance avec une politique « payez pour ce que vous utilisez », des types de composants sans contrainte, une stabilité optionnelle des pointeurs et des crochets de stockage personnalisables. La bibliothèque offre plusieurs modèles d'itération via des vues et des groupes, allant d'une structure de tableaux (SoA) parfaite à un accès aléatoire. Au-delà du cœur ECS, EnTT inclut un système RTTI intégré, un nommage de ressources constexpr, un système de configuration minimal, un constructeur de graphe d'exécution pour un ordonnancement optimal, un localisateur de services, un système de réflexion à l'exécution non intrusif sans macro, des utilitaires de polymorphisme statique, des conteneurs personnalisés (dont une table de hachage basée sur un ensemble creux), un ordonnanceur coopératif, la gestion des ressources (cache, chargeurs, descripteurs), des délégués, des gestionnaires de signaux, un répartiteur d'événements et un émetteur d'événements basé sur CRTP. EnTT est utilisé en production par des projets majeurs, notamment Minecraft (Mojang), les SDK ArcGIS Runtime (Esri) et Ragdoll Dynamics. Il s'intègre via CMake, Conan, vcpkg, Homebrew, build2 et Bazel (bzlmod). La bibliothèque nécessite un compilateur conforme C++20 et fournit une documentation complète via Doxygen, avec un support de débogage Natvis. Sous licence MIT pour le code, CC BY 4.0 pour la documentation et CC BY-SA 4.0 pour les logos.