1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-26 13:47:28 +08:00

Slight balancing

Added diffspike nerf to reading (accounting to memorization of one hard part)
This commit is contained in:
Givikap120 2024-01-24 01:51:13 +02:00
parent f429f213d9
commit 77ce1aef42
4 changed files with 17 additions and 4 deletions

View File

@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
{
private const double reading_window_size = 3000;
private const double overlap_multiplier = 1;
private const double overlap_multiplier = 0.8;
public static double EvaluateDensityDifficultyOf(DifficultyHitObject current)
{

View File

@ -71,6 +71,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
double baseReadingLowARPerformance = Math.Pow(readingLowARRating, 2.5) * 17.0;
double baseReadingHighARPerformance = Math.Pow(5 * Math.Max(1, readingHighARRating / 0.0675) - 4, 3) / 100000;
double baseReadingHiddenPerformance = Math.Pow(readingHiddenRating, 2.0) * 25.0;
double basePerformance =

View File

@ -258,7 +258,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty
private double computeReadingValue(ScoreInfo score, OsuDifficultyAttributes attributes)
{
// Taking the highest value for AR reading
double readingARValue = Math.Max(computeReadingLowARValue(score, attributes), computeReadingHighARValue(score, attributes));
//double readingARValue = Math.Max(computeReadingLowARValue(score, attributes), computeReadingHighARValue(score, attributes));
double readingARValue = Math.Pow(
Math.Pow(computeReadingLowARValue(score, attributes), SumPower) +
Math.Pow(computeReadingHighARValue(score, attributes), SumPower), 1.0 / SumPower);
double readingHDValue = computeReadingHiddenValue(score, attributes);
// Here would be also readingSliderValue

View File

@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Utils;
using osu.Game.Rulesets.Difficulty.Preprocessing;
using osu.Game.Rulesets.Difficulty.Skills;
using osu.Game.Rulesets.Mods;
@ -43,6 +44,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
CurrentSectionPeak = Math.Max(currentDifficulty, CurrentSectionPeak);
}
private double reducedNoteCount => 5;
private double reducedNoteBaseline => 0.7;
public override double DifficultyValue()
{
double difficulty = 0;
@ -53,6 +56,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
List<double> values = peaks.OrderByDescending(d => d).ToList();
for (int i = 0; i < Math.Min(values.Count, reducedNoteCount); i++)
{
double scale = Math.Log10(Interpolation.Lerp(1, 10, Math.Clamp(i / reducedNoteCount, 0, 1)));
values[i] *= Interpolation.Lerp(reducedNoteBaseline, 1.0, scale);
}
// Difficulty is the weighted sum of the highest strains from every section.
// We're sorting from highest to lowest strain.
for (int i = 0; i < values.Count; i++)
@ -121,7 +130,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
private double currentStrain;
// private double currentRhythm;
private double skillMultiplier => 12;
private double skillMultiplier => 13;
private double strainDecayBase => 0.15;
private double strainDecay(double ms) => Math.Pow(strainDecayBase, ms / 1000);
@ -145,7 +154,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
public class HighARSpeedComponent : OsuStrainSkill
{
private double skillMultiplier => 900;
private double skillMultiplier => 650;
private double strainDecayBase => 0.3;
private double currentStrain;