mirror of
https://github.com/ppy/osu.git
synced 2025-02-13 02:23:18 +08:00
rebalanced high AR
This commit is contained in:
parent
0374bfe5d6
commit
0af7315281
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
||||||
|
using osu.Game.Rulesets.Osu.Difficulty.Skills;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
||||||
@ -348,8 +349,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
else
|
else
|
||||||
value = Math.Exp(9.07583 - 80.0 * preempt / 3);
|
value = Math.Exp(9.07583 - 80.0 * preempt / 3);
|
||||||
|
|
||||||
// The power is 2 times higher to compensate sqrt in high AR skill
|
return Math.Pow(value, 1.0 / ReadingHighAR.MECHANICAL_PP_POWER);
|
||||||
return Math.Pow(value, 2);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,9 +118,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
public class ReadingHighAR : GraphSkill
|
public class ReadingHighAR : GraphSkill
|
||||||
{
|
{
|
||||||
|
public const double MECHANICAL_PP_POWER = 0.6;
|
||||||
private const double skill_multiplier = 0.13727;
|
private const double skill_multiplier = 9.3;
|
||||||
private const double component_default_value_multiplier = 445;
|
private const double component_default_value_multiplier = 280;
|
||||||
public ReadingHighAR(Mod[] mods)
|
public ReadingHighAR(Mod[] mods)
|
||||||
: base(mods)
|
: base(mods)
|
||||||
{
|
{
|
||||||
@ -169,8 +169,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
public override double DifficultyValue()
|
public override double DifficultyValue()
|
||||||
{
|
{
|
||||||
// Simulating summing to get the most correct value possible
|
// Simulating summing to get the most correct value possible
|
||||||
double aimValue = Math.Sqrt(aimComponent.DifficultyValue() * skill_multiplier) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER;
|
double aimValue = Math.Sqrt(aimComponent.DifficultyValue()) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER;
|
||||||
double speedValue = Math.Sqrt(speedComponent.DifficultyValue() * skill_multiplier) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER;
|
double speedValue = Math.Sqrt(speedComponent.DifficultyValue()) * OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER;
|
||||||
|
|
||||||
double aimPerformance = OsuStrainSkill.DifficultyToPerformance(aimValue);
|
double aimPerformance = OsuStrainSkill.DifficultyToPerformance(aimValue);
|
||||||
double speedPerformance = OsuStrainSkill.DifficultyToPerformance(speedValue);
|
double speedPerformance = OsuStrainSkill.DifficultyToPerformance(speedValue);
|
||||||
@ -180,13 +180,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
// Length bonus is in SR to not inflate Star Rating of short AR11 maps
|
// Length bonus is in SR to not inflate Star Rating of short AR11 maps
|
||||||
double lengthBonus = OsuPerformanceCalculator.CalculateDefaultLengthBonus(objectsCount);
|
double lengthBonus = OsuPerformanceCalculator.CalculateDefaultLengthBonus(objectsCount);
|
||||||
|
lengthBonus = Math.Pow(lengthBonus, 0.5 / MECHANICAL_PP_POWER);
|
||||||
|
|
||||||
// Get average preempt of objects
|
// Get average preempt of objects
|
||||||
double averagePreempt = objectsPreemptSum / objectsCount / 1000;
|
double averagePreempt = objectsPreemptSum / objectsCount / 1000;
|
||||||
|
|
||||||
// Increase length bonus for long maps with very high AR
|
// Increase length bonus for long maps with very high AR
|
||||||
// https://www.desmos.com/calculator/wz9wckqgzu
|
// https://www.desmos.com/calculator/wz9wckqgzu
|
||||||
double lengthBonusPower = 2 + 2 * Math.Pow(0.1, Math.Pow(2.3 * averagePreempt, 8));
|
double lengthBonusPower = 1 + 0.75 * Math.Pow(0.1, Math.Pow(2.3 * averagePreempt, 8));
|
||||||
|
|
||||||
// Be sure that increasing AR won't decrease pp
|
// Be sure that increasing AR won't decrease pp
|
||||||
if (lengthBonus < 1) lengthBonusPower = 2;
|
if (lengthBonus < 1) lengthBonusPower = 2;
|
||||||
@ -197,7 +198,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
double difficultyValue = Math.Pow(adjustedDifficulty / OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER, 2.0);
|
double difficultyValue = Math.Pow(adjustedDifficulty / OsuDifficultyCalculator.DIFFICULTY_MULTIPLIER, 2.0);
|
||||||
|
|
||||||
// Sqrt value to make difficulty depend less on mechanical difficulty
|
// Sqrt value to make difficulty depend less on mechanical difficulty
|
||||||
return 53.2 * Math.Sqrt(difficultyValue);
|
return skill_multiplier * Math.Pow(difficultyValue, MECHANICAL_PP_POWER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class HighARAimComponent : Aim
|
public class HighARAimComponent : Aim
|
||||||
|
Loading…
Reference in New Issue
Block a user