NcEngine is an open-source 3D game engine written in C++23 using Vulkan, primarily for Windows but Linux support is in development. It is actively being developed but is still in early stages.
The purpose behind NcEngine:
What NcEngine is not:
The purpose of NcEngine was never to be a product for others to purchase or pay for, or a general purpose game engine to compete with Unity, Unreal, Godot or others. We made this for our personal use, but it is now developed enough that we are happy to share with others. This repo is currently run by a two-person 'nights and weekends' team, so if you encounter a bug - please make an issue for it, but it will likely not be fixed soon (depending on severity).
Currently featuring:
Interested in getting involved?
The best way to help is to grab an issue that looks interesting and attempt to tackle it. Or, make a game with the engine and let us know any shortcomings, bugs, or feature requests you discover along the way!
Otherwise:
Run CMake on the root CMakeLists with your required options:
cmake -S ./ -B build -DCMAKE_INSTALL_PREFIX=NcSdk
cmake --build build --target install --config Release
All dependencies are fetched during the CMake generate step. There are two other first party repos:
find_package(NcEngine PATHS install-path)
and link against Nc::NcEngine-dev
.install-path/bin
.install-path/sample
.While the default Nc::Engine-dev
target can be built with a Release configuration, it still includes extra code for profiling and inspection by NcEditor that is otherwise not needed by the project itself. This can be excluded by defining NC_PROD_BUILD=ON
during the CMake configure step. The target will instead be exported as Nc::Engine
, and additional items, like NcEditor and the sample, will not be built. Unique build and install directories should be used when enabling and disabling this option.
Default: OFF
Include tests when building.
Default: OFF
Build engine binaries for use in production releases. This excludes the editor layer, sample app, removes some runtime checks, and limits logging. The engine target name is changed to 'Nc::NcEngine' (dropping the '-dev' suffix).
Default: OFF
Enabled profiling with Optick. This also requires the Optick application (https://www.optickprofiler.com) and the Optick shared library (installed to install-prefix/bin/OptickCore.dll).
To learn more: