ppy / osu

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

Overlapping storyboard commands behave differently from stable #7257

Open MikiraSora opened 4 years ago

MikiraSora commented 4 years ago

Describe the bug: In beatmap Sweet Dreams (11t dnb mix) Playtime: 38330ms and 95673ms part of osb code:

//line 309911 for part playtime 38330ms
Sprite,Foreground,CentreLeft,"sb\z37.png",32,234
 S,0,0,,0,0.5
 F,0,36015,36215,0,1
 MY,7,36015,36415,234,256
 R,0,36015,38415,0,0.128
 MX,0,36415,38015,32,31
 MY,0,36415,38015,256
 F,0,37387,37487,1,0
 F,0,37387,38415,0
 MY,6,38015,38415,256,271
 F,0,38215,38415,1,0

I am not sure if it's bug about osu!lazer storyboard implement , or storyboarder :(

Screenshots or videos showing encountered issue: lazer expect behavior screen:

osu!stable: osu!lazer version: 2019.1216.0

Logs:

smoogipoo commented 4 years ago

Will need to investigate why stable handles this scenario this way, because it seems like lazer is doing what is expected by the storyboard (the last fade).

MikiraSora commented 4 years ago

Yep , so I think osu!stable/lazer could provide a standard .osb format checker to notice the storyboarders if they wrote bad/optimzable code. Because I found some ranked beatmaps that storyboard code has bugs.

smoogipoo commented 4 years ago

Can you link to other beatmaps (and provide timestamps)? If this pattern is a common thing then we ought to fix it.

MikiraSora commented 4 years ago

If you mean diff behaviors between osu!lazer and osu!stable , currently i just know that two (more I forgot XD). But I know some beatmap contains bugs/bad sytnax. for example: 381480 Halozy - Itsuka Furu Ame, Sakura there are a lot same commands.

I will try to remember and provide them.

Wieku commented 4 years ago

@MikiraSora by bad syntax and bugs don't you actually mean some shortcuts that make storyboards smaller in size? Also - I don't see a problem in the 381480 beatmap you posted. It looks like some custom easing function from the generator Hollow Wings used.

MikiraSora commented 4 years ago

@Wieku Yep you are right , but this storyboard code contains unnesscery commands like : image it's about 30000+ commands . image

smoogipoo commented 4 years ago

I've looked into this and it seems to be the difference between how transforms work in lazer vs stable.

Consider the case:

Transform1:     | -----------------------|
Transform2:                   |--------------------|
         t:     0             1          2         3

In stable, T1 has an effect from t=0...2, and T2 has an effect from t=2...3. In lazer, T1 has an effect from t=0...1, and T2 has an effect from t=1...3.

Lazer is doing this correctly so a framework fix isn't required, however slicing the transforms to match stable is non-trivial.

peppy commented 4 years ago

Please leave this open as it is still an issue.

Shmiklak commented 4 months ago

The storyboard does not look right on my recently ranked beatmap when playing in lazer. Specifically, on the attached screenshots we can see that for some reason lazer does not want to render the ECG, which seems to be caused by this issue with overlapping commands. Below is the specific storyboard code that is used by the sprites on ECG animation:

Sprite,Background,Centre,"sb\glow.png",0,240
 L,39322,31
  F,0,0,353,0.7,0
  F,0,706,,0
 F,0,40028,,0
 S,0,40028,,0.1
 C,0,40028,,0,147,255
 MX,0,40028,,-107
 P,0,40028,62263,A

image

lazer

image

stable