Skip to content

Stream drum gameplay metadata (feedpak 1.20.0) on the highway WebSocket #1104

Open

Description

@mattromano

What
feedpak 1.20.0 (FEP #67, feedpak-spec#68) lets a drum_tab.json carry drum gameplay metadata: per-hit a (accent) and x2 (double kick) flags, star_power / fills / solos ranges and easier difficulty levels (easy|medium|hard: {hits, generated}). The chart importer in #1091 writes them. The highway WebSocket does not pass them on: lib/drums.py hit_to_wire drops a and x2, and the drum_tab frame carries neither the range lists nor the levels, so bundle.drumTab never has them.

Why
A drums renderer (the drums plugin) needs them to score a chart the way a rhythm game does: Expert vs Expert+ (x2 kicks), Easy/Medium/Hard, star power phrases and fill activation, solo sections, and authored accents for the dynamics bonus. Today it can only draw the full hits[].

Proposal
Additive wire change: drum_hits keep a / x2; the drum_tab frame gets star_power, fills, solos (when non-empty) and a levels index {id: {total, generated}}; each level's hits stream after the top-level ones as drum_level_hits chunks ({level, data, total}, 500 per frame). highway.js stores everything on bundle.drumTab. A tab without the keys streams byte-for-byte the old frames; older clients ignore the new frame type.

Version: 0.3.0-alpha.1 (on top of #1091), any platform.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions