Pius

Developers

This is the Pius tech notes page. As one of the developers' pages, you don't really need to read this unless you plan on writing code for Pius.

Step file formats

From the beginning, Pius was meant to handle basically all of the major step file formats out there. It started out with KSF, of course, but then it became clear we'd need StepMania support as well. Once I decided to support DDR, I needed to add DWI and STEP (the PyDDR native format) support as well.

Because of the wide variety of step formats we need to support, it no longer made sense to tie Pius' internal step data representation to the disk format, as it kind of did with just KSF/SM. Pius represents step data internally kind of like MIDI data; time offset from the last event, event type, and event data. This way we can fairly generically represent anything that dance games do today: regular steps, freeze notes, BPM changes, and stops.

Step files are written in two steps: when the program first begins, it scans step files, loading information like title, music filename, and contained difficulty levels, but it doesn't load the actual step information. When the user decides to play the song, only then are the steps loaded.