Files
BreakEscape/CHANGELOG_SPRITES.md
Z. Cliffe Schreuders fb6e9b603c Enhance character sprite loading and animation handling
- Updated the game to support new character sprite atlases for both male and female characters, allowing for a wider variety of NPC designs.
- Improved player sprite initialization to dynamically select between atlas-based and legacy sprites, enhancing flexibility in character representation.
- Refined collision box settings based on sprite type, ensuring accurate physics interactions for both atlas (80x80) and legacy (64x64) sprites.
- Enhanced NPC behavior to utilize atlas animations, allowing for more fluid and diverse animations based on available frames.

Files modified:
- game.js: Added new character atlases and updated sprite loading logic.
- player.js: Improved player sprite handling and collision box adjustments.
- npc-behavior.js: Updated animation handling for NPCs to support atlas-based animations.
- npc-sprites.js: Enhanced NPC sprite creation to accommodate atlas detection and initial frame selection.
- scenario.json.erb: Updated player and NPC configurations to utilize new sprite sheets and animation settings.
- m01_npc_sarah.ink: Revised dialogue options to include new interactions related to NPCs.
2026-02-11 00:18:21 +00:00

6.5 KiB

Sprite System Update - PixelLab Integration

Summary

Added support for 16 new PixelLab character sprite sheets with JSON atlas format, while maintaining backward compatibility with existing legacy sprites.

What Changed

1. New Character Assets

  • 16 PixelLab characters added to public/break_escape/assets/characters/
  • Each character includes:
    • PNG sprite sheet (80x80 frames, optimized layout)
    • JSON atlas with animation metadata
    • 8-directional animations (breathing-idle, walk, attack, etc.)

2. Game Loading System (public/break_escape/js/core/game.js)

  • Added atlas loading for all 16 new characters
  • Legacy sprite loading preserved for backward compatibility
  • Female characters: 8 variants (hacker, office worker, security, etc.)
  • Male characters: 8 variants (hacker, office worker, security, etc.)

3. NPC Sprite System (public/break_escape/js/systems/npc-sprites.js)

  • New: setupAtlasAnimations() function for atlas-based sprites
  • Automatic format detection (atlas vs. legacy)
  • Direction mapping: atlas directions → game directions
    • east/west/north/south → right/left/up/down
    • Diagonal directions fully supported
  • Animation type mapping: breathing-idle, walk, cross-punch, etc.
  • Backward compatible with existing frame-based sprites

4. Scenario Configuration (scenarios/m01_first_contact/scenario.json.erb)

Updated all characters to use new atlas sprites:

  • Player (Agent 0x00): hackerfemale_hacker_hood
  • Agent 0x99: hackermale_spy
  • Sarah Martinez: hacker-redfemale_office_worker
  • Kevin Park: hackermale_nerd
  • Maya Chen: hacker-redfemale_scientist
  • Derek Lawson: hackermale_security_guard

Configuration format updated:

// Old format
"spriteConfig": {
  "idleFrameStart": 20,
  "idleFrameEnd": 23
}

// New format
"spriteConfig": {
  "idleFrameRate": 8,
  "walkFrameRate": 10
}

5. Documentation

  • docs/SPRITE_SYSTEM.md - Complete sprite system documentation
  • public/break_escape/assets/characters/README.md - Character reference guide
  • public/break_escape/assets/characters/SPRITE_SHEETS_SUMMARY.md - Detailed character breakdown
  • tools/README_SPRITE_CONVERTER.md - Conversion tool documentation

6. Conversion Tool

  • tools/convert_pixellab_to_spritesheet.py - Automated sprite sheet generator
  • Converts PixelLab exports to Phaser-ready atlases
  • Generates optimized PNG + JSON for each character
  • Updated to skip example JS files

Benefits

Performance

  • 16 HTTP requests instead of 2500+ individual images
  • Single GPU texture per character
  • Faster frame switching (no texture swaps)
  • Optimized memory usage

Features

  • 8-directional movement with smooth animations
  • Multiple animation types per character
  • Easy character variety without custom sprite work
  • Backward compatible with existing sprites

Developer Experience

  • Simple configuration in scenario JSON
  • Automatic animation setup
  • Clear character naming (female_hacker, male_spy, etc.)
  • Comprehensive documentation

Breaking Changes

None - The system is fully backward compatible. Legacy sprites continue to work with the old configuration format.

New Character Variants

Female Characters (8 variants)

  1. female_hacker_hood - Hacker in hoodie (hood up)
  2. female_hacker - Hacker in hoodie
  3. female_office_worker - Office worker (blonde)
  4. female_security_guard - Security guard
  5. female_telecom - Telecom worker
  6. female_spy - Spy in trench coat
  7. female_scientist - Scientist in lab coat
  8. woman_bow - Woman with bow

Male Characters (8 variants)

  1. male_hacker_hood - Hacker in hoodie (obscured)
  2. male_hacker - Hacker in hoodie
  3. male_office_worker - Office worker (shirt & tie)
  4. male_security_guard - Security guard
  5. male_telecom - Telecom worker
  6. male_spy - Spy in trench coat
  7. male_scientist - Mad scientist
  8. male_nerd - Nerd (glasses, red shirt)

Animation Support

All atlas characters include:

  • breathing-idle - 8 directions, 4 frames each
  • walk - 8 directions, 6 frames each
  • cross-punch - 8 directions, 6 frames each
  • lead-jab - 8 directions, 3 frames each
  • falling-back-death - 7 frames (some: 8 directions)
  • taking-punch - 6 frames (select characters)
  • pull-heavy-object - 6 frames (select characters)

Usage Example

{
  "id": "my_npc",
  "displayName": "My Character",
  "npcType": "person",
  "position": { "x": 5, "y": 3 },
  "spriteSheet": "female_scientist",
  "spriteTalk": "assets/characters/scientist-talk.png",
  "spriteConfig": {
    "idleFrameRate": 8,
    "walkFrameRate": 10
  }
}

Migration Path

To update existing NPCs:

  1. Choose appropriate character from available list
  2. Update spriteSheet value
  3. Replace idleFrameStart/End with idleFrameRate
  4. Add walkFrameRate if needed

Testing

Tested with M01 First Contact scenario:

  • All characters load correctly
  • 8-directional movement works
  • Idle animations play properly
  • Walk animations transition smoothly
  • Legacy sprites still functional
  • Performance improved (fewer HTTP requests)

Future Enhancements

Potential improvements:

  • Dynamic portrait generation from sprite sheets
  • Character customization system
  • Animation state transitions (idle → walk → attack)
  • More character variants (uniforms, outfits)
  • Custom color tinting for sprite variations

Files Modified

Core Game Files

  • public/break_escape/js/core/game.js - Added atlas loading
  • public/break_escape/js/systems/npc-sprites.js - Added atlas animation support

Scenario Files

  • scenarios/m01_first_contact/scenario.json.erb - Updated all character sprites

Assets

  • public/break_escape/assets/characters/ - Added 16 characters (32 files: PNG + JSON)

Documentation

  • docs/SPRITE_SYSTEM.md - New comprehensive guide
  • public/break_escape/assets/characters/README.md - Character reference
  • public/break_escape/assets/characters/SPRITE_SHEETS_SUMMARY.md - Detailed breakdown

Tools

  • tools/convert_pixellab_to_spritesheet.py - Updated (removed example JS generation)
  • tools/README_SPRITE_CONVERTER.md - Updated documentation

Notes

  • Legacy hacker and hacker-red sprites remain available
  • spriteTalk images are separate and work with both formats
  • Atlas JSON format is Phaser 3 compatible (JSON Hash)
  • All frames are 80x80 pixels (vs 64x64 for legacy)
  • 2px padding between frames prevents texture bleeding