Skip to content
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

January 2025 Diffcalc/PP release #31595

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open

January 2025 Diffcalc/PP release #31595

wants to merge 71 commits into from

Conversation

stanriders
Copy link
Member

@stanriders stanriders commented Jan 20, 2025

ppy/osu-infrastructure#31

This PR includes all changes listed in the diffcalc project marked as Ready for deploy. Some changes were already merged to master before pp-dev branch was created

Deployment considerations:

  • Includes 3 rulesets: osu, taiko and catch. Mania only has a small refactor change that doesn't affect values
  • All rulesets have difficulty changes, catch doesn't have performance changes
  • 1 new difficulty attribute for osu: AimDifficultSliderCount
  • 5 difficulty attributes have been removed: ApproachRate, OverallDifficulty, GreatHitWindow, OkHitWindow, ScoreMultiplier
  • New taiko attributes are NOT to be databased

osu! changes: https://pp.huismetbenen.nl/rankings/players/master
Taiko changes: https://pp.huismetbenen.nl/rankings/players/master_taiko
Newspost: ppy/osu-wiki#12699

Lawtrohux and others added 30 commits December 18, 2024 18:16
…o being too inflated (#31067)

* low sr

* merge two line

* update decimal

* fix formatting

---------

Co-authored-by: StanR <hi@stanr.info>
…utes (#31191)

* refactor + countdifficultstrain

* norm in utils

* adjust scaling shift

* fix comment

* revert all value changes

* add the else back

* remove cds comments
…31195)

* revert acc scaling shift to previous values

* increase variance in accuracy values across od

* move return values, move nullcheck into return

---------

Co-authored-by: James Wilson <tsunyoku@gmail.com>
Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Simplify osu! high-bpm acute angle jumps bonus

* Add aim wiggle bonus

* Add hitwindow-based aim velocity decrease

* Revert "Add hitwindow-based aim velocity decrease"

This reverts commit bcebe96.

* Move wiggle multiplier to a const, slightly decrease acute bonus multiplier

* Make sure the previous object in the wiggle bonus is also part of the wiggle

* Scale the wiggle bonus multiplayer down

* Increase the acute angle jump bonus multiplier

* Make wiggle bonus only apply on >150 bpm streams, make repetitive angle penalty

* Reduce wiggle bonus multiplier to not break velocity>difficulty relation

* Adjust wiggle falloff function to fix stability issues

* Adjust wiggle consts

* Update tests
… fix slider drop penalty being too lenient (#31055)

* Change slider drop penalty to use actual number of difficult sliders, fix slider nerf being too lenient

* Move cubing to performance calculation

* Add separate list for slider strains

* Rename difficulty atttribute

* Rename attribute in perfcalc

* Check if AimDifficultSliderCount is more than 0, code quality fixes

* Add `AimDifficultSliderCount` to the list of databased attributes

* Code quality

---------

Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Use `lastAngle` when nerfing repeated angles on acute bonus

* Bump acute multiplier

* Correct outdated wiggle bonus comment

* Update test

---------

Co-authored-by: StanR <hi@stanr.info>
* implement bell curve into diffcalcutils

* remove unneeded attributes

* implement new rhythm skill

* change dho variables

* update dho rhythm

* interval interface

* implement rhythmevaluator

* evenhitobjects

* evenpatterns

* evenrhythm

* change attribute ordering

* initial balancing

* change naming to Same instead of Even

* remove attribute bump for display

* Fix diffcalc tests

---------

Co-authored-by: StanR <hi@stanr.info>
…su! ruleset (#21211)

* Set speed distance to 0

* Reduce speed & flashlight, remove aim

* Remove speed AR bonus

* cleanup autopilot mod check in `SpeedEvaluator`

* further decrease speed rating for extra hand availability

* Pass all mods to the speed evaluator, zero out distance bonus instead of distance

---------

Co-authored-by: tsunyoku <mbruhyo@gmail.com>
Co-authored-by: StanR <hi@stanr.info>
…scaling to wide bonus (#31320)

* Fix angle bonuses calculating repetition incorrectly, apply distance scaling to wide bonus

* Buff speed to compensate for streams losing pp

* Adjust speed multiplier

* Adjust wide scaling

* Fix tests
* fix colour

* review fix

Co-authored-by: StanR <castl@inbox.ru>

* remove cancelled out operand

* increase nerf, adjust tests

* fix automated spacing issues

* up penalty

* adjust tests

* apply review changes

* fix nullable hell

---------

Co-authored-by: StanR <castl@inbox.ru>
* Simplify angle bonus formula

* Simplify further

* Simplify acute too

* Tests
* Apply a bunch of balancing changes to aim

* Update tests

---------

Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Make aim accuracy scaling harsher

* Use deviation-based scaling

* Bring the balancing multiplier down

* Adjust multipliers, fix incorrect deviation when using slider accuracy

* Adjust multipliers

* Update osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceAttributes.cs

Co-authored-by: James Wilson <tsunyoku@gmail.com>

* Change high speed deviation threshold to 22-27 instead of 20-24

* Update tests

---------

Co-authored-by: James Wilson <tsunyoku@gmail.com>
* Remove problematic total deviation scaling, rebalance aim

* Fix tests
* stamina considerations

* remove consecutive note count

* adjust multiplier

* add back comment

* adjust tests

* adjusts tests post merge

* use diffcalcutils

---------

Co-authored-by: StanR <hi@stanr.info>
Code quality CI runs have suddenly started failing out of nowhere:

- Passing run: https://github.com/ppy/osu/actions/runs/12806242929/job/35704267944#step:10:1
- Failing run: https://github.com/ppy/osu/actions/runs/12807108792/job/35707131634#step:10:1

In classic github fashion, they began rolling out another runner change
wherein `ubuntu-latest` has started meaning `ubuntu-24.04` rather than
`ubuntu-22.04`. `ubuntu-24.04` no longer has .NET 6 bundled.

Therefore, upgrade NVika to 4.0.0 because that version is compatible
with .NET 8.
* rebalance

* revert pp scaling change

* further rebalancing

* comment

* adjust tests
* further considerations for rhythm

* new rhythm balancing

* fix license header

* use isNormal to validate ratio

* adjust tests

---------

Co-authored-by: StanR <hi@stanr.info>
…ty.Utils (#31520)

* Move error function implementation to osu.Game.Rulesets.Difficulty.Utils

* Rename ErrorFunction.cs to DifficultyCalculationUtils_ErrorFunction.cs
…nsity" (#31512)

* Penalise reading difficulty of high velocity notes at high densities

* Use System for math functions

* Lawtrohux changes

* Clean up density penalty comment

* Swap midVelocity and highVelocity back around

* code quality pass

---------

Co-authored-by: Jay Lawton <jaime@merkids.com>
Co-authored-by: StanR <hi@stanr.info>
* Implement fix for catch buzz sliders SR abuse

* Run formatting

---------

Co-authored-by: StanR <hi@stanr.info>
Copy link
Member

@BabySnakes101 BabySnakes101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taiko looks good, some code and magic could be clearer but hopefully some refactoring can be done in the near future.

tsunyoku and others added 14 commits January 30, 2025 13:58
…difficulty attributes (#31735)

* Calculate hit windows in performance calculator instead of databased difficulty attributes

* Apply mods to beatmap difficulty in osu! performance calculator

* Remove `GreatHitWindow` difficulty attribute for osu!mania

* Remove use of approach rate and overall difficulty attributes for osu!

* Remove use of hit window difficulty attributes in osu!taiko

* Remove use of approach rate attribute in osu!catch

* Remove unused attribute IDs

* Code quality

* Fix `computeDeviationUpperBound` being called before `greatHitWindow` is set
@peppy
Copy link
Member

peppy commented Feb 10, 2025

I've glossed over a lot of implementation details here, but I think this is about as good to go as it's going to get in my eyes. @smoogipoo do you want to do another pass before we get this going?

Also I think we want to try and synchronise a client release of this better this time around, so I am not going to merge for the upcoming lazer release. We will delay one release cycle (or even do an interim release) so server updates can be prepared and we can have everything go out roughly-together. Sound good?

smoogipoo
smoogipoo previously approved these changes Feb 11, 2025
Copy link
Contributor

@smoogipoo smoogipoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have done a rough pass and everything seems okay.

@peppy peppy added the next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! label Feb 12, 2025
…ations showing hundreds of pp points awarded (#31741)

See
https://discord.com/channels/188630481301012481/1097318920991559880/1334716356582572074.

On `master` this is actually worse and shows thousands of pp points, so
I guess `pp-dev` is a comparable improvement, but still flagrantly
wrong. The reason why `pp-dev` is better is the `speedDeviation == null`
guard at the start of `computeSpeedValue()` which turns off the rest of
the calculation, therefore not exposing the bug where
`relevantTotalDiff` can go negative. I still guarded it in this commit
just for safety's sake given it is clear it can do very wrong stuff.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:difficulty next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! size/XXL
Projects
None yet
Development

Successfully merging this pull request may close these issues.