1. Overview
- 12 full tracks and 48 difficulty charts
- Four lanes, hold notes, whammy and overdrive
- Four tour venues with progression and unlocks
- Keyboard, touch and gamepad input
- Timing calibration and photosensitive mode
- 14 interface languages and local personal records
Canvas 2D + Web Audio + TypeScript + Vite
14 interface languages: EN, PT, ES, FR, DE, IT, NL, PL, TR, RU, ID, JA, KO, ZH
2. Quick installation
- Extract the complete ZIP. The game/ folder is already ready to publish.
- Upload the contents of game/ to a directory on your HTTP(S) host. Preserve all relative paths.
- Open the index.html URL. Do not open via file://. No PHP, database or service account is required.
For a local test, open a terminal inside game/ and run:
python -m http.server 8765
http://localhost:8765/
3. Requirements and audio
Use a modern browser with JavaScript, ES modules and Canvas 2D and Web Audio. Enable hardware acceleration for 3D games. The first user gesture unlocks audio; browsers may block autoplay. Use HTTPS for public hosting. In an iframe, allow fullscreen and autoplay when needed.
4. Controls
Use D, F, J and K for the four lanes by default, or tap the lanes. Hold long notes until they end. Review key bindings, gamepad controls, calibration and photosensitive mode in Settings before playing. Timing accuracy builds your score and combo.
5. Interface layout guide
Main menu: modes and navigation
Actual gameplay: play area and HUD
Settings: language, sound and game options6. File map
Paths below are relative to source/. game/ contains deployable files; documentation/ contains these manuals and images; licenses/ preserves third-party notices.
| File | Purpose |
|---|
public/manifest.json | Song catalog, duration, audio versions and chart paths |
public/charts/ | 48 note charts |
public/audio/ | Track recordings |
src/core/chartValidate.ts | Chart schema and timing validation |
src/core/judge.ts | Timing judgments |
src/core/scoring.ts | Score and combo rules |
src/game/campaign.ts | Tour progression |
src/game/session.ts | Song lifecycle and result calculation |
src/i18n/locales.ts | 14 interface dictionaries |
src/net/localRecords.js | Local personal records |
src/ui/style.css | Interface and responsive layout |
7. Customization
Add audio under public/audio/, create one chart per supported difficulty in public/charts/, then add the song to public/manifest.json with a unique id, duration, BPM, theme, audioVersion and chart paths. Each chart needs the matching songId, difficulty, audioVersion, offset and ordered notes. Use chartValidate.ts and check synchronization by playing the whole track. An internal chart editor is not included.
Back up before editing. Change one feature at a time and test menu, gameplay, pause, result and reload. Keep item IDs and save keys stable to preserve existing players.
8. Optional developer workflow
Node 24 LTS recommended. Inside source/:
npm ci
npm run typecheck
npm run build
Publish only the contents of dist/. preview serves the local build for inspection. Do not upload node_modules/. Vite uses a relative base for subdirectories. The delivered runtime is formatted for readability; retain minify:false and cssMinify:false when rebuilding.
9. Saves and local records
Completed eligible songs save personal scores per song/difficulty in this browser. Tour progress and unlocks are also local. There are no remote opponents, shared weekly rankings or hosted replay services.
Storage belongs to the browser origin (protocol, host and port). Changing domains does not transfer saves. Clearing data or private browsing can remove progress. Back up storage before migrating. This edition uses its own keys, separate from portal editions.
10. Dependencies, licenses and deployment
All required runtime assets are included, including fonts, audio and the libraries used. No mandatory CDN is used. This does not mean automatic PWA/offline installation: a fresh page load still needs access to your HTTP host. Multiplayer servers, online leaderboards, ad SDKs, native projects and internal editors are excluded. Use included assets as part of the licensed end product under the marketplace terms; do not resell them separately. Preserve full notices in licenses/ and font/vendor directories.
11. Troubleshooting and FAQ
Tela vazia / blank screen
Confirme HTTP(S), WebGL e caminhos com maiúsculas/minúsculas. Leia o console. / Check HTTP(S), WebGL, case-sensitive paths and browser console.
JS recusado / module refused
O servidor deve enviar .js e .mjs com MIME JavaScript; .wasm com application/wasm. Não use text/plain para módulos. / Serve .js and .mjs with JavaScript MIME, and .wasm as application/wasm.
Sem áudio / no audio
Toque no jogo, verifique volume e permissões do navegador. / Tap the game, check volume and browser permissions.
Save desapareceu / save lost
Confira domínio, porta, modo privado e limpeza de dados. / Check domain, port, private mode and storage clearing.
Posso adicionar multiplayer? / add multiplayer?
Requer desenvolvimento e servidor próprios; não é um recurso incluído. / Requires your own development and server; not included.
Funcionará em qualquer celular? / any phone?
Os controles se adaptam à tela. O desempenho depende do navegador e hardware; teste seus aparelhos alvo. / Controls adapt to screen size; performance depends on browser and hardware. Test your target devices.
12. Support and updates
Support and custom development: willian@polargames.com.br. Include version, URL, browser, reproduction steps and a screenshot. Support follows the marketplace item terms. Updates are distributed through your purchase channel; read the changelog before replacing files and preserve saves. This guide does not promise a fixed response time or new features on specific dates.