Repository navigation
feat(view): Rock Band-style 3D drum track with keyboard drumming - #22
Closed
mattromano wants to merge 2 commits into
Closed
mattromano wants to merge 2 commits into
mattromano wants to merge 2 commits into
Conversation
Score drum charts the way the rhythm games do: assets/engine.js is a JavaScript port of YARG.Core's drums engine (LGPL-3.0, kept as its own replaceable file with LICENSE.LGPL-3.0, LICENSE.GPL-3.0 and NOTICE.md), driven through assets/session.js (MIT) which adds difficulty levels, star power metadata, assists and timing / roll / drum-solo bonuses. - Per-player difficulty Easy..Expert+ (settings, HUD badge, D/Shift+D). Expert drops x2 kicks; lower levels, star power, fills and solos come from the drum tab's feedpak 1.20.0 gameplay metadata (Expert only without it). - Assists: auto kick / auto cymbals up to a difficulty (played on the drum sound at their own volume), timing presets, Pro cymbals, input offset. - The 2D view marks hits / misses from the engine and draws a score HUD (multiplier, score, streak, stars, star power) with Score on. - Drum-tab accents follow the authored `a` flag; x2 kicks map to GM 35. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
Add assets/highway3d.js, a three.js drum track in the style of the classic drum games (MIT, original code, no artwork from those games): pad lanes and a kick bar, bevelled rectangle pad gems, domed cymbals, strikeline targets, hit flashes and sparks, star power / fill / solo highlighting and a HUD with streak, multiplier, star power, score, stars, accuracy and the difficulty badge. It renders the scoring session from the previous change, through core's vendored three.js. - View setting Auto (3D with WebGL2) / 3D / 2D; the main player swaps renderers on change; feedBackViz_drums3d / _drums2d for hosts. - Keyboard drumming in both views (Keys, default on): B kick, F red, J/K/L toms, Shift or U/I/O cymbals, Enter star power. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (14)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Oct 10, 2026
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Closes #21. Stacked on #20 (feature/ISSUE-yarg-scoring-engine) — review that first; this PR's own change is the last commit.
assets/highway3d.js(MIT, original code, no artwork/fonts/logos from those games) — a three.js scene on core's vendored/static/vendor/three/three.module.min.js: pad lanes + kick bar, bevelled rounded-rectangle pad gems, domed cymbals with bell and ring, flat kick bars (magenta for double kicks), accents bigger / ghosts translucent, missed gems grey; rectangular strikeline targets, hit flashes + sparks, red lane flash on misses / overhits; beat + measure lines; star power (silver gems, blue rails/wash), fill highlight with the activator ring, violet solo tint; HUD canvas with streak + multiplier (left) and star power meter, score, stars, accuracy, difficulty badge (right). Core draw hooks fire on the HUD canvas. It renders the scoring session from the previous PR.feedBackViz_drums, no staticcontextTypeso Auto still works without WebGL2); the instance declarescontextType: 'webgl2'and uses the asyncreadyPromisecontract. Changing the view swaps the renderer in the main player.feedBackViz_drums3d/feedBackViz_drums2dexported for hosts.Dropped from the custom version: retiring core's bundled
drum_highway_3d(picker blocking / prefs migration) and the "take over guitar views" shim — both were Slopsmith 0.2.9 workarounds. Note for maintainers: core still bundlesdrum_highway_3d, which sorts beforedrumsand wins Auto for drum parts; users pick "Drum Highway" explicitly until core decides which drum view Auto prefers.Screenshots
3D track paused; a star power phrase at x3 with keyboard hits; a tom fill (rectangle gems) with star power building; the settings panel with View / Keys:
(b2-3d-paused.jpg, b2-3d-star-power-phrase.jpg, b2-3d-fill-toms.jpg, b2-3d-settings-panel.jpg)
Tests
node tests/highway3d.test.js— 6 pass (exports, WebGL2-less createView throws cleanly, keyboard layout, key fallbacks / modifiers, synth notes round-trip through GM, D is never a drum key, view resolution + factories)node --checkall JSch_to_sloppak.pytest pack: 3D view loads via the assets route + vendored three.js, keyboard hits score (streak 21 / x3 in the screenshot), star power notes, fill toms and the settings panel render. Audio never played (paused + seek; frames driven by screenshots).🤖 Generated with Claude Code