ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.32k stars 2.28k forks source link

Missing hitsounds in Editor in some 300BPM beatmaps #26366

Closed FukutoTojido closed 10 months ago

FukutoTojido commented 10 months ago

Type

Game behaviour

Bug description

I noticed that hitsounds in some 300BPM beatmaps will not play normally. Some will play, some will not.

Screenshots or videos

https://github.com/ppy/osu/assets/39629922/c02a28de-6402-4900-8366-5ad947033569

Beatmap used in video: VINXIS - Sidetracked Day GAMMA [300]

https://github.com/ppy/osu/assets/39629922/e58f09b6-ec16-41c5-8eba-6d5500230f80

Beatmap used in video Noah - Deadly force - Put an end [The end.]

https://github.com/ppy/osu/assets/39629922/e82ec600-0473-4929-96f9-89c85ed375b7

Beatmap used in video: Camellia - Flamewall [ETERNAL SACRED FIRE]

Version

2023.1231.0-lazer

Logs

compressed-logs.zip

peppy commented 10 months ago

Age old issue of editor not running in a frame stable mode.

peppy commented 10 months ago

So, a few things:

Yes, this is fixed by frame stability, but only because frame stability allows replay frames to exist in a non-linear time scale. As in there are frames in the past, and frame stability will rewind to handle them correctly.

The base issue is that hitobjects are closer than 50 ms in these beatmaps, but auto generator adds a 50 ms minimum window for key-down-to-key-up:

https://github.com/ppy/osu/blob/e182acf3e8c012fe36f8317d70ca7d6abe1803e9/osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs#L293

I'd argue that this should be solved by fixing the auto generator to infer the next object and not hold for as long, or just reducing the key down period altogether to a value which will not cause issues like this.

Side note that DelayedMovements in autogenerator is currently never used and a dead code path...

This is a duplicate of https://github.com/ppy/osu/issues/22353.

peppy commented 10 months ago

As this is a duplicate (and side effect of the larger issue), I'll close this in favour of #22353.