Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Excurs1ons/PrismaEngine/llms.txt

Use this file to discover all available pages before exploring further.

Building from source gives you full access to the engine internals, lets you modify subsystems, and is required if you want to work on the editor, contribute to the project, or target a platform configuration not covered by a prebuilt SDK release. Prisma Engine uses CMake presets to standardize builds across all supported platforms and architectures.

Prerequisites

Install the following tools before cloning the repository.
  • Git — with submodule support (--recursive clone)
  • CMake 3.31 or later — required by CMakePresets.json
  • C++20 compiler:
    • Windows: Visual Studio 2022 (MSVC)
    • Linux: GCC 11+ or Clang 13+
    • Android: NDK r25+
  • Vulkan SDK 1.3+ — required for Vulkan builds on Linux and Windows
  • Ninja — required for Linux and Android builds (Windows uses Visual Studio generator)
The project uses CMake FetchContent by default to download all third-party dependencies (SDL3, ImGui, GLM, VMA, and others) at configure time. You do not need to install them manually unless you set PRISMA_USE_FETCHCONTENT=OFF to use vcpkg instead.

Clone the repository

Clone the prune branch with all submodules. The prune branch focuses on the SDL3 + Vulkan rendering path.
git clone --recursive https://github.com/Excurs1ons/PrismaEngine.git -b prune
cd PrismaEngine
If you already cloned without --recursive, initialize submodules manually:
git submodule update --init --recursive

One-command build

The scripts/build.sh script auto-detects your platform and architecture, selects the appropriate CMake preset, and runs the full configure + build pipeline.
# Auto-detect platform, architecture, and preset — builds engine in debug mode
./scripts/build.sh

# Specify a target and configuration explicitly
./scripts/build.sh --target editor --config release

# Force a specific preset and clean the build directory first
./scripts/build.sh --preset editor-linux-arm64-debug --clean
OptionDescription
--targetengine, editor, or runtime
--configdebug or release
--presetOverride auto-detection with an exact preset name
--cleanRemove the build directory before configuring

Build steps

1

Configure

Run the CMake configure step using a preset. Presets are defined in CMakePresets.json and cover all combinations of target, platform, architecture, and build type.
cmake --preset <preset-name>
For example, to configure the editor for Linux x64 in debug mode:
cmake --preset editor-linux-x64-debug
2

Build

Run the build step using the same preset name.
cmake --build --preset <preset-name>
Continuing the example above:
cmake --build --preset editor-linux-x64-debug
Build output is placed in build/<preset-name>/. For example, the Linux x64 debug editor outputs to build/editor-linux-x64-debug/.
3

Run

After a successful build, run the resulting binary from the build output directory. The binary name matches the target you built (Engine, Editor, or Runtime).
./build/editor-linux-x64-debug/Editor

Platform-specific commands

Windows builds use the Visual Studio 17 2022 generator. You can build from the command line using CMake presets or open the project directly in Visual Studio.
# Configure and build the editor in debug mode
cmake --preset editor-windows-x64-debug
cmake --build --preset editor-windows-x64-debug

# Configure and build the runtime in release mode
cmake --preset runtime-windows-x64-release
cmake --build --preset runtime-windows-x64-release

Available presets

The table below lists all non-hidden presets defined in CMakePresets.json.
Preset nameTargetPlatformArchConfig
engine-windows-x64-debugEngineWindowsx64Debug
engine-windows-x64-releaseEngineWindowsx64Release
editor-windows-x64-debugEditorWindowsx64Debug
editor-windows-x64-releaseEditorWindowsx64Release
runtime-windows-x64-debugRuntimeWindowsx64Debug
runtime-windows-x64-releaseRuntimeWindowsx64Release
engine-linux-x64-debugEngineLinuxx64Debug
engine-linux-x64-releaseEngineLinuxx64Release
engine-linux-arm64-debugEngineLinuxARM64Debug
engine-linux-arm64-releaseEngineLinuxARM64Release
editor-linux-x64-debugEditorLinuxx64Debug
editor-linux-x64-releaseEditorLinuxx64Release
editor-linux-arm64-debugEditorLinuxARM64Debug
editor-linux-arm64-releaseEditorLinuxARM64Release
runtime-linux-x64-debugRuntimeLinuxx64Debug
runtime-linux-x64-releaseRuntimeLinuxx64Release
engine-android-arm64-debugEngineAndroidarm64-v8aDebug
engine-android-arm64-releaseEngineAndroidarm64-v8aRelease
runtime-android-arm64-debugRuntimeAndroidarm64-v8aDebug
runtime-android-arm64-releaseRuntimeAndroidarm64-v8aRelease

Key CMake options

You can pass these options to cmake --preset via -D flags to override preset defaults.
OptionDescriptionDefault
PRISMA_BUILD_EDITORInclude the ImGui editor applicationOFF (most presets)
PRISMA_BUILD_SHARED_LIBSBuild the engine as a shared libraryON (debug), OFF (release)
PRISMA_USE_FETCHCONTENTDownload dependencies via CMake FetchContentON
PRISMA_ENABLE_RENDER_VULKANEnable the Vulkan rendering backendPlatform-dependent
PRISMA_ENABLE_RENDER_DX12Enable the DirectX 12 rendering backendON (Windows base)
PRISMA_ENABLE_AUDIO_SDL3Enable the SDL3 audio backendON (Linux/Android)
PRISMA_ENABLE_IMGUI_DEBUGEnable ImGui debug overlaysON (debug builds)
PRISMA_USE_NATIVE_AUDIOUse platform-native audio instead of SDL3ON
PRISMA_USE_NATIVE_INPUTUse platform-native input instead of SDL3ON

Build docs developers (and LLMs) love