mirror of
https://github.com/ppy/osu.git
synced 2025-03-13 07:07:44 +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; }
|
public double? EstimatedUr { get; set; }
|
||||||
|
|
||||||
[JsonProperty("hit_windows")]
|
[JsonProperty("hit_windows")]
|
||||||
public double[] HitWindows { get; set; }
|
public double[] HitWindows { get; set; } = null!;
|
||||||
|
|
||||||
public override IEnumerable<PerformanceDisplayAttribute> GetAttributesForDisplay()
|
public override IEnumerable<PerformanceDisplayAttribute> GetAttributesForDisplay()
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Mania.Difficulty
|
|||||||
private int countMiss;
|
private int countMiss;
|
||||||
private double? estimatedUr;
|
private double? estimatedUr;
|
||||||
private bool isLegacyScore;
|
private bool isLegacyScore;
|
||||||
private double[] hitWindows;
|
private double[] hitWindows = null!;
|
||||||
|
|
||||||
public ManiaPerformanceCalculator()
|
public ManiaPerformanceCalculator()
|
||||||
: base(new ManiaRuleset())
|
: base(new ManiaRuleset())
|
||||||
@ -83,7 +83,15 @@ namespace osu.Game.Rulesets.Mania.Difficulty
|
|||||||
if (estimatedUr == null)
|
if (estimatedUr == null)
|
||||||
return 0;
|
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;
|
return difficultyValue;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user