About pyDDR

pyDDR is a dancing simulator, primarily for GNU/Linux, but it also runs on other UNIX-like operating systems, Windows, and Mac OS X. DDR stands for "Dance Dance Revolution", a game that's slowly earning popularity in the United States and other countries, that comes from Japan. The game idea is simple. There's a mat with four 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. =]

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

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

Playing pyDDR

To play the game, just select "Play Game" from the menu, then select "Regular", and select a song. Press j and l to change your difficulty setting (more bars means more difficult). Hit enter when you're on a difficulty and song you like.

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. If you're using the keyboard, you can just IJKL for up/down/left/right.

If you want to play a versus game, just hit start on the second player's dance mat, or '2' on the keyboard (or on the numeric keypad for azerty keyboard users); The second player uses the arrow keys.

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 (or tab) to bring up a 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 m. 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.

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 pyDDR

The easy way to configure pyDDR 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.

pyDDR reads from configuration files in appropriate places. This means /etc/pyddr.cfg and ~/.pyddr/pyddr.cfg on POSIX, /Library/Preferences/pyDDR/pyddr.cfg and ~/Library/Preferences/pyDDR/pyddr.cfg on Mac OS X, and pyddr.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/pyddr/songs, /usr/local/share/games/pyddr/songs, and ~/.pyddr/songs. On Windows, this is anywhere in the directory pyDDR was installed in. On Mac OS X, this is the 'pyDDR Songs' folder in your Music folder.

pyddr.cfg

Gameplay Options

assist 0|1

In this mode, pyDDR 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 lifebar runs out.

grading 1|0

pyDDR 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)

pyDDR 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 pyDDR 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.

gfxtheme [themename]

Sets your graphical theme (affecting the look of the arrows and your lifebar). pyDDR comes with the 'classic' and 'bryan' themes. More themes can be installed by putting them in your themes/gfx directory.

gratuitous 1|0

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

ingamehelp 1|0

Normally pyDDR displays some messages about how to use the menus. If these annoy you, turn this off.

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, other lines of lyrics will appear in those colors.

showbackground 1|0

Many songs in pyDDR 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, pyDDR 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.

totaljudgings [num] (default 1)

This many judgings will be displayed on the screen at a time.

Sound Options

djtheme [themename]

Sets your announcer theme. By default pyDDR 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 pyDDR 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 pyDDR 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. 'ijkl', 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 arrows, and player 2 uses the letters).

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

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

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

System Options

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

This is a list of directories where pyDDR should look for songs (.step files, backgrounds and banners, and the audio itself). Generally installing pyDDR 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 pyDDR communicate with a strobe lighting system.

Using a Mat

The recommended adapter for pyDDR is the EMSUSB2 from Level Six. pyDDR easily supports two player 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

Plug-and-play, or so I've heard. 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, pyDDR will too. pyDDR specifically is looking for 4 axis 16 button, or 6 axis 12 button joysticks (and also the 32 button EMSUSB2).

Other Programs

any2dance

This program will convert any file pyDDR can read (such as .step or .dwi files) to pyDDR's native .dance format. In addition to using it on one file, it will recurse directories. It also has a --delete option to delete the old files once it is done converting them.

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.

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 pyDDR 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 pyDDR. If you want to see about having pyDDR 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, pyDDR 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).