ppy / osu

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

Misaligned storyboard elements with backwards commands #20632

Closed nolife99 closed 1 year ago

nolife99 commented 2 years ago

Type

Game behaviour

Bug description

Storyboard elements of reverse, or going backwards commands, are displayed differently in lazer. image Investigating in the .osb file of this storyboard shows the lyrics in the screenshots having Move-X commands that have a greater start time than end time.

map: http://osu.ppy.sh/s/768768

Screenshots or videos

This screenshot is of the storyboard in lazer image

this screenshot is in design editor in stable image

Version

2022.1008.2

Logs

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

peppy commented 2 years ago

Honestly I'm tempted to say that the storyboard is broken and needs to be fixed. This is super dodgy.

smoogipoo commented 2 years ago

According to https://github.com/ppy/osu/discussions/20865#discussioncomment-3941477, this is still not fixed.

peppy commented 2 years ago

@Walavouchey can you describe specifically what wasn't fixed by this? From the screenshots you posted in the linked discussion I'm not immediately sure what's the issue (text in a different place maybe?).

Walavouchey commented 2 years ago

text in a different place maybe?

yes, that is exactly the issue. it's "better" now in that storyboard (cf. first image in op), but still wrong (images i posted), causing other issues as i explained in the thread.

i haven't tested all cases so i don't know the exact logic involved with backwards commands. as i said, that needs to be tested.

peppy commented 2 years ago

I'll keep this assigned for now, but I'm not intending on looking into it as a priority (as this likely only affects a handful of beatmaps and can be fixed in the future). If anyone beats me feel free to investigate further.

Wieku commented 1 year ago

The real issue here was that transforms with endTime<startTime were discarded, so proper starting position could not be established. Changing endTime to startTime for sanity and letting the transform through fixes the issue:

https://user-images.githubusercontent.com/5307179/199632212-abaef9e2-d7b9-41c5-99e2-6b841f2dd13a.mp4

Stable doesn't have any weird logic, it just treats endTime<startTime as instant command at startTime. Move is instantaneous at 112244, endTime and startTime are after the object fade-out is complete:

https://user-images.githubusercontent.com/5307179/199632471-89702759-e751-4a35-80de-f6502364b374.mp4

Will create a PR shortly.

peppy commented 1 year ago

@Wieku I made PR because you didn't. Please check it matches expectations (looks to work in the beatmap in question).