About pydance

pydance is a dancing simulator, primarily for GNU/Linux, but it also runs on other UNIX-like operating systems, Windows, and Mac OS X. The basic game idea is simple. There's a mat with directional arrows you can step on, and the game scrolls arrows up the screen while playing a song. When the arrows reach the top of the screen (not sooner and not later, since they pass over stationary arrows), you hit the corresponding arrow on the pad, and given that you hit it on time with the beat, you score points. The idea is that the game is supposed to either teach you to dance, or simulate dancing. It works to a degree. =]

There are many different types of games like this, such as Dance Dance Revolution, Pump It Up, Pop'n Stage, Technomotion, and so on. However, they all have this same basic pattern in common, and so pydance is capable of playing many different game modes.

If you're just hearing about this game (or you're broke), you don't actually need a mat to play pydance (although it definitely makes it more fun). You can use a keyboard or regular joystick instead.

This document assumes you've managed to install pydance already. If not, you might want to look at the INSTALL file included with the source.

Playing pydance

Controls

All instructions are given in terms of directions. By default, for player 1, this means the uiojklm,. keys on a qwerty keyboard, or the numeric pad for player 2. "Start" refers to enter, and 'select' refers to tab, or 0 on the numeric pad. Configuration notes for a dvorak keyboard are given later.

Starting the Game

To play the game, just select "Play Game" from the menu. Use left, right, and start, to select what directions you want to use, how many people you want playing, and whether you want to use the song selector or random endless songs. Once in the song selector, use left and right to select a song, up and down to change your difficulty, and start to start playing.

Oh wait, now there's all these arrows scrolling up the screen - what should you do? Actually, it's pretty simple. When the arrows get to the top (which is in time with the music), step on the direction of the arrow on your pad (or press the direction on the keyboard).

In the song selector, you can hold down start when selecting a song to bring up a screen full of game modifiers, that affect how the arrows are displayed. You can also hold down select to bring up a second screen of game-wide options, like oni or battle mode.

If you need to exit the game or back out of menus, just press escape.

Nonstop Mode

From the normal song selector you can set up Nonstop Mode. Select a song and difficulty you want to play, and press down left. That song is now on your nonstop playlist. You can add a lot of songs this way, then play them all in succession without returning to the song selector. To remove a song, press up left.

Endless Mode

The Endless Mode option on the Play Game menu takes you into a different selector. In this one, you can select a difficulty (either by name, or by rating), and just keep playing until you fail.

Configuring pydance

The easy way to configure pydance is to use the in-game configuration menus. Just select the menu item you want to change and hit enter, or left and right. If you need more precise configuration, read on.

pydance reads from configuration files in appropriate places. This means /etc/pydance.cfg and ~/.pydance/pydance.cfg on POSIX systems like GNU/Linux, /Library/Preferences/pydance/pydance.cfg and ~/Library/Preferences/pydance/pydance.cfg on Mac OS X, and pydance.cfg in the current directory on all platforms (note that this is the only configuration file Windows systems will read). Files are read in the order listed above.

Adding Songs

To add songs, you just need to put the .step file, music file, and (if they exist) background and banner files into one of your song directories. This is the songdir configuration variable. On POSIX systems this is /usr/share/games/pydance/songs, /usr/local/share/games/pydance/songs, and ~/.pydance/songs. On Windows, this is anywhere in the directory pydance was installed in. On Mac OS X, this is the 'pydance Songs' folder in your Music folder.

pydance.cfg

Gameplay Options

assist 0|1

In this mode, pydance will play a sound when you are supposed to hit an arrow. It's useful if you can't see the screen, or need help getting on beat in a particular song.

autofail 1|0

If this is turned off, the game will continue, even when your lifebars runs out.

autogen 1|0

Normally pydance generates steps automatically from the "base" 4 panel modes for other modes (like 6 or 8 panel), if they aren't defined for that file. Turning this option off prevents pydance from doing that. Generally this is a bad idea.

grading 1|0

pydance will normally display a grade at the end of every song. Turning this option off will bring you back to the song selector immediately instead.

Graphical Options

bgbrightness [num] (default 127)

This option determines how bright the background during the song is. Higher numbers mean a brighter background.

explodestyle [0|1|2|3] (default 3)

pydance usually displays an effect if you successfully hit an arrow, rotating and scaling the arrow at the top. If this is too CPU intensive (or you just don't like it), you can set it to 0 for no effect, 1 for rotating, 2 for scaling, and 3 for rotating and scaling.

fpsdisplay 1|0

If this is on pydance will display an FPS counter in the corner, and a timer in the top center. See the FAQ for what to do if your FPS is very low.

gratuitous 1|0

This turns on some graphical effects that may slow down the game and interface considerably, but look nice.

lyriccolor [colors] (default cyan)

Set the colors that lyrics appear in. Possible values are cyan, aqua, yellow, white, black, red, purple, or orange. If you list more than one color, separated by /s, other lines of lyrics will appear in those colors.

showbackground 1|0

Many songs in pydance and other dancing games have a background image that displays when you play them; however, this can make the game slightly slower. If you're desperate for more frames, try turning this off to remove the background.

showcombo 1|0

Normally when you get a combo, pydance will display your current combo length on the screen. Turning this off will remove that display.

showlyrics 1|0

Some songs have lyrics or other text that will appear at the bottom of the screen. Turning this off will remove those lyrics.

stickycombo 1|0

If this is off, your combo is erased from the screen after a period of time, even if you don't miss an arrow.

stickyjudge 1|0

This is like stickycombo, but for judgings (good, marvelous, and so on), rather than your combo.

Sound Options

djtheme [themename]

Sets your announcer theme. By default pydance comes with the 'none' theme (no announcer). Copies from the official website also have a 'mrt' theme, which is not distributed with various other packages for legal reasons. The pydance development team is looking for people willing to do voice acting for free announcer samples! New themes can be installed in themes/dj.

masteroffset [num] (default 0)

Some systems have speakers or displays that take measurable time (in terms of affecting gameplay) to output a signal. If you have one of these, you can add an offset in milliseconds to every song you have.

This should not be used if you have a lot of step files that are a specific number of milliseconds off. If you use it for this, all new files you get will be wrong, and no one else will be able to use your original files.

onboardaudio 0|1

Some systems (especially laptops) use sound cards or drivers that resample sound in strange ways, which may make pydance play songs such that they "drift" in relation to the steps. If you seem to be having drifting issues in all the songs you play, you should try turning this on.

previewmusic 1|0

If this is on, the song selection screen will play a brief sound clip from the middle of the song when you move the selector over it.

Interface Options

keyboard qwerty|rqwerty|dvorak|rdvorak

Your keyboard type. uiojklm,., while convenient on qwerty (standard) keyboards, doesn't work at all on dvorak ones. Setting this option to dvorak will redefine your keys to 'chtn'. The "r" variants swap controls (so player 1 uses the numeric pad, and player 2 uses the letters).

sortmode 0|1|2|3 (default 0)

This sets the sorting mode for the song select screen. 0 sorts by mix, 1 by song name, 2 by artist name, and 3 by BPM.

This can also be changed by pressing 's' on the song select screen.

folders 1|0

If you have over 60 songs, and this option is on, pydance will organize them into "folders" based on your sorting mode in the song selector.

System Options

songdir [dir1:dir2:dir] (or on Windows, dir1;dir2;dir3)

This is a list of directories where pydance should look for songs (.step files, backgrounds and banners, and the audio itself). Generally installing pydance gives you a system-wide location to place songs (that all users will have access to), and a local one in your home directory.

Obscure Options

strobe 0|1

Turning this on results in a little blinking light in the bottom right corner of the screen. With various light detection equipment, this can be used to make pydance communicate with a strobe lighting system.

usemad 1|0

Try to use the MAD MP3 decoding library, which is able to decode MP3 audio (SDL's MP3 decoding library, SMPEG, is unable to do this). This only works on a small subset of UNIX systems (this does not include Mac OS X), and requires the pyao and pymad modules to be installed.

usepsyco 1|0

Try to use the Psyco optimizing compiler for Python (http://psyco.sf.net). This is on by default, and can give 30-50% speed gains on slower systems. However, it also uses substantially more memory (which is usually not a problem, since pydance's code memory footprint is small relative to its song data). Psyco is currently only available for IA32 systems.

vesacompat 0|1
Try to work on really old broken displays, like svgalib. Don't ever turn this option on.

Using a Mat

The recommended adapter for pydance is the EMSUSB2 from Level Six. pydance easily supports two players with it, and it works on all operating systems. Also known to work is the parallel port adapter that comes with BNS pads. Any other 6 axis, 12 button or 4 axis, 16 button joysticks that behave like those two adapters will also work.

GNU/Linux

For parallel adapters, you can use the ddrmat.o driver available at http://icculus.org/pyddr/get.php (which is a modified gamecon.o from the 2.4 kernel). Once compiled, just run insmod ddrmat gc=0,7 (where 7 is the IRQ of your parallel port, which is probably 7). Note that your lp (parallel printer) module cannot be loaded at the same time. The normal gamecon.o module might work too, although you may have to rotate your pad 45 degrees.

USB drivers are much easier. If your kernel has USB joystick support, just plug it in and it should work. If it doesn't, make sure the input, hid, and joydev modules are loaded (the first two are required for any USB input device).

Mac OS X

Just plug in your pad using the USB adapter, and off you go. Parallel port adapters are not supported.

Windows

This OS's hardware support is too unreliable and inconsistent to describe the process here. All we can say is "make sure the appropriate driver is installed".

Other

As long as Pygame supports your OS's joysticks, pydance will too. pydance specifically is looking for 4 axis 16 button, or 6 axis 12 button joysticks (and also the 32 button EMSUSB2).

Other Programs

findbpm

This program plays a song and lets you tap a key along with the beat. It averages the number of times you tap over the length of the song, and calculates a BPM. This method sounds crude, but if you have a good sense of rhythm, it's actually highly accurate. Run it using findbpm song.ogg.

pyjoy

This program reports information about your joystick, and lets you see what button number each button triggers when you press it. Run it from a terminal.

FAQ

The FAQ is available online at http://www.icculus.org/pyddr/faq.php. Please read it before contacting the developers.

Contacts

There are several different ways to get in touch with the pydance developers.

Email

The primary email address is the pyddr-discuss mailing list on icculus.org. To subscribe, email pyddr-discuss-subscribe@icculus.org. You can then send email to pyddr-discuss@icculus.org to talk about pydance. If you want to see about having pydance at a convention or show, contact Brendan Becker <tgz@orotech.net>, or show up on the IRC channel.

IRC

If you need a bit more real-time help than email offers, pydance has an IRC channel on the Freenode IRC network. Surprisingly, the channel is named #pyddr. The main developers are often in the channel as P2E (Brendan), piman (Joe), and DShadow (John).