尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Open index.html in Chrome/Edge/Safari (double-click works; no server needed).
js/answer.js → diagnose): wrong direction, didn't move, counted the starting square, skipped 0, close, far off, or past ±50. The 2nd wrong answer also lights up the path; the 3rd switches to counting together (tap to hop, one tap per square).index.html – markup for all screenscss/style.css – look + static screen layoutsjs/layout.js – single source of truth for every HUD rectangle (landscape 1920×1080 and portrait 1080×1920 stages)js/board.js – board numbering, ladder/snake placement (LADDERS, SNAKES), canvas drawing, layout validationjs/game.js – tokens and the turn state machinejs/ui.js – 3D dice, Roll/Hop button and nudges, hop bubble, banner, cards, toastjs/cinema.js – camera zoom/follow during movesjs/fx.js – splashes, sand puffs, bubbles, sparkles, confetti, ambient clouds/birds/fishjs/audio.js – sound hooks (placeholder synth now; add files to audio/ and list them in AVAILABLE)js/asset-sizes.js – auto-generated logical (original) sizes of every shipped imageassets/ – the shipped art as WebP: only the images the game uses, downscaled to about 2× their largest on-screen size_source-art/ (git-ignored, local only) – full-resolution PNG/JPG originals, including unused kit parts.
After changing art there, run node tools/optimize-assets.js (needs Playwright). The shipped list is tools/used-assets.json?play – skip the start screen and tutorial?tutorial – jump straight into the live tutorial?fast=4 – speed everything up 4×?debug – show every token anchor and HUD rectangleISL.game.force([1,6],[-1,3]) queues dice results; ISL.board.validate() checks the board layout.After the dice land, the camera (js/cinema.js) zooms in so the character fills the view, and follows every hop, snake slide and ladder climb.
Each hop plays a note that climbs for + moves and falls for − moves, and a running count (+1, +2, …) pops over the token. With reduce motion turned on, the camera stays still.
The dice are CSS 3D cubes built in js/ui.js from the face art (dice/sign-kit/plus-face, minus-face, dice/digits/digit-01…06): four plus faces and two minus faces on the sign die, and 1–6 on the number die (opposite faces add to 7). A roll tumbles each cube to its result face. To restyle them, replace those images.
Every screen change runs under the wave wipe (transition() in js/main.js): Play, How to play, Skip tutorial, the end of the tutorial, Play again, Restart, and Home.
The swap happens while the wave fully covers the stage, so resets never show, and modal fades are switched off under the wave. Extra clicks are ignored mid-transition, and Pause, Help and Esc wait until the wave has passed.
Every load opens with a ~7 s intro: you rise from the deep sea, a ladder bursts out of the water, snakes appear, the title slams in, both explorers land on the jetty, and an integer ticker counts −50 → +50. Then an SVG wave sweeps you to the start screen. Skip › (or ?nointro) jumps past it. Code: js/intro.js.
The first time you press Play, a coach walks you through four real scripted turns (+4, crossing zero with −6, a ladder, a snake). How to play on the start screen replays it. You can also replay it from the ? help panel. Use Skip tutorial to jump straight into a game.
js/voice-lines.js: numbers −56…+56 spoken as "negative three" / "positive four", the gameplay prompts, and the tutorial script.audio/voice/*.ogg, Opus 32 kbps) were made with gemini-2.5-pro-preview-tts, voice Puck, directed as a friendly explorer guide (numbers and the words "plus" and "equals" are read evenly so they splice into equations).GEMINI_API_KEY=... node tools/generate-voice.js (--force remakes everything, --only id,id remakes chosen lines, --voice and --model override). It needs ffmpeg. Keep the key in the environment and never commit it.gemini-3.8-flash-tts reads the direction (and [tags]) aloud, so it isn't suitable.tools/voice-generator.html in Chrome or Edge, paste your key, press Choose the game folder & generate, then pick this game folder.audio/sfx/*.ogg): generated with ElevenLabs Sound Effects (eleven_text_to_sound_v2). Each was picked from 2–4 variations, trimmed, level-matched and encoded as Ogg Opus 64 kbps. intro_* files are the intro's cue sheet (deep-sea bed, bubbles, surface splash, water burst, ladder creak, hiss, whoosh, title boom, shimmer, dice pops, dock landings, +50 bell, the wave); the rest are gameplay (dice, dice landing, hop boing, sand step, water plip, splash, camera whoosh, nudge, ladder climb, snake slide, turn, win, lose, click).audio/music/): made with Gemini Lyria 3. intro.ogg is a 12 s cue whose big hit is lined up with the title slam (2.75 s into the intro); loop.ogg is a calm 3-minute island loop, crossfaded end-to-start so it loops seamlessly. The loop starts on the start screen and plays through the game.js/audio.js): effects and music run on separate Web Audio buses; big effects and the voiceover briefly lower the music. Pause suspends all audio. The pause menu has Sound (everything) and Music (music only, remembered) switches.file:// it falls back to <audio> elements. A missing file falls back to a small synth sound.js/intro.js (search for "sound design"); per-event volumes are EVENTS in js/audio.js.