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.

Prisma Engine builds on Linux for both x64 and ARM64 architectures. Vulkan is the primary rendering backend on Linux; OpenGL is listed as a fallback but is not the recommended path. All presets use the Ninja generator, and an auto-detect script (scripts/build.sh) lets you build without remembering preset names. The PacMan demo ships with dedicated build, run, and package scripts that work out of the box on both architectures.
Linux CMake presets are defined and functional for x64 and ARM64, but the Vulkan renderer on Linux is still undergoing validation. Expect rough edges in edge cases.

Requirements

  • GCC 11+ or Clang 13+ — both support the C++20 features used by the engine
  • CMake 3.20 or later
  • Ninja — required by all Linux presets (apt install ninja-build)
  • Vulkan SDK — install the libvulkan-dev package plus validation layers for development

Install Vulkan

sudo apt install libvulkan-dev vulkan-tools
To also install the validation layers (strongly recommended during development):
sudo apt install vulkan-validationlayers
The project downloads all other dependencies (SDL3, ImGui, GLM, VMA, vk-bootstrap, and others) via CMake FetchContent at configure time. No manual apt install is needed beyond the Vulkan SDK and Ninja.

Available presets

Linux presets cover both x64 and ARM64, and all three build targets.
Preset nameTargetArchConfig
engine-linux-x64-debugEnginex64Debug
engine-linux-x64-releaseEnginex64Release
engine-linux-arm64-debugEngineARM64Debug
engine-linux-arm64-releaseEngineARM64Release
editor-linux-x64-debugEditorx64Debug
editor-linux-x64-releaseEditorx64Release
editor-linux-arm64-debugEditorARM64Debug
editor-linux-arm64-releaseEditorARM64Release
runtime-linux-x64-debugRuntimex64Debug
runtime-linux-x64-releaseRuntimex64Release
runtime-linux-arm64-debug and runtime-linux-arm64-release presets are not listed above because they were not present in CLAUDE.md at the time of writing. Use the auto-detect script on ARM64 for runtime builds.

Build commands

The scripts/build.sh script detects your platform and architecture automatically, selects the matching preset, and runs both the configure and build steps.
# Auto-detect everything — builds engine in debug mode
./scripts/build.sh

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

# Force a specific preset and clean the build directory
./scripts/build.sh --preset editor-linux-arm64-debug --clean
OptionValues
--targetengine, editor, runtime, pacman
--configdebug, release
--presetAny preset name from CMakePresets.json
--cleanRemove the build directory before configuring

PacMan demo

The PacMan demo is a self-contained game that ships with the engine as a build target. It has its own isolated output directory separate from the editor builds.
1

Build

./scripts/build.sh --target pacman --config debug
Output path: build/pacman-linux-x64-debug/bin/PacManGame (x64) or build/pacman-linux-arm64-debug/bin/PacManGame (ARM64).
2

Run

./scripts/run-pacman.sh --config debug
3

Package

./scripts/package-pacman.sh --config release
Produces a tar.gz archive ready for distribution.
In environments without a connected display or GPU (CI runners, headless servers), PacMan automatically falls back to a text-based console view.

Rendering backend

Vulkan is the only actively supported rendering backend on Linux. The OpenGL backend exists as a compile-time option (PRISMA_ENABLE_RENDER_OPENGL) but is not the recommended path. Enable Vulkan explicitly if it is not already on in the preset you are using:
cmake --preset engine-linux-x64-debug -DPRISMA_ENABLE_RENDER_VULKAN=ON
cmake --build --preset engine-linux-x64-debug
GLSL shader sources shared with Android live in resources/common/shaders/glsl/. The Vulkan adapter implementation is in src/engine/graphic/adapters/vulkan/.

Cross-platform vs native mode

By default the engine uses native platform APIs where available. On Linux this means SDL3 for audio and input. You can switch individual subsystems:
# Use SDL3 audio instead of any native backend
-DPRISMA_USE_NATIVE_AUDIO=OFF

# Use SDL3 input instead of any native backend
-DPRISMA_USE_NATIVE_INPUT=OFF

Build docs developers (and LLMs) love