ppy / osu

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

Seeking between timing sections in editor doesn't match stable. #30070

Open Pennek opened 3 weeks ago

Pennek commented 3 weeks ago

Type

Game behaviour

Bug description

I've started mapping in lazer and this is probably the biggest gripe I have so far. In stable Up seeks forward to the nearest timing section while Down seeks backwards. This is inversed in Lazer breaking all muscle memory. Backwards seek leniency also doesn't exist in Lazer making it a pain to seek backwards as you effectively can't do it while the song is playing.

Screenshots or videos

No response

Version

2024.906.2-lazer

Logs

compressed-logs.zip

peppy commented 3 weeks ago

Hmm, by all accounts stables keys were back-to-front from the expectation here so I'm not sure what to do..

peppy commented 3 weeks ago

As for seeking while the track is playing, we already kinda account for this:

https://github.com/ppy/osu/blob/71044a0766fdfe39274de1ea3c6babb8dfb78a39/osu.Game/Screens/Edit/Editor.cs#L1169-L1176

and in practice it seems okay to me. Is there a specific beatmap where you're having an issue with this?

Pennek commented 3 weeks ago

I've been using default keybinds in stable as far as I know, so every other mapper should have the same issue with the keybinds being different.

The seeking issue happens on every map I've opened. Moving back and forth between timing sections while playback is running isn't possible in lazer as it looks like the backwards seek is clamped to the previous timing point.

Here's a video showcasing me pressing Up and Down to move between two timing sections on both clients to hopefully showcase what I mean a little better. It does work correctly in lazer while paused

seek2.webm

bdach commented 3 weeks ago

Here's a video showcasing me pressing Up and Down to move between two timing sections on both clients to hopefully showcase what I mean a little better. It does work correctly in lazer while paused

Seems like a duplicate of https://github.com/ppy/osu/issues/28885 then?

TaterToes commented 1 week ago

it seems like we gotta do something like this? This only involves seeking back old unsure how to implement it though.

TaterToes commented 1 week ago
? editorBeatmap.ControlPointInfo.AllControlPoints.LastOrDefault(p => p.Time < clock.CurrentTime);

yeah, so it seems like there isn't a time given to account for between presses. so it just keeps seeking back to the same control point.

? editorBeatmap.HitObjects.LastOrDefault(p => p.StartTime < clock.CurrentTimeAccurate)
? editorBeatmap.HitObjects.LastOrDefault(p => p is IHasRepeats r && p.StartTime < currentTime && r.EndTime >= currentTime)

these two, hitobject and samplepoint, seem to work, but I have to click fast to seek back. will probably just leave these alone

peppy commented 3 days ago

Can we close this now that the up/down case is fixed?