A Guitar Hero-style rhythm game 100% vibe-coded with Claude Opus 4.6 with many, many prompts.
- Node.js (v18+)
- For the desktop app: Rust and Tauri 2 prerequisites
npm installnpm run devOpen http://localhost:5173 to play.
npm run tauri:devThe desktop app adds native file system access, a beatmap library scanner, score history, and favorites.
npm run build # Web build (output: dist/)
npm run tauri:build # Desktop installer/bundleHit notes as they reach the bottom of the highway. The default lane keys are:
| Lane 1 | Lane 2 | Lane 3 | Lane 4 | Lane 5 |
|---|---|---|---|---|
| D | F | Space | J | K |
Keys are rebindable in Settings.
- Tap notes -- press the key when the note crosses the hit line.
- Sustain notes -- press and hold, then release at the tail.
| Window | Accuracy | Points |
|---|---|---|
| Perfect | +/- 45 ms | 300 x multiplier |
| Good | +/- 90 ms | 100 x multiplier |
| Miss | +/- 135 ms | 0 (resets combo) |
Build your combo to increase the multiplier (2x at 10, 4x at 30, 8x at 50). Sustain notes award 10 points per tick while held.
| Grade | Accuracy |
|---|---|
| S | 95%+ |
| A | 85%+ |
| B | 70%+ |
| C | 50%+ |
| D | < 50% |
VibeHero ships with three built-in songs (synthesized audio):
- First Steps -- tutorial, 100 BPM, Easy
- Neon Drive -- 128 BPM, Medium
- Cascade -- 150 BPM, Hard
- MP3 Upload -- drop in any MP3 and the game auto-generates a beatmap using beat detection.
- Clone Hero Charts -- load a song folder containing
notes.mid,song.ini, and audio files (OGG/MP3). In the desktop app, point to a folder of charts and the beatmap library will scan them automatically. Be creative and find the Google Sheets page with the Clone Hero Master List (I won't link it here).
All settings persist in localStorage (or app data in the desktop app):
- Key bindings
- Note travel time (800--4000 ms)
- Audio/video calibration offset
- Master volume
- Beatmap folder path (desktop only)
| Layer | Technology |
|---|---|
| Frontend | TypeScript, vanilla DOM |
| Build | Vite 6 |
| 3D | Three.js |
| Desktop | Tauri 2 (Rust) |
| Audio | Web Audio API + synthesized tracks |
The project uses path aliases for cleaner imports: @engine, @game, @ui, @data, @platform.
src/
main.ts # Bootstrap, game loop, routing
types.ts # Shared type definitions
constants.ts # Lane keys, timing windows, scoring, geometry
audio/ # Beat detection, chart loading, MP3 loading
data/ # Beatmap library, song library, scores, favorites
engine/ # Audio, rendering, input, clock
game/ # Highway, notes, hit detection, scoring, particles
parsers/ # MIDI and INI parsing, chart conversion
platform/ # Tauri IPC wrappers
settings/ # Settings manager
ui/ # Menu screens, HUD, overlays
src-tauri/ # Rust backend for the desktop app
public/assets/ # Built-in JSON beatmaps