From 5b073e65281e6ab68ff20e18aa74ffaefee649e0 Mon Sep 17 00:00:00 2001 From: Natelytle <92956514+Natelytle@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:54:43 -0400 Subject: [PATCH] Standardize difficulty variable naming (#37460) All occurrences of a difficulty variable in an evaluator are now called evalNameDifficulty, of the raw output of this in a skill are now referred to as difficulty, and of the strain adjusted versions are referred to as strain. Co-authored-by: StanR <8269193+stanriders@users.noreply.github.com> --- .../Evaluators/Aim/AgilityEvaluator.cs | 8 ++++---- .../Evaluators/Aim/SnapAimEvaluator.cs | 18 +++++++++--------- .../Evaluators/FlashlightEvaluator.cs | 14 +++++++------- .../Difficulty/Evaluators/ReadingEvaluator.cs | 6 +++--- .../Evaluators/Speed/SpeedEvaluator.cs | 6 +++--- .../Difficulty/Skills/Reading.cs | 8 ++++---- .../Difficulty/Skills/Speed.cs | 12 ++++++------ 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/AgilityEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/AgilityEvaluator.cs index 7584be237e..8d0b9d5e4b 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/AgilityEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/AgilityEvaluator.cs @@ -28,13 +28,13 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Aim double distanceScaled = Math.Min(distance, distance_cap) / distance_cap; - double strain = distanceScaled * 1000 / osuCurrObj.AdjustedDeltaTime; + double agilityDifficulty = distanceScaled * 1000 / osuCurrObj.AdjustedDeltaTime; - strain *= Math.Pow(osuCurrObj.SmallCircleBonus, 1.5); + agilityDifficulty *= Math.Pow(osuCurrObj.SmallCircleBonus, 1.5); - strain *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); + agilityDifficulty *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); - return strain; + return agilityDifficulty; } private static double highBpmBonus(double ms) => 1 / (1 - Math.Pow(0.2, ms / 1000)); diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/SnapAimEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/SnapAimEvaluator.cs index 556b4b361b..f923e2e186 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/SnapAimEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Aim/SnapAimEvaluator.cs @@ -55,10 +55,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Aim double prevDistance = withSliderTravelDistance ? osuLastObj.LazyJumpDistance : osuLastObj.JumpDistance; double prevVelocity = prevDistance / osuLastObj.AdjustedDeltaTime; - double aimStrain = currVelocity; // Start strain with regular velocity. + double snapDifficulty = currVelocity; // Start difficulty with regular velocity. // Penalize angle repetition. - aimStrain *= vectorAngleRepetition(osuCurrObj, osuLastObj); + snapDifficulty *= vectorAngleRepetition(osuCurrObj, osuLastObj); if (osuCurrObj.Angle != null && osuLastObj.Angle != null) { @@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Aim } // Add in acute angle bonus or wide angle bonus, whichever is larger. - aimStrain += Math.Max(acuteAngleBonus * acute_angle_multiplier, wideAngleBonus * wide_angle_multiplier); + snapDifficulty += Math.Max(acuteAngleBonus * acute_angle_multiplier, wideAngleBonus * wide_angle_multiplier); // Apply wiggle bonus for jumps that are [radius, 3*diameter] in distance, with < 110 angle // https://www.desmos.com/calculator/dp0v0nvowc @@ -128,7 +128,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Aim * Math.Pow(DifficultyCalculationUtils.ReverseLerp(prevDistance, diameter * 3, diameter), 1.8) * DifficultyCalculationUtils.Smootherstep(lastAngle, double.DegreesToRadians(110), double.DegreesToRadians(60)); - aimStrain += wiggleBonus * wiggle_multiplier; + snapDifficulty += wiggleBonus * wiggle_multiplier; } if (Math.Max(prevVelocity, currVelocity) != 0) @@ -150,22 +150,22 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Aim // Penalize for rhythm changes. velocityChangeBonus *= Math.Pow(Math.Min(osuCurrObj.AdjustedDeltaTime, osuLastObj.AdjustedDeltaTime) / Math.Max(osuCurrObj.AdjustedDeltaTime, osuLastObj.AdjustedDeltaTime), 2); - aimStrain += velocityChangeBonus * velocity_change_multiplier; + snapDifficulty += velocityChangeBonus * velocity_change_multiplier; } // Reward sliders based on velocity. if (osuCurrObj.BaseObject is Slider && withSliderTravelDistance) { double sliderBonus = osuCurrObj.TravelDistance / osuCurrObj.TravelTime; - aimStrain += (sliderBonus < 1 ? sliderBonus : Math.Pow(sliderBonus, 0.75)) * slider_multiplier; + snapDifficulty += (sliderBonus < 1 ? sliderBonus : Math.Pow(sliderBonus, 0.75)) * slider_multiplier; } // Apply high circle size bonus - aimStrain *= osuCurrObj.SmallCircleBonus; + snapDifficulty *= osuCurrObj.SmallCircleBonus; - aimStrain *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); + snapDifficulty *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); - return aimStrain; + return snapDifficulty; } private static double highBpmBonus(double ms) => 1 / (1 - Math.Pow(0.03, Math.Pow(ms / 1000, 0.65))); diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/FlashlightEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/FlashlightEvaluator.cs index e828eba1cc..9fca929d8b 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/FlashlightEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/FlashlightEvaluator.cs @@ -44,7 +44,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators double smallDistNerf = 1.0; double cumulativeStrainTime = 0.0; - double result = 0.0; + double flashlightDifficulty = 0.0; OsuDifficultyHitObject lastObj = osuCurrent; @@ -72,7 +72,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators // Bonus based on how visible the object is. double opacityBonus = 1.0 + max_opacity_bonus * (1.0 - osuCurrent.OpacityAt(currentHitObject.StartTime, mods.OfType().Any(m => !m.OnlyFadeApproachCircles.Value))); - result += stackNerf * opacityBonus * scalingFactor * jumpDistance / cumulativeStrainTime; + flashlightDifficulty += stackNerf * opacityBonus * scalingFactor * jumpDistance / cumulativeStrainTime; if (currentObj.Angle != null && osuCurrent.Angle != null) { @@ -85,14 +85,14 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators lastObj = currentObj; } - result = Math.Pow(smallDistNerf * result, 2.0); + flashlightDifficulty = Math.Pow(smallDistNerf * flashlightDifficulty, 2.0); // Additional bonus for Hidden due to there being no approach circles. if (mods.OfType().Any()) - result *= 1.0 + hidden_bonus; + flashlightDifficulty *= 1.0 + hidden_bonus; // Nerf patterns with repeated angles. - result *= min_angle_multiplier + (1.0 - min_angle_multiplier) / (angleRepeatCount + 1.0); + flashlightDifficulty *= min_angle_multiplier + (1.0 - min_angle_multiplier) / (angleRepeatCount + 1.0); double sliderBonus = 0.0; @@ -112,9 +112,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators sliderBonus /= (osuSlider.RepeatCount + 1); } - result += sliderBonus * slider_multiplier; + flashlightDifficulty += sliderBonus * slider_multiplier; - return result; + return flashlightDifficulty; } } } diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs index fe6d49661b..c27977e062 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/ReadingEvaluator.cs @@ -46,12 +46,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators double preemptDifficulty = calculatePreemptDifficulty(velocity, constantAngleNerfFactor, currObj.Preempt); - double difficulty = DifficultyCalculationUtils.Norm(1.5, preemptDifficulty, hiddenDifficulty, noteDensityDifficulty); + double readingDifficulty = DifficultyCalculationUtils.Norm(1.5, preemptDifficulty, hiddenDifficulty, noteDensityDifficulty); // Having less time to process information is harder - difficulty *= highBpmBonus(currObj.AdjustedDeltaTime); + readingDifficulty *= highBpmBonus(currObj.AdjustedDeltaTime); - return difficulty; + return readingDifficulty; } /// diff --git a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Speed/SpeedEvaluator.cs b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Speed/SpeedEvaluator.cs index 65aab9e4bd..3e3b63e924 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Speed/SpeedEvaluator.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Evaluators/Speed/SpeedEvaluator.cs @@ -44,12 +44,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators.Speed speedBonus = 0.75 * Math.Pow((DifficultyCalculationUtils.BPMToMilliseconds(min_speed_bonus) - strainTime) / speed_balancing_factor, 2); // Base difficulty with all bonuses - double difficulty = (1 + speedBonus) * 1000 / strainTime; + double speedDifficulty = (1 + speedBonus) * 1000 / strainTime; - difficulty *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); + speedDifficulty *= highBpmBonus(osuCurrObj.AdjustedDeltaTime); // Apply penalty if there's doubletappable doubles - return difficulty * doubletapness; + return speedDifficulty * doubletapness; } private static double highBpmBonus(double ms) => 1 / (1 - Math.Pow(0.3, ms / 1000)); diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs index 414cf1f1f9..0e77e08e28 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Reading.cs @@ -26,7 +26,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills hasHiddenMod = mods.OfType().Any(m => !m.OnlyFadeApproachCircles.Value); } - private double currentDifficulty; + private double currentStrain; private double skillMultiplier => 2.5; private double strainDecayBase => 0.8; @@ -39,11 +39,11 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills double decay = strainDecay(current.DeltaTime); - currentDifficulty *= decay; + currentStrain *= decay; - currentDifficulty += ReadingEvaluator.EvaluateDifficultyOf(current, hasHiddenMod) * (1 - decay) * skillMultiplier; + currentStrain += ReadingEvaluator.EvaluateDifficultyOf(current, hasHiddenMod) * (1 - decay) * skillMultiplier; - return currentDifficulty; + return currentStrain; } protected override void ApplyDifficultyTransformation(double[] difficulties) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs index cdd0118703..16e5d5f5b9 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs @@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills private readonly List sliderStrains = new List(); - private double currentDifficulty; + private double currentStrain; private double strainDecayBase => 0.3; @@ -41,17 +41,17 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills { double decay = strainDecay(((OsuDifficultyHitObject)current).AdjustedDeltaTime); - currentDifficulty *= decay; - currentDifficulty += SpeedEvaluator.EvaluateDifficultyOf(current) * (1 - decay) * skillMultiplier; + currentStrain *= decay; + currentStrain += SpeedEvaluator.EvaluateDifficultyOf(current) * (1 - decay) * skillMultiplier; double currentRhythm = RhythmEvaluator.EvaluateDifficultyOf(current); - double totalDifficulty = currentDifficulty * currentRhythm; + double totalStrain = currentStrain * currentRhythm; if (current.BaseObject is Slider) - sliderStrains.Add(totalDifficulty); + sliderStrains.Add(totalStrain); - return totalDifficulty; + return totalStrain; } public double RelevantNoteCount()