Commit Graph

5 Commits

Author SHA1 Message Date
Brian Fertig 30629380b4 feat(civilization): add coinage/public works special builds + fix AI fallback
- Add Coinage (1 shield → 1 gold) and Public Works (2 shields → 1 food)
  special build options for cities, with remainder carry logic in shieldBox
- Update AI to fall back to producing gold or food instead of stockpiling
  redundant defenders when nothing else is available
- Fix mid-build detection to check build.type before comparing shield progress
- Add City Screen UI for special builds: display gain per turn, color-coded
  rows, and tooltips
- Only apply class-switch penalty when switching between unit/building
  production types
- Add verification tests for coinage payout, public works remainder carry,
  and AI special build fallback

feat(superkart): fix player kart scale + add missing backdrop images

- Compute PLAYER_KART_SCALE from MODE7 parameters instead of hardcoding,
  keeping player and AI karts consistent at the camera's follow distance
- Wire up previously null backdrops: volcano, scrapyard, swamp, speedway,
  nightcity
2026-07-18 09:08:26 -06:00
Brian Fertig a0316bf467 feat: add mini-turbo boost mechanic to drifting
- Track drift charge duration while sliding and payout a speed boost
  when the drift is released cleanly (not stalled or reversed)
- Boost strength scales with drift duration, capped at maximum charge
- Added configurable mini-turbo parameters (min/max ms, boost ms,
  boost multiplier range) to superkart-rules.json
- Increase drift visual rotation angle from 6° to 14° for more
  pronounced drift feedback
- Reset charge on respawn, spin, and new drift start
2026-07-17 22:04:43 -06:00
Brian Fertig 29d18c9c5f refactor: reduce kart rotation frames from 16 to 8 and add racer artwork
- Add new racer spritesheets (8 angles × 64×64) for all 9 racers
- Introduce KART_ROT_FRAMES constant as single source of truth for rotation frame count
- Update SuperKartMode7.angleFrame(), SuperKartGame frame math, and procedural fallback
  to derive from KART_ROT_FRAMES instead of magic numbers
- Update data/superkart-artwork.json with asset paths and 8-angle metadata
- Update sprites.md documentation to reflect 8-view-angle contract
2026-07-17 21:38:18 -06:00
Brian Fertig 81145d7891 Add custom background artwork to Super Kart menu screens
- Add superkart-background.png image asset
- Replace solid-color rectangle background with artwork in menu views
- Add semi-transparent shade overlay for better contrast
- Remove hardcoded title and tagline text (now baked into the image)
2026-07-17 15:09:01 -06:00
Brian Fertig 5380a8eab4 feat: add Super Kart — SNES-style Mode 7 kart racing game
Complete kart racing game featuring 12 procedurally generated tracks
across 3 cups, 9 unique racers with distinct stats, headless physics
simulation, and a secret track editor (?superkart-editor=1).

Core features:
- Mode 7 ground renderer with parallax horizon backdrops
- 12 hand-tuned tracks (speedway, beach, swamp, scrapyard, volcano, nightcity)
- 9-racer roster with balanced archetypes (all-rounder, drift pirate, etc.)
- Headless race simulation for deterministic AI and headless verification
- Item system (bolt, seeker, oil, turbo, overdrive, emp, coins)
- Position-weighted item roulette and rubber-banding
- AI opponents with skill-based driving and stuck-recovery
- Full track editor with live preview, validation, and export
- 275 verification checks covering schema, physics, AI soak, and determinism

Data files: data/superkart-racers.json, superkart-rules.json, superkart-artwork.json
Game data: assets/gamedata/superkart/ (cups.json + 12 track files)
Tools: genSuperKartTracks.js, verifySuperKart.js
2026-07-17 14:25:18 -06:00