-
Notifications
You must be signed in to change notification settings - Fork 445
Courses
Most of this was taken from Docs/CourseFormat.txt, which may or may not be outdated.
To set up a course, create a text file in a folder in Courses with a .crs extension, then fill it with the tags available below.
A complete example of a course (this one comes with StepMania, you can see it for yourself at Courses/Default/Jupiter.crs
):
#SCRIPTER:Midiman;
#METER:Medium:5;
#GAINSECONDS:120;
#SONG:StepMania 5\Springtime:Medium:nodifficult;
#GAINSECONDS:25;
#SONG:StepMania 5\MechaTribe Assault:Easy:nodifficult;
Another example:
#METER:Medium:8;
#MODS:
TIME=1.00:END=50.00:MODS=C150;
#SONG:In The Groove/Dawn:Overhead;
#SONG:In The Groove/Mouth:;
#SONG:In The Groove 2/Funk Factory:;
#SONG:In The Groove 3/Disconnected Zeo:;
Header Content is any course-defining data, such as the title, banner, and other parameters.
The title of the course. Ex. #COURSE:My Course!;
The title of the course, transliterated into english. Ex. #COURSETRANSLIT:My Course, Translated!;
The author of the course.
If this is present, the course does not end.
Useful for endless & workout courses.
Ex. #REPEAT:YES;
The maximum number of lives attainable in the course. Enabling this will automatically force your course into a Challenge course. Ex. #LIVES:4;
Setting it to 0 lives or deleting this tag will make this course a nonstop course.
A description for your course, if any theme uses it. Ex. #DESCRIPTION:Hello world!
A banner for your course. Ex. #BANNER:My Banner.png;
A background for your course. Currently only available in SM5 and sm-ssc. Ex. #BACKGROUND:My Background.png;
Denote which styles may be played on this course. This is useful for cloning courses or creating CLASS courses for single and double styles.
Ex. #STYLE:SINGLE,VERSUS;
or #STYLE:DOUBLE;
A custom-set meter for that course difficulty. You may set the difficulty
for Beginner, Easy, Medium, Hard, Challenge and Edit difficulties.
Ex. #METER:Beginner:3;
Song Content makes up the entries in the course, and also allows for timed modifiers.
The number of seconds gained before starting a song. This and #LIVES are
mutually exclusive: you can either have one, the other, or none: both
is not possible. This is meant to be used for Survival courses. Ex. #GAINSECONDS:60.5;
#SONG can take quite a variety of parameters, of which may be useful to you
for testing or other purposes.
*
is a wildcard item, meaning that StepMania will always pick a random song
for this part of the course.
You can also replace with BEST*
, WORST*
, GRADEBEST*
, or GRADEWORST*
, where *
is a number to retrieve the first of each category above.
Ex. #SONG:*:Medium:2x;
or #SONG:BEST1:Medium:2x;
As well as that, you may also do Group Random, like such:
#SONG:Dance Dance Revolution 8th Mix/*:Medium:2x;
If the above is not applicable, StepMania will search for the song title as best it can, depending on what you give it:
#SONG:Xepher:Medium:2x;
Will simply search the title of the song.
#SONG:DDR Supernova/Xepher:Medium:2x;
Will search for the exact directory.
#SONG can also apply different effects on each entry in the course by adding special modifiers to the modifiers segment:
For example, #SONG:*:Medium:showcourse;
forces the course to never be hidden, noshowcourse being the reverse of such.
nodifficult
also exists to disable a player from changing difficulties,
barring the player from making it easier or harder ( Gauntlets & Survivals
do not allow you to change difficulties ).
Finally, award*
, where *
is a number, allows you to control how many lives the player gains from successfully completing a course in Oni mode.
To add Modifiers, place a #MODS tag above the #SONG tag with your modifiers.
Modifiers can be assigned in a variety of formats, the most effective three being the following:
- Repeated Modifier Block w/ Length:
#MODS:TIME=0.500:LEN=0.500:MODS=2x;
#MODS:TIME=1.500:LEN=0.500:MODS=0.5x;
- Nested Modifier Block w/ Length:
#MODS:
TIME=0.500:LEN=0.500:MODS=2x;
TIME=1.500:LEN=0.500:MODS=0.5x;
- Nested Modifier Block w/ Ends:
#MODS:
TIME=0.500:END=1.000:MODS=2x;
TIME=1.500:END=1.500:MODS=0.5x;
Multiple mods can be assigned like this:
#MODS:TIME=0.000:END=300.000:MODS=*2 2x,Metal,Overhead,-1000% Cover,*4 90% Mini;
If a song in a course uses a wildcard to pick a song like #SONG:*:Medium:2x;
, doing course:GetCourseEntry(i):GetSong();
(where course is the instance of your course and i is the index of the song) will return nil
. Make sure you account for that and indicate that the song is random in the course screen.