Stepmania notes

From Helpful
Jump to navigation Jump to search


Input

It seems that if mats become disconnected, you may well have to restart stepmania to get it to reognize it again. (more so in windows, probably related to USB enumeration?(verify))



Making your own

When you make your own mats:

Stepmania allows arbitrary button mapping, which makes it easy to abuse most any joystick/keyboard-type USB device which has at least four (or eight) buttons. The OS needs no drivers for these HID devices, and there is no need to alter stepmania.


A common approach is to bastardize the cheapest gamepad you can find (perhaps USD/EUR 5-10).

This comes with footnotes, like that in many controllers it is physically impossible to press left and right at once (and top and bottom at once), and the gamepad's circuitry may not allow it either. (In fact, some adapters for pads to USB have the same problem - particularly when the game they were made for has no left-right and top-bottom jumps)


These days there are also microcontrollers you can get to present as USB keyboard devices (e.g. Arduino Leonardo and Micro, being.

Song complexity

In 3.9:

  • Groove radar:
    • Voltage - the amount of steps
    • Chaos - 8ths and 16th notes / note complexity/density
    • Stream - amount of continuous notes
    • Freeze - the amount of holds
    • Air - Amount of jumps
  • Feet:
    • feet amount relates to the amount of things to do
    • feet color relates most to complexity of what to do.
often those two are related

From the perspective of people who play occasionally but are not fanatics: Blue is a little too easy, yellow can be easy or fun, red starts to get chaotic (8th notes and such), green is bloody hard.

Party setup

This article/section is a stub — some half-sorted notes, not necessarily checked, not necessarily correct. Feel free to ignore, or tell me about it.

Particularly for beginner players.

Consider:

  • Simplifying music choice:
    • Options → Appearance options → Song Group = All Music (skips the 'what music collection' screen)
    • Options → Appearance options → Wheel Sections = ABC only (or Never) (makes the selection seem less complex)
    • Options → Input options → Whell Speed = Fast (can be nice when you have a lot of songs and have Song Group=All)
  • Lessening delays:
    • Options → Appearance options → Instructions = Skip
    • Options → Appearance options → Caution = Skip
    • Options → Coin Options → Coin Mode (it's often simpler to use F3 in the main menu)
    • Options → Coin Options → Event Mode = On (continues playing forever), or
    • Options → Coin Options → Songs Per Play → something higher
  • If you don't set Event mode, you can consider skipping the difficulty screen, automatically selecting Beginner (see below)


The way screens follow each other is part of the theme. Tweaking the default installation's theme is mostly done by editing Themes/default/metrics.ini

To take out the difficulty screen (which, note, also means you have to choose the play mode, meaning you can't select oni/endless, or magic dance anymore)

The game wants the PlayMode and Difficulty to be set, so the simplest option is to set that the step before, in [ScreenSelectStyle]. This means

Choice1=Style,single;name,single
Choice2=Style,versus;name,versus
Choice3=Style,couple;name,couple
Choice4=Style,double;name,double
Choice5=Style,solo;name,solo
NextScreen1=ScreenSelectDifficulty               
NextScreen2=ScreenSelectDifficulty
NextScreen3=ScreenSelectDifficulty               
NextScreen4=ScreenSelectDifficulty
NextScreen5=ScreenSelectDifficulty

Becomes something like:

Choice1=Style,single;name,single;PlayMode,regular;Difficulty,beginner;name,beginner
Choice2=Style,versus;name,versus;PlayMode,regular;Difficulty,beginner;name,beginner
Choice3=Style,couple;name,couple;PlayMode,regular;Difficulty,beginner;name,beginner
Choice4=Style,double;name,double;PlayMode,regular;Difficulty,beginner;name,beginner
Choice5=Style,solo;name,solo;PlayMode,regular;Difficulty,beginner;name,beginner
NextScreen1=ScreenSelectGroup
NextScreen2=ScreenSelectGroup
NextScreen3=ScreenSelectGroup
NextScreen4=ScreenSelectGroup
NextScreen5=ScreenSelectGroup

(I'm not sure what those name, things are for, they may be pointless)


Light output

This article/section is a stub — some half-sorted notes, not necessarily checked, not necessarily correct. Feel free to ignore, or tell me about it.


Stepmania has logic for cabinet lights as well as pad lights, meant for arcade-like setups.


(The below are notes based on skimming the code, and reading some forum posts)

It's not the best or most updated code, and since stepmania changed a buch, particularly going from 3.9 to 4, things don't work in early versions of 4, and may be mapped strangely.


The lights behave differently in different parts of stepmania:


Game controller lights

  • Attract & Demonstration - off (verify)
  • Cleared & Stage & Joining - on if player is joined (verify)
  • Gameplay - blink on notes (or button presses, depending on BlinkGameplayButtonLightsOnNote in config file)
  • Menu - blink on button presses
  • Test - time-based walk (verify)


Cabinet lights

  • Attract - time-based walk(verify)
  • Joining - switches on four lights for each player joined (verify)
  • Menu - based on song beat, goes on if player(s) joined (verify)
  • Demonstration & Gameplay - on notes(verify)
  • Stage & Cleared - all on
  • Test - time-based walk (verify)


To make game controller lights blink on notes, set:

BlinkGameplayButtonLightsOnNote=1

To make them blink on presses (apparently the default(verify)), set:

BlinkGameplayButtonLightsOnNote=0

(... in Data\StepMania.ini's [Options] section


Light usually stay on for a tenth of a second (...so don't use light sources that switch slower than that).



Parallel port

Probably the easiest choce if you like soldering.


In windows:

  • In Data\StepMania.ini's [Options] section, add:
LightsDriver=Parallel

In linux:

  • May only do cabinet lights(verify)
  • Needs stepmania to have root permissions (for the low-level port access)
  • In Data\StepMania.ini's [Options] section, add:
LightsDriver=LinuxParallel



Uses the data pins (pin 2-9) on a parallel port.

For cabinet lighting, the first four pins are usually enough for all the feedback you'ld want.


Most versions look to 0x378 for cabinet lights, 0x278 for Pad1 lights. Pad2 not supported(verify) (although there is mention of 0x3BC).

Because those IO ranges are hardcoded, the parallel code tends to only work with motherboard ports, and since few computers have more than one of those, cabinet lights are the easiest to get to work (though you can usually tweak the IO ports your motherboard parallel port uses)


USB adapters (USD/EUR 5-10) and PCI expansion cards tend to sit in different IO ranges, so don't expect them to work out of the box. In some situations you can recompile stepmania's parallel driver for them, but apparently there are limitations to this.


Others

If you're comfortable coding C++, it's easy enough to write your own driver or to alter the parallel driver to do what you want.


Of course, robustly interfacing with external hardware is always a bit of a bother. For example, interfacing via serial port means you'll need some autodetection/hardcoding/assumptions about which port to use.

Songs

Audio content

Step formats

There are a dozen or two formats out there, specific to a number of games. StepMania seems to read four of them (SM, DWI, KSF, BMS), with SM and DWI being the most important (together make up more than 90% of the songs out there).


Images and movies

...where 'image' means a .png, .jpg, or .gif (or .bmp(verify)) and 'movie' means a .avi or .mpg/.mpeg file:


Banner image, background image, CDtitle:

  • The song file can specify one
  • If not, stepmania looks for an image with 'banner' / 'background' or 'bg' / 'cdtitle' in its name (respectively)
  • ...otherwise guess which image is most appropriate (based on size?)

Background movie:

If there is exactly one movie in the folder, it will be played on the background starting at beat 0.

Lyrics

This article/section is a stub — some half-sorted notes, not necessarily checked, not necessarily correct. Feel free to ignore, or tell me about it.

The LRC format is a UTF-8 text file (UTF-8) with lines that can be

  • color change (often just one at the start of the file)
  • time and text
  • comments (//)

The colour wipe will be interpolated from the time-and-text information. For more precises timing, split into more parts.

When writing these files yourself, perhaps the least work for good timing is to read it from the in-game synch feature.

See also: