Tutorials:Theming for StepMania 5

With sm-ssc becoming StepMania 5, more people may wish to learn how to theme for it. This tutorial will help you theme for SM5.

Theme Structure
Unlike other versions of StepMania, SM5 employs a fallback system, where the core metrics are in  and the default theme is in. 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.


 * 1) Create a new folder in the Themes directory.
 * 2) Create two files in the new folder:   and.
 * 3) Create the following folders: ,  ,  ,  ,  , and.

You now have a skeleton theme structure.

ThemeInfo.ini
holds some general information about the theme.

An example  from the SM5 default theme:

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.

Languages
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 ... A list of such codes is available here.

BGAnimations
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.

Graphics
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).

Fonts
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.

Sounds
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 to work with your music.

Scripts
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.