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.
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.
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.
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.
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.
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.
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.
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.
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).
Just plug in your pad using the USB adapter, and off you go. Parallel port adapters are not supported.
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".
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).
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.
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.
The FAQ is available online at http://www.icculus.org/pyddr/faq.php. Please read it before contacting the developers.
There are several different ways to get in touch with the pydance developers.
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.
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).