1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 04:52:57 +08:00

Balancing

This commit is contained in:
Givikap120 2024-04-28 13:01:51 +03:00
parent 856b631471
commit 07cb7011e5
3 changed files with 8 additions and 14 deletions

View File

@ -4,7 +4,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using osu.Framework.Extensions.ObjectExtensions;
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.Objects; using osu.Game.Rulesets.Osu.Objects;
@ -25,7 +24,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
double density = 0; double density = 0;
double densityAnglesNerf = -2; // we have threshold of 2 double densityAnglesNerf = -2; // we have threshold of 2
OsuDifficultyHitObject? prevObj0 = null; // Despite being called prev, it's actually more late in time
OsuDifficultyHitObject prevObj0 = currObj;
var readingObjects = currObj.ReadingObjects; var readingObjects = currObj.ReadingObjects;
for (int i = 0; i < readingObjects.Count; i++) for (int i = 0; i < readingObjects.Count; i++)
@ -45,9 +45,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
double timeBetweenCurrAndLoopObj = currObj.StartTime - loopObj.StartTime; double timeBetweenCurrAndLoopObj = currObj.StartTime - loopObj.StartTime;
loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj); loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj);
if (prevObj0.IsNull())
prevObj0 = (OsuDifficultyHitObject)loopObj.Previous(0);
// Only if next object is slower, representing break from many notes in a row // Only if next object is slower, representing break from many notes in a row
if (loopObj.StrainTime > prevObj0.StrainTime) if (loopObj.StrainTime > prevObj0.StrainTime)
{ {
@ -294,8 +291,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
double density = ReadingEvaluator.EvaluateDensityOf(current, false); double density = ReadingEvaluator.EvaluateDensityOf(current, false);
double preempt = currObj.Preempt / 1000; double preempt = currObj.Preempt / 1000;
// Consider that density matters only starting from 3rd note on the screen double densityFactor = Math.Pow(density / 6.2, 1.5);
double densityFactor = Math.Max(0, density - 1) / 5;
double invisibilityFactor; double invisibilityFactor;

View File

@ -231,11 +231,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty
accuracyValue *= 1.02; accuracyValue *= 1.02;
// Visual indication bonus // Visual indication bonus
double visualIndicationBonus = 1.0 + 0.1 * logistic(8.0 - attributes.ApproachRate); accuracyValue *= 1.0 + 0.2 * logistic(8.0 - attributes.ApproachRate);
accuracyValue *= visualIndicationBonus;
if (score.Mods.Any(h => h is OsuModHidden || h is OsuModTraceable)) if (score.Mods.Any(h => h is OsuModHidden || h is OsuModTraceable))
accuracyValue *= visualIndicationBonus; accuracyValue *= 1.0 + 0.1 * logistic(8.0 - attributes.ApproachRate);
return accuracyValue; return accuracyValue;
} }

View File

@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
public class ReadingLowAR : GraphSkill public class ReadingLowAR : GraphSkill
{ {
private readonly List<double> difficulties = new List<double>(); private readonly List<double> difficulties = new List<double>();
private double skillMultiplier => 1.25; private double skillMultiplier => 1.26;
private double aimComponentMultiplier => 0.4; private double aimComponentMultiplier => 0.4;
public ReadingLowAR(Mod[] mods) public ReadingLowAR(Mod[] mods)
@ -86,8 +86,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
return difficulty; return difficulty;
} }
public static double DifficultyToPerformance(double difficulty) => Math.Max( public static double DifficultyToPerformance(double difficulty) => Math.Max(
Math.Max(Math.Pow(difficulty, 1) * 13.0, Math.Pow(difficulty, 2) * 13.0), Math.Max(Math.Pow(difficulty, 1.5) * 22, Math.Pow(difficulty, 2) * 22.0),
Math.Max(Math.Pow(difficulty, 3) * 9.00, Math.Pow(difficulty, 4) * 6.0)); Math.Max(Math.Pow(difficulty, 3) * 12.0, Math.Pow(difficulty, 4) * 6.00));
} }
public class ReadingHidden : Aim public class ReadingHidden : Aim