-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Q3 SR & PP release #35029
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Q3 SR & PP release #35029
Conversation
Co-authored-by: James Wilson <[email protected]>
* Use `normalized_hitobject_radius` during osu!catch buzz slider detection Currently the algorithm considers some buzz sliders as standstills when in reality they require movement. This happens because `HalfCatcherWidth` isn't normalized while `exactDistanceMoved` is, leading to an inaccurate comparison. `normalized_hitobject_radius` is the normalized value of `HalfCatcherWidth` and replacing one with the other fixes the problem. * Rename `normalized_hitobject_radius` to `normalized_half_catcher_width` The current name is confusing because hit objects have no radius in the context of osu!catch difficulty calculation. The new name conveys the actual purpose of the value. * Only set `normalized_half_catcher_width` in `CatchDifficultyHitObject` Prevents potential bugs if the value were to be changed in one of the classes but not in both. * Use `CatchDifficultyHitObject.NORMALIZED_HALF_CATCHER_WIDTH` directly Requested during code review. --------- Co-authored-by: James Wilson <[email protected]>
…Object` (#32410) * Move difficulty calculation fields from `Slider` to `OsuDifficultyHitObject` * Remove redundant check * Use `LastObject` where possible * Update tests * Make `LazyTravelDistance` `double` --------- Co-authored-by: James Wilson <[email protected]>
* Move osu!catch movement state into `CatchDifficultyHitObject` In order to port `Movement` to an evaluator, the state has to be either moved elsewhere or calculated inside the evaluator. The latter requires backtracking for every hit object, which in the worst case is continued until the beginning of the map is reached. Limiting backtracking can lead to difficulty value changes. Thus, the first option was chosen for its simplicity. * Move osu!catch movement difficulty calculation to an evaluator Makes the code more in line with the other game modes. * Add documentation for `CatchDifficultyHitObject` fields --------- Co-authored-by: James Wilson <[email protected]>
* basis refactor to allow for more complex SR calculations * move all possible bonuses into star rating * decrease star rating scaling to account for overall gains * add extra FL guard for safety * move star rating multiplier into a constant * Reorganise some things * Add HD and SO to difficulty adjustment mods * Move non-legacy mod multipliers back to PP * Some merge fixes * Fix application of flashlight rating multiplier * Fix Hidden bonuses being applied when Blinds mod is in use * Move part of speed OD scaling into difficulty * Move length bonus back to PP * Remove blinds special case * Revert star rating multiplier decrease * More balancing --------- Co-authored-by: StanR <[email protected]>
Co-authored-by: StanR <[email protected]>
* Add diffcalc considerations for Magnetised mod * Make speed reduction scale with power too
…n classic accuracy scores (#31234) * scale misscount by proportion of difficult sliders * cap sliderbreak count at count100 + count50 * use countMiss instead of effectiveMissCount as the base for sliderbreaks * make code inspector happy + cleanup * refactor to remove unnecesary calculation and need for new tuple * scale sliderbreaks with combo * use aimNoSliders for sliderbreak factor * code cleanup * make inspect code happy * use diffcalcutils * fix errors (oops) * scaling changes * fix div by zeros * Fix compilation error * Add online attributes for new difficulty attributes * Formatting * Rebase fixes * Make `CountTopWeightedSliders` to remove weird protected `SliderStrains` list * Prevent top weighted slider factor from being Infinity --------- Co-authored-by: tsunyoku <[email protected]>
…he same time (#33066) * implement stuff * fix basic issues * rework calculations * sanity check * don't use score based misscount if no scorev1 present * Update OsuPerformanceCalculator.cs * update misscount diff attribute names * add raw score misscount attribute * introduce more reasonable high bound for misscount * code quality changes * Fix osu!catch SR buzz slider detection (#32412) * Use `normalized_hitobject_radius` during osu!catch buzz slider detection Currently the algorithm considers some buzz sliders as standstills when in reality they require movement. This happens because `HalfCatcherWidth` isn't normalized while `exactDistanceMoved` is, leading to an inaccurate comparison. `normalized_hitobject_radius` is the normalized value of `HalfCatcherWidth` and replacing one with the other fixes the problem. * Rename `normalized_hitobject_radius` to `normalized_half_catcher_width` The current name is confusing because hit objects have no radius in the context of osu!catch difficulty calculation. The new name conveys the actual purpose of the value. * Only set `normalized_half_catcher_width` in `CatchDifficultyHitObject` Prevents potential bugs if the value were to be changed in one of the classes but not in both. * Use `CatchDifficultyHitObject.NORMALIZED_HALF_CATCHER_WIDTH` directly Requested during code review. --------- Co-authored-by: James Wilson <[email protected]> * Move osu!catch movement diffcalc to an evaluator (#32655) * Move osu!catch movement state into `CatchDifficultyHitObject` In order to port `Movement` to an evaluator, the state has to be either moved elsewhere or calculated inside the evaluator. The latter requires backtracking for every hit object, which in the worst case is continued until the beginning of the map is reached. Limiting backtracking can lead to difficulty value changes. Thus, the first option was chosen for its simplicity. * Move osu!catch movement difficulty calculation to an evaluator Makes the code more in line with the other game modes. * Add documentation for `CatchDifficultyHitObject` fields --------- Co-authored-by: James Wilson <[email protected]> * Move all score-independent bonuses into star rating (#31351) * basis refactor to allow for more complex SR calculations * move all possible bonuses into star rating * decrease star rating scaling to account for overall gains * add extra FL guard for safety * move star rating multiplier into a constant * Reorganise some things * Add HD and SO to difficulty adjustment mods * Move non-legacy mod multipliers back to PP * Some merge fixes * Fix application of flashlight rating multiplier * Fix Hidden bonuses being applied when Blinds mod is in use * Move part of speed OD scaling into difficulty * Move length bonus back to PP * Remove blinds special case * Revert star rating multiplier decrease * More balancing --------- Co-authored-by: StanR <[email protected]> * Add diffcalc considerations for Magnetised mod (#33004) * Add diffcalc considerations for Magnetised mod * Make speed reduction scale with power too * cleaning up * Update OsuPerformanceCalculator.cs * Update OsuPerformanceCalculator.cs * add new check to avoid overestimation * fix code style * fix nvicka * add database attributes * Refactor * Rename `Working` to `WorkingBeatmap` * Remove redundant condition * Remove useless variable * Remove `get` wording * Rename `calculateScoreAtCombo` * Remove redundant operator * Add comments to explain how score-based miss count derivations work * Remove redundant `decimal` calculations * use static method to improve performance * move stuff around for readability * move logic into helper class * fix the bug * Delete OsuLegacyScoreProcessor.cs * Delete ILegacyScoreProcessor.cs * revert static method for multiplier * use only basic combo score attribute * Clean-up * Remove unused param * Update osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs Co-authored-by: StanR <[email protected]> * rename variables * Add `LegacyScoreUtils` * Add fail safe * Move `countMiss` * Better explain `CalculateRelevantScoreComboPerObject` * Add `OsuLegacyScoreMissCalculator` * Move `CalculateScoreAtCombo` and `CalculateRelevantScoreComboPerObject` * Remove unused variables * Move `GetLegacyScoreMultiplier` * Add `estimated` wording --------- Co-authored-by: wulpine <[email protected]> Co-authored-by: James Wilson <[email protected]> Co-authored-by: StanR <[email protected]> Co-authored-by: StanR <[email protected]>
…rmance attributes (#33181)
* Buff precision difficulty rating in osu! * Fix position repetition calculation * Fix aim evaluator crashing, move small circle bonus calculation, adjust the curve slightly * Refactor * Fix code quality * Semicolon * Apply small circle bonus to speed too * Fix formatting --------- Co-authored-by: James Wilson <[email protected]>
* add spinner support * Make `CalculateSpinnerScore` private & clarify comments --------- Co-authored-by: James Wilson <[email protected]>
* add consistency attribute * write attributes to json for serialisation * comment change * fix json, add mechanical difficulty * write new attributes to database --------- Co-authored-by: James Wilson <[email protected]>
* initial commit * changed HD curve * removed AR variable * update for new rework * nerf HD acc bonus for AR>10 * add another HD nerf for AR>10 * Update OsuDifficultyCalculator.cs * fix speed part being missing * Update OsuDifficultyCalculator.cs * rework to difficulty-based high AR nerf * move TC back to perfcalc * fix nvicka * fix comment * use utils function instead of manual one * Clean up * Use "visibility" term instead * Store `mechanicalDifficultyRating` field * Rename `isFullyHidden` to `isAlwaysPartiallyVisible` and clarify intent * Remove redundant comment * Add `calculateDifficultyRating` method --------- Co-authored-by: James Wilson <[email protected]>
* fix incorrect clamp * Add inline comment to explain `possibleBreaks` calculation * move limit to aim and speed functions * fix negative okMehAdjustment * fix cases where lazer effective misscount gets reduced * Simplify scope of changes * Correct variable name --------- Co-authored-by: James Wilson <[email protected]>
Co-authored-by: James Wilson <[email protected]>
* Reduce combo scaling for osu!catch This is a conservative reduction, a middle point between the current scaling and the CSR proposals. * Reduce osu!catch combo scaling further 0.45 makes little difference so let's reduce it a bit more. --------- Co-authored-by: James Wilson <[email protected]>
#33500) * Change pp summing and adjust multipliers * Add back convert consideration for hidden * And the other one whoops --------- Co-authored-by: StanR <[email protected]>
* Refactor * Fix typo * Prevent double.PositiveInfinity from occuring * Fix leftover code branch * Fix some idiot putting Math.Max instead of Math.Min * Address NaN values --------- Co-authored-by: James Wilson <[email protected]>
* New formulas for effective miss count and penalty * More elaborate comments * More comment stuff
* Decouple velocity change bonus from wide angle bonus * Replace sin with smoothstep * Set multiplier back to 0.75 --------- Co-authored-by: James Wilson <[email protected]>
This isn't a super common mod compared to every other one on the list, it's probably not worth the storage (and memory in case of stable) implications. We can look at revisiting this once we have actual spinner difficulty considerations
* Prevent Taiko difficulty crash if a map only contains 0-strains * Add second check for safety This is accessing a different array of strains. I'd rather be safe than sorry. * Add guard in PP too * Make `MarginOfError` a const
* Reduce rhythm difficulty if current object is doubletappable * Buff rhythm multiplier
* Change maximum UR estimation + buff rhythm * Penalty for classic ezhd * Buff mono bonus to counterbalance logic fix * New miss penalty + slightly nerf length bonus * Adjust rhythm values * Adjust penalty and buff high SR acc * Exclude HDFL from hidden reading penalties * Make comment a lil nicer --------- Co-authored-by: James Wilson <[email protected]>
…ttributes (#35028) * Remove databasing of `MechanicalDifficulty` and `ReadingDifficulty` attributes * Update attribute IDs
|
!diffcalc |
|
!diffcalc |
|
!diffcalc |
This comment was marked as outdated.
This comment was marked as outdated.
* Update RhythmEvaluator.cs * Rename `StrainTime` into `AdjustedDeltaTime` --------- Co-authored-by: StanR <[email protected]>
|
!diffcalc |
smoogipoo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've done a very basic pass and all looks good to me.
osu, taiko and catch receive difficulty & performance changes. mania has difficulty refactors but no actual changes to difficulty or performance.
osu_beatmap_scoring_attribstableNewspost: ppy/osu-wiki#13708