1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-09 10:32:54 +08:00

Balance streams and HD aim

This commit is contained in:
js1086 2023-07-30 12:51:36 +01:00
parent 8937080c91
commit c1712740f7

View File

@ -33,7 +33,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
double loopDifficulty = currObj.OpacityAt(loopObj.BaseObject.StartTime, false); double loopDifficulty = currObj.OpacityAt(loopObj.BaseObject.StartTime, false);
// Small distances means objects may be cheesed, so it doesn't matter whether they are arranged confusingly. // Small distances means objects may be cheesed, so it doesn't matter whether they are arranged confusingly.
loopDifficulty *= logistic((loopObj.MinimumJumpDistance - 80) / 15); loopDifficulty *= logistic((loopObj.MinimumJumpDistance - 90) / 15);
double timeBetweenCurrAndLoopObj = (currObj.BaseObject.StartTime - loopObj.BaseObject.StartTime) / clockRateEstimate; double timeBetweenCurrAndLoopObj = (currObj.BaseObject.StartTime - loopObj.BaseObject.StartTime) / clockRateEstimate;
loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj); loopDifficulty *= getTimeNerfFactor(timeBetweenCurrAndLoopObj);
@ -48,10 +48,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
if (hidden) if (hidden)
{ {
double timeSpentInvisible = getDurationSpentInvisible(currObj) / clockRateEstimate; double timeSpentInvisible = getDurationSpentInvisible(currObj) / clockRateEstimate;
double timeDifficultyFactor = 800 / pastObjectDifficultyInfluence; double timeDifficultyFactor = 1000 / pastObjectDifficultyInfluence;
hiddenDifficulty += Math.Pow(7 * timeSpentInvisible / timeDifficultyFactor, 1) + double visibleObjectFactor = Math.Clamp(retrieveCurrentVisibleObjects(currObj).Count - 3, 1, 10);
2 * currVelocity;
hiddenDifficulty += Math.Pow(visibleObjectFactor * timeSpentInvisible / timeDifficultyFactor, 1) +
visibleObjectFactor * 4 * currVelocity;
} }
double difficulty = hiddenDifficulty + noteDensityDifficulty; double difficulty = hiddenDifficulty + noteDensityDifficulty;
@ -77,6 +79,25 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
} }
} }
private static List<OsuDifficultyHitObject> retrieveCurrentVisibleObjects(OsuDifficultyHitObject current)
{
List<OsuDifficultyHitObject> objects = new List<OsuDifficultyHitObject>();
for (int i = 0; i < current.Count; i++)
{
OsuDifficultyHitObject hitObject = (OsuDifficultyHitObject)current.Next(i);
if (hitObject.IsNull() ||
(hitObject.StartTime - current.StartTime) > reading_window_size ||
current.StartTime < hitObject.StartTime - hitObject.Preempt)
break;
objects.Add(hitObject);
}
return objects;
}
private static double getDurationSpentInvisible(OsuDifficultyHitObject current) private static double getDurationSpentInvisible(OsuDifficultyHitObject current)
{ {
var baseObject = (OsuHitObject)current.BaseObject; var baseObject = (OsuHitObject)current.BaseObject;