ppy / osu

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

mania note animation clocks differ from stable #23187

Closed joleskins closed 1 year ago

joleskins commented 1 year ago

Type

Game behaviour

Bug description

I'm no programmer so just a disclaimer - technical terms I'm using are purely guesses from what I can see in-game

In stable, when a note enters the screen space, its animation starts at frame 0 and then loops the animation. This happens separately for every single note so they all have local animation clocks

In lazer, it seems that instead of each note having their own clock, now it's each column that has a separate clock, and every note in a specific column follows the same clock. A column's clock starts when the first note in the column appears in a map. So if the map starts with, say, a 4-note chord in 4k, they sync up. If each column's first note starts at separate times, the clocks desync.

My skin has a gradient as the animation and the effect is very trippy when each column is at a different time in the animation. This is where I want to ask which behaviour is intended because stable is a bit non-traditional for VSRG note animations. Other games like StepMania use a global clock for note animations where the animation runs continuously regardless of notes spawning, and each column follows it so all notes sync up.

I strongly prefer the stable behaviour but obviously that's biased because my skin depends on it(that aside I also think it looks better for animations in general). Which behaviour is generally the one sought after? Right now the implementation falls somewhere in-between stable and the example from StepMania. Kinda global but still localised to each column so they can end up desynced. I'd say it makes more sense to have it be one or the other, so either a single global clock or a clock for each and every note(with strong preference to the latter).

Apologies if this is confusing to read.. It's not the easiest thing to explain through text

To summarise: stable note enters screen -> animation starts at frame 0 for each note lazer note enters screen -> follows clock for specific column which starts with the first note in that column during the map

Screenshots or videos

For clarity this is the animation sequence notes

Screenshot of difference (Video shows it better) vlcsnap-2023-04-11-20h38m18s123

Stable vs lazer video https://streamable.com/05860x

Version

2023.403.1-lazer

Logs

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

joleskins commented 1 year ago

Blank skin with gradient notes and copy pasted skin.ini for testing(but for whatever reason column lines appear and column 2 and 6 in 7k don't have working texture redirects?? the skin.ini is literally copy pasted, all i changed was the skin name. more issues to make i guess..)

osk is inside the zip gradient.zip

peppy commented 1 year ago

Would have been nice if you included your full skin so there as no guesswork.

I've got this working but cannot guarantee the timing is the same as stable. And i'm not sure we need / want to. But it's a starting point I guess.