-
-
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
Miss count discrepancy on slider heavy maps #25200
Comments
Did you bisect this / compare against latest release to say this? Or is this just an educated guess? |
Just an educated guess, because I noticed some similar behaviours when I was testing it out for the first time. I just assumed this was fixed by the followup commits but maybe it wasn't |
Update: Bisected now that I'm at my PC and this issue was caused by 9e1fec0 |
Yeah that checks out unfortunately. The first extra miss on this replay is here: This slider is 37.5ms long, so it qualifies for the "legacy last tick is in the middle of the slider" case. Judgement order before #24966:
The tail is judged out of order at the midpoint of the slider. After that pull:
The head circle of the slider, due to having a nonzero hitwindow, blocks the tail from being judged (since the aforementioned bisect commit disallows judging nested objects out of order), therefore causing the entire slider to be missed. I don't even know where to begin with this one. The choices seem to be either to accept this state of affairs or drop the "nested objects must be judged in order" thing and instead either try to hack score to not be broken (#24966 (comment)) or accept score as broken................ |
Can we not just change the conditional added in 9e1fec0 to only match ticks? At a glance, that seems to be what it's trying to do. The fact it's matching on a diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs
index df55f3e73f..e52451e75d 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTail.cs
@@ -4,6 +4,7 @@
#nullable disable
using System.Diagnostics;
+using System.Linq;
using JetBrains.Annotations;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
@@ -133,7 +134,8 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
//
// This covers the edge case where the lenience may allow the tail to activate before
// the last tick, changing ordering of score/combo awarding.
- if (DrawableSlider.NestedHitObjects.Count > 1 && !DrawableSlider.NestedHitObjects[^2].Judged)
+ var lastTick = DrawableSlider.NestedHitObjects.LastOrDefault(o => o.HitObject is SliderTick || o.HitObject is SliderRepeat);
+ if (lastTick?.Judged == false)
return;
// The player needs to have engaged in tracking at any point after the tail leniency cutoff.
|
Theoretically, yes, you could do that. But if you do, then that now means there are 2 possibilities:
And because the slider head is a 'large tick' and as such affects combo, this also affects score, bringing back the aforementioned issue wherein now it may not be possible to get 1M score just because of unlucky judgement ordering. |
An addition of forcing a miss of the head in such a case could resolve this (and sounds amicable to me). What do you think? |
Maybe? That seems to be conceptually similar to #25129, although that seems to propose forcing the head to be hit rather than missed, and contains a condition of "closeness" to the head that I don't understand. |
#25129 focuses on cases where the head is hit. Correct me if I'm wrong, but the case in this issue doesn't involve the head getting hit by the user. |
Yeah fair enough. You're not wrong. |
Type
Crash to desktop
Bug description
When this replay is viewed back on the latest master, the miss count jumps from 3 to 8. May be caused by #24966.
Screenshots or videos
2023-10-21.15-27-58.mp4
2023-10-21.15-28-27.mp4
2023-10-21.15-29-24.mp4
2023-10-21.15-30-01.mp4
Version
d059949
Logs
database.log
input.log
legacy-ipc.log
network.log
performance.log
runtime.log
The text was updated successfully, but these errors were encountered: