Repository navigation
Migration Guide
How to migrate between SparkEngine source revisions and handle breaking changes.
No versioned stable release currently establishes a public compatibility policy;
the declared stable-v1 profile remains blocked and uncertified.
Source headers carry MAJOR.MINOR.PATCH fields and GetSDKVersion() values for loader and source-migration checks. Until a versioned release exists, those fields are versioned but uncertified: they do not promise public source, SDK, or binary compatibility across Working revisions.
- MAJOR — Source changes may include breaking API changes (for example, removed public methods or changed signatures)
- MINOR — Source changes may add features
- PATCH — Source changes may include fixes or documentation updates
Check the current engine version via IModule::GetSDKVersion() or the SPARK_ENGINE_VERSION macro in SparkSDK/SparkSDK.h.
| Component | Stability |
|---|---|
| SparkSDK public headers | Versioned source interface; rebuild against the target revision; no released SDK stability promise |
| IModule interface | Loader SDK-version check; rebuild for the target revision; no released ABI promise |
| Wire format (networking) | Source-versioned where specified; uncertified until a release contract exists |
| Asset formats | Source-versioned where specified; validate migration against the target revision |
| Plugin ABI | Source ABI fields/checks; rebuild against target headers; no released ABI stability promise |
| Internal engine headers | No stability guarantee |
| Console commands | May change between minor versions |
A breaking change is any of the following:
- Removing or renaming a public method/class in
SparkSDK/ - Changing the signature of a virtual method in
IModule,IRHIDevice, orITransport - Changing the networking wire format without a version bump
- Changing the asset binary format without migration support
- Removing a CMake option or changing its default value
Until a versioned release policy exists, treat any such source change as a migration trigger: pin the target revision, rebuild consumers, and validate them there. Working documentation may record known changes, but it does not establish release-note, deprecation-period, or stable-compatibility guarantees.
SparkEngine uses deprecation macros:
// Deprecated method — will be removed in next major version
SPARK_DEPRECATED("Use NewMethod() instead")
void OldMethod();When you see deprecation warnings:
- Read the deprecation message for the replacement API
- Update your code to use the new API
- Test with the new API before upgrading
Asset files contain a version header. When the engine loads an asset:
- It reads the version from the file header
- If the version is older than current,
AssetMigrationruns automatic upgrade - Upgraded assets are written back to disk (or cached in memory)
See SparkEngine/Source/Core/AssetMigration.h for the migration registry and docs/specs/asset-format.md for format details.
spark_console asset.reimport_all
Game modules (DLLs) are loaded dynamically. Current source uses SDK/ABI version checks to reject incompatible combinations; it does not certify a stable public SDK, IModule, or plugin ABI before a versioned release. For a source migration, keep these build constraints aligned:
- Same compiler family and major version (e.g., MSVC v143)
- Same C++ standard library
- Same
IModuleinterface version (checked at load time)
When moving to another source revision:
- Record the target commit and check
IModule::GetSDKVersion()against that engine - Recompile all game modules and plugins against the target SDK headers
- Run the registered
SparkEngineTestsaggregate for that configuration:ctest --test-dir build -C Release -R "^SparkEngineTests$" --output-on-failure --no-tests=error. There is noGameModuleCTest suite name; use this registered aggregate or invokeSparkTestsdirectly with its documentedSPARK_TEST_FILEorSPARK_TEST_NAMEfilters when narrowing a diagnosis.
See docs/specs/plugin-abi-guide.md for the current source ABI layout, not a release compatibility guarantee.
- Back up your project (or ensure clean git state)
- Read the release notes for all versions between current and target
- Note any breaking changes or deprecations
- Update engine source to the chosen commit or versioned-but-uncertified source snapshot
- Update SparkSDK headers in your project
- Fix any compilation errors from removed/changed APIs
- Address deprecation warnings
- Re-run
cmake --preset <your-preset>to pick up new options - Rebuild:
cmake --build build --config Release
- Run all tests:
ctest --test-dir build -C Release --output-on-failure --no-tests=error - Run your game module tests
- Test asset loading — watch for migration warnings in the log
- Verify networking compatibility if running multiplayer
- Check console commands still work (some may have been renamed)
- Update any custom build scripts or CI pipelines
Until versioned releases are published, use the repository changelog and compare the exact source commits being migrated.
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