Nikreon Engine is a C++20 Vulkan game engine project. The current repository is in the bootstrap stage: it has the build system, dependency manifest, and upgrade roadmap needed to grow into a modular renderer/game engine.
The long-term direction is documented in ENGINE_UPGRADE_PLAN.md: modern 3D rendering for Blender GLB/glTF assets, batched 2D rendering, text, UI/HUD, debug overlays, materials, lighting, shadows, physics, audio, scripting, and editor tooling.
The external/NikreonUI submodule is split into reusable NikreonUI::Core and
optional NikreonUI::Vulkan targets. Its surface-local UIFrame API is shared
by editor UI and game HUD code without pulling editor configuration into the
library. See external/NikreonUI/README.md for sample usage.
- C++20
- Vulkan headers plus
volk - GLFW
- GLM
- EnTT
- tinygltf
- stb
- FreeType
- OpenAL Soft
- miniaudio
- Jolt Physics
- spdlog
- nlohmann-json
- CMake
- vcpkg manifest mode
.
|-- CMakeLists.txt
|-- Makefile
|-- vcpkg.json
|-- src/
| `-- main.cpp
|-- scripts/
| |-- bootstrap-deps.ps1
| |-- build.ps1
| |-- run.ps1
| |-- bootstrap-deps.sh
| |-- build.sh
| `-- run.sh
|-- docs/
| |-- BUILDING.md
| `-- DEPENDENCIES.md
`-- ENGINE_UPGRADE_PLAN.md
Install dependencies:
make depsBuild:
make buildRun:
make runPass engine arguments through RUN_ARGS:
make run RUN_ARGS="--frames 180"The default make build and make run use CONFIG=Debug so debug iteration stays unchanged. Debug builds usually disable optimization, such as -O0 on GCC/Clang or /Od on MSVC, so they are not suitable for FPS benchmarking.
For optimized FPS testing with debug symbols, use the release-style wrapper:
make run-relrun-rel builds in REL_BUILD_DIR=build-rel with REL_CONFIG=RelWithDebInfo. Standard CMake build types enable optimization for release-style configs: RelWithDebInfo normally uses optimized code with debug info, and Release normally uses optimization such as -O2/-O3 on GCC/Clang or /O2 on MSVC. These configs also define NDEBUG.
To benchmark a plain Release build:
make run-rel REL_CONFIG=Release
make run-rel REL_BUILD_DIR=build-release REL_CONFIG=ReleaseOn Windows, make run builds the executable and then launches it from the build
folder. If Windows Application Control blocks NikreonEngine.exe, the build is
still valid, but the machine policy must allow unsigned local debug builds,
allowlist the output folder, or run the project from an approved developer path.
If make is not installed on Windows, use the PowerShell scripts directly:
powershell -ExecutionPolicy Bypass -File scripts/bootstrap-deps.ps1
powershell -ExecutionPolicy Bypass -File scripts/build.ps1
powershell -ExecutionPolicy Bypass -File scripts/run.ps1The configure and build scripts automatically initialize a missing
external/NikreonUI Git submodule checkout before running CMake. They also
bootstrap a missing local vcpkg checkout and fetch a local CMake tool when
neither cmake on PATH nor the vcpkg tool cache is available.
The Makefile chooses a vcpkg triplet automatically:
- Windows:
x64-windows - Linux x64:
x64-linux - Linux ARM64:
arm64-linux - macOS Intel:
x64-osx - macOS Apple Silicon:
arm64-osx
Override it when needed:
make deps TRIPLET=arm64-osx
make build TRIPLET=arm64-osxTo remove generated files and redownload dependencies:
make distclean
make deps
make build- Build details:
docs/BUILDING.md - Dependency details:
docs/DEPENDENCIES.md - Engine roadmap:
ENGINE_UPGRADE_PLAN.md
external/vcpkg, build, and vcpkg install output are intentionally ignored by git. They can be regenerated from vcpkg.json.