While JJ2+ does come packaged with a functional online race mode, most of us have become accustomed to playing Race in Treasure and the combat shenanigans that comes with this. The purpose of this mutator is to simulate the Race gameplay we’re used to while also adding a number of quality of life features; namely pre-race level preview, player laps shown in real time and recording of individual lap times/overall time and final position. Starting rooms are not required!
This mutator is intended to be hosted in Battle mode, as the fact that you can’t interact with objects such as springs and ammo is almost universally despised – although you can still host in Treasure if you prefer. Players are made immortal with this mutator (except from death pits/other instant kill methods), so don’t worry about getting hurt too much. You could even host this in CTF if you’re feeling adventurous and fancy some Team Race!
In order to advance to the next lap, players need to touch a Warp with the SetLap parameter set to 1 (mimicking built-in JJ2 race). After finishing the race, any Warps with SetLap parameter send you automatically to target 255, so make use of this to determine where you want winners to end up (typically in a “winners room”). The amount of laps needed to complete the race is determined by the /maxscore setting. When designing a level, you have the option to set a default amount of laps by placing an Event 255 (MCE Event if using the enhanced JCS.ini) at tile 0,0 with the first parameter set to however many laps your level should have by default – this is handy if you’re thinking of hosting a dedicated Race server with this mutator. An edited version of Race1.j2l is included as an example of how this should look.
If the level starts up with /autostart off or with a pregame, you’ll be taken to a pseudo-spectator screen where you can check out the level in advance and set waypoints that you may well find helpful for guiding your way.
Enjoy!
EDIT (17/10/19): Some important bugfixes.
EDIT 2 (27/04/20): Minor improvements; instructions display better in 640×480, race start camera now initially focuses over the player start pos.
EDIT 3 (07/05/20): The player’s current lap is now determined by jjPlayers.score, so level scripts now have the ability to check what lap the player is currently on. Fixed a bug which caused the player lap history times to not display correctly. Fire and Plasma shield bullets now no longer spawn waypoints.