mirror of
https://github.com/ppy/osu.git
synced 2026-05-23 21:00:27 +08:00
osu!taiko new miss penalty using consistency factor (#33409)
* New formulas for effective miss count and penalty * More elaborate comments * More comment stuff
This commit is contained in:
committed by
GitHub
Unverified
parent
c4b07413b1
commit
5df41c08f4
@@ -56,9 +56,12 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
|
||||
|
||||
estimatedUnstableRate = computeDeviationUpperBound() * 10;
|
||||
|
||||
// The effectiveMissCount is calculated by gaining a ratio for totalSuccessfulHits and increasing the miss penalty for shorter object counts lower than 1000.
|
||||
if (totalSuccessfulHits > 0)
|
||||
effectiveMissCount = Math.Max(1.0, 1000.0 / totalSuccessfulHits) * countMiss;
|
||||
// Effective miss count is calculated by raising the fraction of hits missed to a power based on the map's consistency factor.
|
||||
// This is because in less consistently difficult maps, each miss removes more of the map's total difficulty.
|
||||
effectiveMissCount = totalHits * Math.Pow(
|
||||
(double)countMiss / totalHits,
|
||||
Math.Pow(taikoAttributes.ConsistencyFactor, 0.2)
|
||||
);
|
||||
|
||||
// Converts are detected and omitted from mod-specific bonuses due to the scope of current difficulty calculation.
|
||||
bool isConvert = score.BeatmapInfo!.Ruleset.OnlineID != 1;
|
||||
@@ -86,7 +89,9 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
|
||||
double lengthBonus = 1 + 0.1 * Math.Min(1.0, totalHits / 1500.0);
|
||||
difficultyValue *= lengthBonus;
|
||||
|
||||
difficultyValue *= Math.Pow(0.986, effectiveMissCount);
|
||||
// Scales miss penalty by the total hits of a map, making misses more punishing on maps with fewer objects.
|
||||
double missPenalty = Math.Pow(0.5, 30.0 / totalHits);
|
||||
difficultyValue *= Math.Pow(missPenalty, effectiveMissCount);
|
||||
|
||||
if (score.Mods.Any(m => m is ModHidden))
|
||||
difficultyValue *= (isConvert) ? 1.025 : 1.1;
|
||||
|
||||
Reference in New Issue
Block a user