Overview
The mod preview feature allows you to view Spine animations for character mods before syncing them to the game. This helps you verify that mods look correct and make informed decisions about which mods to enable.How it works
The mod preview uses an external tool called BD2ModPreview to display Spine animations. This approach is necessary because:- Python doesn’t have a native Spine runtime
- Embedding a web-based preview would add ~100MB to the app size (via QtWebEngine/Chromium)
- A standalone executable keeps the main app lightweight and fast
src/services/mod_preview.py:10-14:
BD2ModPreview tool
The preview tool is a separate executable (BD2ModPreview.exe) that:
- Loads Spine animation files from mod folders
- Renders animations in real-time
- Supports playback controls (play, pause, loop)
- Displays multiple animations if available
Tool location
The manager looks for the preview tool in two locations (seesrc/services/mod_preview.py:22-28):
- User tools directory - For updated versions:
user_tools/BD2ModPreview.exe - Bundled tools directory - Fallback to bundled version:
tools/BD2ModPreview.exe
Previewing mods
View animation
The BD2ModPreview tool launches in a separate window and loads the mod’s Spine animation.
What can be previewed
The preview feature works with mods that contain Spine animation data:Supported mod types
- Idle mods - Character idle stance animations
- Cutscene mods - Character cutscene animations
- Dating mods - Dating scene character animations
- NPC mods - NPC character animations (if they have Spine data)
Preview requirements
For a mod to be previewable, it must contain:- Spine skeleton data (
.skelor.jsonfiles) - Spine atlas files (
.atlasor.atlas.txt) - Associated texture images (PNG files)
Launching the preview
The preview is launched as a separate process (seesrc/services/mod_preview.py:44-52):
Preview tool version
The manager can check the BD2ModPreview version (seesrc/services/mod_preview.py:30-42):
- Display the current preview tool version
- Notify users when updates are available
- Troubleshoot compatibility issues
Error handling
The preview feature handles common errors:Tool not found
If BD2ModPreview.exe is missing:Launch failure
If the tool fails to start:- Check that the mod folder exists and contains valid Spine data
- Ensure you have permissions to execute the preview tool
- Verify that required DLL files are present
Invalid mod data
If the preview tool opens but shows errors:- The mod may be corrupted or incomplete
- Spine files may be in an unsupported format
- Required texture files may be missing
Preview from mod manager
The preview request is triggered from the mod manager controller (seesrc/controllers/mod_manager_controller.py:86):
- User clicks preview in the view
- View emits
modPreviewRequestedsignal - Controller forwards the signal
- Main application launches BD2ModPreview with the mod path
Benefits of previewing
Verify mod quality
Preview animations to ensure:- Animations play smoothly
- Character appearance matches expectations
- No visual glitches or missing textures
- Multiple animation variants (if included)
Compare mods
Preview multiple mods for the same character to:- Choose your favorite version
- Compare different artists’ styles
- Decide which mods to keep enabled
Test before syncing
Preview new mods before enabling them:- Add a new mod to the manager
- Preview it without enabling
- Enable and sync only if you like it
- Save time by avoiding unnecessary syncs
Updating BD2ModPreview
Keep the preview tool up to date:Check current version
The mod manager may display the BD2ModPreview version in settings or about dialog.
Download latest version
Download the latest BD2ModPreview from the official releases or community sources.
Place in user tools directory
Copy
BD2ModPreview.exe to the user tools directory. The manager will automatically use this version instead of the bundled one.Technical details
The preview system uses:- Subprocess module - Launches BD2ModPreview as a separate process
- Path validation - Ensures mod folder exists before launching
- Error signals - Communicates errors back to the UI via Qt signals
- Version checking - Executes
--versionflag to get tool version