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

Use proportion of difficult sliders to better estimate sliderbreaks on classic accuracy scores #31234

Open
wants to merge 13 commits into
base: pp-dev
Choose a base branch
from

Conversation

TextAdventurer12
Copy link
Contributor

@TextAdventurer12 TextAdventurer12 commented Dec 22, 2024

Works out individual top weighted strain count for hitcircles and sliders, and then multiplies countmiss by 1 + the proportion of top weighted strain on sliders to account for misses on sliders sliderbreaks. This assumes that the player breaks equally on difficult hitcircles and sliders, which is the most fair assumption in my opinion.
The number of sliderbreaks is then scaled with combo, to account for the fact that higher combo scores have less places for sliderbreaks to hide in.

Spinners are handled incorrectly (they're included in the hitcircle strain count) but because spinners are 0 difficulty anyways there is negligible values impact, so making a better solution would probably be more effort than it's worth.
TopWeightedSliderFactor may be infinity on maps with no circles. This doesn't have any adverse values effects, because estimatedSliderbreaks is capped at countMeh + countOk, but I'm unsure if it's going to cause any other weirdness.
This probably wants some form of miss penalty or effectiveMissCount adjustment, because currently every affected score is losing.
Sliderbreaks may be double dipped, as it uses effectiveMisscount + estimatedSliderbreaks, while effectiveMissCount may already contain some estimated sliderbreaks. I'm not really sure of a good way to resolve this, and a little doubtful that resolving it would have any significant effect.

@tsunyoku tsunyoku self-requested a review January 7, 2025 14:16
tsunyoku
tsunyoku previously approved these changes Jan 9, 2025
return 0;

// Use a weighted sum of all strains. Constants are arbitrary and give nice values
return SliderStrains.Sum(s => 1.1 / (1 + Math.Exp(-10 * (s / consistentTopStrain - 0.88))));
Copy link
Member

Choose a reason for hiding this comment

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

Use DifficultyCalculationUtils.Logistic

Copy link
Member

Choose a reason for hiding this comment

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

We should change this for the other places too (separate PR)

Copy link
Member

@stanriders stanriders Jan 9, 2025

Choose a reason for hiding this comment

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

I'm pretty sure I already did in most places

{
sliderStrains.Add(currentStrain);
}
SliderStrains.Add(currentStrain);

return currentStrain;
}

public double GetDifficultSliders()
Copy link
Member

Choose a reason for hiding this comment

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

Can't we combine this with CountTopWeightedSliders? They're doing essentially the same thing

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

Successfully merging this pull request may close these issues.

3 participants