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

Include sliders in accuracy pp if slider head accuracy is in use #27063

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

Conversation

tsunyoku
Copy link
Sponsor Member

@tsunyoku tsunyoku commented Feb 6, 2024

Existed originally at #25722 but slider judgment decisions were premature at the time; as far as I'm aware, that's not the case anymore.

In cases where slider accuracy is used, accuracy pp should be adjusted to include sliders too. This should be fine to merge as-is as the change is purely on pp and no changes to diff calc attributes are required.

This isn't the only change required for slider accuracy to be accounted for, however the remaining ones require difficulty calculation changes (i.e extra attributes) so I'm leaving those out until we're at a point that those can be facilitated.

@apollo-dw
Copy link
Member

@bdach The linked PR was closed for being premature. Could we be assured now that slider mechanics won't be changing?

@bdach
Copy link
Collaborator

bdach commented Feb 6, 2024

I'm not aware of any complaints about slider mechanics after the changes we've applied over the course of December so I suppose I don't see any reason that they'd be changed.

Note that I'm not saying that this is going to merge imminently - we've still got work to do to stabilise infra. Review was requested just to ensure you (as in the pp committee) are on board with the change.

@tsunyoku
Copy link
Sponsor Member Author

tsunyoku commented Feb 6, 2024

As requested, some data to showcase the changes:

Beatmap ID master total PP PR total PP master accuracy PP PR accuracy PP
1893461 201.48 214.14 60.64 72.92
1892257 326.38 337.46 103.30 114.02
3718752 227.68 244.01 77.61 93.26
1537566 647.73 661.44 203.26 216.56
1256809 493.05 493.05 130.86 130.86

This shows that accuracy PP caps out as expected.

Copy link
Member

@apollo-dw apollo-dw left a comment

Choose a reason for hiding this comment

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

LGTM, no real wiggle room to dispute this IMO.

@@ -192,6 +192,8 @@ private double computeAccuracyValue(ScoreInfo score, OsuDifficultyAttributes att
// This percentage only considers HitCircles of any value - in this part of the calculation we focus on hitting the timing hit window.
double betterAccuracyPercentage;
int amountHitObjectsWithAccuracy = attributes.HitCircleCount;
if (!score.Mods.Any(h => h is OsuModClassic cl && cl.NoSliderHeadAccuracy.Value))
Copy link
Member

Choose a reason for hiding this comment

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

The change itself is fine, but I'll raise the same point I keep bringing in all other lazer-related pp PRs - I strongly believe we need to split calculators into classic and non-classic because of the code bloat (lots of possible if lazer or classic all around the calc) and more complete score data on new scores that we can (I hope?) utilise.

Copy link
Contributor

Choose a reason for hiding this comment

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

all the difference lazer have is new information, so it's not a lot of code bloat, around 10-15 additional lines to covers this i think
also, this thing is not a lazer vs stable, it's CL vs non CL

Copy link
Member

Choose a reason for hiding this comment

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

All stable scores are CL by default and all lazer scores are non-CL by default. Treating lazer CL differently compared to stable auto-CL doesn't make much sense therefore CL scores must always use stable score data structure.

Mod ifs are already a big mess in pp calc now, adding CL handling on top would make it even more convoluted. Keep in mind that we have to handle both extended score data and legacy score data since stable is here to stay

Copy link
Sponsor Member Author

Choose a reason for hiding this comment

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

I agree that it might get a little messy to sprinkle CL checks everywhere, however I equally see it being messy having to maintain 2 separate calculators that will share (mostly) the same logic. Having to make identical changes in 2 places whenever PP changes doesn't sound like a particularly great alternative.

Finadoggie added a commit to Finadoggie/osu that referenced this pull request Mar 22, 2024
Someone brought this up during discussion, and from what I can tell, there's no real reason why this wasn't done either.

All this does is use the number of circles instead of the number of objects for accuracy calculations, since circles are the only objects that check for accuracy.

Could also be merged with ppy#27063 to use circles + sliders when sliders check for accuracy (aka when classic mod is disabled). Currently the code for that is included but commented out.
Copy link
Member

@stanriders stanriders left a comment

Choose a reason for hiding this comment

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

👍

@apollo-dw would you mind confirming that you still approve this PR?

@apollo-dw
Copy link
Member

@apollo-dw would you mind confirming that you still approve this PR?

Good to go on my end 👍

@stanriders
Copy link
Member

@smoogipoo this one is good to go

@smoogipoo
Copy link
Contributor

!diffcalc

Copy link

github-actions bot commented May 30, 2024

Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9303393736

@bdach
Copy link
Collaborator

bdach commented May 31, 2024

Diffcalc failure looks to be because of outdated master:

2024-05-30T17:23:20.7103922Z execution-9303393736-9659-1-verify-1     | /tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/Models/Beatmap.cs(47,13): error CS0117: 'LegacyBeatmapConversionDifficultyInfo' does not contain a definition for 'DrainRate' [/tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/osu.Server.Queues.ScoreStatisticsProcessor.csproj]
2024-05-30T17:23:20.7117650Z execution-9303393736-9659-1-verify-1     | /tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/Models/Beatmap.cs(48,13): error CS0117: 'LegacyBeatmapConversionDifficultyInfo' does not contain a definition for 'ApproachRate' [/tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/osu.Server.Queues.ScoreStatisticsProcessor.csproj]
2024-05-30T17:23:20.7121806Z execution-9303393736-9659-1-verify-1     | /tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/Helpers/LegacyDatabaseHelper.cs(83,17): warning CS0162: Unreachable code detected [/tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/osu.Server.Queues.ScoreStatisticsProcessor.csproj]
2024-05-30T17:23:20.7126117Z execution-9303393736-9659-1-verify-1     | /tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/Models/SoloScore.cs(112,17): error CS0117: 'ScoreInfo' does not contain a definition for 'Ranked' [/tmp/tmp.3uZQZH05Qn/osu-queue-score-statistics/osu.Server.Queues.ScoreStatisticsProcessor/osu.Server.Queues.ScoreStatisticsProcessor.csproj]
2024-05-30T17:23:20.7209999Z execution-9303393736-9659-1-verify-1     | 
2024-05-30T17:23:20.7210796Z execution-9303393736-9659-1-verify-1     | The build failed. Fix the build errors and run again.

Merging master again and re-running:

!diffcalc

Copy link

github-actions bot commented May 31, 2024

@apollo-dw
Copy link
Member

apollo-dw commented Jul 13, 2024

@smoogipoo I believe this is good to go, since this PR affects the performance calculator only?

EDIT: NVM just noticed this is on "pending review"

smoogipoo
smoogipoo previously approved these changes Jul 16, 2024
@smoogipoo
Copy link
Contributor

!diffcalc

Copy link

github-actions bot commented Jul 16, 2024

Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9950229982

@smoogipoo
Copy link
Contributor

!diffcalc

Copy link

github-actions bot commented Jul 18, 2024

Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9985739398

@smoogipoo
Copy link
Contributor

!diffcalc

Copy link

github-actions bot commented Jul 19, 2024

Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/10002753749

@smoogipoo
Copy link
Contributor

!diffcalc

Copy link

Difficulty calculation queued -- please wait! (https://github.com/ppy/osu/actions/runs/10004491429)

This comment will update on completion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Pending Review
Development

Successfully merging this pull request may close these issues.

None yet

6 participants