How yumo-ymspace/rhythm-mania-v1-beta works
RhythmMania is a browser-native mania rhythm game. Players select or import a beatmap, configure play, perform to an audio clock, and review results and timing history. The main UI coordinates those screens; gameplay combines the mania ruleset with a renderer and audio engine. Local maps and preferences support offline play, while the documented mirror catalog is an optional online branch. The README describes several capabilities whose detailed wiring is not visible in the sampled source, so those links are limited to documented flows.
Main entry points: App.tsx App coordinator · GameplayCanvas.tsx Gameplay screen · SongSelect.tsx Song selection · osuTokenManager.ts Catalog client
Components 22
Game experience
- App coordinator
src/App.tsx - Song selection
src/components/SongSelect.tsx - Gameplay screen
src/components/GameplayCanvas.tsx - Results screen
src/components/ResultsScreen.tsx - Play history
src/components/PersonalHistoryScreen.tsx
Gameplay runtime
- Mania ruleset
src/ruleset/mania/index.ts - Audio engine
src/audio/AudioEngine.ts - Playfield renderer
src/render/Canvas2DRenderer.ts - 3D renderer
src/render/WebGL2PlayfieldRenderer.ts
Maps and history
- Beatmap parser
src/utils/beatmapParser.ts - Archive unpacking
src/utils/unpackHelper.ts - Local beatmap store
src/utils/storageManager.ts - Replay manager
src/utils/replayManager.ts - Star estimation
src/utils/starRating.ts
Settings and media
- Settings screen
src/components/SettingsScreen.tsx - Video sync
src/utils/videoSyncController.ts
Online catalog
- Catalog client
src/utils/osuTokenManager.ts - Catalog router
api/catalog-router.ts - Catalog search
api/catalog/_search.ts - Mirror catalog service
api/_lib/mirrorCatalog.ts
Other components
- Player
- Beatmap mirrors
Connections 27
- Player → App coordinator: uses
- App coordinator → Song selection: shows
- App coordinator → Gameplay screen: shows
- App coordinator → Results screen: shows
- App coordinator → Play history: shows
- Song selection → Archive unpacking: unpacks imports
- Archive unpacking → Beatmap parser: parses maps
- Song selection → Local beatmap store: loads maps
- Archive unpacking → Local beatmap store: saves maps
- Song selection → Star estimation: estimates difficulty
- Gameplay screen → Audio engine: controls transport
- Gameplay screen → Mania ruleset: judges input
- Gameplay screen → Playfield renderer: draws playfield
- Gameplay screen → 3D renderer: draws 3D field
- Gameplay screen → Video sync: syncs background
- Results screen → Replay manager: creates record
- Play history → Local beatmap store: reads records
- App coordinator → Replay manager: migrates history
- Player → Settings screen: configures
- Settings screen → Local beatmap store: persists preferences
- Song selection → Catalog client: searches sets
- App coordinator → Catalog client: downloads archives
- Catalog client → Catalog router: requests search
- Catalog router → Catalog search: dispatches
- Catalog search → Mirror catalog service: searches
- Mirror catalog service → Beatmap mirrors: queries
- Catalog client → Beatmap mirrors: downloads archive