1
0
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:
Givikap120 2024-07-13 19:58:08 +03:00
parent 0374bfe5d6
commit 0af7315281
2 changed files with 10 additions and 9 deletions

View File

@ -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);
} }
} }
} }

View File

@ -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