Levels past the authored maps were always the same 31x21 maze. Now the shape
rotates through what Gauntlet II is actually remembered for:
- arena — "IT'S A TRAP!": wide open, a few pillars, ringed with generators
- fortress — concentric rings, single-gap vault door, exit at the locked core
- invisible — walls at 0.05 alpha, revealed tile-by-tile as you bump them
- cells — honeycomb of small rooms joined by punched doorways
- quadrants — four rooms behind a wall cross, clutter blocks inside
- maze — the original recursive backtracker, now one option of six
Map size scales with depth (25x17 -> 45x31, 18 distinct sizes). Arena gets
generator hell; deeper tiers get more gold and clutter.
Two bugs caught by an in-browser solvability harness (flood-fill from start to
booth across 80 generated levels):
- 3 of 6 `cells` levels sealed the exit off entirely -> added a safety net that
carves an L-corridor when the booth is unreachable (only turns wall into
floor, so it can never eat a fixture; protects future archetypes too)
- archetype was welded to theme forever (7 % 6 === 1, so shape index == theme
index): every Archive level was invisible AND dark. Decoupled with a per-loop
offset, plus an explicit guard against the dark+invisible combo.
Verified: 80 levels, 0 unsolvable, every vault ships a reachable key outside it,
each theme now sees 3 different shapes, 0 dark+invisible combos.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Texture audit found the real weakness: one wall texture repeated up to 316x per
maze, so levels read as wallpaper. Generated 26 more images on MODELBEAST (free,
local) and wired what was already sitting unused.
- 4 wall variants per theme (24 total), picked by a stable hash of tile position:
neighbours differ, but a given tile keeps its texture across rebuilds
- 8 floor decals scattered on open tiles (5% density, seeded per level, tinted
back to 0.45 alpha so litter never competes with sprites)
- Classes now have distinct SPRITES instead of colour tints (the 3 player
variants were generated in batch 3 and never wired)
- Scalper (hunts gold only, flees with it) joins club/festival spawn tables;
Fire Marshal (2nd wall-phasing stalker) appears in procgen from level 7
- Readability fix: CLUB NIGHT's fine checker floor read as noise under sprites.
Regenerated a coarse one + per-theme floorTint so busy floors get knocked back.
- process_sprites skips not-yet-generated files instead of crashing the batch
39 -> 73 game textures. All verified in-browser: 316-wall maze splits evenly
across 4 variants, deterministic across rebuilds, per-class sprites, scalper
ignores espresso for gold, 71/71 assets load clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Title: FLUX marquee logo + 4 portrait class-select cards (keys 1-4 or tap)
- Themes 4-5: WAREHOUSE RAVE (shazam zombie turrets firing slow requests,
gatekeeper tanks) and FESTIVAL GROUNDS (wobbling warped records); tune pools
extracted for both (acid/tech-house/minimal, trance/big-beat/prog) -> 1008 tunes
- Spectral Conductor boss (level 8 of each 12-cycle): 20 HP, teleports to a
corner every 5 hits, doubles generator rate + 1.5x enemy speed while alive
- The Monstrous 78 RPM (level 12): 30 HP, bounces Pong-style, spits warped
shards, only vulnerable while "changing sides" (dimmed); killing it reveals
THE WHITE LABEL (??? - ???) in the notebook and starts NG+ density
- Boss arenas have no exit until the boss falls - the booth appears where it died
- Fix: makeGlow crashes on scene restart (createCanvas returns null if key exists)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30 FLUX images via MODELBEAST (queue3 + text rerolls), all local/free:
class portraits x4, player variants x3, Tier-3 villains x7 (spectral conductor,
78rpm, gatekeeper, shazam zombie, scalper, warped record, fire marshal),
warehouse + festival tilesets, props, attract cards, wide key-art banner,
VINYL GAUNTLET marquee logo, and the super-rare 4-player cabinet hero shot.
klein-4b garbles text ~2/3 of the time: rerolled with 'reads exactly' prompts
(logo nailed it 3/3), composited the good marquee onto the cabinet with PIL and
pixel-verified the garbled kickplate patch. Finals in assets/promo/ (committed);
raw gen stays in assets/generated/ (gitignored, reproducible from queue JSONs).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Digging: hold E (or DIG touch button) by a crate wall, 2s rooted channel, once
per tile. Loot: 70% +200 vibe, 25% gold record, 4% grail (full vibe), 1%
bootleg (every bin on the level erupts).
- Treasure rooms: every 3rd level, 20s bonus room strewn with gold, no enemies,
booth exits instantly, "CLOSING TIME" when the timer dies.
- THE ARCHIVE (4th theme): FLUX-generated dark tileset, real darkness via
RenderTexture with radial glow holes at player + lamps, dust mites spawn in
packs of 3, Mite Queen miniboss (12 HP, broods mites every 5s, airhorn-immune,
drops 3 gold + 1000 pts). Archive tune pool: 195 dnb/hardcore/breakbeat/
electro 12"s (718 total tunes now).
- Infinite: levels past the 4 authored maps are deterministic seeded mazes
(recursive backtracker + loops + rooms), difficulty scales with depth.
All verified in-browser via engine stepping.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
assets/extract_tunes.py pulls 523 canon tunes (repress-count ranked, club pool
12"-only) into public/tunes.json across shop/fair/club genre pools; top ~8% of
each chunk flagged grail ("CERTIFIED CLASSIC", gold flash, 2000 pts). Level
clear reveals a real record (artist — title, label, year), the announcer speaks
it, and first IDs land in a persistent localStorage notebook (+1000). Title
screen shows notebook progress. Also: overlay/sub text got backgrounds for
readability, and prompt() is guarded for webviews that lack it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Vite base=/vinylgauntlet/ and Phaser assets load from BASE_URL so they resolve
under the subpath. deploy.sh builds and ships dist/ into the forum-nginx
container (humanjing@100.71.119.27), same pattern as the other partly.party
games. Verified live: 200, game HTML + sprites serving, renders in-browser.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerate textures at 48px (chars/walls), 96px floor, with an UnsharpMask to
counter the LANCZOS softening. Bump TILE to 48 so the whole world scales up and
sprites render bigger/crisper; scale movement + range constants x1.5 to keep the
same tiles-per-second feel, and collision bodies to 34px. Mechanics reverified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>