StepMania 5.1-3

StepMania 5.1.-3; release notes compiled and Markdown formatted by @kyzentun:


Wiki page

Player visible changes:


NoteSkins for 5.1 go in the NoteSkins folder now. NoteSkins made for 5.1.-2
will need trivial fixes before they work on 5.1.-3.

NoteSkins for 5.1.-3 and 5.0.x should be able to peacefully coexist.

Remember that NoteSkins for 5.1 go directly in the folder. They are not
separated by game type. If you put a NoteSkin for 5.1 inside
"NoteSkins/dance/", it won't show up.

Edit mode


The screen for picking a for edit mode has been completely reworked.

  • Groups/songs displayed in a list.
  • Page up/down keys can page through the list.
  • Copying a chart from a different game type is possible.
  • History of recently edited charts to skip navigating the menu. (no cap,
    probably have to add a way to clear old entries and add a cap later)

NoteField options

  • Choose noteskin from menu.
  • Tilting if you want to edit in Distant.
  • Zoom options for adjusting size.
  • Other notefield options.

Other stuff

Player Options

  • Added life and background options back in.
  • Added menu for hiding noteskins.

Debug Menu

  • Removed Debug Lights preference so it does not persist after the game is
  • Removed Monkey Input from menu.
  • Moved Mute Actions to where Monkey Input was so the keys for everything
    else stay the same.

Key mapping

Screenshot key can be remapped.


  • Changed note render order to render notes closer to the receptors on top.

Themer visible changes:

Obsolete things removed

  • ThemePrefs
  • UserPrefs
  • GamePrefs
  • CustomSpeedMods
  • ArbitrarySpeedMods


The lua config system explained in Docs/Themerdocs/
replaces ThemePrefs, UserPrefs, and GamePrefs. Having a single system for
handling custom preferences is easier for developers to maintain.

CustomSpeedMods was replaced by ArbitrarySpeedMods two years ago.
ArbitrarySpeedMods is an inferior version of the speed mod menu that is built
into the nesty menu system.


  • Changed various "NewSkin" and "NewField" names to "NoteSkin" and "NoteField".
  • Added hold_gray_percent.
  • Added use_hold_heads_for_taps_on_row.
  • Added custom_x.

Old notefield and noteskin systems removed

Various metrics and functions removed while removing all traces of the old notefield and noteskin system. See Docs/Themerdocs/5.1_incompatibilities/ for details.

Other stuff


  • Added modifiers that use random numbers.
  • Rewrote mod system internals to give control over how random modifiers are seeded.
  • Updated

Item Scroller

Added item_params arg to item_scroller:create_actors. item_params is passed
to each item when it is created.

Nesty Menus

  • Doc/Themerdocs/

Defective mode

  • Fixed bug in beat mod.
  • GetPlayerOptionsArray and GetPlayerOptionsString added to the list of lua
    functions that activate defective mode.


  • LoadProfileCustom function is now passed the player number the profile is
    being loaded for.

OptionRows Deprecated

Bad for setting numbers

OptionRows is based around picking from a list of choices, not changing a
number. So when a number needs to be changed, it's a mile long list of
choices, or a list that is too short to give everyone the needed precision.
Look at the mess speed mod choices went through.

The nesty menu system has an actor specifically for showing the current value
of the number being changed. Each item on the menu changes the value by
some amount.

Cannot handle dynamic menus

The OptionRows menu system does not have the adaptability to handle dynamic
menus. The Noteskin Params menu is one example of a dynamic menu. It allows
the player to set options in the noteskin. Those options are created by the
noteskin, and can be different for every noteskin. So the menu must be
dynamically generated based on the noteskin the player has chosen. When there
are two players, they can choose different noteskins. Each player must have
their own noteskin params menu.

Dynamically generated menus is part of the core of the nesty menu system.

Per-player menus handled poorly

It is possible to set flags in an OptionRow to only allow one player to use
it, but this does not hide the row. The other player's cursor skips over the row.
This feels strange and confusing.

Each player has their own menu, on their own side of the screen in the nesty
menu system.

Negative version numbers

Just a random idea I had one day. "Alpha" or "beta" releases get a negative
patch version number to indicate that some things are incompatible with the
previous release, and some things might not be compatible with the next
release. Eventually there will be 5.1.0, and 5.1.1 after that won't break
anything more.