-
-
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
Adjust slider ends to be more lenient during very fast sliders #24966
Conversation
This includes proposed changes as per ppy#22805 (comment).
…r generation flow
Generally tend to agree on this part for what it's worth. |
slider end hitsounds play too early in this branch broken-hitsounds.mp4first half of the video is this branch, second half is the latest release |
2023-10-01.17-27-27.mp4It looks like it's impossible to hit 300s on fast enough buzz sliders |
See #24966 (comment) 👍 |
@Natelytle could you please attach the beatmap, and if possible confirm it works on |
Sure, I'll test first thing in the morning tomorrow |
4c4092f
to
2e1e8d3
Compare
I've pushed some tentative fixes and test coverage of short sliders, but the tests still pass without the change. So will wait to hear back on the breaking sliders before investigating further. |
@Walavouchey should be resolved via 07207ff. |
I think I fixed the remaining test failures, let's see what CI thinks... Other than that I think we can try getting this in and seeing what the feedback is. I for one don't personally have any reason to hold this back further. |
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, waiting on diffcalc spreadsheet run: https://github.com/ppy/osu/actions/runs/6546185309
Same issue as other commented test (clock precision not high enough). Will probably want a solution to this at some point.
Diff calc re-run: https://github.com/ppy/osu/actions/runs/6546185309 |
These tests are fucked on CI. FWIW I can't repro the failures locally. Shall we just disable them all for now? Is this going to be blocked further while I refactor framework to allow adjustable test precision or similar? |
I'm okay with disable or retry. |
Let's see if retry actually works. |
Looks like there's still three SR changes (lowest yet). I guess we're going to have to look into the remaining discrepancies? 😮💨 |
Egregious retry also didn't help either somehow... I'm not sure if that works with parameterised testing but at this point probably best to ignore. |
The remaining issues are floating point precision loss on a Note the immediate window. The new method uses the "more precise" version. Here's a diff for the above beatmap: https://gist.github.com/peppy/eb58fe462980a6b543bd06ee0d549647/revisions diff --git a/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs b/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs
index 488d1e2e9f..e0526a4136 100644
--- a/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs
+++ b/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs
@@ -307,6 +307,8 @@ private void computeSliderCursorPosition(Slider slider)
if (i == nestedObjects.Count - 1)
slider.LazyEndPosition = currCursorPosition;
}
+
+ Console.WriteLine($"{slider.StartTime} {slider.LazyTravelTime} {slider.LazyEndPosition}");
}
private Vector2 getEndCursorPosition(OsuHitObject hitObject)
I'd argue there's no point investigating further and this change is good to go. If there change in PP is seen as an issue, it should be fixed at the diffcalc end by making the algorithm less susceptible to floating point differences like this. |
From StanR:
So let's go ahead with this as is. |
LegacyLastTickOffset
usages and stop passing everywhere #24965Update conversion tests with new outputLocally fix conversion tests for nowLegacyLastTick
is still being used for gameplay and editor displays #22805I've removed all usage of the legacy tick in the osu! ruleset. This makes things a lot more sane in my eyes:
DrawableSlider
reads betterIf we go in this direction, the stable
expected-conversion
code will need to be updated, as it no longer matches. This can be seen from the test failures on this PR currently.If this is seen as an overbearing or otherwise unwanted change, then the last two commits (62bcb62 and dd6d091) can be reverted.
Another direction I explored was removing the code from
SliderEventGenerator
completely – the only thing relying on it as of this PR is osu!catch conversion. You can see how this would look on this branch. I stopped exploring this direction as it feels like this would be less legible (having hidden logic inJuiceStream
) but others may have different opinions.Diff for better visualisation as used for videos below
On very fast sliders, you now only need to be tracking somewhere in the last 36ms, rather than precisely at the (hidden) position of the last tick.
Miss
osu.Game.Rulesets.Osu.Tests.2023-09-29.at.08.40.29.mp4
Valid hits
osu.Game.Rulesets.Osu.Tests.2023-09-29.at.08.42.37.mp4
osu.Game.Rulesets.Osu.Tests.2023-09-29.at.08.45.44.mp4
osu.Game.Rulesets.Osu.Tests.2023-09-29.at.08.48.43.mp4