Developing for StepMania 4.0
Contents |
Downloads
See the StepMania 4.0 page.
Changes
ScreenSelectMaster
NumIconParts and NumPreviewParts have been removed. This is no longer necessary now that theme elements in Graphics can use .Lua files to make complex combinations.
Language support
Language .ini files file names now use ISO language codes ("en.ini","es.ini") instead of full-text names ("english.ini", "spanish.ini").
Metric names
The judgements have been renamed:
| old | new |
|---|---|
| Marvelous | W1 |
| Perfect | W2 |
| Great | W3 |
| Good | W4 |
| Boo | W5 |
Support for .actor was removed
Old format: (.actor)
[Actor] File=blah.png BaseRotationX=60 OnCommand=pulse
New format: (.xml)
<Actor File="blah.png" BaseRotationX="60" OnCommand="pulse" />
Support for .sprite was removed
Old format: (.sprite)
[Sprite] Texture=blah.png Frame0000=0 Delay0000=0.12 Frame0001=1 Delay0001=0.12
New format: (.xml)
<Sprite
Texture="blah.png"
Frame0000="0"
Delay0000="0.12"
Frame0001="1"
Delay0001="0.12"
/>
Support for .model was removed
Old format: (.model)
[Model] Meshes=meshes.txt Materials=materials.txt Bones=bones.txt
New format: (.xml)
<Model Meshes="meshes.txt" Materials="materials.txt" Bones="bones.txt" />
Where are the data files saved?
SM4 saves the data files on a per user basis. Windows users can find them in your "My Documents\Stepmania CVS" folder.
Theme Q&A
How do I fix the overlapping 100 in the metrics?
What's happening is that the first digit is coming out to "10" and the second digit is "0". You can fix that by clamping the timer value in the [MenuTimer] FormatFunctions. e.g.:
Text1FormatFunction=function(secs) secs = math.min(secs,99); return string.format("%0.0f", secs) end
How do I get the song title to display on the gameplay screen?
In "ScreenGameplay overlay", you can have:
<BitmapText
Font="common normal"
Text="@GAMESTATE:GetCurrentSong():GetDisplayFullTitle()"
/>
How do I display decimal numbers in the menu timer?
In SM 4, you define the format of the timer string. Check [MenuTimer] Text1FormatFunction and Text2FormatFunction. You want something like:
Text1FormatFunction=function(secs) return string.format("0.0f",secs) end
