User:Eighty5cacao/StepMania

WIP

StepMania is a [rhythm?] music video game simulator ... (TODO: wording, and list the supported game types)

Feature comparison
TODO: Compare StepMania with DWI and other simulators

TODO: Compare different versions of StepMania (see also )

Some users have expressed concern that the default speed modifier should be changed to 2x because 1x may be too slow for less experienced players. An attempted implementation was made in sm-ssc, rescaling the arrow spacing to be twice as great as in all previous public releases of StepMania (thus making 1x in current sm-ssc the equivalent of 2x elsewhere, a feature also used in the Pump It Up Pro series [TODO: exact numbers?]), but it was later reverted.

TODO: sm-ssc has been accepted as the basis for the StepMania 5 branch

TODO: Compare the uses of INI, XML, and Lua files between versions

Legal issues
See also: uncyc:User:Pentium5dot1/Storage facility/StepMania

Copyright
Most of the music in StepMania simfiles is copyright-infringing. (Some copyright holders release their music under a Creative Commons license, but cryptomnesia threatens the validity of such licensing: see archived rant. Some just don't enforce their copyright very strictly, but that doesn't technically make it legal.)

Dance With Intensity clearly displayed a warning to the user about this, but to my knowledge no default theme for StepMania has ever done so.

The default theme had to be changed for 4.0 CVS and the later 3.9a maintenance release because the themes included with 3.0 and 3.9 were nearly exact copies of DDRMAX: Dance Dance Revolution 6th Mix. TODO: Write prose to explain copyright infringement in pre-3.0 default themes (screenshots).

Patent
In 2005, Konami sued Roxor Games over several patents related to DDR, as well as trademark infringement on the part of sloppy arcade operators who left some DDR branding on machines converted to In the Groove. This included a patent on the method that DDR uses to display step charts. Konami won the patent claim construction hearing.

Development history
TODO: Introductory paragraph. This section should be moved up to immediately follow the lede, since we should explain what sm-ssc is before we mention it elsewhere.

TODO: Recent work on StepMania "5.1" and 5.2

Forks
NPOV/comprehensiveness issues...


 * A StepMania 3.9 alpha or beta (which one?) was forked to Ridiculous Timing
 * StepMania 3.9 was forked to StepMania 3.9 PLUS (and in turn Aldo_MX abbreviated SMAMX?), StepMania 3.9 4-player, PumpMania, ... any others?
 * StepMania "3.95" was forked to OpenITG, which in turn had a (currently-)closed-source fork NotITG
 * A CVS build near ITG PC was officially forked to StepMania 4.0 beta
 * A 4.0 CVS version (2008-01-03?) was forked to at least one PIU-focused build (StepNXA [spelling?])
 * StepMania 4.0 alpha (TODO: specific revision?) was forked to sm-ssc, which became StepMania 5
 * StepMania 5 (Fri, 23 Dec 2011 02:09:43 -0600) was forked to StepMania 5 Tournament Edition (TE) (is the number 5 an official part of the name?), which focuses on (the development of a new protocol for) online play (not sure whether this is still maintained)

Step chart parser
StepMania 3.9 has numerous quirks in the way it interprets inconsistent information in a step file. These were cleaned up in StepMania 4. However, because simfiles exploited these quirks to provide challenges that a strict DDR simulation couldn't allow, StepMania developers had to implement similar official features.

Each song has a list of beats on which the tempo (beats per minute, or BPM) changes. When SM 3.9's parser sees a segment with a negative BPM in the list, it acts as if the following algorithm were in use: Interaction of negative-BPM warps with stops has not been fully investigated, but one version of WinDEU's steps for "Dancingbox" by Modeselektor demonstrates that in some cases, a positive stop in a negative-BPM warp can result in hidden arrows judged in reverse order.
 * 1) Start a counter at 0.
 * 2) For each segment spent in negative BPM, subtract from the counter the time that would be spent in the segment if the BPM were positive.
 * 3) For each segment spent in positive BPM, add to the counter the time that would be spent in the segment if not in a warp.
 * 4) The warp ends at the point the counter would become positive again.

During play, when the note chart reaches the start of this segment, it will instantly warp to the end of this segment. Notes (that is, arrows) in this period are not judged: they do not count as misses or as hits. The effect of a warp at least two measures long is as if the chart were replaced by another chart. This has been used in "V^3 Hello World" and in Family Farce's Hopscotch series to show notes blinking in and out of existence, notes switching sides, notes turning into mines or vice versa, and even choppy reverse scrolls. The easiest way to create one of these is to place -100 BPM at the start of the warp, 100 BPM in the exact middle of the warp, and the ordinary BPM at the very end.

The other way to warp has a more solid mathematical foundation: warps are simply segments with off-the-chart speeds in the millions of BPM, such that the entire segment is traversed in less than one millisecond. This is fine for a warp past mines, as seen in "The Holders", but missed notes will reduce the dance meter. StepMania 4 has a new feature not to judge notes in segments over 9,999,999 BPM, and its parser converts SM3.9 warps to these new warps, though not warps with embedded stops.

sm-ssc introduced support in v1.0 RC1 for parsing negative BPMs as warps when the QuirksMode configuration parameter is set, but the feature broke some time before RC2. Also, it erroneously gives the first tap note following a warp a combo value greater than one (probably due to inclusion of notes inside the warp in judging), even in builds where the warps themselves are broken. sm-ssc does not yet support the high-BPM warps introduced in SM4 beta versions. TODO: After some previous fix attempts, sm-ssc split warp support to a separate branch temporarily. (More citations, incl. Google Code)

TODO: sm-ssc no longer intends to support -stops (?)

TODO: Give examples of stepcharts in the Pump It Up series that currently require warp functionality to be simulated accurately.
 * StepMania 3.9 interprets a warp past the end of the chart to mean that arrows visible at the time should remain in place while the gameplay screen fades out. (Do other versions with warp support behave similarly?) This is currently the only method to simulate the ending of Love Is a Danger Zone 2 (Full Version) (Crazy) from Pump It Up NX2; compare the ending of Over the Wall of "Z" from foonmix.

TODO: SM5 will allow -BPMs by default (as of alpha 3, substantially usable but [//code.google.com/p/sm-ssc/wiki/IncompatibleSimfiles not correct e.g. for "Dancingbox"]; has probably been in current condition since alpha 1);  has been repurposed to mean something related to background animations (as of beta 3, it specifically enables support for XML-based theming as used in the 3.95 family)

TODO: There are other things that we could mention, such as the treatment of unmatched hold ends as fake arrows that (as of 3.9) crash the program if no hit is attempted.

TODO: Some of these comments address the details of using negative stops to create "fake Pump hold" effects as in Dancingbox

Audio/video
TODO: Maybe mention things such as the SM3.9 family only supporting 44.1KHz sound output and showing a choppy frame rate (not detectable from the in-game FPS counter) if the simfile's audio is not 44.1KHz and the sound resampling quality is not set to Fast.

Also problems seeking in the step editor with VBR MP3s, lack of support for new audio APIs in Windows Vista, etc. (though PulseAudio is now supported in the Linux version)

TODO: I mentioned in a discussion with Tepples that some Linux sm-ssc builds used statically-linked ffmpeg. This may no longer be the case now that many Linux package-manager guidelines discourage static linking of libraries. Does StepMania 5 currently have bundled .so files?

Support for other audio codecs such as FLAC or Opus has been requested by some users but has not to my knowledge been implemented.

File system layout
StepMania stores song files in the  subfolder of its installation folder, which on Windows is the Program Files folder by default. This has been deprecated since at least Windows 2000 in favor of storing them in the Documents folder of All Users ( under Windows XP or   under Windows Vista or later). As a measure to transition from the old way to the new, the installer could have set up an  entry in   (3.9) or   (later versions) pointing to a folder in All Users' Documents. Likewise, user profiles should have been put in  under Windows XP or   on Windows Vista.

TODO: Check exactly what current SM5 alphas are doing on Windows &ge;Vista - some change was made regarding the screenshot folder. (I know that the cache folder was moved from  to the user profile in alpha 1. Also,   files are extracted by default to   as of alpha 3)

TODO: At some point (i.e. as of beta 1a), the most recent crash log started going in the same folder as StepMania.exe provided that the user has write permission there. They used to always go in the same folder as the other logs.

TODO: Into what path does  place the main program files on Linux? Regarding simfiles, does this contravene some Linux convention? (In post-3.9 versions at least, user profiles go into a hidden subfolder of, which seems reasonable given the relative ease of showing hidden folders in Linux file managers.)

StepMania 5 on Unix-like OSes currently "[stores user data ... in "~/.stepmania-5.0/" ... There are Themes, Songs, and Noteskins folders in there, and it is the new preferred place to put such things.]"

Commercial use
Merge or move closer to Development section?

See also: uncyc:User:Pentium5dot1/Storage facility/StepMania
 * In the Groove
 * In the Groove 2
 * Pump It Up Pro and Pump It Up Pro 2
 * (TODO: at least one later Pump It Up game)