fertig-classic-games/tools
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
..
lib feat: add Total Annihilation game with campaign, AI, and full engine 2026-07-24 20:57:40 -06:00
bloxorzMap.js feat: overhaul Bloxorz rendering, mechanics, and level design; update Total Annihilation visuals 2026-07-25 14:50:23 -06:00
buildCommonWords.js
…
fetchStarControlAssets.js
…
genBloxorz.js feat: overhaul Bloxorz rendering, mechanics, and level design; update Total Annihilation visuals 2026-07-25 14:50:23 -06:00
genDotLink.js
…
genGooTower.js Goo Tower Levels 2026-07-26 15:23:18 -06:00
genJumble.js
…
genKatamino.js
…
genMiniCrossword.js
…
genPeggleLevels.js
…
genPuddingMonsters.js feat: pudding monsters waves 1-3, mahjong match FX, background art 2026-07-26 01:27:36 -06:00
genRushHour.js
…
genSpireClimbCreatures.js
…
genSuperKartTracks.js
…
genTACampaign.js feat(totalannihilation): add victory conditions, new defensive towers, and combat improvements 2026-07-25 08:23:11 -06:00
genTetrisAttackPuzzles.js feat: add Tetris Attack (Panel de Pon) with endless, stage clear, and puzzle modes 2026-07-20 00:04:26 -06:00
genZuma.js Add tunnels to Zuma: editor, engine, art, and audio 2026-07-28 17:20:11 -06:00
verifyAdvanceWars.js feat(advance-wars): add unit progression system with mission-based unlocks 2026-07-19 10:55:18 -06:00
verifyBalatro.js
…
verifyBejeweled.js
…
verifyBlockFighter.js
…
verifyBloxorz.js feat: overhaul Bloxorz rendering, mechanics, and level design; update Total Annihilation visuals 2026-07-25 14:50:23 -06:00
verifyBookwork.js
…
verifyCanasta.js
…
verifyCivilization.js feat(civilization): replace yield text with icon rows and unit chips on city screen 2026-07-23 21:09:08 -06:00
verifyColoradoDefense.js
…
verifyCribbage.js
…
verifyDotLink.js
…
verifyDungeonBoss.js
…
verifyGinRummy.js
…
verifyGooTower.js Goo Tower Levels 2026-07-26 15:23:18 -06:00
verifyJewelQuest.js
…
verifyJumble.js
…
verifyMahjong.js
…
verifyMahjongMatch.js
…
verifyMiniMotorways.js feat(minimotorways): dynamic scaling and starvation-safe spawning 2026-07-23 21:55:20 -06:00
verifyPaiGowPoker.js
…
verifyPeggle.js
…
verifyPuddingMonsters.js feat: pudding monsters waves 1-3, mahjong match FX, background art 2026-07-26 01:27:36 -06:00
verifyRisk.js
…
verifyRummikub.js
…
verifySWDBG.js
…
verifySlots.js
…
verifySpireClimb.js
…
verifyStarControl.js
…
verifySuperKart.js feat(superkart): add missed-checkpoint correction for shortcut detection 2026-07-22 13:00:12 -06:00
verifyTempest.js retune tempest difficulty and fix death persistence 2026-07-21 22:52:07 -06:00
verifyTetrisAttack.js Re-theme stage clear to helping friends with multi-line intros 2026-07-22 20:52:05 -06:00
verifyTotalAnnihilation.js feat(totalannihilation): add auto-heal for idle builders 2026-07-25 20:36:50 -06:00
verifyZuma.js Add tunnels to Zuma: editor, engine, art, and audio 2026-07-28 17:20:11 -06:00