RACES.TXT is a data file in Carmageddon, Carmageddon II and Carmageddon TDR 2000. This file holds some of the races' data, such as their names, laps, description, etc. The file's general layout differs from game to game. Luckily, almost all levels have comments next to each value, which helps understand the format.
In the first two games, this file is located inside the
DATA folder. In the third game, inside
ASSETS/CARMA.pak, and is named with lowercase letters.
The general format for each level is as follows:
<name> <files> <text file> <number of text chunks> <x offset of first line>,<y offset of first line> <frame start (incl)>,<frame end (excl)> <number of lines> <text> [<more chunks of text>]
- Name: The name of the level.
- Files: This is a list of files. There is little documentation about this subject, so not much is known about this line.
- Text file: As with the previous line, this one is about the level's
- Number of text chunks: How many parts there are to the level's description text.
- Offset: This is the first line of each chunk. This specifies the coordinates where the text's first line will be.
- Frames: Probably the frame numbers at which this piece of text appears and disappears.
- Number of lines: The next X lines contain the text for this chunk.
Maim Street CITYA1M.FLI,CTY1MAP.FLI,INFOBACK.FLI CITYA1.TXT 5 // Number of text chunks 5,3 // x,y offset of first line 5,99 // Frame start (incl), end (excl) 2 // Number of lines LOCATION: BLEAK CITY BUSINESS DISTRICT 5,24 // x,y offset of first line 15,99 // Frame start (incl), end (excl) 1 // Number of lines PEDESTRIAN COUNT: 527 5,35 // x,y offset of first line 25,99 // Frame start (incl), end (excl) 1 // Number of lines 1 LAP: 2.87 MILES 5,46 // x,y offset of first line 35,99 // Frame start (incl), end (excl) 1 // Number of lines NUMBER OF LAPS: 3 5,64 // x,y offset of first line 45,99 // Frame start (incl), end (excl) 7 // Number of lines TONIGHT'S THE NIGHT OF THE BIG GAME - SO YOU MAY WANT TO CHECK OUT THE STADIUM AS YOU'RE PASSING. DON'T WORRY, BLOOD WASHES OUT OF ASTROTURF REAL EASY.
The file starts with a number. This number indicates what's the first race the game starts on, which is normally 0.
After that come 6 values, one in each line:
- Default number of opponents in first race
- Default number of opponents in last race
- Softness, hardest rank of opponents in first race
- Softness, hardest rank of opponents in last race
- Opponent nastiness influencer for first race
- Opponent nastiness influencer for last race
The general format for each level is as follows:
<name> <text file> <interface element> <number of opponents> <number of explicit opponents> [<explicit opponents>] <opponent nastiness> <powerup exclusions> <disable time awards> <boundary race> <race type> <timer count> <laps> <bonus for all laps raced> <bonus for all peds killed> <bonus for all opponents wasted> <description> <expansion>
- Name: The level's name.
- Text file: The
TXTfile for this level.
- Name of interface element: Unknown. Seems to always be "NotDoneYet".
- Number of opponents: -1 uses the default number, calculated according to the current group and level.
- Explicit opponents: This line is the number of opponents that must be included in the race. The X lines below this one are the opponents' code number.
- Opponent nastiness: -1 uses the default number, calculated according to the current group.
- Powerup exclusions: -1 makes all powerups valid. The code number for the powerups that must be excluded are in this line, separated by a comma and without spaces.
- Disable time awards: 0 or 1. If disabled (1), doing actions that increase the timer will no longer increase it, something common in missions.
- Boundary race (mission): 0 or 1. If enabled (1), the game will act like this level's a mission. The effects of that are unknown.
- Race type: 0 = Carma1, 1 = Cars, 2 = Peds, 3 = Checkpoints, 4 = Smash. Normally, this is 0, but if the level can only be completed with a certain goal, it must be specified here.
- Timer count: The starting time, in seconds. Commas separate the difficulty levels.
- Laps: The number of laps needed to complete the race.
- Bonuses: How much money is earned after winning a race with a certain goal. Difficulties separated by commas.
- Description: The track's description on the choose race screen. @R breaks a new line, @L writes the number of laps, and @O writes the number of opponents.
- Expansion: Unknown. Only Trucking Hell has this as 1, all other tracks have this value as 0.
NICE BEAVER NEWCITY1.TXT // Text file name NotDoneYet // Name of interface element -1 // Number of opponents (-1 = use default) 0 // Number of explicit opponents -1 // Opponent nastiness level (-1 = use default) -1 // Powerup exclusions 0 // Disable time awards 0 // Boundary race (mission) 0 // Race type (0 = Carma1, 1 = Cars, 2 = Peds, 3 = Checkpoints, 4 = Smash) 120,90,60 // Initial timer count for each skill level 4 // # laps 20000,10000,5000 // Race completed bonus (all laps raced) for each skill level 75000,50000,30000 // Race completed bonus (all peds killed) for each skill level 20000,10000,5000 // Race completed bonus (all oppos wasted) for each skill level // Race description LOCATION: BEAVER CITY @R LAPS: @L @R CHECKPOINTS: 4 @R OPPONENTS: @O @R RACE, WRECK OR WREAK HAVOC AMONGST THE ZOMBIE HORDES... THE CHOICE IS YOURS. 0 // Expansion
MISSION: TRUCKING HELL JUNKYARD_MISSION.TXT// Text file name NotDoneYet // Name of interface element 1 // Number of opponents (-1 = use default) 1 // Number of explicit opponents 38 10 // Opponent nastiness level (-1 = use default) -1 // Powerup exclusions: 1 // Disable time awards 1 // Boundary race (mission) 1 // Race type (0 = Carma1, 1 = Cars, 2 = Peds, 3 = Checkpoints, 4 = Smash) 900,600,300 // Initial timer count for each skill level 1 // Number of opponents that must be killed (-1 means all) 38 150000,100000,50000 // Race completed bonus for each skill level // Race description LOCATION: MAX'S JUNKYARD @R A truck has escaped from the quarry and followed you home. You must destroy it! 1 // Expansion
Carmageddon TDR 2000
The general format for each race is as follows:
RACE TRACK "<track folder>" NAME "<track name>" TYPE <race type number> TIMER <time (easy)> <time (medium)> <time (hard)> [LAPS <number of laps>] [CHECKPOINT_BONUS <credits (easy)> <credits (medium)> <credits (hard)>] [BONUS_LAPS <lap completion bonus (easy)> <lap completion bonus (medium)> <lap completion bonus (hard)>] [BONUS_PEDS <ped completion bonus (easy)> <ped completion bonus (medium)> <ped completion bonus (hard)>] [BONUS_CARS <waste completion bonus (easy)> <waste completion bonus (medium)> <waste completion bonus (hard)>] [NUM_OPPONENTS <number of opponents>] [OPPONENT_NASTINESS <opponent nastiness number>] [MAX_OPPONENT_VALUE <thousands of AIs>] [OPPONENT_PATHS <file name>] POWERUPS <file name> POWERUPS_SAVENAME <file name> [DRONE_PATHS <file name>] [MISSION_DESC <file name>] [NUM_CHECKPOINTS <number of checkpoints>] RACE_ID <id number> RACE_DEPENDENCY <dependency number> [MISSION <is this a mission?>] [CAMERA_PATH <file name>] [CAMERA_INTEREST_PATH <file name>] END
- Track folder: The name of the folder that contains the race's info, in the
- Track name: Same as track folder.
- Race type: The type of race. 31 is a normal race, 32 is a mission, 64 is a multiplayer level.
- Time: Starting time for each difficulty, in seconds. These should have at least one decimal place, to indicate it's a floating point.
- Laps: Number of laps needed to finish the race.
- Checkpoint bonus: Time bonus when a checkpoint is crossed.
- Lap completion bonus: Bonus credits for when the race is completed by finishing all laps.
- Ped completion bonus: Bonus for when it's completed by killing all pedestrians.
- Waste completion bonus: Bonus for when it's completed by wasting all opponents.
- Number of opponents: Number of opponents that appear in this race.
- Opponent nastiness: Opponent nastiness number. Seems to always be 6.
- Max opponent value: The comments say this is the "suggested max value of AI's that can appear in this race, in thousands". What this means is unknown.
- Opponent paths: Name of the file containing the opponents' paths.
- Powerups: Name of the file containing powerup data.
- Powerups savename: Unknown.
- Drone paths: Name of the file containing drone paths.
- Mission descripton: Name of the file containing the mission's description script.
- Number of checkpoints: Number of checkpoints.
- Race ID: Race ID number.
- Race dependency: Unknown.
- Mission: If this is a mission, this value should be 1. Otherwise, it can be 0, or the line can be missing altogether.
- Camera path: Name of the file containing the camera's path for cutscenes.
- Camera interest path: Unknown.
RACE TRACK "Hollowood_Race1" NAME "Hollowood_Race1" TYPE 31 // Type of race TIMER 150.0 120.0 70.0 // Seconds LAPS 4 CHECKPOINT_BONUS 12 12 12 BONUS_LAPS 20000 10000 5000 BONUS_PEDS 20000 10000 5000 BONUS_CARS 20000 10000 5000 NUM_OPPONENTS 6 OPPONENT_NASTINESS 6 // Valid Range ? MAX_OPPONENT_VALUE 350 // suggested max value of AI's that can appear in this race, in thousands OPPONENT_PATHS "FilmStudioRace1.hie" POWERUPS "Hollowood_Race1.pup" POWERUPS_SAVENAME "assets\tracks\Hollowood_Race1\Hollowood_Race1.pup" DRONE_PATHS "FilmStudioTraffic_Paths_1.hie" NUM_CHECKPOINTS 5 RACE_ID 1 RACE_DEPENDENCY 0 END
RACE TRACK "DocksMD_Mission2" NAME "DocksMD_Mission2" TYPE 32 // Type of race TIMER 200.0 160.0 140.0 // Seconds CHECKPOINT_BONUS 25 20 18 BONUS_LAPS 20000 10000 5000 BONUS_PEDS 20000 10000 5000 BONUS_CARS 20000 10000 5000 POWERUPS "DocksMD_Race1.pup" POWERUPS_SAVENAME "assets\tracks\DocksMD_Race1\DocksMD_Race1.pup" DRONE_PATHS "New_DOCKSDrone_Paths.hie" MISSION_DESC "DocksMD_Mission2_Script.txt" OPPONENT_PATHS "New_DOCKSRace_1_AI.hie" MISSION 1 RACE_ID 16 RACE_DEPENDENCY 11 CAMERA_PATH "DocksM2cam_paths.hie" CAMERA_INTEREST_PATH "DocksM2int_paths.hie" END
RACE TRACK "Bulldogs" NAME "Bulldogs" TYPE 64 // Type of race TIMER 200.0 160.0 140.0 // Seconds POWERUPS "Bulldogs_Race1.pup" POWERUPS_SAVENAME "assets\tracks\Bulldogs\Bulldogs_Race1.pup" RACE_ID 32 RACE_DEPENDENCY 0 MISSION 0 END