Introduce lazy loading for game-specific artwork to reduce startup time.
Game assets are now defined in src/data/assetManifest.js and loaded on
first entry via src/services/assetLoader.js, replacing the previous
approach of loading all game art in PreloadScene.
Balatro improvements:
- Add bump/shake animation to chips and mult counters on score changes
- Animate round score flying into the left-bar readout with explosion
- Fix tween cleanup during view swaps to prevent crashes
- Add planetSheet artwork path to balatro-artwork.json
- Introduce BalatroCrtPipeline for subtle CRT effects (scanlines, grain, glitch bursts)
- Attach CRT pipeline to main camera with event-driven pulse on boss rounds and game over
- Add frameIsBlank check to detect blank/unpainted texture frames and fall back to procedural cards
- Implement roundedArtKey and addRoundedArt for rendering art with rounded corners
- Update joker, tarot, planet, spectral, deck, shop, and voucher rendering to use rounded art
- Increase font sizes across UI elements for better readability
- Add border strokes to joker cards with custom art
- Trigger CRT pulse on high multipliers (x2+) and score announcements
- Reference art image paths in balatro-artwork.json
Add m6x11.ttf and register it via @font-face in styles.css. Use it as
the primary font throughout BalatroGame.js and BalatroViews.js (with
Julius Sans One as fallback), giving the game a consistent pixel-art
aesthetic. Update PreloadScene to warm the new font alongside
YummyCupcakes.
- Add Balatro-style hover tooltips for cards, jokers, consumables, shop
items, packs, and vouchers with detailed stat information
- Add a looping energy hum that climbs in pitch with the running score
- Add visual jitter to chips/mult boxes that intensifies with the hum
- Improve scoring animation by grouping events per card/joker anchor
- Stamp joker UIDs onto events for proper animation anchoring
- Add drag distance threshold to prevent accidental joker drags
Regenerate all galaxy cards from the owner's physical card CSV
(assets/info/sw-force-cards.csv) with verified stats, abilities, and
bounty rewards. Cross-check is enforced by tools/verifySWDBG.js.
New mechanics:
- oppChoice: opponent picks between discard / giveForce / attackBoost
(Duros Spy, B-Wing)
- dealDamage: exile-self effect targeting base OR enemy capital (Y-Wing)
- buyGalaxyDiscard: exile a unit to purchase from the discard pile
(Jawa Scavenger)
- topdeckNextPurchase: next buy goes on deck top (Twi'lek Smuggler)
- takeRowTemp: borrow a row card, exile it at turn end (Grand Moff Tarkin)
- lookTopSwap: peek deck top, swap with a row card while Force is yours
(Moff Jerjerrod)
- lookOppHand: reveal opponent's hand, optionally topdeck a card
(Jyn Erso)
- purchaseToHand: onPurchase adds card to hand instead of discard
(Fang Fighter)
New ability gates: requiresOppCapital, requiresTraitInPlay,
requiresOtherHero, requiresForce (on multi effects).
New constant ops: typeBoost (Admiral Piett), selfBoostPerBaseLost
(Baze Malbus). New timing: onPurchase.
Updated 55+ cards with corrected costs, attacks, HP, counts, traits,
and abilities. Added 11 new frames to the art sheet (55–65); 4 frames
orphaned but preserved.
Adds ~20 scripted rule spot-checks covering all new mechanics.
- Add `requiresCapital` ability gate to card definitions
- Rework TIE Fighter: constant boost → action that draws a card if you control a capital ship
- Rework Darth Vader: constant +4 attack while Force is with you (removed damage ability)
- Rework Cassian Andor: onBounty trigger forces opponent discard on galaxy row kills
- Rework Luke Skywalker: onPlay destroy enemy capital ship if Force is with you
- Centralize ability requirement checks via `abilityGatePasses()` helper
- Apply gate checks to onBounty, onPlay, and onReveal triggers
- Add Force track shift SFX (light/dark variations) with randomized playback
- Update verification tests for new card behaviors
- SWDBG: add animated buy sequence with funding arcs, center-screen reveal,
and face-down stow to discard/deck
- SWDBG: introduce stable row slot tracking so bought/lost cards don't shift
neighbors; add ghost cards for pending animations
- SWDBG: add end-of-turn discard animations preserving old-hand positions;
emit endTurnDiscard events from logic
- SWDBG: add deep-dive Buy/Attack buttons for actionable cards; refactor
dealCardAnimated with startAs/flipTo/keepAlive support
- SWDBG: add drawArcArrow/drawArcArrows for converging attack visuals on
bounty kills and base attacks
- Dungeon Boss: add mid-walk advRoom casting window after room events,
letting players react to damage/kills during hero crawl
- Dungeon Boss: track walking hero in publicView and entranceHeroesOf so
spells and AI heuristics can target mid-crawl heroes
- Dungeon Boss: replace pre-bait token snapshot with overlay system —
pending bait heroes stay in town with fly-in tokens; pending draw cards
show card backs until animations land
- Dungeon Boss: keep heroes in battle zone after roomHit/pass instead of
returning them immediately
- Update images, registry (defaultPlayfield), and verifier (advRoomCasts)
- Animate card draws, plays, and row refills with smooth flight transitions
and mid-flight reveal flips during initial deal
- Introduce slot helper methods for consistent card positioning across
renderers and animations
- Show opponent hand as face-down fan with visible draw/discard pile counts
- Track pending card UIDs to prevent rendering cards mid-animation
- Support game-specific default playfields via gamesRegistry
- Add guardFreshButton to prevent accidental clicks from pointer event bubbling
- Add Starscape and Fantasy playfields; set Starscape as default for Star Wars
- Add swdbg-cards-art.png and swdbg-bases-art.png spritesheets
- Add corresponding PSD source files
- Update swdbg-artwork.json to reference new art assets
- Adjust card sheet frame height from 230 to 155
- Add hover-to-zoom preview popup for cards in both DungeonBoss and SWDBG games
(500ms delay, follows pointer, hides behind opponent videos)
- Add new artwork sprite sheets and update frame dimensions in JSON/config:
dungeonboss-rooms 300×200, spells 300×160, heroes 300×225, bosses 300×275
swdbg-cards-art 300×155 art window
- Introduce canonical CARD_ASPECT ratios and fitCardBox() for consistent card shapes
- Switch DungeonBoss opponent panels from dark to parchment theme
- Switch SWDBG card face from light to dark navy theme with updated accent colors
- Add setVideoVisible() to Portrait to pause videos during hover popups
- Update sprites.md documentation with new frame sizes and status
Implement two complete card games with full rule engines, AI opponents
(5 skill levels), procedural rendering, and drop-in art support.
Dungeon Boss: Boss Monster-style dungeon building game for 2-4 players.
Players build dungeons of rooms and spells to lure and defeat heroes,
harvesting souls to win. Includes 8 bosses, 31 room cards, 16 spells,
and 41 heroes with class-based baiting mechanics.
Star Wars Deckbuilder: 2-player deckbuilding game. Players build decks
from faction and neutral cards, purchase from the galaxy row, bounty hunt
enemy units, and attack bases. First to destroy 3 enemy bases wins.
Includes 90-card galaxy deck, 10 bases with abilities, and the Force
mechanic.
Both games include:
- Pure logic engines (rules-verified by headless test suites)
- Synchronous heuristic AI with skill-based decision quality
- Phaser scenes with vector-rendered procedural art
- Drop-in sprite sheet support via JSON mappings
- Tutorial documentation and art specifications
- Registration in the game registry and scene loader
Unscramble 4 base words, then collect circled letters to solve a riddle
bonus answer. Includes a seeded puzzle generator (tools/genJumble.js),
a verifier (tools/verifyJumble.js), and 58 procedurally generated levels
with progressive difficulty.
Also:
- Fix Pai Gow Poker seat rendering to only draw active seats
- Reduce Pai Gow max players from 6→5, max opponents from 5→4
- Add track 19 ("Down the Line" by Journey) to music
- Add Michael opponent voice lines (terry, victor)
- Update game-icons sprite sheet
- Implement Azul (tile-drafting game) with full game logic, AI (5 skill levels),
spritesheet rendering, and animated wall-tiling/scoring
- Add Inês-flavored tutorial text and 96×96 tile spritesheet
- Register Azul in gamesRegistry, main.js, GameRoomScene, OpponentSelectScene,
and PreloadScene
- Add tutorial videos for Blokus and Chinese Checkers
- Update Blokus and Chinese Checkers registry entries with hasTutorial: true
- Add Klaxon (mecha) tutorial for Blokus and Kage (samurai) tutorial for
Chinese Checkers
- Fix TutorialModal close-button click fallthrough with transient shield overlay
- Add tutorial videos for Risk and Spire Climb
- Rewrite Risk tutorial with new narrator (Nadia, 4th Temporal Expeditionary Corps)
- Add new Spire Climb tutorial (narrator: automaton DV-8-2303)
- Mark Spire Climb as having a tutorial in games registry