Skip to content

Latest commit

 

History

2,838 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spark Engine

A C++23 open-source 3D game engine with multiple graphics backends behind a shared RHI surface, ECS (EnTT), Jolt Physics, AngelScript scripting, and an ImGui-based editor. Originally built around first-person shooters, it now includes genre templates for RPGs, MMOs, RTS, racing, open-world, and platformers.

🌐 Website now live: sparkengine.dev

Build SparkEngine Test definitions C++ lines of code Source files Lifetime downloads Installer downloads License: Spark Open Discord


Getting Started

Rolling Windows artifacts may be published for development evaluation. They are not a versioned release and do not certify stable-v1. Development artifacts may carry checksums and provenance attestations, but no versioned Shipping-configuration artifact has same-commit qualification across the required install, upgrade, rollback, and release gates. "Release" in an asset name denotes the build configuration only. Debug builds include additional runtime diagnostics. The bootstrap installer clones and builds the selected engine revision locally.

Windows Release Installer Windows Release ZIP Windows Debug Installer Windows Debug ZIP Bootstrap Installer

Current rolling artifacts and checksums · installer documentation

Build from source:

git clone --recurse-submodules https://github.com/Krilliac/SparkEngine.git
cd SparkEngine

# Windows
.\generate.bat -g "Visual Studio 17 2022" release
.\build.ps1 -config Release -editor -angelscript

# Linux / macOS
./generate.sh release -g Ninja
./build.sh release

Visual Studio and Ninja Multi-Config builds keep binaries isolated under build/bin/<Config> (for example, build/bin/Release/SparkEditor.exe).

Requirements: MSVC 19.36+ / GCC 13+ / Clang 17+, CMake 3.25+.
See TROUBLESHOOTING.md for build issues.

Create a game module:

cmake --install build --prefix ~/SparkEngine-install
cp -r Templates/EmptyProject MyGame && cd MyGame
cmake -B build -DCMAKE_PREFIX_PATH=~/SparkEngine-install
cmake --build build --config Release
# This template builds a module library; it does not create ./SparkEngine.
# Launch it through an existing staged/packaged SparkEngine host instead:
<path-to-existing-SparkEngine-host> -game <path-to-built-module>

See Templates/README.md and SparkTemplates.


Editor

SparkEditor — Veyra Highlands region-map workflow

The SparkEditor source inventory contains 65 *Panel.h classes spanning scene construction, asset and shader workflows, profiling, multiplayer operations, collaboration, dedicated servers, world streaming, and live region design. That file count is not a claim that every class is registered, visible by default, or certified by stable-v1.

More screenshots
Screenshot Description
Editor overview Docked scene, hierarchy, inspector, console, and asset-browser workspace
Welcome Welcome screen and project setup
Windows Panel layout — Scene, Inspector, Asset Browser, Shader Graph, Sequencer
GameObject Component editing and drag-drop
FPS FPS-specific tools — weapon editor, damage model, HUD builder

Live Template Showcase

These are direct 1904×1041 captures from the current SparkEngine runtime. Each project also has alternate wide and detail views under docs/images/model-pipeline.

First Person Third Person Top Down
FPS Starter live arena Third Person Starter live portal course Top Down Starter live combat arena
RPG MMO Multiplayer Arena
RPG Starter live village MMO Starter live frontier Multiplayer Arena live map
Platformer Blank 3D Empty Project Runtime Preview
Platformer Kit live course Blank 3D live material stage Empty Project live origin preview
Full breadth and detail captures for every template
Template Wide view Detail view
FPS Starter FPS Starter wide arena FPS Starter target detail
Third Person Starter Third Person Starter wide portal course Third Person Starter portal detail
Top Down Starter Top Down Starter wide combat arena Top Down Starter combat detail
RPG Starter RPG Starter wide village RPG Starter village detail
MMO Starter MMO Starter wide frontier MMO Starter frontier detail
Multiplayer Arena Multiplayer Arena wide map Multiplayer Arena tactical detail
Platformer Kit Platformer Kit wide course Platformer Kit obstacle detail
Blank 3D Blank 3D wide material stage Blank 3D material detail
Empty Project Empty Project wide runtime preview Empty Project origin detail

Features

Rendering

Six backends via a shared RHI abstraction:

Support words below are the stable-v1 release-profile classifications from docs/site/readiness.json; see Platform support.

Backend Declared support
DirectX 11 In stable-v1 — primary implementation path; profile blocked and uncertified
DirectX 12 Outside stable-v1 — experimental; mesh shaders, DXR ray tracing, VRS
Vulkan 1.4 Outside stable-v1 — experimental; Linux and Windows
OpenGL Outside stable-v1 — experimental; the Linux RHI bootstrap requests 4.5, SDL host/editor contexts request 3.3, and the macOS fallback is capped at 4.1. Mesa llvmpipe is a development-only software route when explicitly selected and configured, not an automatic fallback
Metal Outside stable-v1 — experimental; macOS, in progress
NullRHI In stable-v1 — no-render path on Windows 11 x64; profile blocked and uncertified

Render features include PBR materials, global illumination (DDGI, Adaptive Probe Volumes, hybrid ray tracing), forward/deferred/clustered render paths, cascaded shadow maps, GPU-driven rendering (compute frustum culling, indirect draw), virtual texturing, mesh shaders, DXR 1.1, FSR upscaling, and a 35-node Shader Graph. Post-processing covers bloom, HDR tone mapping (Reinhard/ACES/Uncharted 2), TAA, FXAA, MSAA, depth of field, motion blur, volumetric fog, lens flares, and light shafts.

Physics

Jolt Physics with rigid bodies (static/kinematic/dynamic), 15 collision shapes, 12 constraint types, raycasting, sphere/box overlap, shape casting, vehicles (wheeled/tracked), ragdolls, cloth, soft bodies, and destruction. Supports deterministic mode for replays and multiplayer.

Audio

The active backend selection is XAudio2 on Windows or OpenAL on non-Windows hosts, with NullAudio as the final silent fallback. Distance attenuation, Doppler, pitch/volume control, master/SFX/music channels, and an object pool for source management are implemented on the real backends.

Scripting

  • AngelScript — hot-reload via file watcher, bindings for selected engine APIs, per-file module isolation, client/server context separation
  • Visual scripting — 64 node palette entries across 9 categories, compiles to AngelScript and uses the existing script runtime
  • Shader Graph — 35+ nodes, HLSL generation, live preview

AI and Navigation

Behavior trees with blackboard, Recast/Detour NavMesh with dynamic obstacles, EQS for tactical point queries, steering behaviors (seek/flee/pursue/flock), perception (vision cones, hearing, threat memory), cover detection, formation movement, group coordination, and an AI budget limiter supporting 100+ simultaneous agents.

Networking

UDP client/server with entity replication, dirty property tracking, client-side prediction, server reconciliation, and lag compensation (hitbox rewinding, 1-second history). Message channels: Unreliable, Reliable, ReliableOrdered. Delta snapshot compression, network statistics (ping, jitter, packet loss, bandwidth). MMO-scale architecture: AreaServer + WorldServer, entity migration across server instances, per-area session management, load balancing.

ECS and Gameplay

EnTT-backed ECS with 75+ component types. Includes: FPS weapons, damage model, HUD; vehicle physics; inventory, quests, achievements, dialogue trees; ability/cooldown/trigger system; destructible objects; replay record/playback; day/night cycle; weather; 2D/sprite rendering; tween system; async coroutine scheduler; save/load with ECS-aware serialization; async database-backed persistence.

Large worlds: Source includes area-streaming and floating-point origin-rebasing implementations. "No load screens" and "100K+ entities per area" are design/load-test targets, not stable-v1 evidence; the 100K entity-flood test validates entity-count correctness rather than per-area throughput or release performance.

Editor (65 panel header classes)

Scene hierarchy, Inspector, Asset browser, Game viewport, Gizmos (ImGuizmo), Node graphs (imnodes), Animation timeline, Material editor, Visual script editor, Terrain editor, Weapon editor, Profiler, AI debugger, Physics debug overlay, Cinematic sequencer, Dialogue editor, Ability/condition editors, Destruction editor, 2D/tilemap editors, Audio mixer, Replay panel, Save system panel, Dedicated server panel, Version control integration, Build/deployment pipeline, Level streaming, Command palette (Ctrl+P), Prefab system, Event monitor, Coroutine debugger, Collaboration panel (multi-user with node locking and presence), and more. Collaboration, visual scripting, and their service paths are experimental and outside stable-v1; rotate/scale gizmo behavior and full undo/redo certification remain open.

Game Module Templates

Nine in-tree template projects load as .dll/.so modules at runtime. All nine templates are outside stable-v1. Separately, GameModules/SparkGameFPS is the blocked in-profile slice and does not yet build independently against the installed SDK:

Template Highlights
Empty Project Clean authoring world plus an explicit runtime-origin preview
Blank 3D Camera controls, material studies, reusable primitive stage
FPS Starter Weapons, damage, ammo, crosshair, target range
Third Person Starter Character movement, pickups, portal objectives
Top Down Starter Click-to-move combat, enemies, arena objectives
RPG Starter Village exploration, dialogue, quests, inventory, abilities
MMO Starter Player sessions, frontier objectives, area-ready gameplay
Platformer Kit Gravity, sprinting, jumping, hazards, checkpoints
Multiplayer Arena Teams, scoring, sudden death, symmetric tactical cover

Quality Assurance

Tests: 6,966 test definitions across 576 files covering core utilities, ECS, physics, AI, animation, networking, gameplay, graphics, editor, and 50+ other subsystems.

ctest --test-dir build -C Release --output-on-failure --no-tests=error
# `SparkEngineTests` is the registered native-test aggregate. `TestPhysics`
# is a source-test family, not a CTest registration name.
ctest --test-dir build -C Release -R "^SparkEngineTests$" --output-on-failure --no-tests=error

Sanitizer CI jobs:

Suite Detects
ASan + UBSan + LSan Buffer overflows, use-after-free, UB, memory leaks
TSan Data races, deadlocks
MSan Reads of uninitialized memory

Run locally:

cmake -B build-asan -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON \
  -DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer"
cmake --build build-asan && ./build-asan/bin/SparkTests

When a workflow uploads sanitizer or coverage results, they are available from that run on the GitHub Actions page. The primary Windows, Linux, and macOS lanes also retain granular JUnit XML, machine-readable JSON totals, runtime, and slow-test tables. CI rejects a missing, empty, malformed, failed, or suspiciously under-registered test run; the badge above remains explicitly source-definition based rather than claiming that every platform executed the same feature-gated cases.


Build Configuration

Key CMake options:

Option Default Description
ENABLE_GRAPHICS ON Declared option, but currently not consumed by target/source selection; setting it OFF does not strip the RHI
ENABLE_EDITOR ON ImGui editor
ENABLE_NETWORKING ON UDP multiplayer
ENABLE_VULKAN ON Vulkan backend
ENABLE_OPENGL ON OpenGL backend
ENABLE_METAL ON on macOS; OFF elsewhere Metal backend
ENABLE_DXR ON Ray tracing
ENABLE_VR OFF VR/AR
ENABLE_MOBILE OFF Mobile features
BUILD_TESTS ON Test suite
BUILD_GAME_MODULES ON 11 in-tree game modules
ENABLE_SERVER_PROCESSES ON Dedicated server, MMO gateway, daemon orchestration, and collaboration processes
ENABLE_ASSET_PIPELINE_TOOLS ON Deterministic asset cooker and isolated worker
ENABLE_AUTOMATION_HOST ON Black-box runtime automation and CI result host

Development headless run (no editor window; this does not compile the RHI out):

cmake -B build -DENABLE_EDITOR=OFF
cmake --build build --config Release
./build/bin/SparkEngine -headless -game <module-path>

ENABLE_GRAPHICS=OFF is currently inert. Compile-time graphics removal remains unproven; the headless entry points use runtime wiring and HEAD-220 is open.


System Requirements

These are build and development minima — what it takes to configure, compile, and run from source. They are deliberately broader than the supported release surface and are not a support claim: the only declared release profile is stable-v1 (Windows 11 x64), described under Platform support below. Everything else in this table is experimental or uncertified.

Minimum Recommended
OS (build floor, not stable-v1) Windows 10 / Ubuntu 24.04 / macOS 12+ Windows 11 / Ubuntu 24.04
Compiler MSVC 19.36, GCC 13, Clang 17 MSVC 19.36+, GCC 13+, Clang 17+
C++ C++23 C++23
GPU Any DirectX 11 capable RTX 2080+ for ray tracing
RAM 4 GB 16 GB
Storage 5 GB 10 GB with all game modules
Build tools CMake 3.25+ CMake 3.25+, Ninja

The stable-v1 contract targets the no-render NullRHIDevice path on Windows 11 x64, but the current Windows and SparkServer headless entry points pass a null graphics service and do not instantiate it (HEAD-220 remains open). NullRHI itself rasterizes no pixels; use on every other host remains uncertified.

Platform support. SparkEngine declares exactly one release profile, stable-v1: Windows 11 x64, the MSVC v143 toolset line, Direct3D 11, NullRHI for headless execution, C++ gameplay modules, and one installed first-party single-player vertical slice — GameModules/SparkGameFPS — plus the required Windows editor, console, cooker, launcher, installer, and other build products enumerated by the contract. The profile, its boundaries, its required gates, and its evidence are owned by docs/site/readiness.json and rendered into the engine-readiness handoff. Every support word below is that contract's classification, not a separate claim.

stable-v1 is currently blocked and nothing in it is certified. In particular: the first-party slice is in scope but its release state is blocked, and it still builds against the engine library and source tree rather than the public SDK alone (SDK-240, MOD-310); and the v143 line names a supported toolchain family, not a pinned one — no exact MSVC compiler build or Windows SDK version is pinned, and the hosted image floats, so the toolchain is neither reproducible nor certified (BLD-100, PLT-200, CI-120).

Breadth is frozen around that shape. Linux, macOS, D3D12, Vulkan, OpenGL, Metal, multiplayer, production services, and the prototype game modules all keep their own open work, but that work does not gate stable-v1 — and stable-v1 certifies none of them. They stay labelled experimental or unsupported until a profile declares them.

Windows 11 x64 is the profile's only host. The profile remains blocked and uncertified.

The build minima in the table above describe development floors, not release certification. Windows 10 x64, Linux, and macOS remain development paths and are uncertified.

Platform Compiler Backend Declared support
Windows 11 x64 MSVC v143 (VS 2022) DirectX 11 In stable-v1 — primary implementation path; blocked and uncertified
Windows 11 x64, headless MSVC v143 (VS 2022) NullRHI (no-render) target In stable-v1 — current host wiring still passes nullptr (HEAD-220); blocked and uncertified
Windows 10 x64 MSVC v143 (VS 2022) DirectX 11 Outside stable-v1 — documented build floor, uncertified
Windows, any version MSVC v145 (VS 2026) DirectX 11/12 Outside stable-v1 — advisory CI lane only
Linux GCC 13+ / Clang 17+ Vulkan/OpenGL Outside stable-v1 — experimental, CI tested
macOS Apple Clang Metal Outside stable-v1 — experimental
Headless on any other host GCC / Clang / MSVC NullRHI (no-render) Outside stable-v1 — uncertified

Documentation

Resource Description
TROUBLESHOOTING.md Startup issues, debug commands, common fixes
Feature Roadmap Planned features
Project Status System status, recent changes
API Reference Auto-generated symbol indexes, class hierarchy
Packaging Guide Install layout, components, versioning
External Services & Orchestration Dedicated hosting, gateway, daemon supervision, and collaboration
Offline Cooking & Automation Deterministic asset builds, workers, pak inspection, and runtime smoke tests
Versioned Plugin ABI Versioned C plugin boundary, sidecar integrity, tasks, and hot reload
Game Module Guide Building standalone games with the SDK
Networking Config UDP, replication, MMO server setup
Wiki 198 Markdown pages in the current source inventory (excluding _Sidebar.md); inventory is not support/readiness evidence
DeepWiki Community knowledge base

Architecture

Execution order: Physics → Animation → AI → Audio → Lifecycle → Render

SparkEngine/
├── SparkEngine/Source/
│   ├── Core/              Platform.h, EngineContext.h
│   ├── Graphics/          RHI (6 backends), RenderGraph, GI
│   └── Engine/
│       ├── ECS/           75+ component types
│       ├── AI/            BehaviorTree, NavMesh, EQS
│       ├── Animation/     Skeletal, IK, Sequencer
│       ├── Networking/    UDP, Area/World Servers
│       ├── Scripting/     AngelScript, Visual Scripting
│       ├── Gameplay/      Weapons, Quests, Inventory
│       └── 20+ other systems
├── SparkEditor/Source/    65 *Panel.h classes, collaboration
├── SparkConsole/src/      Standalone debug console
├── GameModules/           11 in-tree module directories
├── Tests/                 6,966 test definitions, 576 files
├── wiki/                  198 Markdown pages excluding _Sidebar.md (inventory only)
└── docs/                  API reference, guides

Contributing

  1. Fork the repository and create a feature branch
  2. Follow the coding standards in CLAUDE.md — C++23, zero warnings, RAII, const-correct
  3. Add tests for new functionality
  4. Run clang-format (enforced in CI) and ensure all tests pass
  5. Open a pull request — one feature per PR

Questions and bug reports: GitHub Issues
Discussion: Discord
Documentation: Wiki

Thanks to the Jolt Physics, Dear ImGui, EnTT, Khronos (Vulkan/OpenGL), and AngelScript teams.


License

Spark Open License 1.0 — no royalties, no fees, use for any purpose (commercial or otherwise), modify and redistribute freely.

This project makes use of AI-assisted development. All AI-generated code is reviewed and tested before merging.

About

A free, open-source C++23 3D game engine for FPS and beyond — DirectX 12, Vulkan, Jolt Physics, ECS, ImGui editor, AngelScript scripting

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

29 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages