尚未偵測到更新。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.