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

Merged
merged 10 commits into from
Oct 7, 2024

Conversation

tsunyoku
Copy link
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
Contributor

@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
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
Contributor

@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
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
Contributor

@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
Contributor

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

github-actions bot commented Jul 19, 2024

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

@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 Oct 4, 2024
@bdach
Copy link
Collaborator

bdach commented Oct 4, 2024

@Finadoggie were you going to push your changes from #30016 to this, or...?

@tsunyoku
Copy link
Member Author

tsunyoku commented Oct 4, 2024

@Finadoggie were you going to push your changes from #30016 to this, or...?

my bad - I left the PR to my branch sitting. that change should be in now

@bdach
Copy link
Collaborator

bdach commented Oct 7, 2024

!diffcalc
OSU_A=5cb106e

@bdach bdach merged commit 9a8a5cd into ppy:master Oct 7, 2024
11 of 13 checks passed
Copy link

github-actions bot commented Oct 7, 2024

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! ruleset/osu! size/XS
Projects
Status: Pending Deploy
Development

Successfully merging this pull request may close these issues.

8 participants