osu icon indicating copy to clipboard operation
osu copied to clipboard

Fix slider `MinimumJumpDistance` being calculated too low to be possible

Open stanriders opened this issue 1 year ago • 7 comments

Replaces https://github.com/ppy/osu/pull/29994 since this is a proper fix of the underlying issue

stanriders avatar Sep 28 '24 10:09 stanriders

This whole LazyJumpDistance and MinimalJumpDistance is very confusing.

In the current system:

  • LazyJumpDistance is the distance between "True end of the object, reached in as little movement as possible" and next object
  • TravelDistance is is the distance you need to travel to reach "True end of the object with as little movement as possible"
  • This means that LazyJumpDistance and TravelDistance together make the full movement
  • MinimalJumpDistance is some very questionable metric that takes the minimum between slightly lowered LazyJumpDistance and "Distance from tail to next object, lowered by followcircle radius". And in the most cases it's the second part that's taken as minimum.
  • And somehow it's MinimalJumpDistance what is used as a metric that needs to be paired with TravelDistance

The whole MinimalJumpDistance calculation doesn't makes any sense. Why would you take LazyJumpDistance and subtract arbitrary distance from it? Why second part of the formula takes distance from the tail and subtracts followcircle radius? In case where sliderbody is away from next object - it would just be the same as LazyJumpDistance. However in case where it's in direction of next object - you're already taking less distance than LazyJumpDistance (because you fully reached the end, not lazily) and subtracting this distance even further.

This change fixes the second part, and makes MinimalJumpDistance to essentially be Max(JumpDistance, LazyJumpDistance - 0.6 * circle_radius). I have no idea what this metric meant to represent and why it's used together with TravelDistance.

Givikap120 avatar Sep 28 '24 12:09 Givikap120

!diffcalc RULESET=osu

stanriders avatar Dec 11 '24 08:12 stanriders

Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/12272699486

github-actions[bot] avatar Dec 12 '24 02:12 github-actions[bot]

!diffcalc RULESET=osu

smoogipoo avatar Dec 12 '24 05:12 smoogipoo

Target: https://github.com/ppy/osu/pull/30036 Spreadsheet: https://docs.google.com/spreadsheets/d/1r5VCGzMILrWaAJMuX0scPN9QO9Ir8bP8oiSf4pq5jN4/edit

github-actions[bot] avatar Dec 13 '24 07:12 github-actions[bot]

!diffcalc RULESET=osu

tsunyoku avatar Dec 16 '24 12:12 tsunyoku

Target: https://github.com/ppy/osu/pull/30036 Spreadsheet: https://docs.google.com/spreadsheets/d/18CKCNSse3K4uDP5rVLAqpBMqR-uVBgP35cuS8pNnqZs/edit

github-actions[bot] avatar Dec 16 '24 17:12 github-actions[bot]