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:
parent
8937080c91
commit
c1712740f7
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user