Stepmania Versions Save

Advanced rhythm game for Windows, Linux and OS X. Designed for both home and arcade use.

v5.0.8.b

9 years ago

StepMania 5.0.8; release notes compiled and Markdown formatted by @kyzentun:

This is divided into two sections:

  • Player visible changes: New configuration options players should try out,
  • Themer visible changes: New (optional) screens that themes can support, new metrics or lua functions, or fixes for existing functions.

Items are roughly grouped into the general part of StepMania they fit into.

Compiling:

Cmake is now the only method supported for compiling Stepmania. Read Build/README.md for instructions.
Some Linux users may need to pass -DWITH_LIBVA=ON and/or -DWITH_CRYSTALHD_DISABLED=ON to cmake when compiling.
There is a binary package for Linux which was built on amd64 debian. If it doesn't work, compile from the source instead.

Player visible changes:

Service Menu:

Entries in service menu rearranged to hopefully organize them better.
Test Input, Input Options, and Calibrate Machine Sync are now under Input Options.
Appearance Options, Set BG Fit Mode, and UI Options are now under Display Options.

Edit Mode:

  • Added submenus to the timing edit menu to allow shifting, copying, and pasting any or all timing segments in the selected region or after the current cursor position.
  • Shifting menus in edit mode now have choices for 1, 2, or 4 measures or 2 beats.
  • Revert From Disk actually works now.
  • Fixed bug that made alter menu choices prompt for clearing.

Gameplay:

  • Holding Select on gameplay now skips the current song in course or endless mode. This is meant to address the problem some people had where they were unable to skip songs in endless mode.
  • Toasty animation can now occur multiple times during gameplay. The Allow Multiple Toasties preference controls whether it is played multiple times.

Bug fixes:

  • Fixed bug in screen filter in default theme that made it not appear under the field when a solo file was played without Center1Player.
  • Fixed crash on OS X for certain dance pads when in Japanese locale.
  • Scoring bug fixes related to radar calculation.
  • Scores on edit charts should now be loaded correctly. Before, they were only loaded after the chart had been played in the current session.
  • Fixed bug that made steps on the same row as a stop and a bpm change unhittable. (and possibly other weird edge cases of multiple timing segments on one row, nothing should accidentally cause unhittable steps now)
  • Joining on Select Music when on Extra Stage is disabled to prevent crashing on Evaluation Summary.
  • "Do not show again" button on missing texture dialog works now.
  • If the background or banner file for a song doesn't exist when the song is cached, the cache file will have a blank path so Stepmania won't try to load the nonexistent banner or background.
  • Default key configuration for beat game type slightly tweaked, space is now the default scratch key, key7 is now mapped to right instead of key3.
  • Backwards and shuffle chart mods in beat now ignore the scratch column.
  • The AxisFix preference has been added which might fix the axis problem for some people on windows or on linux using the event driver.

Themer visible changes:

Service Menu:

ScreenOptionsInputSub and ScreenOptionsDisplaySub added. Updating a theme to show the options for the new screens should be a simple matter of changing the LineNames entry for ScreenOptionsService to include "InputOptions" and "SoundGraphics".

NoteColumnRenderer

Added handling for diffuse to make rainbow and related effects work.

RadarValues

Stream, Voltage, Air, Freeze, and Chaos are no longer capped at 1. Stream and Voltage no longer count hold heads twice. RadarCategory_Notes added, which counts all notes.

ScreenGameplay

The NoteField board is now underneath everything except the backgound. This means underneath any custom actors on the underlay or overlay or decoration layers, and also underneath the combo/judgment even when the ComboUnderField metric is true.

ToastyAchievedMessageCommand

The parameter table broadcast with this message has changed it is now as follows:

{  
PlayerNumber= pn, -- the player number of the player that earned the
toasty  
ToastyCombo= number, -- the current number of W2/W1 in a row the player has  
Level= number, -- the number of toasties earned in a row  
}

Adding the Level parameter allows the themer to easily set off a different effect based on how long the player has gone without breaking their toasty combo.
See Docs/Themerdocs/Examples/Example_Actors/Toasty.lua for an example of BGAnimations/ScreenGameplay toasty.lua that uses these parameters.

The Gameplay::ToastyTriggersAt metric can be a function now, or a number.
If the metric is a function, the function is passed the player number, and the player's current toasty level, and the number it returns is the number of additional steps to earn the next toasty.
If the metric is a number, it is the number of additional steps to earn the next toasty.
This means that ToastyTriggersAt=250 and ToastyTriggersAt=function(pn, level) return 250 end have the same effect: Toasties will be awared at 250, 500, 750, and so on.

The Gameplay::ToastyMinTNS metric has been added for controlling the minimum TapNoteScore needed to maintain toasty combo.

Bug fixes and new functions:

  • Attributes added are marked with [A].
  • Bug fixes are marked with [B].
  • Functions are marked with [F].

ActorSound:

  • [A] IsAction attribute added. If this is true, the sound will not be played if the MuteActions preference is true.

Global:

  • [F] commify
  • [F] convert_xml_bgs
  • [F] rec_print_children
  • [F] rec_print_table

XML converter

A converter has been added that takes care of the simple grunt work of converting an xml bg/fg file to lua for SM5. Read Docs/Themerdocs/XmlToLua.txt for details.

A short digression about earning toasties

A toasty is a special award for achieving a certain number of W2 or W1 steps in a row. In the default theme, this is 250 steps in a row, and W2 is known as Perfect, and W1 is called Flawless. The number of toasties earned is stored in the profile. Some themes show a special animation and play a sound when a toasty is earned.
The current toasty combo is the progress towards this goal. Each note on a row counts as one point in the toasty combo, thus jumps are two, and hands are 3 or more.
Hitting a step with a judgment worse than W2 breaks the toasty combo, resetting it to 0.
For many years, achieving 250 W2/W1 in a row, then 1 W3, then 250 more W2/W1 in a row would increment the toasty counter in the profile by 2, but only show the animation once. Earning 500 W2/W1 in a row was still only 1 toasty. This behavior has been changed so that 500 W2/W1 in a row will increment the toasty counter twice, and show the animation twice.

v5.0.7

9 years ago

StepMania 5.0.7; release notes compiled and Markdown formatted by @kyzentun:

This is divided into two sections:

  • Player visible changes: New configuration options players should try out,
  • Themer visible changes: New (optional) screens that themes can support, new metrics or lua functions, or fixes for existing functions.

Items are roughly grouped into the general part of StepMania they fit into.

Player visible changes:

Loading Time:

Simfile loading and caching has been changed internally to speed up loading time. If you're using an SSD, or only have a few hundred songs, you probably won't see any difference. People with large song collections who don't have SSDs should be able to measure the difference.
Most of the changes are aimed at making StepMania read song data from the cache and not look in the song folder until gameplay if the cache file exists. To take full advantage of this, you should have the Fast Load preferences set to true.
There are new things to help simfile authors deal with cases where the cache file is out of date.
Because this release bumps the cache version, the first time you start up it will rebuild the cache, which takes some time.

Reload current song:

Pressing Ctrl+Shift+R on Select Music will reload the currently selected song from its song folder, updating any cached information.

Never Cache List preference:

The NeverCacheList preference has been added to Preferences.ini. You can use it to set song group folders that should never be cached. The preference is set to a comma separated list of group names. Because it disables the cache for the songs in the groups listed, it should only be used sparingly, the cache is important for loading quickly.
Example: NeverCacheList=work_in_progress,abandoned_in_progress
This will cause the songs in the work_in_progress and abandoned_in_progress groups to never be cached.

Delete songs from Select Music:

Pressing Ctrl+Backspace on the Select Music screen will prompt you to permanently delete the currently selected song.
The Allow Song Deletion preference must be turned on in the Advanced Options section of the service menu for this to be enabled.

Edit Mode:

  • Autosave:

    The song is automatically saved every 5 minutes if there are any changes.
  • EditClearPromptThreshold:

    When clearing an area with the Alter menu, if the area contains at least EditClearPromptThreshold notes, you will be prompted. It's a preference that is settable in the Advanced Options section or in the Options in Edit Mode. Setting it to -1 means it will always prompt, setting it to 1000000 will make it never prompt.
  • Per-chart music:

    Each chart in a simfile can have its own MUSIC tag, pointing to a music file to use instead of the normal song music. This does not change the logic for when the song ends in gameplay. The time of the last step of any chart is still used as the time to end the song in gameplay, so if you use per-chart music, make sure your music is the same length.
  • Preview tag:

    Simfiles can have a PREVIEW tag which tells StepMania to use a specific file for the preview instead of the song music file. When you set the preview tag, the length of the named file will be used to set the sample length. After that, the sample length can be adjusted as normal. The sample start is forced to 0 when the preview tag is used.

Preferences:

  • HarshHotLifePenalty:
    Normally, if your life bar is full (1.0), and you get a judgment that would decrease it, 0.1 is taken off your life bar even if the penalty would be less than 0.1. If HarshHotLifePenalty is false, then the penalty is used instead of 0.1.

General:

  • DX9 support:

    DX9 support improved, giving a large speed boost and fixing the problem that made people get stuck with 16bit color. [xwidghet]
  • Mutable actions:

    Pause/Break key now toggles "action" sounds off or on. There is also a button in the F3 debug menu for people that don't have a Pause/Break key (press A, there are so many that it is off the bottom).

CMake:

This only affects people building from source. StepMania has moved to using CMake as the primary system for generating project files. This saves us the trouble of keeping several different project files updated. Read Build/README.md for instructions on using CMake to build.

Language changelog:

To make life slightly easier for translators, a language changelog has been added in Docs/Changelog_language.txt.

Themer visible changes:

  • Bug fixes are marked with [B].
  • Functions are marked with [F].

ActorFrame:

  • [B] Fixed RemoveChild and RemoveAllChildren Lua functions to delete the children instead of leaking memory.

ActorFrameTexture:

  • [E] Example added to Themerdocs/Examples/Example_Actors/.
  • [B] Various bug fixes.

BitmapText:

  • [B] Place characters of right-to-left alphabets correctly. (untested) [roothorick]

Font:

  • [B] Asserts and other things that caused StepMania to crash on font mistakes now emit non-fatal errors.

Global:

  • [B] foreach_ordered lua function now works on tables that have both number and string keys. Number keys are iterated over first.

PaneDisplay:

  • [B] Changed to print an error when metrics or player number are omitted instead of crashing.

RageTexture:

  • [F] GetPath

Screen:

  • [B] Fixed crash when AddInputCallback is passed nil.

Song:

  • [F] GetPreviewMusicPath
  • [F] ReloadFromSongDir

v5.0.7rc

9 years ago

This is a release candidate

There have been some changes to file loading to speed up startup time, and autosave has been added to edit mode. With those two additions affecting critical features, it is possible that some detail was missed (maybe a particular rare tag in simfiles doesn't work anymore, or maybe files aren't saved or loaded correctly)

Thus, this release candidate build is so that people can test things on non-critical systems to make sure simfiles that worked fine in 5.0.6 also work fine with the changed loader. (non-critical systems just means don't go stick it on an arcade machine where someone might get pissed if a song doesn't load or there's a crash) If you encounter any problems related to song loading or saving with this build post on the forum or submit an issue with as much info as you have. If it's a particular song that doesn't load right, that simfile will probably be needed to solve the problem.

Next release

If there are no serious bugs in this build, the next release will be in 3 weeks (April 1st), along with any changes that occur between now and then. Work on improving startup time is still ongoing.

Note on loading time

Because this release includes a cache version bump, the first time you load will take much longer than normal because it has to rebuild the song cache. After that, it should be measurably faster. People using SSDs or on modern hardware or with small song collections might not be able to see any difference in loading time.

Now for the notes on the other changes from the last few weeks:

Release notes

This is divided into two sections:

  • Player visible changes: New configuration options players should try out,
  • Themer visible changes: New (optional) screens that themes can support, new metrics or lua functions, or fixes for existing functions.

Items are roughly grouped into the general part of StepMania they fit into.

Player visible changes:

Edit Mode:

  • Autosave:

    The song is automatically saved every 5 minutes if there are any changes.
  • EditClearPromptThreshold:

    When clearing an area with the Alter menu, if the area contains at least EditClearPromptThreshold notes, you will be prompted. It's a preference that is settable in the Advanced Options section or in the Options in Edit Mode. Setting it to -1 means it will always prompt, setting it to 1000000 will make it never prompt.
  • Per-chart music:

    Each chart in a simfile can have its own MUSIC tag, pointing to a music file to use instead of the normal song music. This does not change the logic for when the song ends in gameplay. The time of the last step of any chart is still used as the time to end the song in gameplay, so if you use per-chart music, make sure your music is the same length.
  • Preview tag:

    Simfiles can have a PREVIEW tag which tells Stepmania to use a specific file for the preview instead of the song music file. The preview length should be read from the preview music file, so cut it right.

Preferences:

  • HarshHotLifePenalty:

    Normally, if your life bar is full (1.0), and you get a judgement that would decrease it, 0.1 is taken off your life bar even if the penalty would be less than 0.1. If HarshHotLifePenalty is false, then the penalty is used instead of 0.1.

General:

  • DX9 support:

    DX9 support improved, giving a large speed boost and fixing the problem that made people get stuck with 16bit color. [xwidghet]
  • Mutable actions:

    Pause/Break key now toggles "action" sounds off or on. There is also a button in the F3 debug menu for people that don't have a Pause/Break key (press A, there are so many that it is off the bottom).

Themer visible changes:

  • Bug fixes are marked with [B].
  • Functions are marked with [F].

ActorFrame:

  • [B] Fixed RemoveChild and RemoveAllChildren Lua functions to delete the children instead of leaking memory.

BitmapText:

  • [B] Place characters of right-to-left alphabets correctly. (untested) [roothorick]

Font:

  • [B] Asserts and other things that caused StepMania to crash on font mistakes now emit non-fatal errors.

Global:

  • [B] foreach_ordered lua function now works on tables that have both number and string keys. Number keys are iterated over first.

PaneDisplay:

  • [B] Changed to print an error when metrics or player number are omitted instead of crashing.

Screen:

  • [B] Fixed crash when AddInputCallback is passed nil.

Song:

  • [F] GetPreviewMusicPath

v5.0.6

9 years ago

@kyzentun made a mistake when fixing a crash bug the night before release that broke bpm editing. This fixes that mistake.

Other fixes:

  • Backslash key can be mapped.
  • Deleting steps no longer crashes.

Also, if you didn't see 5.0.5, you should read the release notes for it. https://github.com/stepmania/stepmania/releases/tag/v5.0.5

v5.0.5

9 years ago

StepMania 5.0.5; release notes compiled and Markdown formatted by @kyzentun:

This is divided into four sections:

  • Player visible changes: New configuration options players should try out,
  • Themer visible changes: New (optional) screens that themes can support, new metrics or lua functions, or fixes for existing functions.
  • Prominent bug fixes: Bugs that seem prominent and aren't solely relevant to themers. Listing every tiny little bug would make these notes far longer than they already are, so most bugs are left out.
  • Preemptive problem solving: Problems that might commonly occur and have a known good solution.

Items are roughly grouped into the general part of Stepmania they fit into.

Player visible changes:

Edit Mode:

  • Play song:

    Ends when the song ends, or when the notes end, whichever is later.
  • Key configuration:

    See Docs/Mapping_keys_for_edit_mode.txt
  • Record Hold Time:

    When recording steps in Record Mode, a button that is held more than 0.3 seconds is recorded as a hold. This amount of time can now be adjusted up or down with Q/W or set to 120 seconds with R or reset to 0.3 with E.
  • Record Mode Lead In Time:

    Preference for setting the number of seconds before the selected section comes up in record mode. Should be settable on the options screen in edit mode in default theme.

Preferences:

  • DefaultFailType:

    Internal mechanism changed again, set the preference to what you want again and report if it doesn't stick. (side note: It's stored in the DefaultModifiers preference, which is different for every game mode, so you'll have to set it for every game mode you play)

  • MinTNSToHideNotes:

    This preference controls the tap note score you must get on a note for it to disappear. Normally, any note that you score great or better on disappears, and the rest stay visible. Change this preference to miss, and even notes you miss will disappear. Change it to checkpoint, and not even fantastic will make a note disappear.

    There is also a modifier for this, to allow players to have different settings if the theme provides a way to set the modifier.

  • Previously hidden preferences:

    A bunch of useful preferences weren't settable through the service menu. InputDebounceTime was added to the Input Options section. The rest in the list were added to the Arcade Options section. They might not show up in custom themes that change the service menu. They all have help text explaining them, so visit them on the options screen.

    • AllowMultipleHighScoreWithSameName
    • ComboContinuesBetweenSongs
    • Disqualification
    • FailOffForFirstStageEasy
    • FailOffInBeginner
    • LockCourseDifficulties
    • InputDebounceTime
    • MaxHighScoresPerListForMachine
    • MaxHighScoresPerListForPlayer

Profile:

  • Profile merging

    Profiles can be merged together now, to import scores from an old profile into a new one. Merging does not delete the old profile, you must do that step separately.

    When merging a local profile into the machine profile, you can choose to skip merging the totals (step count, songs played, and similar)

  • Profile types

    Guest and Test profile types added. All existing and new profiles are Normal.

    If a profile is changed to Guest through the profile management screen, it will always show at the top of the list. A profile set to Test will always be at the bottom of the list. Profiles can be moved around in the list.

Misc:

  • Added auto-mappings for D-Force dance pads.

ScreenMapControllers:

  • Forced sanity checking

    Start, MenuLeft, MenuRight, and Operator keys must be mapped.

  • Reset key mappings option

    The debug menu now has a menu option for resetting the key mapping to the default. Hold F3 and press P and your current keymap will be wiped away.

    This is for recovering from an unusuble keymap without needing to find and delete KeyMaps.ini.

ScreenSelectStyle:

The Select Style screen changed a bit internally to simplify adding new choices and make sure all game modes had the correct style choices available. This is only visible in default theme because the _fallback theme still uses the old system for backwards compatibility.

ScreenOptions:

Player nameplates added with bpm info.

Translations:

Dutch translation updated by Kevin O. (Thumbsy). Spanish translation updated by Alejandro G. de la Muñoza.
Polish translation updated by Jarosław Pietras. Japanese installer translation by hanubeki. Partial French translation by Grégory Doche.

Videos:

webm and wmv added to list of supported video formats.

Themer visible changes:

Functions for new actor classes are not listed here, it is assumed that you will look at Lua.xml to see what is in them.

If a function is explained sufficiently by its entry in Docs/Luadoc/Lua.xml, it won't have a detailed entry.

  • Bug fixes are marked with [B].
  • Functions are marked with [F].
  • Metrics are marked with [M].
  • Sounds are marked with [S]
  • Thread variables are marked with [V]

Function Chaining:

All lua functions that didn't return something before now return the object they were called on.
Example: (yes I saw function chaining used in a certain gimmick noteskin)

    -- old style:
    self:zoom(.5)
    self:xy(_screen.cx, _screen.h-60)
    self:diffuse(color("#dc322f"))
    -- new style:
    self:zoom(.5):xy(_screen.cx, _screen.h-60):diffuse(color("#dc322f"))

Function Naming:

CubicSplineN, NoteColumnRenderer, NoteField, and NCSplineHandler list their functions with underscore style names. Camelcase style aliases exist for all their functions, use whichever naming style you prefer.

New Actor Classes:

  • NoteColumnRenderer:

    Each column in the NoteField is an actor that can be fetched and manipulated.

  • NoteField:

    The NoteField was just a normal(ish) ActorFrame before. Now it has all these functions and it's starting to get uppity. What is a callback anyway? It thinks we want it to call us back later when something happens?

  • NCSplineHandler:

    Each property of the note column has its own spline handler, which allows the splines to behave differently and be controlled independently. Position, rotation, and zoom are the three things that can be controlled by splines.

  • CubicSplineN:

    (not actually an actor, but there aren't any other new non-actors to put it with)

    This class provides an implementation of cubic splines. It's used by ActorMultiVertex and NoteColumnRenderer to control shape and note movement, but is also available in a standalone form for the rare case where you need a spline for something else.

New functions in old Classes:

Actor:

  • [F] Add/RemoveWrapperState
  • [F] bezier
    The bezier tween tended to get caught in an infinite loop before, which made it very unsafe to use. Now it won't loop forever when you set a bezier tween with random values.
  • [F] effectclock("timer") no longer crashes
  • [F] Get/SetFakeParent
  • [F] GetNumWrapperStates
  • [F] GetWrapperState

ActorFrame:

  • [F] GetUpdateRate

ActorMultiVertex:

  • [F] Add/RemoveState
  • [F] Add/RemoveQuadState
  • [F] ForceStateUpdate
  • [F] Get/SetDecodeMovie
  • [F] GetNumStates
  • [F] GetNumQuadStates
  • [F] GetSpline
  • [F] Get/SetQuadState
  • [F] Get/SetState
  • [F] Get/SetStateData
  • [F] Get/SetUseAnimationState
  • [F] SetAllStateDelays
  • [F] SetSecondsIntoAnimation
  • [F] SetStateProperties
  • [F] SetVertsFromSplines

Announcer:

  • [S] "evaluation full combo W3"
  • [S] "evaluation full combo W4"

BitmapText:

strokecolor is in the tween state now, so it can be tweened.

Game:

  • [F] GetSeparateStyles

GameState:

  • [F] ApplyPreferredSongOptionsToOtherLevels
  • [F] CanSafelyEnterGameplay
  • [F] Get/SetCurrentStyle changed
    In kickbox game mode, players can have different styles set, pass a PlayerNumber when using SetCurrentStyle or GetCurrentStyle. This does not break old code, if you don't care about whether your theme works in kickbox mode, you can ignore this.

Global:

  • [F] approach
  • [F] lerp
  • [F] lerp_color
  • [F] multiapproach

MusicWheel:

  • [M] HideActiveSectionTitle
    Defaults to true in _fallback. A bit unfortunate, but keeps backward compatibility with the existing behavior of OnlyShowActiveSection.
    If neither metric is true, wheel displays all titles plus the contents of the active section (if any).
    If OnlyShowActiveSection is true but HideActiveSectionTitle is false, wheel displays the active section title plus its contents, or all titles if no section is active.
    If both are true, wheel displays only the active section's contents, or all titles if no section is active.

Noteskins:

  • [V] Controller
  • [V] Player
    The Controller and Player variables now work for non-receptor arrows.
  • [M] NoteColorCount
  • [M] NoteColorType
    {PartName}NoteColorType will take Denominator or Progress.
    Denominator is classic style, colored by NoteType.
    Progress simulates DDR's Rainbow noteskin.
    {PartName}NoteColorCount is Number of Note Color
    You can reduce image size by reducing this value.

Player:

  • [M] ComboBreakOnImmediateHoldLetGo

PlayerOptions:

  • [F] MinTNSToHideNotes

PlayerState:

  • [F] ApplyPreferredOptionsToOtherLevels

Profile:

  • [F] GetPriority
  • [F] GetTotalDancePoints
  • [F] GetType

RageTexture:

  • [F] GetImageWidth/Height
  • [F] GetTextureWidth/Height
  • [F] GetSourceWidth/Height

RollingNumbers:

  • [B] Coloring and cropping during tweens fixed.
  • [B] Corner diffuse colors fixed.

ScreenEdit:

  • [M] OptionsScreen
  • [M] SetModsScreen
    The screens used to set options and mods in edit mode are no longer hardcoded, you can use these metrics to control what screens are used.

ScreenGameplay:

  • [M] MarginFunction
    Notefield positioning is handled a bit differently now. See comments in _fallback/metrics.ini above the [ScreenGameplay] MarginFunction metric. Basically, you can define a lua function that returns the space you want at the edges and in the center instead of setting position metrics. Do NOT use Style:GetWidth to calculate the margins your function returns.
    ScreenGameplay now handles zooming the notefield to fit in the space instead of using the NeedsZoomOutWith2Players flag in the style. If the notefield doesn't fit in the space between the margins, and there is only one player, the player will be centered even if the Center1Player pref is false.

ScreenOptions:

  • [F] GetNumRows

ScreenOptionsManageProfiles:

  • [B] Mini menu
    Centered on screen instead of centered on the row because more options were added.

ScreenPrompt:

  • [M] AnswerOnCommand (did nothing before, actually works now)

ScreenSelect:

  • [M] ChoiceNames
    This metric can be a lua command like this now:
ChoiceNames="lua,ScreenSelectStyleChoices()"

The lua command can then return a table of GameCommands which are used to create the choices.

ScreenSelectMaster:

  • [M] IconChoicePosFunction
    This metric is optional, if it's set, it must be set to a function that returns a table of positions. Each position is a table of the form {x, y, z}, where x, y, and z are numbers and any that is not a number defaults to 0.
    The function is passed the number of choices for the screen. IconChoiceOnCommand and IconChoiceOffCommand metrics added so each choice doesn't require its own On/OffCommand pair. These are also optional, but if they are set, they will override the individual commands if they exist. (If IconChoiceCactusOnCommand and IconChoiceOnCommand both exist, IconChoiceOnCommand will be used.) Example:
    # in metrics.ini
    IconChoicePosFunction=choice_positions
    -- In a file in Scripts/
    function choice_positions(count)
      local ret= {}
      for i= 1, ret do ret[i]= {i*24, i*48} end
      return ret
    end

ScreenSelectMusic:

  • [M] HardCommentMeter
    Metric for the meter that triggers the "select music comment hard" announcer.

Scripts:

  • [F] find_missing_strings_in_theme_translations
    This function was added as a way to aid translators. It finds strings that have no translation at all.

Song:

  • [F] GetBGChanges

Sprite:

  • [F] Get/SetDecodeMovie
  • [F] SetStateProperties

StageStats:

  • [F] GetStepsSeconds

Style:

  • [F] NeedsZoomOutWith2Players always returns false now.
    The related variable no longer exists, ScreenGameplay now uses the width of the notefield and the MarginFunction to decide whether to zoom out the notefield.

TimingData:

Pass true as the last arg if you want the data in tables instead of strings.

Bug fixes:

Background:

  • Using the wrong transition name no longer crashes.
  • Playback rate is applied to videos.
  • Checkerboard and other effects that use the same file twice no longer play videos back at multiplied speed.

BMS:

  • A couple of the crashes that occurred on some BMS files have been fixed.
  • Basic branching support implemented in loader. #RANDOM, #IF, #ELSE, #ELSEIF, #END should work.

Endless Mode:

  • Holding start takes you to the evaluation screen instead of the next song. Otherwise, you would not be able to reach evaluation when playing Endless Mode with Fail Off.

GameManager:

  • Lua Scripts/ folders are now reloaded when the Game mode is changed.

LifeGraph:

  • Fixed the rare bug where the life graph shows a gradual decline when it was actually full. This seemed to occur when the player had full life for a long time, then suddenly lost a chunk. The graph would show a gradual decline from the point where they reached full to the point where they lost a chunk, when in reality their life bar was full for practically all that time.
    The cause seems to have been getting judged for a hold and a tap on the exact same frame, and dropping the hold. It's rare and hard to reproduce on demand, but it is believed to be fixed.

Odd screen width:

  • Short: 1920x1080 would come up as 1921x1080 before. Now it's 1920x1080.
  • Long: The DisplayWidth preference and the ScreenWidth theme metric aren't actually used, the widths are calculated from the height and the aspect ratio. The old rounding code was written with 4:3 in mind, so an extra step was added to force the width to be even after the rounding.

Miscellaneous crashes:

  • Trying to practice doubles-only groups doesn't crash (still can't play, but doesn't crash).
  • ScreenHowToPlay doesn't crash when it can't find steps.
  • Joining the second player on Select Music now removes double-only songs from the music wheel. Selecting them before would crash.
  • Renaming a profile dir to a non-number no longer causes a crash the next time a profile is created.
  • Combo and point score changed to unsigned. A simfile with a huge tapcount no longer causes a crash.
  • Adding a bpm change that makes the bpm change after it no longer crashes. (Example: You have a file with 101 bpm at beat 0, and 100 bpm at beat 8. You add a change with 100 bpm at beat 4, then hit play. Previous versions would crash. Now, the bpm change at beat 8 is moved to beat 4.)

Simfiles:

  • If a chart for an unrecognized style is in the simfile, it is preserved correctly.
    Previously, charts for unrecognized styles would end up on dance-single, where they don't belong. Now a warning is printed to the log file and the charts are completely inaccessible in the game. This probably only occurs for people using simfiles made by 3.9+ Redux, which would autogen a chart for every difficulty for every style, and had a few styles that don't exist anymore.

Sextet stream:

Preemptive problem solving:

  • "Tried to switch to a background that was never loaded: <BackgroundDef Effect='StretchNoLoop' File1='1.000'/>"

This occurs with some simfiles that have a malformed BGCHANGES line. Either the file doesn't exist in Stepmania/BGAnimations or the song folder, or the person who created the simfile put the wrong thing in the BGCHANGES line.

There are three possible solutions:

  1. Create an empty BGAnimation for it to use.
  • Create a folder named BGAnimations inside your SM5 user data folder (%APPDATA%/StepMania 5.0/ on Windows, ~/.stepmania-5.0/ on Linux, ~/Library/Application Support/StepMania 5/ on OS X)
  • Create a folder with the name given in the error message inside that BGAnimations folder (the name is the part in quotes after File1).
  • Create default.lua inside that folder with this inside it: return Def.Actor{}
  1. Delete the BGCHANGES line from the simfile.
    You will also need to delete the cache entry for the simfile (Cache/Songs inside the user data folder has all the cache entries).
  2. Edit the simfile to correct the mistake in the BGCHANGES line.
    In the example, "1.000" is a nonsensical bg name, so the fields in the line are probably out of order. Docs/Userdocs/bgchanges_format.txt explains the format of the BGCHANGES line. Some files in the Rebirth pack have the color value in the wrong place.
  • CyberiaStyle8:
    Their function for figuring out what stepmania version is being used assumes that the version string can be split up by spaces, so now it emits an error.
    If you notice that your BackgroundFitMode preference that you set in the default theme is ignored in CyberiaStyle, it's because they implement their own bg fitting system that replaces the engine's.

SM5-beta4a

9 years ago

StepMania 5 beta 4a

"Apple forced our hand with OS X 10.10" Edition (unofficial tagline)

StepMania 5 beta 4a is now available, primarily for those who have upgraded to Mac OS X 10.10, though there are bug fixes as well. Update notes copy/pasted from changelog and Markdown formatted by @freem.

Fixes

  • [Mac OS X] Allow StepMania to be built and run in Yosemite. (@jberney, pull request #324)
  • [BackgroundEffects] Fix error reporting messages coming up unnecessarily. (el @freem, fixes issue #337)

New Features

  • [NoteDisplay] Add two noteskin metrics, {PartName}NoteColorType and {PartName}NoteColorCount. View https://github.com/stepmania/stepmania/pull/328 for more information. (@hanubeki, pull request #328)
  • [NoteDisplay] Var Player and Var Controller work for non-receptor arrows. (@hanubeki, pull request #329)

SM5-beta4

9 years ago

StepMania 5 beta 4; release notes compiled by @kyzentun and Markdown formatted by @freem:

This is divided into three sections:

  1. Player visible changes: New configuration options players should try out,
  2. Themer visible changes: New (optional) screens that themes can support, new metrics or lua functions, or fixes for existing functions.
  3. Prominent bug fixes: Bugs that seem prominent and aren't solely relevant to themers. Each section will first list each of the items in it, then after the full list, each item will be discussed in detail. Items are roughly grouped into the general part of Stepmania they fit into.

Player visible changes

  • Arbitrary Speed Mods
  • Customize Profile
  • Error Reporting
  • CMods adjust for song rate.
  • Lowercase and longer ranking names. (if theme supports it)
  • New Swap Up/Down and Arbitrary Remap feature in Edit Mode
  • Extra Stage: Default theme's speed mod changed to 2x.

New Preferences:

  • BackgroundFitMode
  • ComboContinuesBetweenSongs
  • DebounceCoinInputTime
  • DefaultFailType
  • FastNoteRendering
  • ThreeKeyNavigation

Specifics

Arbitrary Speed Mods

In the default theme, speed mods are set in a new way. The first element on the speed mod row tells you what your speed mod is currently set to. Call this the status element. It's underlined by the player's color the same way any other option that is set is underlined. Next are elements for adjusting it up or down, in large or small increments. Last are elements for changing the mode of the speed mod. Hit start on an element to interact with it and change your speed mod by that increment or change the mode. The status element will update to tell you the new setting. If there are two players joined, there are two status elements. To change the sizes of the increments, go to the Advanced Options section of the Options in the default theme. "Speed Increment" adjusts the smaller increment that is used. "Speed Increment Large" adjusts the larger increment. 10 on this scale is equivalent to 0.1x on the XMod scale. This replaces the old system where a speed mod was selected from a small set to allow you to set any speed modifier you might want without needing to worry about whether it's in the theme's small list. SpeedMods.txt is no longer used by the default theme, though other themes can choose to support it. This change was made because editing SpeedMods.txt often resulted in people making mistakes or editing the wrong one, or not knowing it existed, or having to add too many options and ending up with an absurd number of choices to scroll through.

Customize Profile

A profile customization screen now exists. This is for setting things like weight, birth year, and other calorie tracking stuff. If you're not using a theme that supports it, it's not relevant. Theme author instructions for adding support are in the Themer section.

To reach it, go to the Options screen from the main menu. Then go to Profiles. Pick the profile you want to customize. A menu will appear. Pick Edit. You'll see a menu of choices. Hit Start on a choice to change its value. The numpad should be self-explanatory.

This screen was added to allow setting the profile settings related to calculating how many calories were burned. Simply put, calculating calories purely off the number of steps hit and weight is inaccurate, so a new method for calculating off of heart rate, weight, age, gender and song duration was added. (shapesense's formula is the one that was used.)

VO2Max is optional, the internal code has a (less accurate) variant of the formula that is used if VO2Max is set to 0.

If you set the calorie calculation choice to use heart rate, then calories will not be added to the profile for every step. If the theme supports it, a screen for entering your heart rate will come up after gameplay and before evaluation. It will have a timer so you can measure your pulse and a numpad for entering the BPM of your heart. After you enter your heart rate, it'll be combined with the time to calculate the number of calories to add to the profile.

Error Reporting

This is really more of a themer feature, but so many themes have errors in them that it's going to be widely seen. Errors in themes are now reported in dialog boxes and on screen much more than they previously were. (this is in addition to the Logs/log.txt reporting that has existed much longer) This means that if you use a theme with errors in it, you'll be interrupted by dialog boxes and text on the screen reporting the errors. There isn't a way to turn error reporting off, and there are no plans to add a way to turn it off. The solution is to use a theme that doesn't have errors, or fix them if a theme you made has errors. If you're a themer and you encounter an error you don't know how to fix, ask for help on the stepmania forums.

CMods adjust for song rate. Previously, if you used a rate mod, you'd have to pick a different CMod from normal to account for the rate. The CMod code now checks the song rate mod and adjusts appropriately. The same is true of MMods. Haste is not adjusted for because the sudden changes that can occur from haste would cause the arrows to jump disorientingly.

Lowercase and longer ranking names. The internal functions for storing ranking names were modified to allow mixed case and longer length. This only matters if the theme allows mixed case and/or longer length input.

Swap Up/Down and Arbitrary Remap in Edit Mode

New options have been added to the Alter menu.

Swap Up/Down swaps the Up/Down columns in the selected region. In double, this swaps Up and Down on both pads. In Pump, this swaps the front and back panels (UL is swapped with DL, UR is swapped with DR).

Arbitrary Remap provides a way to swap columns around arbitrarily. You will be prompted to enter a comma separated string of column numbers. After the remapping, each column will have a copy of the notes from the column number you entered. So entering "2, 1, 4, 3" will move down to left, left to down, right to up, and up to right. "1, 1, 1, 1" will copy the notes from left to every column.

Extra Stage

Default theme's speed mod changed to 2x.

New Preferences

BackgroundFitMode

Background stretching has been a problem for a while, so now there's a preference for setting it. In the default theme, select "Set BG Fit Mode" from the Options menu to go to the screen for setting it. The screen will show the various choices, and how a background of each of the three common aspect ratios will be cut off by the screen edges. Some themes are known to override the internal lua functions that provide this feature, and it will not work in those themes.

ComboContinuesBetweenSongs

A minor preference for having ITG's feature of accumulating a large combo across multiple songs. You'll have to find Save/Preferences.ini and set it to 1 in that file to enable it.

DebounceCoinInputTime

A minor preference to cover the rare case where an arcade machine needs a different debounce time for coin input. This must be set by editing Save/Preferences.ini. Specifically, this was added to cover a case where someone had a bill acceptor added to their machine that worked by sending multiple coin insert inputs very quickly.

DefaultFailType

Kind of an internal thing, but you'll have to re-set your Default Fail Type preference.

FastNoteRendering

A minor preference for making note rendering faster. If you notice that your frame rate is low during very dense streams, you'll want to turn this on. It can be set in the Graphics/Sound section of the Options. The downside is that 3D notes will clip into each other instead of later notes being drawn on top of earlier notes.

ThreeKeyNavigation

A minor option for cabinets that only have Left, Right, and Start buttons. This can be set in the Input Options section. This forces the player options screen to have a down element for each row, so the cursor can no longer get stuck on rows that have multiple selections possible.

Themer visible changes

New stuff added to Docs/Themerdocs. Metrics are marked with [M]. Functions are marked with [F]. Attributes (things you set inside the lua file when creating the actor with Def.whatever) are marked with [A]. Bug fixes are marked with [B]. If a function is explained sufficiently by its entry in Docs/Luadoc/Lua.xml, it won't have a detailed entry.

Actor

  • [F] GetDestX/Y/Z
  • [F] texturetranslate

Actor Classes

  • ActorMultiVertex
  • LogDisplay
  • NumPadEntry

ActorFrame

  • [B] diffuse/glow applied to BitmapText children
  • [F] GetChild, GetChildren improved

ActorScroller

  • [A] LoopScroller
  • [A] WrapScroller
  • DrawByZPosition fixed for looping.

BitmapText

  • [F] distort
  • [F] max_dimension_use_zoom
  • [A] Font (LoadFont obsoleted)

Classes/Namespaces

  • ArrowEffects
  • PlayerOptions
  • SongOptions
  • TapNote

ComboGraph

  • [M] BodyHeight

Common Metrics

  • [M] AfterThemeChangeScreen, AfterGameChangeScreen, AfterGameAndThemeChangeScreen

GameManager

  • [F] SetGame

GameSoundManager

  • [F] IsTimingDelayed
  • [F] PlayMusicPart
  • [F] StopMusic

GameState

  • [F] GetCurrentStage
  • [F] GetLastGameplayDuration
  • [F] GetStylesForGame
  • [F] HaveProfileToLoad/Save
  • [F] InsertCoin and InsertCredit
  • [F] JoinInput
  • [F] Load/SaveProfiles
  • [F] SetCurrentPlayMode
  • [F] SetCurrentStyle
  • [F] StoreRankingName

Global functions

  • [F] GetTimeSinceStart
  • [F] OldStyleStringToDifficulty
  • [F] SaveScreenshot

Judgment message

  • Notes and Holds parameters
  • HoldNoteScore_MissedHold

LifeMeter

  • LifeType, DrainType, BatteryLives
  • LifeMeterChanged message

LifeMeterBattery

  • [M] CourseSongRewardLives

MusicWheel

  • [F] GetSelectedSection

NoteSkinManager

  • [F] GetMetric, GetMetricForNoteSkin

PlayerStageStats

  • [F] GetComboList, GetLifeRecord

PrefsManager

  • [F] SavePreferences

Profile

  • Heart rate stuff
  • [F] SetLastUsedHighScoreName
  • [F] GetHighScoreListIfExists

RageTexture

  • [F] Reload

Screen

  • [F] SetNextScreenName
  • [F] AddInputCallback and RemoveInputCallback

Screens

  • ScreenContinue
  • ScreenCredits
  • ScreenHeartEntry
  • ScreenOptionsCustomizeProfile
  • ScreenMapControllers
  • ScreenSetBGFit

ScreenGameplay

  • Themable haste system.
  • [F] GetHasteRate
  • [F] GetTrueBPS

ScreenHowToPlay

  • [M] CharacterName metric fixed.

ScreenSelectMusic

  • SelectMenuInput message

ScreenWithMenuElements

  • [F] SetAllowLateJoin
  • [F] StartTransitioningScreen

Sprite

  • [F] SetCustomPosCoords

Style

  • [F] GetColumnInfo, GetColumnDrawOrder

ThemeManager

  • [F] GetMetricNamesInGroup, GetStringNamesInGroup
  • [B] HasMetric/HasString return false for empty string
  • [F] SetTheme

TimingData

  • [M] GetReturnsNumbers

WheelItemBase

  • [F] IsLoaded

Details

Docs/Themerdocs/Examples (and other new Themerdocs stuff)

A few examples of basic things and some advanced things now exist. Any questions for clarifying examples are welcome.

Actor Classes

ActorMultiVertex

A new actor class for arbitrarily shaped actors. Detailed documentation is Docs/Themerdocs/ScreenAMVTest overlay.lua

LogDisplay

A new actor class for displaying a log of messages. This is what Error Reporting uses internally for displaying the errors on screen, so if you want to have a log of something on screen in your theme, it's provided for general use. _fallback/Scripts/04 LogDisplay.lua discusses its customizable features in detail.

NumPadEntry

A new actor class for displaying an interactive numpad for entering a number. This is used by ScreenHeartEntry and ScreenOptionsCustomizeProfile for entering numbers, so you'll want to read up on it when working on those screens for your theme. _fallback/Scripts/04 NumPadEntry.lua discusses it in detail, and default/BGAnimations/ScreenHeartEntry overlay.lua has an example of it in use. (NumPadEntry.lua mentions an example that doesn't actually exist yet. It seemed superfluous to create an example after having such detail in the file already)

ActorFrame

[F] GetChild, GetChildren improved Some themers may have known this already, some may not. If multiple actors inside an ActorFrame have the same name, GetChild would only return the first one, and GetChildren would only have one Actor by that name in the table it returns. This was particularly a problem when dealing with actors from the engine, where you can't control the name. GetChild and GetChildren were modified to return a table of all the actors by that name instead of just the single actor. The table does some fancy work to make old code that treats it as a single actor still work, but you probably want to update your code to take advantage of being able to access the individual actors anyway.

BitmapText

[A] Font (LoadFont obsoleted) BitmapText will now automatically apply THEME:GetPathF to the Font attribute if it's not already the path to a valid font, so LoadFont is obsolete. Example: Def.BitmapText{ Font= "Common Normal", Text= "Example" }

Classes / Namespaces

ArrowEffects

A namespace full of functions for advanced themers that want to reimplement the entire notefield in Lua. See Lua.xml for function list.

PlayerOptions

A class of functions for getting and setting the options (also called modifiers) for a player. This is a replacement for using GetPlayerOptionString/Array for fetching the player's options and a replacement for using ApplyGameCommand to set the player's options. It's intended to be used by scripted simfiles that want to use numbers instead of strings, and advanced themes that want to offer more powerful options screens. Lua.xml lists the functions and their usage. Themerdocs/modslevel.txt discusses which ModsLevel should be passed to PlayerState:GetPlayerOptions for the different uses.

SongOptions

Same as PlayerOptions, but for the song modifiers, like the music rate. Fetch with GAMESTATE:GetSongOptionsObject.

TapNote

Minor class for storing the data passed in new JudgmentMessage parameters. Functions are listed in Lua.xml. Note that the TapNotes only exist for the duration of the song, so an data in them that is needed should be copied by calling their functions and storing what the functions return. This is for use by advanced themes that have some reason for tracking more judgment data than the engine tracks.

Common Metrics

[M] AfterThemeChangeScreen, AfterGameChangeScreen, AfterGameAndThemeChangeScreen: Theme and game changing logic was changed a bit internally. These metrics are optional. When the theme or game changes, Stepmania will check the appropriate metric and load that screen after the change. If the metric is not set, the InitialScreen metric is used instead.

GameState

[F] GetCurrentStage: You probably have some kludgy way of detecting whether the current stage is Stage_Final somewhere in your theme because GetCurrentStage wasn't returning the right thing when on gameplay. That's been fixed, so you can use GetCurrentStage without worrying now.

[F] GetLastGameplayDuration: This is useful for implementing heart rate based calorie calculation support in your theme. Call this function on your ScreenHeartEntry to get the length of time to pass to Profile:CalculateCaloriesFromHeartRate.

Judgment message

Notes and Holds parameters: When a note is hit and the "Judgment" message is broadcast, it has two new parameters. Notes is a table of all the TapNotes on that row. Holds is a table of all the TapNotes that are holds on that row. This can be used to check more detailed judging data when handling the Judgment message. HoldNoteScore_MissedHold: HoldNoteScore_MissedHold is a new HoldNoteScore for when a hold is missed entirely because the player didn't hit the note at the start of the hold.

LifeMeter

LifeType, DrainType, BatteryLives

LifeType, DrainType, and BatteryLives used to be modifiers applied to the song, and both players were forced to use the same values. They have been moved to player options, so now they can be set to different values for each player.

LifeMeterChanged message

The LifeMeterChanged message had a bug that causes LifeMeterChangedP1 to be broadcast for both players. This has been fixed so LifeMeterChangedP1 is broadcast for Player 1, and LifeMeterChangedP2 is broadcast for Player 2. The params table for LifeMeterChanged contains two values: Life for the value the life meter was changed to, and StepsSecond, for the time the change occurred.

LifeMeterBattery

[M] CourseSongRewardLives: Metric used to reward the player with battery lives after every song in a course. This metric must be set to a function. The function is passed the LifeMeterBattery for the player, and the PlayerNumber. It must return a number, which can be any amount, but the lives left will be capped by the player's BatteryLives option. _fallback/metrics.ini has a simple example.

MusicWheel

[F] GetSelectedSection: A replacement for whatever crude kludge you're using to get the text of the current music wheel item.

Profile

Themerdocs/calories.txt lists the new functions for setting the parts of the profile related to calorie calculation.

Screens

ScreenCredits

The credits screen has been modified a bit internally to make it easier to add sections with custom theme credits without removing the main Stepmania credits.

ScreenHeartEntry

With a new way of calculating the number of calories burned, comes a new way for entering the information it needs. This screen appears after gameplay and before evaluation, but only if at least one of the players has it enabled and the theme supports it. See Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua for an in-depth example.

ScreenOptionsCustomizeProfile

(todo)

ScreenMapControllers

At a minimum, you want to set the LinesVisible metric to the correct value for your theme so that ScreenMapControllers knows when to stop scrolling the rows so the player's cursor can't go off the screen. Themerdocs/Examples/Example_Screens/ScreenMapControllers.lua discusses the themable parts of ScreenMapControllers.

ScreenSetBGFit

This is the screen for presenting the BackgroundFitMode preference so the player knows exactly how their choice will affect backgrounds by looking at the effect each choice has on an image of each of the common aspect ratios. _fallback/BGAnimations/ScreenSetBGFit overlay.lua is a detailed example.

ScreenGameplay

Themable haste system: Themerdocs/haste.txt discusses changing the way the haste system behaves if you want your theme to have different haste behavior from the default.

ScreenSelectMusic

SelectMenuInput message: Previously, if the SelectMenuChangesDifficulty metric was true, the SelectMenuInput message would not be broadcast for button presses with select held down. Now the message is always broadcast for button presses while select is held down.

TimingData

[M] GetReturnsNumbers: TimingData contains all the timing data for a Steps, and has functions for fetching it so the theme can see what the timing data was. Previously, these functions would all return strings and the theme would have to parse the strings to turn them into numbers befor it could do anything useful. Now, if the TimingData::GetReturnsNumbers metric is set to true, the TimingData functions will return numbers instead of strings.

Bug fixes

  • Endless mode loop crash/repick songs: Repeating courses now repick randomized songs when they repeat and no longer crash on evaluation.
  • Harmful pad codes disabled: No more accidentally turning on drunk.

SM5-beta3

10 years ago

StepMania 5 beta 3

SM5-alpha3

10 years ago

StepMania 5 Alpha 3

SM5-alpha2

10 years ago

StepMania 5 Alpha 2