Creating a custom level for Ball Race is easier than it seems! You just need to create a simple text file and draw the maze using Ascii characters.
Take a look at this example level:
Difficulty=1
GoalTime=00:01:15
###############
#O #
# + +-+-+-+-+ #
# | O #
# + +-+-+ + +-#
# | | #
# +-+-+ + + + #
# | | | |O#
#-+-+ + + + + #
# | | | #
# + +-+-+ + + #
#F| | #
# + +-+-+ +-+ #
# O|S #
###############
The first three lines define some common properties of the level. Title is for the name you want to give to your level. Originally this was planned to be visible in the level selector, but the concept was dumped. The second line defines the difficulty level on a scale from 1 to 3. The third line is the time you want to give the player to finish the maze.
The maze itself should be pretty obvious. It needs to be rectangular and has to be surrounded by a box of '#' characters that will make up the outline of the board. Walls are created by drawing lines with the '-', '|' and '+' characters. Be careful, thought, because you can only place those characters at every second row and column. The reason for this is that the game uses an irregular grid (the level is based of tiles, but the tiles that are reserved for walls are much smaller than those reserved for the floor plates).
The following special characters can be placed on the floor pieces:
' ' (space) - Normal floor plate the ball can roll over
'O' (big o, not a zero) - Hole trap for the ball
'S' - Starting point. Has to occur exactly once
'F' - Finish hole, can appear as often as you want
If your level contains an error, the game will output a clear and precise error message and tell you where and what you did wrong. It's best to develop new level step-by-step: Create your outline, place start and finish, then test it. Put some walls in, test again. Place a few holes, test anew. And so on.
Levels have to be placed in the Levels folder of the game and
need to obtain the extension .maze.txt. For example, your
level could be stored as
C:\Program Files\Nuclex\Ball Race\Levels\My.maze.txt.
Be careful, some windows editors smuggle in duplicate extensions, eg. your file
might be called My.maze.txt.txt if you explicitely type
.maze.txt in your text editor. Also make sure the file is saved in
Ascii format. The game cannot read word documents or html pages ;)