A Cinematic Rhythm Experience for Music Lovers
Built with Unity (HDRP) β Windows
Rhythm Walker is a precision-based rhythm game where players use the mouse cursor to trace lyric words as they appear on screen (maximum 4 words visible at once). Correct and timely traces build streaks and multipliers; missed or out-of-order words reduce score. The game pairs tight gameplay with cinematic visuals β HDR lighting, dynamic cameras, and polished animations β to deliver an immersive, music-first experience.
- πΌ Sequential Word Tracing β Trace lyrics in the exact order they appear.
- π Streak & Multiplier System β Chain accurate traces for higher multipliers.
- π HDRP Visuals β High-fidelity lighting, skyboxes and post-processing.
- π₯ Cinematic Direction β Camera sequencing, character animations, and lighting are driven by data for director-style control.
- πΆ Multilingual Support β Currently ships with 4 songs (2 English, 2 Hindi); any language is supported via lyric files.
π Download game here (no installation required):
Rhythm Walker
π» Developer Deep-Dive (Click to expand)
- Engine: Unity (HDRP)
- Platform: Windows
- Key scripts:
SequenceController.cs, lyric & song loaders, tracing detection - Design goal: Scalability & replicability β level creation is data-driven, non-programmers can author content.
Rhythm Walker separates content from code so creators can design levels purely by editing JSON and adding assets to Assets/Resources.
Lyrics are time-coded JSON arrays. Each object defines the window when a word appears.
[
{ "start": "00:00:17.89", "end": "00:00:18.36", "text": "Arms" },
{ "start": "00:00:18.36", "end": "00:00:18.83", "text": "around" },
{ "start": "00:00:18.83", "end": "00:00:19.30", "text": "you" }
]- Creation: Manually authoring JSON or converting
.lrcfiles works. - Behavior: Words are spawned at their
starttime and removed atend(or when traced). Order is enforced β untraced earlier words count as missed.
This is the directorβs control file. It maps cinematic assets and timing to a song and drives SequenceController.cs.
Example entry:
{
"title": "bbno$, y2k - lalala",
"playerModelName": "MainCharacter",
"skyCubemapNames": ["AmbienceExposure4k", "UnearthlyRed4k", "PlanetaryEarth4k", "sandsloot_4k"],
"cameraPositions": [ { "x": 0, "y": 0, "z": -2 }, { "x": 0, "y": 0, "z": -4 }, { "x": 100, "y": 0, "z": 0 }, { "x": 0, "y": 0, "z": -4 } ],
"rotateSpeed": [0, 0, 0, 0],
"fadeDuration": [2, 2, 2, 2],
"followDistances": [1.5, 1.5, 3.0, 1.5],
"followHeights": [-1, -1, 1, -1],
"transitionDurations": [7, 26, 71, 0],
"animationClipNames": ["idle", "walk", "fall", "run"],
"sunWorldPositions": [ { "x": 0, "y": 1, "z": -9 }, { "x": 0, "y": 1, "z": -9 }, { "x": 0, "y": 1, "z": -9 }, { "x": 0, "y": 1, "z": -9 } ],
"attachSunToCamera": [false, false, false, false]
}- What creators can change: scenes, camera paths, transition times, character model, animations, skyboxes, sun & lighting, and more.
- Where assets live: Place models, animation clips, and skybox cubemaps inside
Assets/Resourcesand reference them by name in the JSON.
- Add songs by creating a new lyrics JSON and an entry in
song_config.json. - Small behavior changes and new features belong in
SequenceController.csand are intentionally modular. - Want runtime editors for nonβcoders? The data-driven approach makes building an inβeditor tool straightforward.
-
Open project in Unity (use the same Unity version used to author the project).
-
Assets,Packages, andProjectSettingsare the only folders tracked in this repo (large assets are stored externally β see below). -
To add a song:
- Add your lyrics JSON to
Assets/Lyrics/. - Add cinematic assets (models/skyboxes/animations) to
Assets/Resources/. - Add a new entry in
Assets/Resources/song_config.jsonand play.
- Add your lyrics JSON to
Large binary assets (HDRI .exr, large .fbx, etc.) are intentionally not included in this repository.
They are tracked separately to keep the repo lean.
π Download large assets here:
Google Drive Folder
- A file
LargeAssetsList.txt(committed) contains file paths of ignored large files (if present). - To upload large files, consider a shared cloud (Drive/Dropbox) and add download links to the README or
LargeAssetsList.txt.
PowerShell snippet to regenerate the list locally:
Get-ChildItem -Path "Assets" -Recurse |
Where-Object { $_.Length -gt 50MB } |
ForEach-Object { $_.FullName } |
Set-Content "LargeAssetsList.txt"- Found a bug or a perf issue? Open an issue with repro steps.
- Want to add a feature? Send a PR and describe the design in the PR description.
- If you add new resources, list them in
Assets/Resourcesand reference them insong_config.json.
This project is made for learning purposes. The assets are thanks to mixamo.org and other such sites.
Developer: Aartem Singh Email: [[email protected]]
UI/UX Designer: Mawrah Khan Email: [[email protected]]
Created in 2 weeks β focused on creativity, scalability, and player experience.