-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Fix osu!catch "buzz slider" SR abuse #31126
Conversation
!diffcalc |
the point of my approach is to make smooth transition from "you just need to stay on one place" to "you have to aim each object individually" Tho I think you can achieve smooth transition here by making multiplier fall from 1.0 to 0.0 by making double threshold |
In my opinion, the sudden strain drop doesn't really matter because the SR algorithm is already smoothing up the strains because it averages them over multiple objects (or something of that effect) iirc. I thought about putting something other than 0 but in my scenario the player has already caught the beginning of the slider and is already at a stand still position so I think having it at 0 makes sense imo. |
On this map https://osu.ppy.sh/beatmapsets/1595850#osu/3505245: This PR: My PR: My PR is not as stable/smooth as I thought it was, definitely some room for improvement |
Okay that's weird. The 296 to 1334 is expected but the 137pp -> 276pp -> 166pp variation will need to be investigated. |
Some update: I found that, in the mentioned beatmap, specifically at CS0.8, there are issues with the distances : Even though we are in a buzz slider case, the distance changes between each object, for some reason. So I had to do some digging. After manually inspecting each case in the editor, my conclusion is that it comes from the hyperdashes generation. We have a case where, maybe due to some floating point inaccuracies, not all objects are converted to hyperdashes, and it (somehow) translates to varying distances. With CS=0.7 With CS = 0.8 (our problematic case) With CS=0.9 So yeah basically, when there is an hyperdash the distance is around 60 and when no hyperdash the distance is around 40 in all cases. I would say it is due to how osu generates hyperdashes and I'm not sure if there is a way around it. We can leave this as a specific rare case or try to find a way to handle this within the current conditions (I don't want to remove the "last distance = distance" part of the equation, to avoid potential side effects). In my own opinion I would say we can ignore it. |
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 problematic maps get nerfed as they should. As for the edge-case pointed out by Givikap I think it's fine to ignore for now (the spreadsheet doesn't show anything getting any value)
This addresses the same issue as #28451 but in a simpler, more straight-forward way.
The issue being solved is fixing the SR calculation for a certain pattern we are calling "buzz slider", which is an horizontal back & forth slider that has a length smaller than the catcher's width but is large enough to be detected as movements, resulting in it being considered as very fast jumps instead of a stand still pattern. No specific map has this issue because it's not allowed by the ranking criteria, but some converts do contain it (like https://osu.ppy.sh/beatmapsets/2066239#fruits/4343468).
This bug is caused by some offsets that are added to the player's position to account for potential mispositioning between objects. It's useful in some scenarios and has effect on pretty much everything so we don't want to remove that logic until a proper rework is being done. So in the mean time, this is a temporary fix that targets this exact pattern.
This is currently a draft since I need to run the calc sheet first to dectect potential side effects.