Metadata Integration
Metadata is the secret sauce that makes your themes dynamic. Instead of showing static text or images, metadata pulls live information from games and systems. One theme, infinite variations!
What is Metadata?
Static content:
Text: "Pac-Man"
Image: pacman_logo.png
Same for every game. Boring.
Dynamic metadata:
Text: {GameName}
Image: {GameArt}
Changes for EVERY game automatically. Magic!
Metadata = placeholders that get filled in with actual game/system information.
How Metadata Updates Dynamically
The Auto-Update System
When you navigate in HyperSpin:
- User scrolls wheel to different game
- HyperSpin sends game information to theme
- Theme receives new metadata
- All metadata layers update instantly
- You see new game's information
This happens automatically - no configuration needed!
Real-Time Updates
Metadata layers are smart:
- Connected to HyperSpin's wheel position
- Update on every wheel movement
- No delay or lag (instant updates)
- Works with all metadata types simultaneously
Example in action:
Wheel position: Game 1 → Metadata shows Game 1 info
User scrolls...
Wheel position: Game 2 → Metadata shows Game 2 info
User scrolls...
Wheel position: Game 3 → Metadata shows Game 3 info
All text and images update in sync!
What Updates
When wheel changes, these update:
- ✅ Metadata Text (game name, year, etc.)
- ✅ Metadata Images (box art, screenshots, etc.)
- ✅ Metadata Icons (system/game icons)
- ✅ Metadata Video URLs (gameplay videos)
- ❌ Static text (doesn't change)
- ❌ Regular images (stay the same)
- ❌ Animations (continue playing)
Only metadata layers respond to wheel changes.
Why Use Metadata?
Without metadata:
- Create separate theme for each game
- Manually update text and images
- Thousands of games = thousands of themes
- Maintenance nightmare
With metadata:
- Create ONE theme
- Metadata fills in automatically
- Works for ALL games in the system
- Update once, applies everywhere
This is the power move for theme designers!
Types of Metadata
HyperTheme supports two main categories:
Game Metadata
Information about individual games:
- Game name
- Description/overview
- Release year
- Developer/publisher
- Genre
- Rating (ESRB)
- Player count
- Box art, screenshots, videos
System Metadata
Information about gaming systems/platforms:
- System name
- Description
- Manufacturer
- Release year
- Hardware specs (CPU, RAM, etc.)
- System logo
- Category
Metadata Fields Available
Game Metadata Fields
Text Fields:
- Name - Game title (e.g., "Super Mario Bros.")
- Overview - Game description/synopsis
- Developer - Who made it (e.g., "Sega")
- Publisher - Who published it
- ReleaseYear - Year released (e.g., "1985")
- ReleaseDate - Full date (e.g., "September 13, 1985")
- Genres - Game genres (e.g., "Platformer, Action")
- Players - Number of players (e.g., "1-2")
- Platform - System/console (e.g., "Genesis")
- FileName - ROM filename
- ESRB - Rating (E, T, M, etc.)
Media Fields:
- BoxArt - Front box/cover art
- Icon - Game-specific icon (small image)
- SystemIcon - System/platform icon
- Screenshot - In-game screenshot
- ClearLogo - Logo with transparent background
- Banner - Wide banner image
- VideoUrl - Gameplay video
System Metadata Fields
Text Fields:
- Name - System name (e.g., "Sega Genesis")
- Description - System description
- Manufacturer - Who made it (e.g., "Sega")
- CPU - Processor info
- Memory - RAM specifications
- Graphics - GPU/graphics info
- Sound - Audio chip info
- Display - Resolution/display specs
- Media - Media type (cartridge, disc, etc.)
- MaxControllers - Maximum controllers supported
- Category - System category/generation
Media Fields:
- Logo - System logo
- Icon - System icon
Adding Metadata to Your Theme
Metadata Text
Add dynamic text that changes per game:
- Click the metadata text icon in bottom toolbar
- Or right-click canvas (if context menu available)
- Select Metadata Text
- A text element appears with placeholder
- Configure in Properties (right panel)
In the Properties panel:
- Field - Choose which metadata field to display
- Name, Developer, ReleaseYear, etc.
- Font - Typography settings
- Color - Text color
- Size - Font size
- Alignment - Left, center, right
- All standard text properties
Example setup:
Field: GameName
Font: Arial Bold
Size: 48
Color: White
Position: Top-center
Result: "Pac-Man" (or whatever game is selected)
Metadata Images
Add dynamic images that change per game:
- Click the metadata image icon in bottom toolbar
- Select Metadata Image
- An image placeholder appears
- Configure in Properties (right panel)
In the Properties panel:
- Field - Choose which image field to use
- BoxArt, Screenshot, ClearLogo, Banner, VideoUrl
- Fit Mode - How image scales
- Contain (fit inside, maintain aspect)
- Cover (fill space, may crop)
- Stretch (fill space, may distort)
- Actual size (no scaling)
- All standard image properties (position, scale, etc.)
Example setup:
Field: BoxArt
Fit Mode: Contain
Width: 400px
Height: 600px
Position: Center-left
Result: Shows box art for current game
Metadata Icons
Add dynamic icons that update per game/system:
Icon Types:
- Game Icons - Small game-specific graphics
- System Icons - Platform/console icons
- Multiple formats supported
How to add:
- Click the metadata icon button in bottom toolbar
- Icon element appears with placeholder
- Configure in Properties (right panel)
Properties:
- Icon Type - Choose game icon or system icon
- Size - Width and height
- Position - Where to place icon
- All standard transform properties
Use cases:
- Small game identifier icons
- System badges in corners
- Icon strips showing features
- Platform indicators
Example setup:
Icon Type: System Icon
Size: 64x64px
Position: Top-right corner
Opacity: 80%
Result: Shows system logo for current game's platform
Pro tip: Icons are perfect for compact visual indicators without taking up much space!
Metadata Video
For video backgrounds:
Field: VideoUrl
- Points to gameplay video
- Auto-plays in theme
- Loops continuously (usually)
Use cases:
- Background gameplay footage
- Trailer playing behind UI
- Dynamic, living themes
Metadata Layout Strategies
The Classic Wheel Theme
Standard layout:
┌─────────────────────────────────────┐
│ [System Logo] [Year] │
│ │
│ [Game Name] │
│ │
│ [Box] [Box] [BOX] [Box] [Box] │
│ ^^^^^^ │
│ (selected) │
│ │
│ [Description] │
│ │
│ Genre: {Genre} Players: {Players} │
└─────────────────────────────────────┘
Metadata elements:
- Game Name (large, top-center)
- Box Art (in wheel, changes per game)
- Description (smaller text, bottom)
- Genre, Players, Year (info bar)
The Details Panel
Information-heavy layout:
┌─────────────────────┬───────────────┐
│ │ │
│ │ Game Name │
│ [Large Box Art] │ │
│ │ Developer │
│ │ Year │
│ │ Genre │
│ │ │
│ │ Description │
│ │ paragraph │
│ │ │
└─────────────────────┴───────────────┘
Shows:
- All available metadata
- Comprehensive information
- Good for browsing/discovery
The Minimalist
Clean, simple:
┌─────────────────────────────────────┐
│ │
│ │
│ │
│ [Clear Logo] │
│ │
│ {Genre} │
│ │
│ │
└─────────────────────────────────────┘
Just essentials:
- Logo (transparent)
- One or two key facts
- Let the art speak
The Video Background
Immersive experience:
┌─────────────────────────────────────┐
│ {VideoUrl as background} │
│ │
│ [Overlay with game info] │
│ │
│ Game Name │
│ Developer - Year │
│ │
└─────────────────────────────────────┘
Dynamic video:
- Gameplay footage plays behind UI
- Changes per game
- Very engaging!
Styling Metadata
Text Styling
Make metadata look good:
Fonts:
- Bold for game names (emphasis)
- Regular for descriptions
- Condensed for fitting more text
Colors:
- High contrast for readability
- Match theme color scheme
- Consider background (video/images behind text)
Outlines/Shadows:
- Add outline for text on busy backgrounds
- Drop shadows for depth
- Glow effects for sci-fi themes
Example styling:
Game Name:
Font: Montserrat Bold
Size: 72px
Color: White
Outline: 3px black
Developer:
Font: Roboto Regular
Size: 24px
Color: Light gray
No outline
Image Styling
Present metadata images well:
Frames:
- Add border layer around box art
- Makes it pop
- Professional look
Reflections:
- Duplicate box art
- Flip vertically
- Low opacity
- Positioned below original
- Classic reflection effect!
Shadows:
- Drop shadow behind images
- Adds depth
- Separates from background
3D Effects:
- Slight rotation (5-10 degrees)
- Perspective using projection points
- Looks like physical media
Animating Metadata
Metadata elements can be animated like any layer!
Text Animations
Entrance effects:
- Fade in while game changes
- Slide in from side
- Scale up from center
Idle animations:
- Subtle glow pulse
- Gentle float
- Slight scale breathing
Avoid:
- Scrolling text (use Scrollable Text instead)
- Too much motion (hard to read)
- Constant animation (distracting)
Image Animations
Box art animations:
- Selected item: Scale up, glow
- Unselected items: Scale down, dim
- Transition smoothly between states
Entrance:
- Fade in when game changes
- Slide in from direction
- 3D rotation effect
Idle:
- Gentle float
- Subtle rotation
- Pulse/breathing effect
Example: Selected box art
Scale: 1.0 → 1.2 (selected gets bigger)
Opacity: 0.7 → 1.0 (selected fully visible)
Glow: Add bloom effect
Duration: 0.5s
Easing: Back.Out
Fallback Handling
What happens when metadata is missing?
Missing Text Data
If field is empty:
- Shows blank/nothing
- Or placeholder text (depends on theme)
- Design around this!
Strategies:
- Use multiple fields (if Name missing, show FileName)
- Design works without text
- Test with games that have incomplete data
Missing Images
If image field is empty:
- Shows placeholder/nothing
- Or broken image icon
Strategies:
- Use fallback images (generic box art)
- Design layout works without image
- Test with games missing artwork
Best practice:
- Test theme with incomplete game data
- Make sure it doesn't look broken
- Graceful degradation!
Metadata Best Practices
Design Considerations
Readability:
- Text must be readable against backgrounds
- Use outlines/shadows on busy backgrounds
- Sufficient contrast
- Appropriate font sizes
Layout:
- Leave space for long text
- Game names can be lengthy!
- Descriptions vary in length
- Design for maximum content
Consistency:
- Same position for metadata across games
- Predictable layout
- User knows where to look
Testing
Test with various games:
Short names:
- "ICO"
- "Doom"
- "Fez"
Long names:
- "The Legend of Zelda: Breath of the Wild"
- "Sid Meier's Civilization VI: Rise and Fall"
- "Tom Clancy's Rainbow Six Siege"
No artwork:
- Games with missing box art
- Missing screenshots
- No video
Complete data:
- Games with everything
- Verify it all displays correctly
Testing checklist:
- Short game names display well
- Long game names don't break layout
- Missing images don't break theme
- Missing text fields handled gracefully
- All metadata positions correctly
- Readable on all backgrounds
Advanced Metadata Techniques
Conditional Styling (Manual)
Different styles based on content:
Since HyperTheme doesn't have conditional logic (yet), you simulate it:
Multiple layers approach:
Layer 1: Game Name (normal position)
Layer 2: Game Name (alternate position for long names)
Designer picks which to use per theme variant
Multi-Language Support
If metadata has multiple languages:
- Check what language metadata provides
- Design for longest language (usually German or French)
- Test with non-English games
Metadata + Filters
Style metadata images dynamically:
Example: Unselected box art
- Add Grayscale filter (0.7)
- Reduce opacity (0.5)
- Blur slightly (2px)
- Makes selected stand out!
Example: Retro theme
- Add CRT filter to all metadata images
- Pixelate screenshots
- Consistent retro aesthetic
Metadata Combinations
Combine multiple metadata fields:
Example: Info string
{Developer} • {Year} • {Genre}
Displays as:
"Sega • 1991 • Platformer"
Implementation:
- Three separate metadata text elements
- Position next to each other
- Add separator graphics (bullets) between
Metadata Workflow
Design Process
-
Plan layout
- Sketch where metadata goes
- Which fields to show
- Priority of information
-
Add placeholders
- Add metadata elements
- Position them
- Set fonts and styling
-
Test with real data
- Preview with actual games
- Check various game types
- Verify nothing breaks
-
Animate
- Add entrance/exit effects
- Idle animations
- State changes (selected/unselected)
-
Polish
- Fine-tune positioning
- Adjust styling
- Handle edge cases
Common Workflows
Wheel theme workflow:
- Background (static or video)
- Game name at top (metadata text)
- Wheel items with box art (metadata images)
- Info bar at bottom (multiple metadata texts)
- Animate selected item
Detail view workflow:
- Large box art (metadata image)
- Game information (multiple metadata texts)
- Description (scrollable metadata text if supported)
- Background video (metadata video)
- Smooth transitions between games
Metadata Reference
Game Fields Quick Reference
| Field | Example | Type | Notes |
|---|---|---|---|
| Name | "Pac-Man" | Text | Game title |
| Developer | "Namco" | Text | Creator |
| Publisher | "Atari" | Text | Publisher |
| ReleaseYear | "1980" | Text | Year only |
| Genre | "Arcade" | Text | Can be multiple |
| Players | "1-2" | Text | Player count |
| ESRB | "E" | Text | Rating |
| Overview | "Eat dots..." | Text | Description |
| BoxArt | [image] | Image | Cover art |
| Screenshot | [image] | Image | In-game shot |
| ClearLogo | [image] | Image | Transparent logo |
| VideoUrl | [video] | Video | Gameplay video |
System Fields Quick Reference
| Field | Example | Type | Notes |
|---|---|---|---|
| Name | "Genesis" | Text | System name |
| Manufacturer | "Sega" | Text | Who made it |
| CPU | "Ricoh 2A03" | Text | Processor |
| Memory | "2KB RAM" | Text | RAM specs |
| ReleaseYear | "1983" | Text | Launch year |
| Logo | [image] | Image | System logo |
Next Steps
- Special Layer Types - Text, video, sprites
- Your First Theme - Build with metadata
- Best Practices - Professional layouts
Pro Tip: Design your theme to look good even when metadata is missing. That's the mark of a professional theme designer! 🎮✨