Okay, this is a mini-HOWTO because I get a sizable amount of questions about how to make a STEP file. QUICK VERSION: First, if you're good at figuring things out for yourself and just need a jumpstart, read 6jan.step in a text editor and use it as a model to create your own STEP file. LONG VERSION: STEP files are really simple text files that pyDDR loads in to get info about a song. Anything that is not the song itself, the background image, or the banner image for the song is in the STEP file. The basic structure of a STEP file is something like: header info major section minor sections end major section end This probably doesn't make much sense right now, but we'll go over each part and you'll get it in no time. If not, come on over to #pygame or #pyddr and we'll help you out. The idea of STEP files is to be human readable, so get your favorite text editor ready. STEP FILE HEADER OPTIONS -------------------------------- The header info consists (or can consist) of a bunch of data that gives pyDDR a basic idea of what it's going to have to do to play the song. Some of this information is optional, some of it is not. The data you NEED to supply will have an asterisk (*) by it. Optional data can be simply omitted if you don't have a value. Obviously, if you use a necessary option, please don't type the asterisk. =] I'll follow each line of header text with a descriptive line telling you what the option is for. version 0.4 The version of the STEP file format being used. Not currently significant. file <filename.ext> * The file that contains the music. Can be MP3, OGG, WAV, MID, or XM/MOD/etc. song <name of song> * The literal text for the name of the song. group <name of group> * The literal text for the name of the group that does the song. bpm <value> * The number of beats per minute to start the song at. Can be a decimal value. offset <value> * The millisecond offset to start the song at. For example, if a song has about 0.3 seconds of silence before the first, the offset should be 300. startat <value> The number of seconds into the song file to start the song at. This is useful if you have a full length tune and want to start it after a particularly long intro. Value in seconds, decimal allowed. endat <value> The number of seconds into the file to end the song at. Again, very useful if you're using a full-length tune and need to end the song at a certain point. Value in seconds, decimal allowed. bg <filename.ext> Specific filename for the background image. If one is not in the STEP file, pyDDR uses stepfile-bg.png. Format can be anything SDL_image supports. movie <filename.ext> Specific filename for the background movie. Format is MPEG-1. -------------------------------- STEP FILE MAJOR SECTIONS -------------------------------- A major section is basically a section that contains lyrics or steps. This is specified with the word LYRICS or the mode to play in on a single line (EG. SINGLE or DOUBLE). If you enter a bunch of lyrics, be sure to end the section with the word 'end'. This is further explained down the line. STEP FILE MINOR SECTIONS -------------------------------- Once you are in a major section for SINGLE or DOUBLE, you need to tell the game the steps that are going to be danced. Clearly, there is more than one difficulty level per song, but if you're writing a STEP file for your own song or an original, you need only include one minor section of steps. The game will realise which sections are available and only let you choose among them. So, first, we need to specify a difficulty and its level or number of feet like this: BASIC 3 This signifies that we're starting the steps for BASIC mode, which is 3 feet of difficulty. Now we need to provide pyDDR instructions on how to play the song with commands. These are commands that will be processed in order until it hits a line with the word 'end'. At that point, pyDDR expects you to start another major section and start another slew of steps after a marker, for, say, TRICK or MANIAC. STEP FILE COMMANDS -------------------------------- Now we need to give pyDDR the commands. Here's another big list of em: qurtr 08 00 00 00 This is a quarternote LEFT arrow. You can move the '08' to whichever slot you want the arrow to be in, or add another to create a jump. You can also remove the 08 (by changing it to '00') to have a quarter-note of silence. A quarter note is one beat, if it helps any. eight 00 00 00 00 Creates an eighth note (half of a beat) steps 00 00 00 00 Creates a sixteenth note (quarter of a beat or 'really-fast-offbeat') halfn 00 00 00 00 Creates a half note - this is still a single arrow, but pyDDR basically skips a beat so you don't have to type a quarter-note of silence. whole 00 00 00 00 Creates a whole note, or a quarter note arrow with 3 quarters of silence. chbpm <value> Changes the beats per minute to <value> which can be a decimal value. Keep in mind anything following this will have the new bpm value until chbpm is used again. Also not yet perfect. waits <value> Wait a <value> number of seconds before the next command is to take effect. atsec <value> At <value> seconds into playing the song, run the next command. -------------------------------- STEP FILE LYRIC COMMANDS -------------------------------- Once you've started a LYRICS section, you'll need some lyrics. Using the lyric tagger (lyrictag.py) is one easy way to get useful lyric data that you can insert into step files with minimal effort. However, if you already have all the times written down for the lyrics in your song (you masochist!), most useful will be the 'atsec' and 'waits' commands, followed by these two commands: lyric <lyric text> Displays whatever is after 'lyric' at the current command time. trans <lyric text> Stands for 'trans'lated - displays whatever is after 'trans' at the current time. Useful in two ways: First, you can use it to display the echoing singing of another person in the song. Second, you can use lyric and trans together to, for example, display romanji on the first line and an english translation on the second line right under it. Don't forget to end the LYRICS section with 'end'. -------------------------------- Well, I think that's about all for now. Happy STEP file making!