-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
Include sliders in accuracy pp if slider head accuracy is in use #27063
Conversation
@bdach The linked PR was closed for being premature. Could we be assured now that slider mechanics won't be changing? |
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. |
As requested, some data to showcase the changes:
This shows that accuracy PP caps out as expected. |
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.
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)) |
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.
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.
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.
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
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.
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
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 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.
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.
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.
👍
@apollo-dw would you mind confirming that you still approve this PR?
Good to go on my end 👍 |
@smoogipoo this one is good to go |
!diffcalc |
Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9303393736 |
Diffcalc failure looks to be because of outdated
Merging master again and re-running: !diffcalc |
@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" |
!diffcalc |
Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9950229982 |
!diffcalc |
Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/9985739398 |
!diffcalc |
Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/10002753749 |
!diffcalc |
Difficulty calculation failed: https://github.com/ppy/osu/actions/runs/10004491429 |
@Finadoggie were you going to push your changes from #30016 to this, or...? |
Use variable for slider accuracy check
my bad - I left the PR to my branch sitting. that change should be in now |
!diffcalc |
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.