Skip to content

BeatmapRemixer: Consider heuristics for eliminating “impossible” player movements when joining 2 sections of a beatmap together #17

@rigdern

Description

@rigdern

BeatmapRemixer's job is to generate a remix of the beatmap. This involves joining beatmap sections that weren’t originally joined. This can result in boundaries of beatmap sections that are nearly impossible for the player to hit. Examples:

  • Two notes of the same color that appear on sequential beats (or close to it) and are on completely different parts of the screen. For example, imagine trying to hit a red note in the top left corner on one beat and a red note in the bottom right corner on the next beat.
  • A note that is blocked by a wall (because the note is on the beat immediately after the wall (or close to it)).
  • Two notes of the same color that appear on sequential beats (or close to it) that are in the same spot and have the same cut direction. For example, imagine having to swing down to hit a red note on one beat and having to swing down again to hit a red note on the next beat.
  • A note sequence that results in a handclap (the player smashing their controllers together). For example, a red note pointing right and, on the next beat, a blue note pointing left.
  • See the “Pattern Best Practices” section of the Beat Saber Modding Group Wiki’s Basic Mapping page for more ideas on the kinds of things BeatmapRemixer should avoid.

Possible solutions:

  • Here’s a straightforward solution. When joining two beatmap sections, ensure the boundary doesn’t have any beatmap items that are within X seconds of each other (X to be determined). If there are, delete some of these beatmap items so that there’s at least X seconds of free space at the boundary. This would have to be tested to see how good the resulting beatmap remixes feel.
  • A more complicated solution would be to manually implement heuristics for eliminating undesirable beatmap patterns at section boundaries. For example, there could be a heuristic that checks for notes that are immediately behind walls. If there are, the wall is removed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions