It's a work in progress small game engine, usable like a C++ library.
Features
- No allocation during game loop (Object pooling)
- Custom run-time type identification
- Data-driven oriented design with Entity, Component and System
- Multithreading system with Thread Pool
- Basic SIMD operations
- Event System
RTTI
ECS
- Entity type is just an alias of
uint32_t
- Using of Factory Design to allocate Component in Pools
- We can
GetEntitiesWithTags
to retrieve entities with certain components
Building
Build and run the standalone target
Use the following command to build and run the executable target.
cmake -Bbuild
cmake --build build
./build/bin/pong
Build single include
python .\scripts\amalgamate.py -c .\scripts\config.json -s .
Dependencies
- C++17 compiler :
- Visual Studio 2016
- GCC 7+ or Clang 8+
- Git for cmake automatic dependencies
- CMake for build system creation (>= 3.12)
- Doxygen for generate documentation (>= 1.8, optional)