open-manifold / Open-Manifold

A free and open-source clone of Rhythm 'n' Face for PC.
Other
10 stars 2 forks source link

Option to disable song_step in a level.json file #12

Open xen-osd opened 1 year ago

xen-osd commented 1 year ago

While setting song_step to 32 does make the music in a level mostly seamless, over time the small skips compound into the song becoming entirely out of sync with the internal timing.

SuperFromND commented 1 year ago

This issue is actually related to, albeit not quite a duplicate of, #3; the skips aren't a consequence of song_step, but rather the fact that we're streaming and decoding music data in realtime instead of preloading it. In fact, one of the things the game does is snap the playback head to where it's "expected" to be at the start of every phase, which is exactly the behavior that allowed song_step to be implemented (and the way it's calculated means song_step = 0 should effectively act as a disabled state anyways).

Disabling the "playhead snap" when setting song_step to zero might be somewhat sensible here, but I think the snap makes it more likely to sync up than just letting the song play as-is.