1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-05 17:54:14 +08:00

Nerf aim strain for objects <radius (#36558)

This should be a pretty simple fix for doubles being systemically broken
in aim. Doubles get essentially zero bonus from the aim eval itself -
wide & acute bonuses are zero due to the lack of distance, and velocity
is close to zero _again_ because of the lack of distance. However, the
delta times of these notes mean that `highBpmBonus` is very kind and
will buff the strain quite significantly.

This change means that the 2nd note of a double should get next to no
aim strain, which feels like correct behaviour. From testing, streams,
stacks etc. are essentially unchanged by this due to the fact its using
radius rather than diameter.

https://pp.huismetbenen.nl/rankings/players/doubles-strain
This commit is contained in:
James Wilson
2026-01-31 20:55:11 +00:00
committed by GitHub
Unverified
parent e9974ba43d
commit 355addc6ee
@@ -167,12 +167,16 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
// Apply high circle size bonus
aimStrain *= osuCurrObj.SmallCircleBonus;
aimStrain *= highBpmBonus(osuCurrObj.AdjustedDeltaTime);
aimStrain *= highBpmBonus(osuCurrObj.AdjustedDeltaTime, osuCurrObj.LazyJumpDistance);
return aimStrain;
}
private static double highBpmBonus(double ms) => 1 / (1 - Math.Pow(0.15, ms / 1000));
// We decrease strain for distances <radius to fix cases where doubles with no aim requirement
// have their strain buffed incredibly high due to the delta time.
// These objects do not require any movement, so it does not make sense to award them.
private static double highBpmBonus(double ms, double distance) => 1 / (1 - Math.Pow(0.15, ms / 1000))
* DifficultyCalculationUtils.Smootherstep(distance, 0, OsuDifficultyHitObject.NORMALISED_RADIUS);
private static double calcWideAngleBonus(double angle) => DifficultyCalculationUtils.Smoothstep(angle, double.DegreesToRadians(40), double.DegreesToRadians(140));