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

Testing catch beatmap cause extreme lag and causes misses #20221

Closed
Vadeblade opened this issue Sep 10, 2022 · 10 comments · Fixed by #28170
Closed

Testing catch beatmap cause extreme lag and causes misses #20221

Vadeblade opened this issue Sep 10, 2022 · 10 comments · Fixed by #28170

Comments

@Vadeblade
Copy link

Type

Performance

Bug description

Testing seems to cause all objects to immediately me spawned at the catcher and causes extreme lag doing so

Screenshots or videos

2022-09-10.07-37-03.mp4

Version

2022.902.1-lazer

Logs

network.log
performance.log
runtime.log
updater.log
database.log
legacy-ipc.log

@smoogipoo
Copy link
Contributor

I believe this is going to be an issue with every scrolling ruleset, and likely has to do with the initial lifetime.

@peppy
Copy link
Sponsor Member

peppy commented Sep 12, 2022

Based on the video showing so many fruit being caught, might be a clock regression? Seems like it's potentially playing out more history than it should.

@smoogipoo
Copy link
Contributor

Could be, but my doubts are high on that one. I think there was a similar issue with spectating in these rulesets. I'm not sure though, just listing my thoughts since I know scrolling rulesets do some stuff with the first update frame.

@ekrctb
Copy link
Collaborator

ekrctb commented Oct 6, 2022

The cause of this issue is that LifetimeEnd is not set (default infinity) for rulesets. For standard, it is explicitly computed:

// Prevent past objects in idles states from remaining alive as their end times are skipped in non-frame-stable contexts.
LifetimeEnd = HitObject.GetEndTime() + HitObject.HitWindows.WindowFor(HitResult.Miss);

Currently, other rulesets relies on

if (LifetimeEnd == double.MaxValue && (state.Value != ArmedState.Idle || HitObject.HitWindows == null))
LifetimeEnd = Math.Max(LatestTransformEndTime, HitStateUpdateTime + (Samples?.Length ?? 0));

for setting LifetimeEnd. But that is not available until a DHO is created, so it is impossible to "skip" hit objects at all.
For scrolling scrolling, LifetimeEnd can be computed from an entry if we assume a hit object is just scrolling. But that is not always the case (like mania hold note head freezing) so I'm not sure about:
whether automatic LifetimeEnd computation should be opt-out (overriden by rulesets) or opt-in (ruleset implementation always required).

(That LifetimeEnd logic of DrawableHitObject is confusing me so many times including #20570 (comment) so I want to it to be removed)

@peppy
Copy link
Sponsor Member

peppy commented Oct 6, 2022

The case of the hold note head is a nested object, so a rule may be able to be established for top-level (non-nested) objects.

@ekrctb
Copy link
Collaborator

ekrctb commented Oct 6, 2022

I found custom per-ruleset implementations are needed anyways because each ruleset has a different margin (hit objects must be alive there) after the end of a ScrollingHitObjectContainer.

@peppy
Copy link
Sponsor Member

peppy commented Oct 6, 2022

In my work on the new mania skin, it definitely seems so (mania currently expires too early, haven't looked into why/where yet).

@SecreOsu
Copy link

Writing because post #28150 got closed, but can this please be pushed through? 1.5 years of being a priority 1 issue with multiple people creating issues of this same problem. This completely makes the whole of the osu!catch editor unusable.

@bdach
Copy link
Collaborator

bdach commented May 11, 2024

1.5 years of being a priority 1 issue with multiple people creating issues of this same problem.

there are over 100 p1 issues open.

This completely makes the whole of the osu!catch editor unusable.

and this is hyperbole. but your point is well taken.

@peppy
Copy link
Sponsor Member

peppy commented May 12, 2024

Bumping to p0 due to report count.

@peppy peppy added priority:0 Showstopper. Critical to the next release. and removed priority:1 Very important. Feels bad without fix. Affects the majority of users. labels May 12, 2024
@peppy peppy self-assigned this May 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants