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 number pad on a qwerty keyboard, or uiojklm,. for player 2. "Start" refers to enter, and "select" refers to tab, or 0 on the numeric pad. If you are using a dvorak keyboard, or a keyboard without a number pad, you can remap the keys in Interface Options / Map Keys.
In addition, unless mapped otherwise, the arrow keys will always control player 1.
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, course 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 up 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 down 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 .dance 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. You can change this by editing pydance.cfg.
If your files are .sm, .dwi, or .ksf instead of .dance, then you have to use a specific directory layout. The files need to go in <tsongdir>/Mix Name/Song Name/. This is a limitation of the DWI and SM formats.
To add courses, put them in one of the directories in your "coursedir" configuration variable (replace "songs" with "courses" in the above examples to find out where this is by default), or a subdirectory of that directory. In addition, if the file is named Course.crs, then if a file named Course.png is found, it will be displayed with the course in the course selection screen.
If you want folders to have banners in the song select (like songs do), you can put them in a banners directory (replace "songs" in the examples with "banners", again). Within the banners directory, create subdirectories like "mix", "title", and "artist". Then, when a a folder named "Foo" in a display mode is found, it checks <banners>/<display_mode>/Foo.png. For example, if you want to have a banner associated with the folder "Dancing Stage MegaMix" when you're sorting by mix, make the image <banners>/mix/Dancing Stage MegaMix.png.
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.
If you use a mat, you may need to remap your keyboard or joystick buttons. From the main menu, go to Interface Options, then Map Keys. From here you can rebind your joystick or keyboard buttons. In addition, you will need to go here if you plug in a joystick while pydance is running; otherwise it will not be detected until you restart.
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) and piman (Joe).