fertig-classic-games/data
Brian Fertig 10165547ae Add tunnels to Zuma: editor, engine, art, and audio
Introduce underground tunnel sections to Zuma levels, letting the
chain roll out of sight and back in. Tunnels are arc-length intervals
on the path; while a ball is submerged it is inert — ignored by shots,
the laser sight, and explosions — and the path itself is drawn as a
faint buried trace beneath any live section that crosses it.

Engine (ZumaLogic.js): TUNNEL constants, normalizeTunnels, isHidden,
visibilityAt, pathSpans, sampleRange, nearestS; createLevel,
syncPositions, applyPower, stepFlights, and rayHit all honour
submersion. validateLevel lints mouth placement, spacing, and the
40% max-hidden fraction.

Game (ZumaGame.js): depth layer reorg so a live path always wins an
overlap with a tunnel stone; addPortal draws the two-layer maw (stone
below the chain, mouth above it); drawPit replaces the old skull with
a broken-stone collar and vapour swirl; startPitFall rolls the lost
chain over the lip in order, shrinking marbles into the dark; the
level-start fanfare ducks the soundtrack via MusicPlayer pause/resume.

Editor (ZumaEditor.js): new Tunnels tool with click-to-place,
drag-to-slide, right-click-to-remove, ESC-to-cancel; three graphics
layers (buried path, live path, handles) matching the game's
stacking; queueGameAssets so editor Test Play has the lazy art ready.

Art: ZumaPortal.js (carved serpent-head maw, symmetric so one
texture serves both ends) and ZumaPit.js (shaft of darkening discs
read as depth, not a painted circle).

Audio: four Zuma SFX (shoot, hit, start, explode) and a three-track
soundtrack wired through data/zuma-music.json and the asset manifest;
genZuma.js gains a tunnels column (fractions of path length) and
verifyZuma.js gains a tunnel test suite.
2026-07-28 17:20:11 -06:00
..
crosswords
wordlists
advancewars-artwork.json
advancewars-campaign.json
advancewars-rules.json
adventure-music.json
arcadedark-music.json
balatro-artwork.json
blockfighter.json
bloxorz.json feat: overhaul Bloxorz rendering, mechanics, and level design; update Total Annihilation visuals 2026-07-25 14:50:23 -06:00
bookwork.json
card-backs.json
chinese-music.json feat: add Goo Tower game with physics engine, 12 levels, and editor 2026-07-26 10:22:25 -06:00
civilization-artwork.json
civilization-rules.json
colorado-defense-cities.json
colored-playfields.json
dotlink.json
dungeonboss-artwork.json
hacker-music.json
jewelquest.json
jumble-riddles.json
jumble.json
katamino.json
music.json
nintendo-music.json
opponents.json
playfields.json
puddingmonsters.json feat: pudding monsters waves 1-3, mahjong match FX, background art 2026-07-26 01:27:36 -06:00
rushhour.json
shift-artwork.json
slots-artwork.json
spireclimb-artwork.json
star-control-ships.json
superkart-artwork.json
superkart-racers.json
superkart-rules.json
swdbg-artwork.json
swdbg-cards.json
tetrisattack-artwork.json
tetrisattack-puzzles.json
tetrisattack.json
totalannihilation-artwork.json Terrain Sprites for Total Annihilation 2026-07-26 14:14:20 -06:00
totalannihilation-campaign.json feat(totalannihilation): add victory conditions, new defensive towers, and combat improvements 2026-07-25 08:23:11 -06:00
totalannihilation-rules.json feat(total-annihilation): add rocket trooper, constructor, and advanced vehicle plant 2026-07-25 19:52:26 -06:00
zuma-music.json Add tunnels to Zuma: editor, engine, art, and audio 2026-07-28 17:20:11 -06:00
zuma.json Add tunnels to Zuma: editor, engine, art, and audio 2026-07-28 17:20:11 -06:00