mirror of
https://github.com/ppy/osu.git
synced 2025-03-13 00:47:19 +08:00
Switch to using deviation on notes and heads for multiplier scaling
This commit is contained in:
parent
c20e1508dd
commit
9cc6a3a4c0
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Mania.Difficulty
|
||||
public double? EstimatedUr { get; set; }
|
||||
|
||||
[JsonProperty("hit_windows")]
|
||||
public double[] HitWindows { get; set; }
|
||||
public double[] HitWindows { get; set; } = null!;
|
||||
|
||||
public override IEnumerable<PerformanceDisplayAttribute> GetAttributesForDisplay()
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Mania.Difficulty
|
||||
private int countMiss;
|
||||
private double? estimatedUr;
|
||||
private bool isLegacyScore;
|
||||
private double[] hitWindows;
|
||||
private double[] hitWindows = null!;
|
||||
|
||||
public ManiaPerformanceCalculator()
|
||||
: base(new ManiaRuleset())
|
||||
@ -83,7 +83,15 @@ namespace osu.Game.Rulesets.Mania.Difficulty
|
||||
if (estimatedUr == null)
|
||||
return 0;
|
||||
|
||||
difficultyValue *= Math.Max(1 - Math.Pow(estimatedUr.Value / 500, 1.9), 0); // UR to multiplier curve, see https://www.desmos.com/calculator/w3zgyzqalm
|
||||
double noteHeadPortion = (double)(attributes.NoteCount + attributes.HoldNoteCount) / (attributes.NoteCount + attributes.HoldNoteCount * 2);
|
||||
double tailPortion = (double)attributes.HoldNoteCount / (attributes.NoteCount + attributes.HoldNoteCount * 2);
|
||||
|
||||
// We increased the deviation of tails for estimation accuracy, but for difficulty scaling we actually
|
||||
// only care about the deviation on notes and heads, as that's the "accuracy skill" of the player.
|
||||
// Increasing the tail multiplier will decrease this value.
|
||||
double noteHeadUr = estimatedUr.Value / Math.Sqrt(noteHeadPortion + tailPortion * Math.Pow(tail_deviation_multiplier, 2));
|
||||
|
||||
difficultyValue *= Math.Max(1 - Math.Pow(noteHeadUr / 500, 1.9), 0);
|
||||
|
||||
return difficultyValue;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user