A C++20 game engine built on EnTT's Entity-Component-System architecture, focusing on ease-of-use, runtime extensibility, and compile-time type safety.
Kengine is a C++20 game engine that implements the Entity-Component-System (ECS) architecture using the EnTT library. It provides a modular framework for building games with an emphasis on runtime extensibility, compile-time type safety, and a data-oriented design. The engine includes pre-built components and systems for rendering, physics, scripting, and more, all organized into optional libraries.
Game developers and programmers familiar with C++ and ECS patterns who want a type-safe, modular engine for building custom game tooling or educational projects.
Developers choose Kengine for its strong integration with EnTT, its unique approach of treating systems as entities for full runtime introspection, and its extensive reflection capabilities that enable dynamic editing and scripting without sacrificing type safety.
Game engine with an Entity-Component-System (ECS) architecture. Focus on ease-of-use, runtime extensibility and compile-time type safety.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built on the mature EnTT library, providing high-performance entity management and straightforward integration with other EnTT projects, as highlighted in the README.
Systems are implemented as entities within the registry, allowing them to be inspected and modified at runtime like any game object, enabling dynamic debugging and tooling.
Leverages a reflection API for runtime component inspection and ImGui-based entity editors, facilitating live editing without recompilation, as demonstrated in the meta components section.
Organized into optional, composable libraries (e.g., for rendering, physics, scripting), letting developers include only necessary features and reduce bloat.
Requires a C++20 compiler, and the README notes that clang doesn't support some C++20 features at the time of writing, limiting portability and toolchain options.
Uses Git submodules and exposes numerous CMake options for enabling libraries, making initial setup and dependency management cumbersome for newcomers.
As a passion project with limited community adoption, it lacks the extensive tutorials, plugins, and third-party support of mainstream engines like Unity or Unreal.