Repository navigation
feat(view): Rock Band-style 3D drum highway with keyboard drumming - #26
Open
mattromano wants to merge 3 commits into
Open
mattromano wants to merge 3 commits into
mattromano wants to merge 3 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>
Address the CodeRabbit findings on the first scoring PR and bring in the
scoring work field-tested since (drums 5.8-5.15 in Matt's own build).
Review fixes:
- The input offset now moves the engine's clock too. The session owns
the offset (createSession inputOffsetMs / setInputOffset) and applies
it to update(), hit() and activate() alike; before, a positive offset
only shifted the hits, so a late-registered hit found its note already
missed.
- MIDI velocity reaches the engine as velocity / 127. The engine reads
values <= 1 as already normalised, so velocity 1 counted as full
strength.
- Star power can be activated on charts with phrases but no fills
(manual activation): Enter while the drum view is focused, or an
optional SP pad (settings, drums_sp_pad_v1: hi-hat pedal, ride bell,
splash or china). The HUD says how when star power is ready.
- A scoring script that failed to load (or loaded without registering)
has its <script> element removed, so the next init loads it again.
- Docs: legacy charts with GM 35 double kicks still offer Expert+;
LGPL-3.0 section 2(b) also allows a modified engine.js under the GPL.
Ported from the 5.x line:
- Hit timing: a smoothed per-highway clock (core 3D highway pattern)
for drawing and scoring, hits timed by the MIDI message timestamp when
the provider passes one, and the engine trails the frame clock by
60 ms so a hit struck just before a frame keeps its own time.
- Early/late timing meter under the score with the suggested input
offset and an Apply button. The default offset stays 0.
- End-of-song results card (single view): total with bonuses, best
score per song and difficulty, stars, accuracy and the breakdown.
- Auto kick / cymbals scheduled from the audio clock by one shared,
forward-only schedule: no late or doubled auto notes.
- The drum view refuses a part that isn't drums ("This song has no
drums" / "Pick the Drums part") instead of scoring guitar notes.
- Splitscreen: kit hits go to the drum view that is on screen.
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 stays with the scoring change's star power key, which only takes it when star power can be activated by hand. - The 3D HUD shows the early/late timing meter with its Apply button (session.js timingSummary), the star power hint and the "This song has no drums" message, and the track moves on the same smoothed highway clock the scoring uses, so gems glide instead of stepping with each audio sample. 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 details
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 15, 2026
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.
Replaces #22. Stacked on #25 — this branch includes that PR's two commits; review that one first. The only new commit here is the view (
c17122b, +1683/−22 over the scoring branch).assets/highway3d.js(MIT, original code, no game artwork): three.js drum track on core's vendored three.js — pad lanes + kick bar, bevelled pad gems, domed cymbals, strikeline targets, hit flashes / sparks, star power / fill / solo highlightingfeedBackViz_drums3d/_drums2dfor hostsTests:
node tests/highway3d.test.js(6) plus the scoring PR's suites, all passing. The WebGL scene was checked in a browser harness; it still needs a pass in the real v0.3 player chrome.🤖 Generated with Claude Code