Tutorials:Theming for StepMania 5
From SMTheming Wiki
Unlike other versions of StepMania, SM5 employs a fallback system, where the core metrics are in
Themes/_fallback and the default theme is in
Themes/default. Previous versions of StepMania put every metric into the default theme, making it a mess to go through. This was adopted from the arcade games that the original StepMania team made, like In the Groove.
Creating a New Theme
Creating a theme from scratch is easy.
- Create a new folder in the Themes directory.
- Create two files in the new folder:
- Create the following folders:
You now have a skeleton theme structure.
ThemeInfo.ini holds some general information about the theme.
ThemeInfo.ini from the SM5 default theme:
[ThemeInfo] DisplayName=Default Author=Midiman
metrics.ini was once the heart of StepMania theming. It still plays a major role in StepMania 5, though Lua has taken over some of the roles.
This is where all the text goes. If you're familiar with StepMania 3.9 theming, this is where the window title has moved to.
Each language is defined by a two character code, such as
en, ja, it, de, fr... A list of such codes is available here.
BGAnimations play a much larger role in StepMania 5 theming, especially with decorations. The BGAnimation folder also contains screen transitions, the system overlay, and various other items.
The Graphics folder is where various graphics that StepMania asks for are found. When using decorations, the files the theme looks for are in Graphics as well. Contrary to the name, the Graphics folder can also contain Lua scripts (allowing for multi-layered graphics in some instances).
Any font textures/inis belong in this folder. The Windows-only Texture Font Generator program creates StepMania-compatible fonts. Texture Font Generator should work in Linux using WINE.
As you've probably guessed, this is where the sounds go.
When it comes to music, you're able to have a .sm or .ssc simfile in the same folder with the same name as the song. This allows you to set the bpm, stops, and so on, which will allow commands like
effectclock to work with your music.
Last but not least, the Scripts folder contains various Lua scripts that the rest of the theme can access. Typically, the screen branches (NextScreen, PrevScreen) are defined in a file in the Scripts folder.