HUB Core
The foundation module that makes everything work together seamlessly, handling all the technical details so you can focus on creating your story.
- Universal Font Fallback System
- Automatic Module Detection
- Unified Dashboard Interface
- Cross-Module Compatibility
Achievements Core
Reward players with achievements that celebrate their journey through your story, featuring Steam integration and custom icons.
- Steam Auto Integration
- Custom Achievement Icons
- Hidden Achievements
- Progress Tracking
Gallery Core
Create a gallery where players can revisit scenes, organized by chapters with advanced filtering and search capabilities.
- Multi-Chapter Organization
- Category Tag Filtering
- Intelligent Layout System
- Favorites Integration
Music Player
Professional music player with interactive controls, category organization, favorites system, and clickable progress bars.
- MusicRoom Integration
- Category Organization
- Favorites System
- Play Statistics
Favorites Plus
Smart system that captures scenes automatically and lets players organize them with custom tags and categories.
- Universal Screen Capture
- Intelligent Content Detection
- Smart Tagging System
- View Counter Tracking
TBA
Exciting new module coming soon to expand your visual novel development toolkit.
- Advanced Features Coming
- Enhanced Integration
- Developer-Friendly Design
- Stay Tuned for Updates
TBA
Another innovative module in development to further enhance your visual novel projects.
- Powerful New Capabilities
- Seamless SHARDS Integration
- Professional Quality Features
- Coming Soon
HUB Core
Overview
HUB Core is the foundation module that makes everything work together seamlessly. It handles technical details like font management and module detection, allowing you to focus on creating your visual novel.
Features
- Universal Font System - Works with any gui.rpy setup with intelligent fallbacks
- Smart Module Detection - Automatically finds and organizes SHARDS modules
- Unified Dashboard - Single interface that shows all modules
- Icon Management - Consistent icons across all modules
- Easy Integration - Add to your main menu with one line of code
The module is designed to be self-contained with minimal configuration required.
Basic Usage
Main Menu Integration
Add these to your main menu screen:
Module Detection
Enhanced Font System
The font system intelligently finds and uses the best available fonts with multiple fallback options, including specialized font functions for different use cases:
Enhanced Fallback System:
gui.interface_text_font- Your existing GUI setupgui.text_font- Alternative GUI font- New!
/Fonts/folder - Your main fonts directory /fonts/folder - Original fallback location/SHARDS_Hub/Fonts/- Module-specific fonts/font/and/Font/- Additional fallback folders- None (uses Ren'Py default)
Specialized Font Collection:
The system now includes specific fonts with intelligent fallbacks:
- Cinzel-Regular.ttf - Elegant serif for titles and headings
- CalSans-Regular.ttf - Modern geometric display font
- ReadexPro-ExtraLight.ttf - Clean, readable font for body text
- Inter-Regular.ttf - Priority interface font
- Roboto-Regular.ttf - Secondary priority font
- OpenSans-Regular.ttf - Clean web-safe option
- NunitoSans-Regular.ttf - Friendly sans-serif alternative
- SourceSansPro-Regular.ttf - Professional coding font
Google Material Design Icons:
The system integrates Google Material Design icons for modern, consistent UI elements throughout all modules, providing a professional and cohesive visual experience.
Supported Formats:
TTF, OTF, WOFF, WOFF2 - all the modern font formats you need!
Universal Notification System
New in this version! HUB Core includes a centralized notification overlay system that provides consistent, beautiful notifications across all SHARDS modules. This system replaces individual module notification systems with a unified approach.
Notification Types:
- Achievement - Gold color (#FFD700) for achievement unlocks
- Scene Unlock - Purple color (#9B59B6) for gallery scene unlocks
- Favorite - Teal color (#4ECDC4) for favorite additions
- General - White color for custom notifications
Notification Functions
Visual Design:
- Elegant Animation - Smooth slide-in from top with fade
- Color-Coded - Each notification type has distinct colors
- Consistent Styling - Uses SHARDS Hub font system
- Customizable Duration - Control how long notifications display
- Background Support - Custom background images supported
Module Integration
All SHARDS modules automatically use this notification system when available:
Developer Notes:
The notification system provides backwards compatibility - modules will fall back to simple renpy.notify() if the notification system isn't available, making it safe to use in any configuration.
API Reference
Core Functions
Advanced Usage
Custom Module Detection
If you're building your own modules, you can extend the detection system:
Statistics Integration
Hub Core can aggregate statistics from all modules:
Customization
Backgrounds and Frames
The module uses these image definitions that you can replace:
Button Graphics
Unified hub uses custom button backgrounds:
Troubleshooting
"Module not found" Notifications
This usually means:
- The module file isn't in the
game/folder - There's a syntax error preventing the module from loading
- Required functions aren't defined
Check the Ren'Py console for error messages.
Font Issues
The enhanced font system is super robust, but if you need to troubleshoot:
Quick Font Check
Font Folder Priority
game/Fonts/- Your main fonts (recommended!)game/fonts/- Original location (still works!)game/SHARDS_Hub/Fonts/- Module-specific fontsgame/font/orgame/Font/- Alternative locations
Tips
- Put your main fonts in the new
/Fonts/folder for best results - Priority fonts (Inter, Roboto, etc.) are automatically detected first
- The system supports TTF, OTF, WOFF, and WOFF2 formats
- If no fonts are found, Ren'Py defaults will be used gracefully
Integration Guide
Main Menu Integration
The easiest way to integrate SHARDS Hub into your main menu:
Scene Integration
Integrate with your story flow for automatic gallery unlocks:
Dynamic Menu Generation
For advanced menu integration with dynamic generation:
Achievements Core
Features
- Steam Workshop Integration with local fallback
- Progress Tracking for milestone achievements
- Custom Achievement Icons
- Hidden Achievements for secrets and spoilers
- Category Filtering to organize large achievement lists
- Overlay Notifications with custom backgrounds
- Statistics Dashboard showing completion rates
- Developer-Friendly with clear integration points
Installation
- Copy the contents of
SHARDS_Achievements_Module.zipinto yourgame/folder - Configure your achievements in the data structure
- Integrate with main menu
Quick Start
Basic Achievement Setup
There are three types of achievements you can create:
Unlocking Achievements
Main Menu Integration
Using Achievements in Your Game
Simple Unlock Example
Progress Tracking Example
Hidden Achievement Example
Custom Icons
Custom icons can significantly enhance the visual appeal of achievements, providing a more polished and professional appearance compared to default emojis.
Setting Up Icons
Icon Requirements
- Size: Icons are displayed in 80x80px frames
- Format: Any Ren'Py-supported format (PNG recommended)
- Scaling: Uses
fit "contain"so aspect ratio is preserved - Fallback: Set to
Noneto use default emojis
Steam Integration
Important: Steam achievements require setup on BOTH Steam's side AND your code side. The IDs must match exactly!
Simple Setup Guide
Step 1: Plan Your Achievement IDs
Choose simple, consistent IDs that work for both Steam and your code:
Step 2: Create Achievements in Steam
In your Steamworks Partner dashboard:
- Go to your app's Achievement section
- Create a new achievement
- Set the Achievement ID (e.g., "first_steps")
- Set Display Name (e.g., "First Steps")
- Set Description (e.g., "Started your journey")
- Upload achievement icons (unlocked/locked)
- Repeat for each achievement
Step 3: Use Same IDs in Your Code
Critical: IDs Must Match Exactly
If your Steam Achievement ID is "first_steps", your code must use "first_steps" too. Even small differences like "first-steps" or "firststeps" will break Steam integration!
How It Works When You Unlock
What Players See
- Steam Notification: Uses the name/description from your Steamworks dashboard
- Steam Profile: Shows in their Steam achievement list
- In-Game Screen: Uses the title/description from your SHARDS code
- Non-Steam Players: Only see the in-game screen (works perfectly!)
Complete Example
Steam Dashboard Setup:
- Achievement ID: route_explorer
- Display Name: Route Explorer
- Description: Completed 3 character routes
- Icon: route_explorer.jpg
Your SHARDS Code:
In Your Game:
Testing
Without Steam (Development)
With Steam (Production)
When Steam is running, the same code will:
- Show Steam's achievement popup
- Add to player's Steam profile
- Show your in-game notification
- Update local progress as backup
Common Mistakes
These Will Break Steam Integration:
- Mismatched IDs: Steam: "first_steps", Code: "first-steps" X
- Typos: Steam: "route_explorer", Code: "route_explrer" X
- Case differences: Steam: "FirstSteps", Code: "first_steps" X
- Missing Steam setup: Code has achievement, Steam doesn't X
Pro Tips
- Test locally first: Make sure your SHARDS achievements work before adding Steam
- Use simple IDs: stick to lowercase letters and underscores
- Keep a list: Write down your IDs to ensure consistency
- Different descriptions OK: Steam can have short descriptions, SHARDS can have longer ones
Hidden Achievements
Hidden achievements provide true discovery mechanics while still being visible in the achievement list.
Implementation
Player Experience
- Before unlock: Shows as "Hidden Achievement" with description "This achievement is hidden until unlocked."
- After unlock: Shows actual title and description like any other achievement
- Hidden filter: Shows all hidden achievements with their placeholder text
- Category filtering: Hidden achievements are excluded from category buttons and normal category browsing
Notifications
Default Notification
Custom Notification
API Reference
Core Achievement Functions
Statistics and Analytics
Player Stats
Troubleshooting
Achievement Not Unlocking
- Check the achievement ID spelling
- Verify the achievement exists in
shards_achievements_data - Look for Python errors in the console
- Test with
shards_achievements_unlock("id")in console
Icons Not Showing
- Check file paths (relative to game folder)
- Verify image files exist and are accessible
- Test with
Nonevalues to confirm emoji fallback works
Gallery Core
Features
- Multi-Chapter Organization: Unlimited chapters with custom backgrounds
- Advanced Tag Filtering: 4-category system (Characters, Actions, Location, Mood)
- Intelligent Layout: Auto-wrapping filter grid that handles overflow gracefully
- Favorites Integration: Cross-module compatibility with Favorites Plus
- Persistent Unlocks: Story progress integration with unlock tracking
- Responsive Design: Smooth hover effects and 4-column thumbnail grid
- Universal Compatibility: Works with any project structure or naming scheme
Installation
- Copy the contents of
SHARDS_Gallery_Module.zipinto yourgame/folder - Configure your scene database based on your content
- Integrate with main menu
Scene Configuration
The scene database is flexible but structured:
Chapter System
Chapter Backgrounds
Each chapter can have its own visual identity:
Adding New Chapters
Tag System
Tags make large galleries organized and easily searchable.
The Four Categories
- Characters: Who's in the scene
- Actions: What happens (Romance, Conflict, etc.)
- Location: Where it takes place
- Mood: The emotional tone
Tag Configuration
Filter Behavior
- Multiple tags in same category: OR logic (Character1 OR Character2)
- Multiple categories active: AND logic (Must have selected character AND selected mood)
- Smart overflow: Filter buttons wrap automatically
- Clear all: One button to reset all filters
Unlock System
Manual Unlocking
Story Integration
Favorites Integration
Works seamlessly with Favorites Plus:
Favorites View
The gallery includes a special "Favorites" chapter that shows:
- Favorited gallery scenes
- Favorited images from Favorites Plus
- Mixed display with proper organization
Thumbnails
Requirements
- Size: 320x160px recommended
- Format: Any Ren'Py supported format
- Naming: Consistent with your thumbnail path structure
Locked Scene Display
- Semi-transparent dark overlay
- Lock icon
- Grayed-out title
- Non-clickable
Scene Replay
Each scene needs a replay label:
Customization
Visual Styling
Layout Constants
Performance Optimization
Filter Button Generation
The system pre-calculates button layouts to avoid lag:
Smart Text Wrapping
Viewport Optimization
Large galleries use scrollable viewports instead of loading everything at once.
Troubleshooting
Scenes Not Appearing
- Check scene ID spelling in database
- Verify
unlocked: Truefor testing - Check thumbnail path exists
- Look for Python errors in console
Thumbnails Not Loading
- Verify image files exist at specified paths
- Check image format compatibility
- Test with a simple image first
- Ensure paths are relative to game folder
Filter Issues
- Check tag spelling consistency
- Verify tags are lists, not strings
- Test with simple tags first
Layout Problems
- Adjust
container_widthfor different screen sizes - Modify button spacing for better fit
- Check text truncation settings
- Test with longer tag names
Music Player
Features
- Perfect Ren'Py Integration: Works seamlessly with your existing audio setup - no conflicts!
- Smart Categories: Organize tracks by mood, genre, or whatever makes sense for your game
- Smooth Navigation: Horizontal scrolling through categories feels buttery smooth
- Player Favorites: Let your players bookmark tracks they absolutely love
- Play Analytics: See which tracks are hitting with your audience
- Premium Controls: Shuffle, repeat, skip - all with satisfying visual feedback
- Interactive Progress Bar: Click anywhere to jump to that part of the song - so intuitive!
- Live Progress Display: Real-time position and duration updates
- Auto-Detection: Categories appear automatically from your track data - no extra work!
- Beautiful Interface: Spotify-inspired design with clean, professional appearance
- Volume Control: Integrated slider with percentage display for perfect audio levels
- Auto-Advance: Seamlessly flows from one track to the next
Getting Started
- Extract
SHARDS_Music_Module.zipinto yourgame/folder - Set up your music collection (see configuration below)
- Add one line to your main menu - that's it!
Quick Setup
Basic Configuration
Main Menu Integration
That's it! The system handles all the technical MusicRoom setup automatically, so you can focus on the fun stuff.
Building Your Soundtrack Collection
Set up your soundtrack collection with optional cover art support:
New Cover Art Support!
- Individual Cover Art: Each song can have its own unique album cover
- Smart Fallback: Automatically uses default music icon if cover art is missing
- File Safety: System checks if cover art exists to prevent errors
- Supported Formats: JPG, PNG, and other image formats
- Perfect Size: 300x300px display area for beautiful cover art
Smart Category System
Auto-Detection
Categories appear automatically based on your tracks - no manual setup required:
Creative Category Ideas
- By Mood: Ambient, Dark, Epic, Peaceful, Intense
- By Scene: Menu, Battle, Romance, Sad, Victory
- By Character: Emma's Theme, Michael's Theme, etc.
- By Chapter: Chapter 1, Chapter 2, Finale
- By Genre: Classical, Electronic, Orchestral, Piano
Performance Recommendation
Maximum 8-10 categories recommended for optimal performance. While the system can handle 20+ categories, each category creates an interactive button that affects viewport scrolling performance, especially when using drag scrolling. Horizontal mousewheel scrolling remains smooth regardless of category count.
Unlock System
Manual Unlocking
Story Integration
Progressive Unlocks
Premium Player Features
Professional Playback Controls
Beautiful Material Design icons with smooth hover animations:
- Play/Pause: Large central control with professional icons and instant feedback
- Previous/Next Track: Navigate through current playlist with smooth transitions
- Shuffle Mode: Randomize playlist order (icon changes to red when active)
- Repeat Modes: Off → Track → Playlist → Off cycling
- Volume Control: Integrated slider with real-time percentage display
- Auto-Advance: Automatically plays next track when current ends
Enhanced Visual Design
- Material Design Icons: Professional Google Material icons replace emoji
- Smooth Hover Effects: Buttons glow and respond to interaction
- Visual State Feedback: Active modes clearly show with color changes
- Consistent Styling: All controls follow the same design language
Visual Experience
- Dynamic Cover Art: Each song displays its own unique album cover
- Interactive Progress Bar: Click anywhere to jump to that position
- Real-time Progress: Shows current position and total duration
- Track Highlighting: Active track has distinct background in list
- Smart Fonts: CalSans for titles, ReadexPro for artists with automatic fallbacks
Favorites System
Players can favorite tracks they love:
Play Statistics
Track listening habits automatically:
Advanced Usage
Interactive Progress Bar
Players can click anywhere on the progress bar to instantly jump to that part of the song, like having a professional music app in your visual novel:
Progress Bar Features
- Click-to-Seek: Jump to any position instantly
- Smooth Updates: Refreshes 10 times per second
- Visual Feedback: Color changes on hover
- Accurate Positioning: Precise seeking control
Premium Player Functions
Integration with Gameplay
MusicRoom Integration
How It Works
The system automatically registers your tracks with Ren'Py's MusicRoom:
Benefits
- Seamless audio: Uses Ren'Py's audio channel system
- Interactive seeking: Progress bar allows precise position control
- Fade transitions: Smooth crossfades between tracks
- Memory efficient: Streams audio instead of loading everything
- Format support: Whatever Ren'Py supports (MP3, OGG, WAV, etc.)
Audio File Management
Supported Formats
- OGG: Best choice for Ren'Py (smaller files, good quality)
- MP3: Universal compatibility
- WAV: Highest quality but large files
Duration Formatting
Troubleshooting
Tracks Not Playing
This is usually something simple - try these steps:
- Check file paths: Make sure your audio files actually exist in the specified locations
- Try different formats: OGG works best with Ren'Py - consider converting if needed
- Check for errors: Look at the Ren'Py console for any helpful error messages
- Volume check: Ensure music volume isn't set to zero in preferences
Categories Not Showing
Categories are shy - they only appear when they have something to show!
- Unlock some tracks first: Categories only appear when they have unlocked tracks
- Check spelling: Make sure category names are consistent across tracks
- Empty categories hide: This is by design - keeps the interface clean!
Category Scrolling Tips
Got lots of categories? Here's how to navigate smoothly:
- Use mousewheel: Horizontal mousewheel scrolling is much smoother than dragging
- Some categories off-screen?: Totally normal! Just scroll to see more
- Feeling laggy?: Try keeping to 8-10 categories for best performance
- Keep names simple: Single words work best (like "SciFi" instead of "Sci-Fi")
Favorites Plus
What It Does
- Universal Screen Capture: Works with any scene, background, or UI state
- Intelligent Content Detection: Prioritizes actual content over backgrounds
- Smart Tagging System: Organize favorites with custom categories
- View Counter: Track engagement and popular content
- Fullscreen Viewer: Immersive viewing experience with navigation
- Cross-Module Integration: Works seamlessly with Gallery Core
- Background Detection: Automatically filters out common background patterns
Installation
- Copy the contents of
SHARDS_Favorites_Module.zipinto yourgame/folder - Configure capture key bindings (optional)
- Integrate with main menu
Basic Usage
Main Menu Integration
In-Game Capture
Advanced Viewer Features
The favorites system includes an advanced image viewer with comprehensive viewing capabilities:
Slideshow Mode
- Auto-Advance: Click "Slideshow" to automatically advance through images
- Timing: 3 seconds per image with smooth transitions
- Controls: Pause/resume functionality with visual feedback
Zoom and Pan System
- Zoom Range: 1.0x to 3.0x magnification
- Mouse Wheel: Scroll up to zoom in, scroll down to zoom out
- Pan Support: Click and drag to pan when zoomed in
- Zoom Reset: Spacebar to reset to original size
- Visual Feedback: Shows current zoom level when active
Navigation Controls
Manual Item Management
Core Features
Screen Capture System
The heart of the system is intelligent screen detection:
Why This Works
- Reverse processing: Gets the topmost displayed content
- Background filtering: Skips common backgrounds like "black" screens
- Universal compatibility: Works with any naming scheme
- Graceful fallbacks: Handles edge cases and errors
Tagging System
Players can organize favorites with custom tags:
Built-in Tag Categories
The system includes common tag categories:
- Characters: Emma, Michael, Sarah, etc.
- Scenes: Romance, Drama, Comedy, Action
- Locations: Beach, School, Home, City
- Moods: Happy, Sad, Romantic, Mysterious
- Custom: Whatever players want to add
Advanced Features
View Counter System
Track which favorites are most popular:
Content Detection Intelligence
The system automatically detects different content types:
Integration Features
Gallery Core Integration
Seamless compatibility with the gallery system:
Cross-Module Notifications
Uses the achievement system for consistent notifications:
Customization
Visual Styling
Layout Options
Troubleshooting
Content Not Capturing
- No displayables: Scene might not have content to capture
- Background detection: Common backgrounds are filtered out (intended)
- Timing issues: Try capturing after scene transitions complete
- Error handling: Check console for Python errors
Tags Not Working
- Data structure: Verify tags are stored as lists
- Case sensitivity: Tag matching is case-sensitive
- Persistence: Make sure tag data is being saved
- UI updates: Tags might not show until screen refresh