stepmania

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

Stars
1.9K

Bot releases are visible (Hide)

stepmania - StepMania 5.1 beta 2 Latest Release

Published by ListenerJubatus about 6 years ago

stepmania_2018-07-23_21-08-39

Roadmap notes

A decision was made to delay some of the more signifigant changes originally intended for 5.1 to a future release, which will be known as StepMania 5.2 (see here for more details), and is in continued development on the master branch. At the same time, a new iteration of 5.1 was forked from the branch of 5.0, which features enhancements and other internal improvements, whilst aiming to be "almost entirely compatible" with content designed for 5.0.x, such as themes.

In other words, the previous preview release made under the version number 5.1, "5.1 -3", is actually an alpha build of what is now known as StepMania 5.2 on the Master branch. This is the first preview release based on the 5.1-new branch, created as a result of the aforementioned fork.

Compiling:

Wiki page

Notes when upgrading

The user data directory has been changed to reflect the new version number;

  • Windows: %APPDATA%/StepMania 5.1/
  • Linux: ~/.stepmania-5.1/
  • macOS: ~/Library/Application Support/StepMania 5.1/

The Alternate folder preferences can be used to share content such as songs between multiple versions of StepMania.

Changes since Beta 1

Player-visible changes

  • The new default theme has undergone visual changes, including a revised color scheme and flatter appearance. Other minor adjustments have also been made.
  • Make announcers repeat their lines less (#1624 )
  • Add connection timeout to StepMania Online sockets (#1651)
  • Turn lights off on exit (#1646)

Creator-visible changes

  • Fixed handling of ThemePrefs on themes that are children (#1628)
  • Make getenv() and setenv() actually get and set the current env (52dbc11b5f22f7289a7b854ae564b47a3449b556)
  • The ScreenFilter env will be nil sometimes, catch that (6452449b6fd5f64f276336aa1f13eedaf5437dc8)
  • Improve DrawQuads batching in the font render. (#1654)

Bug fixes

  • Moved display zbuffer clear to after notefields are drawn (#1679)
  • Initialise variables to ensure input thread is started (#1696)
  • Preserve event timestamps in X11 input driver (#1702)
  • Corrected Lua documentation for SONGMAN:GetCoursesInGroup() (#1712)
  • Correct implementation of grade tiers in Lambda (#1717)

Compilation

  • Fix compiling on Linux by updating the libmmmagic binaries. (#1352)
stepmania - StepMania 5.1 beta 1

Published by ListenerJubatus over 6 years ago

Roadmap notes

A decision was made to delay some of the more signifigant changes originally intended for 5.1 to a future release, which will be known as StepMania 5.2 (see here for more details), and is in continued development on the master branch. At the same time, a new iteration of 5.1 was forked from the branch of 5.0, which features enhancements and other internal improvements, whilst aiming to be "almost entirely compatible" with content designed for 5.0.x, such as themes.

In other words, the previous preview release made under the version number 5.1, "5.1 -3", is actually an alpha build of what is now known as StepMania 5.2 on the Master branch. This is the first preview release based on the 5.1-new branch, created as a result of the aforementioned fork.

Compiling:

Wiki page

Notes when upgrading

The user data directory has been changed to reflect the new version number;

  • Windows: %APPDATA%/StepMania 5.1/
  • Linux: ~/.stepmania-5.1/
  • macOS: ~/Library/Application Support/StepMania 5.1/

The Alternate folder preferences can be used to share content such as songs between multiple versions of StepMania.

Player-visible changes:

New default theme

A new high-resolution default theme known as Lambda has been introduced. It features a cleaner visual design with a bold color scheme, a more streamlined layout, and is optimized for high definition resolutions. A new noteskin of the same name is also bundled, which is inspired by the visual design of the theme.

While most themes (including the previous default theme) render at an internal resolution of 480p for positioning actors, Lambda uses 720p. Some content, particularly songs utilizing internal BGAnimations and other scripting, may require adaptations in order to render correctly when using high-resolution themes; although this issue is not exclusive to 5.1, it has greater prominence because of its use of a high-resolution theme by default.

The previous default theme is still included as part of the base StepMania package under the name "Legacy", but it will be removed on a future release. As mentioned earlier, 5.1 remains compatible with themes and noteskins that are compatible with 5.0.12.

Controller support

The DirectInput handler for Windows now supports XInput. (#1443)

"The XBox360 controller driver for windows has a flaw where the DirectInput backwards-compatible driver registers dance pad arrows as a hat and will not allow opposite arrows to be pressed at the same time. This is not a problem in the XInput interface since the arrows are registered as a DPad and each arrow is a button."

Custom songs

Songs can be loaded from profiles on USB drives. Preferences are avaliable to specify caps on song file size, the number of songs that can be loaded, and loading timeout length. On Linux, StepMania must run as root to save USB profile scores. (#1470)

Other

  • The ScreenEdit notefield now scales on themes with internal resolutions higher than 480p. (#1357)
  • Bug fixed where player difficulty meter and/or color inside MusicWheelItem don't update when switching between difficulties (#1361)
  • Exclusive and borderless fullscreen modes avaliable on X11 (#1485), and issues with fullscreen fixed on macOS (#1523)
  • Coin count is now saved to a file in the /Save folder. (#1405)
  • Unselectable trails are pruned from course selection when AutoSetStyle is active. (#1619)
  • Installer build script fixes. (#1625)

Creator-visible changes:

New modifiers

A large number of new ArrowEffects have been added, primarily originating from the OpenITG fork "NotITG". They include new modifiers that can be applied to individual notefield columns, versions of selected modifiers that act upon different axes, offset and speed controls for selected modifiers, versions of selected modifiers that utilize tangent waves, as well as other new effects.

  • Column specific modifiers; right now, this supports the maximum number of columns, 16. Note that unlike NotITG, numbering for column specific modifiers starts at 1 instead of 0.
    • Bumpy
    • Dark
    • ConfusionOffset
    • ConfusionXOffset
    • ConfusionYOffset
    • Move note columns (Usage: 100% MoveX1 moves the first column left by ARROW_SIZE.)
      • MoveX (moves a column in the x direction)
      • MoveY (moves a column in the y direction)
      • MoveZ (moves a column in the z direction)
    • Reverse
    • Tiny
  • Tangent-based modifiers
    • tanBumpy
    • tanBumpyX
    • tanDigital
    • tanDigitalZ
    • tanDrunk
    • tanDrunkZ
    • tanExpand
    • tanTipsy
    • tanTornado
    • tanTornadoZ
  • Cosecant (When set to true, all tan mods use a cosecant wave instead of a tangent wave. This is to recreate the tangent modifier behavior from nITG V1)
  • Attenuate
    • AttenuateX - attenuates on the x position.
    • AttenuateY - attenuates on the y position.
    • AttenuateZ - attenuates on the z position.
  • Beat
    • BeatOffset (50% = beat effect happens on 8th notes)
    • BeatPeriod (waveform length of the beat mod at peak wave amplitude)
    • BeatMult (multiplies the bpm of the beat effect)
    • BeatY (Beat's effect applied to the y position)
    • BeatYOffset
    • BeatYPeriod
    • BeatYMult
    • BeatZ (Beat's effect applied to the z position)
    • BeatZOffset
    • BeatZPeriod
    • BeatZMult
  • Bounce
    • Bounce - uses absolute value of a sine function
    • BouncePeriod
    • BounceOffset
    • BounceZ - Bounce's effect on the z position
    • BounceZPeriod
    • BounceZOffset
  • Bumpy
    • BumpyOffset
    • BumpyPeriod
    • BumpyX (Bumpy's effect applied to the x position)
    • BumpyXPeriod
    • BumpyXOffset
  • Confusion
    • ConfusionOffset (Rotates both notes and receptors by a given amount on the z axis, and keeps them there)
    • ConfusionX (Acts like Confusion, but on the x axis instead of the z axis)
    • ConfusionXOffset (ConfusionOffset on the x axis instead of the z axis)
    • ConfusionY (Uses the y axis instead of the z axis)
    • ConfusionYOffset: (Uses the y axis instead of the z axis.)
  • Digital (Arrow path takes the form of a digital sine wave)
    • DigitalSteps (more steps means a smoother wave)
    • DigitalPeriod
    • DigitalOffset
    • DigitalZ (Digital's effect applied to the z position)
    • DigitalZSteps
    • DigitalZPeriod
    • DigitalZOffset
  • DizzyHolds (When set to true, hold heads become affected by dizzy. Replaces the DizzyHoldHeads metric)
  • DrawSize (affects how far down the notefield renders the notes; 100% = double, -50% = half)
  • DrawSizeBack (affects how far the notefield renders notes after the receptors; 100% = double, -50% = half)
  • Drunk
    • DrunkSpeed
    • DrunkOffset
    • DrunkPeriod (change the period of the oscillations of drunk)
    • DrunkZ (Drunk's effect applied to the z position)
    • DrunkZSpeed
    • DrunkZOffset
    • DrunkZPeriod
  • Expand
    • ExpandPeriod
  • Parabola
    • ParabolaX (Arrow path takes the form of a parabola in the x position)
    • ParabolaY (Arrow path takes the form of a parabola in the y position)
    • ParabolaX (Arrow path takes the form of a parabola in the z position)
  • PulseInner
  • PulseOuter
  • PulsePeriod
  • PulseOffset
  • Sawtooth (Arrow path takes the form of a sawtooth wave)
    • SawtoothPeriod
    • SawtoothZ (Sawtooth's effect applied to the z position)
    • SawtoothZPeriod
  • ShrinkLinear
  • ShrinkMult
  • Square (Arrow path takes the form of a square wave)
    • SquarePeriod
    • SquareOffset
    • SquareZ (Square's effect applied to the z position)
    • SquareZPeriod
    • SquareZOffset
  • StealthPastReceptors (When set to true, Stealth and similar effects persist for notes that go past the receptors. Replaces the DrawHiddenNotesAfterReceptor metric)
  • StealthType (When set to true, Stealth and similar effects are based off of YOffset instead of YPosWithoutReverse. Mainly affects modifiers like BeatY and other similar mods that work on the y position)
  • Tipsy
    • TipsySpeed
    • TipsyOffset
  • Tornado
    • TornadoPeriod (control the helix length)
    • TornadoOffset (control how far into the tornado the receptors are) (100% = +1)
    • TornadoY
    • TornadoZ
    • TornadoZ (Tornado's effect applied to the z position)
    • TornadoZPeriod
    • TornadoZOffset
  • WavePeriod (Control the wave length)
  • Zigzag (Arrow path takes the form of a triangle wave)
    • ZigzagPeriod
    • ZigzagOffset
    • ZigzagZ (Zigzag's effect applied to the z position)
    • ZigzagZPeriod
    • ZigzagZOffset
  • ZBuffer (When set to true, turns on the zbuffer. Useful for when zbuffer is wanted without needing to turn on effects like 0.5% bumpy.)

Theming changes

  • A new system known as ImageCache is avaliable for caching the various types of images bundled with a simfile, such as jackets and CDTitle images among others. This expands upon the previous system used for only banners and backgrounds. (#1532)
  • StepMania now supports distance field effects and fonts. (#1546, #1547)
  • Sprite:Load function can set additional texture hints by setting a second argument (#1426)

Noteskin changes

  • New bundled noteskin, Lambda, which is designed to compliment the new default theme.
  • New NoteColorType ProgressAlternate; notes on a frame boundary (for example, if there are 4 frames, notes at 0, 0.25, 0.5, and 0.75 beats) use the previous frame instead. A modification of the midi-solo noteskin called midi-rainbow is included to demonstrate this behavior. (#1621)

Other

  • Additional functions and Lua bindings for online mode, including song file and chart hashing, keyboard scrolling for chat, ability to implement basic mouse navigation, etc. (#1393, #1394)
  • Ability to reload preferences from the debug menu. Some preferences are only checked at startup and are unaffected by the reload. (#1471)
  • New SetActualDancePoints and SetPossibleDancePoints functions (#1527)
  • Noteskin names may contain spaces. (#1493)
  • GetNumCourseEntries function. (#1497)

Known issues

  • Styles are not displayed on Lambda's course selection screen. (#1617)
stepmania - StepMania 5.1.-3

Published by kyzentun about 8 years ago

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

Compiling:

Wiki page

Player visible changes:

NoteSkins

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

ScreenEditMenu

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
    restarted.
  • 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.

NoteField

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

Themer visible changes:

Obsolete things removed

  • ThemePrefs
  • UserPrefs
  • GamePrefs
  • CustomSpeedMods
  • ArbitrarySpeedMods

Docs/Themerdocs/5.1_incompatibilities/ThemePrefs_removed.md

The lua config system explained in Docs/Themerdocs/lua_config_system.md
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.

NoteSkins

  • 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/oldfield_removal_notes.md for details.

Other stuff

Modifiers

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

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/nesty_menus.md

Defective mode

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

Profile

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

stepmania - StepMania 5.0.12

Published by quietly-turning about 8 years ago

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

Player visible changes:

Gameplay

  • Fixed bug that allowed pausing by pressing Select then Back. Pausing
    requires pressing the same button twice.
  • Default theme ignores holding Select, or Start during gameplay. The
    pause menu must be used to back out of a song.

Select Music

  • Added AllowHoldForOptions preference. When this is set to 0 (off), going
    to the player options screen requires pressing Start a second time, instead
    of holding it.

Other

  • Fixed bug that deleted a warp on the same beat as a stop when saving.
  • Ready and Go announcer sounds no longer play simultaneously.
  • Fixed cmake settings so that player profiles can be loaded from USB drives once again.
  • Fixed crash in loading profiles from USB drives.

Themer visible changes:

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

ScreenSyncOverlay

  • Actors are loaded from BGAnimations/ScreenSyncOverlay overlay instead of
    being hardcoded.

Pausing gameplay

Read Docs/Themerdocs/pause_menu.md for some explanation of handling pausing.

stepmania - StepMania 5.0.12 RC

Published by kyzentun over 8 years ago

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

Player visible changes:

Gameplay

  • Fixed bug that allowed pausing by pressing Select then Back. Pausing
    requires pressing the same button twice.
  • Default theme ignores holding Back, Select, or Start during gameplay. The
    pause menu must be used to back out of a song.

Select Music

  • Added AllowHoldForOptions preference. When this is set to 0 (off), going
    to the player options screen requires pressing Start a second time, instead
    of holding it.

Other

  • Fixed bug that deleted a warp on the same beat as a stop when saving.
  • Ready and Go announcer sounds no longer play simultaneously.
  • Fixed crash in loading profiles from usb drives.

Themer visible changes:

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

ScreenGameplay

  • [M] UsePauseMenuInsteadOfGiveUp

ScreenSyncOverlay

  • Actors are loaded from BGAnimations/ScreenSyncOverlay overlay instead of
    being hardcoded.

Pausing gameplay

Read Docs/Themerdocs/pause_menu.md for some explanation of handling pausing.

stepmania - StepMania 5.0.11

Published by kyzentun over 8 years ago

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

This is divided into two sections:

  • Player visible changes: Bug fixes and a couple new preferences.
  • Themer visible changes: Bug fixes, new lua functions, new metrics.

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

Player visible changes:

Edit Mode:

  • Beat bars are drawn properly when M-mods are used.
  • Added "Clear timing in region" to timing menu.
  • Fixed crash that occurs when "Paste timing data" is used after copying a
    region of timing data that only contains stops.

Gameplay:

  • Added a pause menu to the default theme. This menu can be brought up by
    pressing Select or Back twice, or by pressing MenuLeft and MenuRight at the
    same time. The pause menu allows exiting from the middle of the song or
    restarting the song or continuing.
  • In an Endless course, songs will only be repeated after all songs
    in the group have been played.

Language:

  • Bahasa Indonesian translation added to default theme.

Minimaid:

Minimaid driver added for Linux. This is practically identical to the
Windows minimaid driver that pkgingo wrote.

Preferences:

Added DisableUploadDir preference to skip saving a score entry to Save/Upload
every time a song is played. Generating the unique filename can take several
seconds when there are years of scores accumulated. This preference defaults
to false.

Bug Fixes:

  • Fixed No Fakes mod to remove fakes inside warps.
  • Colon key should be mappable.
  • BG Brightness is no longer forced to 100% on songs that only have a
    beginner chart.
  • Graphics/Sound options screen should not crash or hang on load anymore.
    The list of resolutions was being fetched in an inefficient and buggy way.
  • Linux event devices now start at JOY10 instead of JOY1. Without this
    change, if one dance pad is a joystick device, and the other is an event
    device, they will both be JOY1, and stepmania will think they are the same
    dance pad. If you use Linux, assume that you have to remap your dance pad.
  • Stepmania will force disconnection from the SMO server when entering the
    jukebox or sync calibration screens to avoid crash.

Themer visible changes:

Bug fixes and new functions:

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

Actor:

  • [F] get_tween_uses_effect_delta and set_tween_uses_effect_delta added.

Global:

  • [F] get_sound_driver_list added.

RageFileManager:

  • [B] OS X special files should be ignored in general.
  • [B] Lua functions for RageFile should now emit an error when the file was
    not opened correctly instead of crashing.

Player:

  • [F] ChangeLife and SetLife added.

Popn:

  • [B] Judgment levels in popn game mode now use W1 to W5.

ScreenManager:

  • [F] get_input_redirected and set_input_redirected added.

SelectMusic:

  • Using lua music files for the section music and similar things works now.
  • [F] Added CanOpenOptionsList. OpenOptionsList will do nothing if
    CanOpenOptionsList returns false.
stepmania - StepMania 5.1.0 Alpha 2

Published by kyzentun over 8 years ago

StepMania 5.1.0 Alpha 2; release notes compiled and Markdown formatted by @kyzentun:

Compiling:

Check the section on Compiling in the release notes for the previous 5.1.0 alpha release. Those instructions still apply.

Linux Fullscreen:

The backend for fullscreen mode on linux has been rewritten to allow control
over which display is used and whether stepmania uses exclusive mode.

NewField changes:

All themes use the NewField in gameplay now. The old NoteField actor does
not exist on gameplay anymore.

Compatibility mode:

NewField has a special mode to make it use the old PlayerOptions mods instead
of the mods that are built into it. Anything that touches the old
PlayerOptions mods will trigger the auto detection to put the field into
defective mode for that player.

Edit Mode:

If the beat bars are misaligned and the receptors are shaking when htting play in edit mode, something is triggering the defective mode detection in the NewField. Look for things that touch PlayerOptions and remove them if you're a themer.

NewSkin changes:

Noteskin parameters

This is a system for allowing a noteskin to provide choices to the player
that change the behavior of the noteskin. The noteskin creates some
variables and decides what to do with them, the theme provides a menu, and
the engine saves the parameters in the player's profile.

Other changes

  • Added support for 3D noteskins.
  • Added anim_time and anim_uses_beats for controlling how fast taps are
    animated.
  • Added quantum_time for controlling how many beats the quantizations are
    spread over. This should make is possible to make a noteskin where half
    notes look different from 4th notes.
  • Added edgy, EasyV2 and ExactV2 noteskins, which support dance, pump, and
    solo.
  • Removed rotations table from the column data. Set the rotation of the taps
    with InitCommand instead.
  • layers_above_notes and layers_below_notes fields merged into a single
    layers field. Each layer must set its draw order so the NewField knows
    when to render it. Each layer should also set its fade type and transform
    type so that the NewField knows which mods to apply to it.

Lifts:

Lifts are rendered with a hold body preceding them to give the player some
warning time. The length of the hold body defaults to .25 seconds or .25
beats, whichever puts it further away from the note. The hold body is purely
visual, it is not judged with a hold judgment.

Other NewField changes:

  • reverse_percent changed to reverse_scale to simplify reverse code.
  • Themers should reread Docs/Themerdocs/5.1_incompatibilities/NewField.md.

Player Options:

The default theme has a new Player Options screen designed to allow setting
all the NewField related options.

Other bug fixes:

  • Fixed bug that broke charts that had scroll segments but not other timing
    segments.

Themer visible changes:

CustomSpeedMods:

The CustomSpeedMods system that reads SpeedMods.txt from the profile is
deprecated and its load function is no longer called. Using CustomSpeedMods
or ArbitrarySpeedMods will trigger the defective mode auto detection.

GameState:

The ApplyGameCommand function has been removed. Everything that it did has
been possible through other functions for a year, so it's obsolete.

Item Scroller:

A lua based alternative to ActorScroller. Docs/Themerdocs/item_scroller.md.

Judgment/Combo:

The JudgmentUnderField and ComboUnderField metrics are no longer used. The
judgment and combo must set their draw order to control whether they are
under notes or not. The draw order for the judgment and combo works the same
as for a layer in the NewField. This allows players to choose different
settings for judge and combo placement.

Lua config system:

A lua based system for per-profile settings. Designed to save arbitrary lua
tables. Read Docs/Themerdocs/lua_config_system.md.

Notefield board:

Graphics/Notefield board is not loaded by NewField. Create
Graphics/Notefield layers instead, which returns a table of actors that are
rendered by draw order.

Graphics/NoteColumn layers is loaded by each column in the NewField and also
drawn in order of draw order.

PlayerState:

  • [F] get_read_bpm added.
stepmania - StepMania 5.1.0 Alpha

Published by kyzentun almost 9 years ago

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.

Compiling:

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

New systems:

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.

RollingNumbers:

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
in Docs/Themerdocs/5.1_incompatibilities/RollingNumbers.md.

Feature Overview:

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

NewSkins:

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.

Feature Overview:

  • 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:

NewField is a completely new notefield system. It gives the theme more
control over every aspect, and is self contained.
Initial documentation is in
Docs/Themerdocs/5.1_incompatibilities/NewField.md.

Feature Overview:

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

ModValue:

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.

Feature Overview:

  • 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
    some people.
  • 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.

Options screen:

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
it).
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
gameplay.

Todo:

  • 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
    options screen.
  • 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
    info.
  • 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.

Styles

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.

stepmania - StepMania 5.0.10

Published by kyzentun almost 9 years ago

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

This is divided into three sections:

  • Build visible changes: Items related to compiling or running StepMania.
  • Player visible changes: Bug fixes and a couple new preferences.
  • Themer visible changes: Bug fixes, new lua functions, new metrics.

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

Build visible changes:

Running (Windows):

Windows users are required to have the Visual Studio 2015 Redistributable installed. All Windows users must have the x86 version of the runtime installed. All Windows users who are on a 64-bit operating system are also advised to install the x64 version as well.

Compiling:

Cmake is now required for compiling Stepmania. Read Build/README.md for instructions.
Lots of people came asking for help, so this bears repeating.
The thread in the release forum has been updated with instructions for compiling on Linux.
The linux tar.gz attached to this release was built for amd64 debian.

Additional compilation notes are found at the bottom of this document.

Player visible changes:

BMS:

  • Fixed crash when an unknown type chart was in a bms.
  • Fixed bug that would load iidx bms files as kb7.
  • Added myo2 channel layout and kb7 charts. Added preview point and
    fixed offset support and linear solo bms layout.

Course Mode:

  • Fixed loading of courses that use WORST entries.

Edit Mode:

  • Current Second display no longer has the global offset added in. Good people were
    using the Current Second when syncing charts, and having the global offset added in
    made syncing more difficult.
  • Fixed crash on missing ScreenMiniMenuTimingDataChangeInformation metrics.
  • .sm files will no longer be saved when split timing is used because
    per-chart timing cannot be done in the .sm format.
    There was some consideration of trying to change the bpm of charts when
    saving to .sm, changing the bpm of the chart to match the song and moving
    notes to occur near the same time, but that would cause most notes to be
    several milliseconds off sync. So the idea of trying to create a similar
    .sm for compatibility was discarded.
    This only matters to people using split timing, which means different
    bpm and stop data for each chart.
  • Fixed crash on entering edit mode caused by entering edit mode as Player 2.
    Edit Mode only works as Player 1.

Gameplay:

  • Fixed problems with disqualification and charts with attacks. If a chart
    has attacks, and the attack modifier is used to turn them "Off", then the
    score is disqualified.
    Turning on "Random Attacks" also disqualifies the score, even on charts that
    do not have attacks.
  • Fixed timing to apply the current music rate to the global
    offset so that playing at different music rates doesn't make a chart off
    sync.
  • Fixed bug that caused missed holds to be recorded as held in some themes.
  • Fixed bug that skipped notes on beat 0 in score.

Noteskins:

  • If the fallback for a noteskin is not found, that noteskin is not loaded,
    to prevent picking it and crashing.
  • Fixed bug where the hold body doesn't scroll if it goes off the top of the
    screen.
  • Fixed bottomcap when NoteDisplay is zoomed out.

Preferences:

  • MaxRegenComboAfterMiss preference brought in.
    When a step is missed in gameplay, the combo has to get back up to
    RegenComboAfterMiss before the player starts regaining life. If
    MaxRegenComboAfterMiss is greater than RegenComboAfterMiss, then each
    successive miss increases RegenComboAfterMiss until it reaches
    MaxRegenComboAfterMiss.
    MaxRegenComboAfterMiss defaults to 5, the same as RegenComboAfterMiss, so
    there should be no behavior change unless the preference is manually
    changed.
  • Fixed crash on Advanced Input Options on OS X caused by the Axis Fix
    preference not existing on OS X. The preference does nothing on OS X, but
    the game no longer crashes on that screen.
  • Added TimingWindowSecondsCheckpoint for the timing window that
    checkpoint holds allow you to release for.

Songs:

  • Changed song loading to allow a song to have a blank MusicFile field
    if the song has any keysounds. A blank MusicFile entry can result from
    having '#' in the music file name, or be intended for bms files. If the
    music file name comes up blank, and there are no keysounds, the engine
    looks in the song folder to find the music file, which makes loading the
    song slower.

Themer visible changes:

Bug fixes and new functions:

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

General:

  • Texture Font Generator included again. It was left out by accident.

Actor:

  • [B] Changed PlayCommandNoRecurse so that setting a theme metric to a
    function that doesn't exist doesn't emit an error.

ActorFrame:

  • [B] ActorFrame:SetDrawByZPosition now returns self. Missed a spot when
    implementing function chaining.

ActorMultiVertex:

  • [B] Fixed bug that sometimes caused diffuse to be applied to verts wrong.

ActorUtil:

  • [B] ActorUtil.ResolvePath and ResolveRelativePath now take a boolean flag
    to tell if the thing is optional.

BitmapText:

  • [F] set_mult_attrs_with_diffuse

CryptMan:

  • [B] Fixed bug that clipped hash strings with zeros.

Fonts:

  • Respliced large kanji sprite sheets from 32x106 and 32x61 to 63x54 and
    48x41 to bring them under 4096 pixels tall, which was causing a forced
    resize and slowing down loading time. If your theme spends extra time in
    the black screen phase before the splash screen, check your font image
    sizes. Aim for the smallest power of 2 size in each dimension, and try to
    keep both dimensions under 4096.

Gameplay:

  • [B] Fixed song position updating logic so that the ScreenGameplay:PauseGame
    lua function actually pauses the game. Start, Select, and Back are all used
    for different ways of giving up, so the feature remains unused in the
    default theme.
  • [B] Fixed Player logic that spammed TNS_AvoidMine repeatedly.
  • [M] Random background video behavior is now controlled by these
    three metrics in the Background section:
    RandomBGStartBeat sets the beat of the music the first random bg occurs on.
    RandomBGChangeMeasures sets the number of measures between changes.
    RandomBGChangesWhenBPMChangesAtMeasureStart toggles the behavior in its name.
    RandomBGEndsAtLastBeat toggles the behavior in its name. Defaults to true.

MusicWheel:

  • [B] Fixed SetItemPosition so that it actually passes the item index and the
    number of items to the transform function.

ScreenEvaluation:

  • [B] Changed assert that occurs when leaving ScreenGameplay with
    SM_GoToNextScreen to give more info. (this only matters to certain
    misbehaving lua scripts that don't let ScreenGameplay finish the normal
    way.)
  • [B] Fixed bug that caused missed holds to be recorded as held in the
    value returned by PlayerStageStats:GetRadarActual().

ScreenMapControllers:

  • [M] If the AutoDismissWarningSecs metric is less than .25 seconds, the
    warning will not be shown (the TweenOn command for it will not be played).
    Instead, the NeverShow command will be played. If the NeverShow command
    does not exist for the warning actor, the warning actor will be set to
    hibernate forever.

Sprite:

  • [F] set_use_effect_clock_for_texcoords

Song:

  • [F] GetMainTitle

SextetStream

  • Now compiled in for all platforms.

Compiling (part 2)

  • Number of jobs used when building ffmpeg can be customized by
    WITH_FFMPEG_JOBS.
  • Fixed cmake error when compiling with -DWITH_SSE2=off.
  • Link with /MT on windows instead of /MD.
  • Compiling stepmania on Windows with the locale set to Japanese should work now.
  • Fixed compiling on 32bit linux.
  • FFmpeg upgraded to 2.1.3 on Windows and Mac OS X.
  • Fixed cmake WITH_SYSTEM_FFMPEG option.
  • Symbolic links will be followed to find the actual executable dir.
  • Minimaid support built in by default instead of off by default.
stepmania - StepMania 5.0.9

Published by kyzentun over 9 years ago

StepMania 5.0.9; 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 required for compiling Stepmania. Read Build/README.md for instructions.
The thread in the release forum has been updated with instructions for compiling on Linux.

Player visible changes:

BMS:

  • .lua files defined in the #BMP tags now work as BG animations.
  • The #difficulty tag is now supported. The difficulty numbers 1-6 map to
    StepMania's difficulties from Novice to Edit.

Bug fixes:

  • Autokeysounds are no longer twice as loud when playing keysounded charts
    with two players.
  • 1 pixel seam in hold cap rendering fixed.
  • Noteskin animation fixed.

ScreenOverscanConfig:

There is a new screen for interactively adjusting the variables that already
existed in the preferences for dealing with overscan problems. This allows
editing the CenterImage* preferences without restarting StepMania to set them
so that the whole image appears on screen.
This currently handles the aspect ratio wrong, so it's not a perfect overscan
solution.

Themer visible changes:

Bug fixes and new functions:

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

Actor:

  • [B] bounce and bob effects no longer round pixel coords.
    When an actor had a slow tween moving it in a direction and a slow bounce
    effect, the bounce would round the resulting position and cause jitter. That
    jitter is gone now.
  • [B] BlendMode_Subtract no longer crashes on the d3d renderer. It does not
    do proper subtraction blending, this is just a bandaid to prevent crashing.

Global:

  • [F] get_music_file_length
  • [F] multiapproach function now takes an optional 4th argument to multiply
    the speeds by.
  • [F] update_centering

OptionsList:

The OptionsListQuickChange, OptionsListLeft, and OptionsListRight messages
now have a Selection parameter that has the id of the selection the player
moved to.

RageFile:

  • [F] Flush

ScreenInitialScreenIsInvalid:

If you see this screen come up, you need to fix the InitialScreen metric in
your theme.

stepmania - StepMania 5.0.8

Published by kyzentun over 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.

stepmania - StepMania 5.0.7

Published by kyzentun over 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
stepmania - StepMania 5.0.7 RC

Published by kyzentun over 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
stepmania - StepMania 5.0.6

Published by kyzentun over 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

stepmania - StepMania 5.0.5

Published by shakesoda over 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.
stepmania - StepMania 5 Beta 4a

Published by freem about 10 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)
stepmania - StepMania 5 Beta 4

Published by freem about 10 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.
stepmania - StepMania 5 Beta 3

Published by shakesoda over 10 years ago

StepMania 5 beta 3

stepmania - StepMania 5 Alpha 3

Published by freem over 10 years ago

StepMania 5 Alpha 3

stepmania - StepMania 5 Alpha 2

Published by freem over 10 years ago

StepMania 5 Alpha 2