Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 31 million developers.Sign up
StepMania 5.1.0 Alpha; release notes compiled and Markdown formatted by @kyzentun:
Keep scrolling down for 5.0.10 stable release
This alpha release is primarily for noteskin authors and theme authors who
are interested in creating noteskins or using the new features.
If you are not a noteskin author or theme author, you probably do not want to
use this 5.1.0 Alpha release.
The 5_1_0 branch uses submodules for some external dependencies like ffmpeg,
so they are not bundled. As a side effect, if you click the "Download ZIP"
button on github to get a source zip, you will not be able to build that zip.
If you are not compiling from source, you can ignore this section. The linux tar.gz attached to this release was built for amd64 debian.
To get around this problem, these are the steps for fetching the 5_1_0 branch source:
git clone --depth=1 -b 5_1_0 https://github.com/stepmania/stepmania.git cd stepmania git submodule init git submodule update
(if someone wants to submit instructions for doing the same with a gui,
gui instructions can be added.)
--recursive flag is not used in the clone command given above
because some submodules like cppformat have their own submodules that are not
needed for building or running stepmania.
After the submodules have been updated, compiling can be done in the same way
as on the master branch of stepmania.
The new systems in this alpha release are not in their final form. They will
be extended and modified based on feedback from noteskin and theme authors
who create new content. Keeping the systems simple and allowing new people
to learn them gradually is one of the goals.
This is the simplest one, so it is explained first. The changes to
RollingNumbers were more of an attempt to improve it than a serious rewrite
like the other new systems. Changes to RollingNumbers are fully documented
- More lua control: Various things that could only be set through metrics
can now be set by calling lua functions.
- Attributes: The attribute system from BitmapText is used, giving more
freedom than the multiply color metric.
- Configurable leading glyph: Any glyph can be used as the leading character
for the number. This is for people that don't want zeroes in front.
A new noteskin system has been created. The goals of the new system are to
provide a solid base for future development, clear out cruft, remove metrics
from noteskins, and provide more advanced features.
The new noteskin system is fully documented in NewSkins/default, which is an
example noteskin explaining all the features and demonstrating some of them.
- Pure lua: The metrics system is outdated and tends to obstruct advanced
authors trying to handle varied cases. The NewSkin system does not use
metrics at all. Everything is done in lua.
- Not tied to game types: A NewSkin can be used in any game type, as long as
it supports the buttons used by the current chart.
- Adjustable column width: The NewSkin controls how wide each column is and
the padding on the sides of each column. The hardcoded values from the
Style are ignored, and will be removed in a future version.
- Quantizable holds: Hold bodies can be quantized the same way taps are, if
the noteskin author uses the feature.
- Superior quantization: Quantizations are not forced to fit the traditional
categories of 4th, 8th, 12th, 16th, 24th, 32nd, 48th, 64th. Instead, notes
are quantized using a system based on how many times a quantization occurs
each beat. The simfile format and internal note data structures are still
limited, but the noteskin system is not.
- Receptor warnings: The receptors are told when the next arrow is coming,
even if it's off the bottom of the screen, so the receptor can warn of
upcoming notes by changing color or something.
- Superior multiplayer support: The NewSkin system does not force a hard
limit of 2 players, and noteskin authors are encouraged to support as many
players as feasible. Edit mode and gameplay will need upgrades before
more than 2 players is really possible, but the NewSkin system is prepared.
NewField is a completely new notefield system. It gives the theme more
control over every aspect, and is self contained.
Initial documentation is in
- Columns are actors: Each column is its own actor, with extra features.
- More info for Notefield board: The Notefield board file in Graphics should
be a lua file now. It is passed more info to make using it for a screen
filter easier. Using the notefield board for a screen filter makes
positioning logic much simpler because the themer doesn't have to worry
about the current style or how many players there are.
- Better multiplayer support: The NewField does not pull anything from a
global player state. Instead, all behavior is set by whatever creates the
NewField, or by the theme. It will not be an obstacle to having more than
2 players. Many other parts of the engine still stand in the way of
multiplayer, but the NewField is prepared.
The new notefield system also has a completely new modifier system. This is
extensible, predictable, and documented. Figuring out exactly what a
modifier does no longer requires digging through ArrowEffects.cpp. Detailed
control over exactly what the arrows do is possible.
Full docs in Docs/Themerdocs/5.1_incompatibilities/NewField_mod_system.md.
- Field mods separate from Column mods: The field and the columns have
different mods, for doing different things.
- Per-column mods: Each column can have its own mods.
- Mods for more things: FOV, vanish point, field transform, column
transform, note transform, note/explosion/receptor glow/alpha, time offset,
quantization, reverse offset, reverse, center.
- Separate glow and alpha: Glow and alpha are controlled by different mods
because the white flash that hidden/sudden force in the old system bothers
- No hidden quirk interactions: In the old mod system, C600 + Boost plays
differently from M600 + Boost. That's just weird and wrong, so the new
system does not do that.
- Splines are mods: The spline mod system added last Christmas was not well
integrated with the old mod system because the old mod system didn't have
a place for it. So there were weird interactions between the two that made
splines awkward to use. Splines are part of the design of the new system,
so they are much easier to use now.
- Mods are equations: At its simplest, a mod is an equation that takes one
aspect of a note as input (say, y offset) and sets an attribute based on
that aspect (say, x position). Possible equations range from simple
numbers to wave functions and splines.
- Detailed control: Building on the idea of using equations for mods, there
are many minor variables that can be set when creating a mod to customize
exactly how it affects the notes.
- Built in timed mods: The columns and field have managers built in that can
be told when a mod should start and end. The manager efficiently handles
turning mods on and off at the right times.
- Rate adjusted mods: Mods are tied to the current time of the field, so
when the music rate changes, mods play out at exactly the same beat. This
relieves the burden of writing lua code to find the current music rate and
try to adjust tween times, or forcing people to only play on 1x rate.
Because the modifier system does not use PlayerOptions, large parts of the
options screen do nothing. Mods that change the steps in a chart like
Shuffle work the same, but mods that change the appearance of notes like
Dizzy do nothing. This is because the system was not designed with OptionRow
in mind (I hate OptionRow, it can't do anything I want to do, I don't use
Instead, the NewField relies on the theme to set mods through lua
function calls when ScreenGameplay starts. To assist themers, _fallback
provides functions for setting speed, tilt (distant), mini, and reverse by
reading them from PlayerOptions. There are also functions for setting hidden
and sudden mods (with control over exactly where the line is, and only
affecting note alpha. So no white flash), but they do not read from
PlayerOptions and must be called directly.
A future version will probably use lua option rows and a global lua variable
to store the mod choices from the options screen before applying them on
- Adapt the new mod system so that it can be used on any actor, not just on
the notefield and notes.
- Create lua option rows to assist themers putting newfield mods on the
- Address the problem that prevents using the spin effect on mine notes. The
notes need some efficient way for the effect clock to be tied to the time
passing in the notefield, instead of being tied to PLAYER_1 or PLAYER_2.
- Add stuff that edit mode needs, like drawing beat bars and timing segment
- Write proper entries in Lua.xml for all the new functions. The
documentation in Docs/Themerdocs should be a supplement to Lua.xml.
Things on the way out:
Old NoteField related stuff:
NoteField, NoteDisplay, ArrowEffects, NoteSkinManager, and (most of)
PlayerOptions will probably be removed in the next release.
It would be nice if both players were not forced to the same style.
Everybody tries to skip past style select quickly, so it seems obstructive.
If player's aren't forced to the same style, and the noteskin controls column
widths, what point does the style have? Changing between styles on music
select is already possible in more advanced themes. This will cement that,
and allow more freedom when picking what to play next.