Repository navigation
FAQ
Common questions about SparkEngine — what it is, who it's for, and how to get started.
Release boundary: The only declared release profile is
stable-v1(Windows 11 x64, MSVC v143, D3D11, Windows NullRHI, C++ modules, and the SparkGameFPS single-player slice, plus the required Windows product set listed indocs/site/readiness.json, including SparkEditor and SparkConsole). It is blocked and uncertified. Platform, backend, scripting, networking, collaboration, and module descriptions below are implementation guidance unless that contract explicitly places them in profile.
SparkEngine is a free, open-source 3D game engine written in C++23. It started as an FPS engine and is evolving into a general-purpose engine with source implementations and prototypes for FPS, RPG, MMO, open-world, racing, platformer, and RTS genres. The repository includes DirectX 11 rendering, Jolt Physics, XAudio2 spatial audio, an EnTT ECS, an ImGui-based editor, and experimental AngelScript tooling outside stable-v1.
Yes. SparkEngine is licensed under the Spark Open License — no royalties, no fees, fully free for commercial use. The license includes anti-plagiarism protection to prevent wholesale copying without attribution.
| Platform | Status |
|---|---|
| Windows 11 x64 |
stable-v1 target — blocked and uncertified |
| Windows 10 x64 | Documented development floor — outside stable-v1
|
| Linux x64 | Experimental (GCC 13+, Clang 17+) — outside stable-v1
|
| macOS | Experimental (Apple Clang) — outside stable-v1
|
Windows is the primary development platform. Build or CI availability is not release certification; Linux, macOS, and Windows 10 remain outside stable-v1.
The repository contains example and prototype game modules for FPS, platformer, racing, RPG, RTS, and MMO work. They are source implementations, not released products; only the blocked and uncertified SparkGameFPS single-player slice is inside stable-v1. The ECS and gameplay systems can be extended for other genres without implying release support.
SparkEngine is smaller and earlier in development than those engines. Key differences:
- Open-source C++23 — You have full source access and can modify anything. No black-box runtime.
- No editor lock-in — Game logic lives in C++ modules or AngelScript scripts, not in a proprietary project format.
-
MMO-oriented experimental architecture — Area-server, world-streaming, and collaborative-editing implementations exist, but they are outside
stable-v1and are not authenticated-transport or deployment evidence. - Source-oriented — The repository builds locally from source; current release evidence does not establish a portable download-size or build-time budget.
- Trade-off — Fewer ready-made assets, smaller community, and less polish than mature engines.
C++ is the primary language, but you have options:
-
AngelScript (experimental) — A C-like scripting implementation with hot-reload; outside
stable-v1. -
Visual Scripting (experimental) — A node-based editor that targets AngelScript; outside
stable-v1. - C++ Modules — For full engine access, write a game module in C++23.
Artists and level designers can use the editor without writing code at all — see the Artist Workflow Guide.
- A C++23 compiler: MSVC v143+ (VS 2022), GCC 13+, or Clang 17+
- CMake 3.25+
- Git (for submodules)
See Getting Started for full platform-specific instructions.
Build time depends on the selected targets, toolchain, cache state, and host. No current stable-v1 evidence artifact establishes a certified clean or incremental build-time range.
Yes, through several distinct GPU-less development routes. They are not one automatic fallback contract:
| Backend | GPU-less route |
|---|---|
| D3D11 | WARP adapter route where explicitly selected/available |
| D3D12 | WARP adapter route where explicitly selected/available |
| Vulkan | Mesa Lavapipe CPU ICD when installed and selected by the host/runtime |
| OpenGL | Mesa llvmpipe when the host display/context is explicitly configured |
| None |
NullRHIDevice, a distinct no-render device that rasterizes nothing |
-headless selects the platform's no-graphics host entry for server or automation
development. The current host path does not instantiate NullRHIDevice; explicit
host wiring and evidence remain HEAD-220.
Use Xvfb (virtual framebuffer) with Mesa software rendering:
sudo apt-get install -y xvfb libgl1-mesa-dri
Xvfb :99 -screen 0 1024x768x24 &
DISPLAY=:99 LIBGL_ALWAYS_SOFTWARE=1 ./SparkEngineYou can disable the editor explicitly. The current minimal preset is not a general core-only profile: it disables networking and DXR, while several requested feature variables in that preset are currently inert and tracked by HEAD-220.
cmake --preset minimal # Reduced development preset; not a core-only contract
cmake -B build -DENABLE_EDITOR=OFF # Everything except editor| Argument | Description |
|---|---|
-headless / -dedicated
|
Run the host without a graphics window |
-game <path> |
Load a specific game module DLL/SO |
-window-size WxH |
Override window resolution (e.g., 1920x1080) |
-test-frames N |
Run N frames then exit (for benchmarking) |
-scene <path> |
Load a specific scene on startup |
--help / -h
|
Print the platform host's authoritative option list |
Build with ENABLE_EDITOR=ON and launch the separate SparkEditor executable.
The source does not define an F1 engine-overlay toggle. The repository inventory
currently contains 65 *Panel.h classes; registration and default visibility are
separate metrics.
The source tree includes 65 *Panel.h classes covering scene editing, asset
management, physics, gameplay, audio, scripting, profiling, and more. This
source-file inventory is not stable-v1 editor certification and does not mean
all classes are registered or shown by default. The 6 core panels shown by
default are:
- Scene View — 3D viewport with gizmos
- Hierarchy — Scene graph tree
- Inspector — Component property editor
- Asset Browser — File browser with thumbnails
- Console — Command and log panel
- Game View — In-game preview Additional registered panels are available from the Window menu. The source inventory is not itself a registration guarantee. See Editor Walkthrough for a practical guide.
An experimental collaborative-editing implementation exists outside stable-v1. One user hosts and others join; the path is not release or hostile-network evidence. See Collaborative Editing.
Create a dynamic game module that implements IModule, then select one module with -game, a manifest, or the staged executable-directory candidate rules. The runtime does not bulk-discover the source GameModules/ tree. See Creating a Game Module for a step-by-step guide, or Making Your First Game for a tutorial.
AngelScript is the experimental C-like scripting implementation. Its hot-reload path exists, but scripting is outside stable-v1 and is not release-certified.
An experimental Visual Scripting panel compiles node graphs to AngelScript. Both surfaces are outside stable-v1.
SparkEngine uses EnTT for its Entity Component System. Entities are lightweight IDs, components are plain data structs, and systems operate on component groups. A reproducible source inventory currently finds 79 component structs across 17 component headers; no canonical source-backed total is claimed for systems here. See Entity Component System.
The repository includes an experimental UDP client/server stack with replication, prediction, and lag compensation. It is unauthenticated and unencrypted, and multiplayer is outside the single-player stable-v1 profile. Use the Multiplayer Quick Start only for isolated development, then see Networking.
| Backend | Status | Platform |
|---|---|---|
| DirectX 11 |
stable-v1 target — blocked and uncertified |
Windows 11 x64 |
| DirectX 12 | Experimental — outside stable-v1
|
Windows |
| Vulkan | Experimental — outside stable-v1
|
Windows, Linux |
| OpenGL | Experimental — outside stable-v1
|
Windows/Linux implementation paths; Linux requests 4.5, while macOS uses its separate 4.1 system-context path |
| Metal | Experimental — outside stable-v1
|
macOS |
| NullRHI | No-render path; in-profile only on Windows 11 x64, blocked and uncertified | Host-dependent |
Where their platform gates and dependencies permit compilation, these backends
provide IRHIDevice implementations behind the RHI Abstraction
Layer. That common interface does not
establish complete renderer feature or behavioral parity between backends.
The source inventory includes forward, deferred, forward+, and clustered
pipelines; PBR materials; cascaded shadow maps; SSAO; SSR; volumetric fog;
bloom; HDR tone mapping; TAA/FXAA/MSAA; particles; decals; image-based
lighting; mesh-shader and GPU-driven paths; and dynamic quality scaling.
Availability, completeness, and parity vary by backend. Breadth beyond the
blocked D3D11 profile path is experimental and outside stable-v1.
Experimental DXR 1.1 and hybrid ray-tracing implementations are available on the D3D12 path (Windows, SM6.5+ GPU required). D3D12 and DXR are outside stable-v1. See DXR Raytracing and Hybrid Ray Tracing.
Jolt Physics — a modern, high-performance physics engine. It supports rigid bodies, 15 collision shapes, 12 constraint types, character controllers, vehicles, ragdolls, cloth simulation, and multithreaded job dispatch.
Yes. Use console commands:
physics_gravity 0 -9.81 0 # Set gravity
physics_timestep 0.01667 # Set fixed timestep
physics_debug on # Toggle debug visualization
physics_metrics # Show performance stats
Or edit [Physics] in settings.ini. See Configuration Reference.
The active backend factory selects XAudio2 on Windows, OpenAL on non-Windows development paths, and then Null when neither backend is available. Miniaudio may be linked elsewhere but is not the factory's cross-platform fallback.
An experimental Mod System handles discovery, load order, dependency checks, and enable/disable toggling. The editor's Modding Panel scans a mods directory, enables/disables mods, and reloads them through the engine ModSystem (it is no longer a placeholder), but mod delivery is outside stable-v1.
| Type | Formats |
|---|---|
| 3D Models | FBX, glTF/GLB, OBJ |
| Textures | PNG, JPG, TGA, DDS, HDR |
| Audio ingestion | WAV, OGG, MP3, FLAC are accepted/copied by AudioProcessor; it does not transcode them |
| Runtime audio playback | WAV is the implemented XAudio2/OpenAL loader format |
| Scenes |
.scene (JSON-based) |
See Asset Pipeline and Asset Format Specifications.
- Check that the selected development backend and host context are available (D3D11 on Windows; the Linux OpenGL path requests 4.5)
- Update GPU drivers
- Check
spark.logfor error messages - Try a Debug build for better error output
- Try
-headlessto rule out graphics issues
See Troubleshooting for a comprehensive list of known issues and fixes.
Check which job failed:
| Job | What it checks |
|---|---|
check-format |
clang-format compliance |
build-linux-gcc |
GCC compilation + tests |
build-linux-clang |
Clang compilation + tests |
build-linux-asan |
Memory safety (ASan + UBSan) |
build-windows-vs2022 |
MSVC v143 compilation (Ninja Multi-Config + sccache) + tests |
The VS2026 and macOS jobs are job-level advisory. MinGW is a manual
workflow_dispatch development lane rather than a required push gate. The
clang-tidy job is a dependency of required-ci-gate (even though individual
diagnostics may be advisory), so its job/configuration outcome is blocking. Note
that no branch protection or ruleset is active on Working today, so
required-ci-gate is a post-hoc publication gate rather than a merge gate
(CI-100). See
Contributing for the full CI overview.
- Troubleshooting — Common issues and fixes
- GitHub Issues — Bug reports and feature requests
- Engine console: type
helpto list all commands, orhelp <command>for details
- Getting Started — Build and run the engine
- Making Your First Game — Step-by-step game tutorial
- Quick-Start Tutorial — Your first 10 minutes
- Configuration Reference — All settings and commands
- Editor Walkthrough — Practical editor guide
- Performance Tips — Optimization guide
Published from 2b03dc797148. Edit the canonical source in wiki/.
- Documentation
- Docs route
- Wiki index
- Guides
- Tutorials
- Samples
- Examples
- API Reference
- API route
- Reference
- Build Guide
- Dependencies
- FAQ
- Changelog
- Roadmap
- Contributing
- Code of Conduct
- Home
- FAQ
- Getting Started
- Quick-Start Tutorial
- Making Your First Game
- Making Your First Multiplayer Game
- Artist Workflow Guide
- Editor Walkthrough
- Migration Guide
- How SparkEngine Works
- Architecture Overview
- Engine Architecture Flowchart
- Creating a Game Module
- Game Modules (catalog)
- Entity Component System
- Rendering and Graphics
- Physics
- Cloth Simulation
- Audio
- Input System
- Camera System
- Scripting with AngelScript
- Visual Scripting
- AI and Navigation
- Animation
- 2D Systems
- Networking
- Dedicated Server
- Multiplayer Quick Start
- Area Server Architecture
- Scene Management
- Large World Support
- Collaborative Editing
- Coroutine System
- Event System
- Event Response System
- Job System
- UI System
- UI Layout Extensions
- Localization
- Dialogue System
- Destruction System
- Replay System
- Achievement System
- Loading System
- Mod System
- Content Delivery
- Tween System
- Memory Integrity
- Gameplay Systems
- Terrain and Procedural Generation
- Save System
- Persistence System
- Day Night Cycle and Weather
- Cinematic Sequencer
- Runtime Prefabs
- SparkEditor
- Editor Tutorials
- SparkConsole
- SparkDaemon
- Shader Pipeline
- Asset Pipeline
- Asset Validation
- Asset Migration
- Game Packaging
- Online Services
- DataTable System
- Loot and Crafting System
- CSG System
- Font System
- Timer Manager
- Movie Render Pipeline
- HLOD and World Partition
- Remote Debug System
- Selection Manager
- Asset Dependency Graph
- Editor Automation
- File Watcher
- Project Templates
- System Requirements
- VR Support
- Mobile Platform
- Accessibility
- Platform Input
- Platform Certification
- Cross-Compilation: Wine Testing
- RHI Abstraction Layer
- D3D11 Backend
- D3D12 Backend
- Vulkan Backend
- OpenGL Backend
- Metal Backend
- DXR Raytracing
- Hybrid Ray Tracing
- Upscaling (DLSS/FSR)
- Render Graph
- Shader Graph
- GPU Particles
- GPU-Driven Rendering
- Volumetric Fog
- Volumetric Clouds
- Global Illumination
- Virtual Texturing
- Water Rendering
- Clustered Lighting
- Material System
- Post-Processing
- Shadow System
- Particle System
- Decal System
- Sky and Atmosphere
- Foliage System
- Mesh Shaders
- Neural Rendering
- Configuration Reference
- Performance Tips
- Benchmark Framework
- Threading Model
- Fuzz Policy and Parser Security
- Memory Safety
- Memory Management Patterns
- Build System and CMake Modules
- Profiler and Debugging
- Performance Profiling Guide
- Telemetry System
- Crash Reporting
- Golden Image Testing
- Utilities
- Testing
- Fuzz Policy and Parser Security
- Codebase Statistics
- Codebase Health
- Error Handling Patterns
- Hot Reload Overview
- Troubleshooting
- Contributing
- Workflow Patterns
- Build Optimizations
- CI Reproducible Builds
- GitHub API and PR Checks
- Git Rebase Conflicts
- Clang-Format
- Code Quality Violations
- AI Bloat Pattern
- MinGW + Wine Cross-Compilation
- Live Editor Testing
- Engine & Renderer Landscape
- DuetOS Portability Catalog
- Five-Engine Analysis
- Eleven-Engine Analysis
- ThorVG / Unity Graphics Analysis
- Advanced Techniques Catalog
- Third-Party Library Evaluation
- Engine Viability Evaluation
- Engine Feature Recommendations
- Project Recommendations
- Mac Compatibility Analysis
- Codebase Observations
- Codebase Bloat Audit
- Test Suite Audit
- Documentation Coverage Audit
- ThirdParty Dependencies Audit
- Load Test Baseline
- Gameplay Systems Status
- SparkGame Module Status
- Stub and Abandoned Features
- Memory Integrity System
- Memory Safety Evaluation
- Hardware Acceleration Systems
- Jolt Physics Integration
- GPU/CPU Separation Plan
- Daemon Services Architecture
- Reflection & Polymorphism Refactoring Plan
- SparkBuild In-Tree
- Wine No-JobSystem Breakthrough
- Wine Role and Fallback Tiers