Racing Game Template
The Racing Game template gives you a ready-to-play multiplayer racing experience. It includes a checkpoint system, lap tracking, vehicle selection, and a leaderboard -- everything you need to host races or use as a foundation for a bigger racing game.
What's Included
- Sample race track -- A complete circuit with banked turns, straights, and scenery
- Checkpoint system -- Trigger volumes that track player progress through the course
- Lap counter -- Configurable number of laps per race
- Vehicle selection -- Pre-race lobby where players pick from a set of vehicles
- Leaderboard -- Real-time standings during the race and a results screen at the end
- Race HUD -- Speedometer, position indicator, lap counter, and checkpoint markers
- Countdown start -- Synchronized race start with a 3-2-1 countdown
How the Checkpoint System Works
The track is built from an ordered list of checkpoint zones. When a player's vehicle enters a checkpoint, the system records it and updates their progress. Checkpoints must be hit in order -- skipping one won't count.
- Blueprint
- Lua
- JavaScript
// Checkpoints are placed as Trigger Box actors in the world.
// The RaceManager Blueprint handles overlap events and tracks
// each player's current checkpoint index.
-- Checkpoint configuration in config.lua
RaceConfig.Checkpoints = {
{ position = Vector(1200, 500, 50), radius = 15 },
{ position = Vector(1400, 800, 50), radius = 15 },
{ position = Vector(1600, 1200, 55), radius = 20 },
-- ... more checkpoints
}
RaceConfig.Laps = 3
RaceConfig.MaxPlayers = 12
// Checkpoint configuration
const RaceConfig = {
checkpoints: [
{ position: new Vector(1200, 500, 50), radius: 15 },
{ position: new Vector(1400, 800, 50), radius: 15 },
{ position: new Vector(1600, 1200, 55), radius: 20 },
// ... more checkpoints
],
laps: 3,
maxPlayers: 12
};
Lap System
The finish line is the first checkpoint in the list. Each time a player crosses it after completing all other checkpoints, their lap counter increments. Once they hit the configured number of laps, they finish the race and their final time is recorded.
The lap system handles edge cases like players going backwards or cutting corners -- only sequential checkpoint completion counts toward progress.
Vehicle Selection
Before a race starts, players enter a lobby phase where they can pick a vehicle from the available roster. Vehicles are defined in the race config:
RaceConfig.Vehicles = {
{ asset = "sports-car-a", label = "Vortex GT", topSpeed = 220 },
{ asset = "sports-car-b", label = "Phantom RS", topSpeed = 235 },
{ asset = "muscle-car-a", label = "Thunderbolt V8", topSpeed = 200 },
{ asset = "supercar-a", label = "Apex Turismo", topSpeed = 260 },
}
You can add or remove vehicles by editing this table. Each vehicle uses a HELIX vehicle asset that you can swap with your own custom models.
Customizing the Template
Creating a New Track
- Open the world in HELIX Studio
- Design your road layout using terrain tools, splines, or static meshes
- Place Trigger Box actors along the route for checkpoints
- Update
RaceConfig.Checkpointswith the positions of your triggers - Set the first checkpoint at your desired start/finish line
Adjusting Race Settings
All race parameters live in the config file:
RaceConfig.Laps = 5 -- number of laps
RaceConfig.MaxPlayers = 16 -- max racers
RaceConfig.CountdownSeconds = 5 -- pre-race countdown
RaceConfig.DNFTimeout = 120 -- seconds after winner to end race
Next Steps
- Customize the track layout in HELIX Studio
- Add more vehicles to the roster
- Integrate LIX rewards for race winners via the economy system
- Add spectator mode for players who finish or don't join a race