Inspiration
I wanted to create something simple, fun, and remix-friendly - It should be easy for anyone to pick up, customize, and share
What it does
Simple Race lets players compete in their own checkpoint-based race with a live timer. Persistent data saves the players last race time, best race time, total racing time, and total # of races completed. 5 quests and 3 leaderboards highlight these stats to keep competition alive
No setup is required - This remix is ready and works right out of the box. Creators can move the existing checkpoints around & theme the world. Additional customization can be easily made via props on Simple Race Manager and Simple Race UI, such as the number of laps required to finish the race, sounds, and the design of the UI (labels, size, colors, etc.)!
How we built it
A checkpoint is a Trigger Gizmo with a Gameplay Tag of "Checkpoint" and the SimpleRaceCheckpoint script attached to it. This script has a single checkpointNumber property to define its order in the race. The SimpleRaceManager script handles starting, timing, and finishing automatically
A single default mode UI that uses per-player bindings to display the race state (Ready, Racing, Finished), live timer, lap and checkpoint progress, last race time, and best race time
Challenges we ran into
The biggest challenge was balancing simplicity with flexibility for remixers - Making it easy for anyone to use while leaving room for remixers to expand the code
Accomplishments that we're proud of
I’m proud that Simple Race is both ready-to-play and fully customizable. Remixers can quickly make it their own without digging through complicated setup
What we learned
Structuring systems and code in a way that’s clear and easy for others to build upon
What's next for Simple Race
Future additions could include team races (using the Teams API), ghost racers to compete against, cinematic cameras for dramatic finishes, and interactive elements like power-ups or slow zones
Built With
- horizon
- typescript




Log in or sign up for Devpost to join the conversation.