Quick race
Quick race is a single race from the main menu, outside the career. The player picks a car, a track and a distance, then Easy, Medium or Hard. It pays a little XP and cash, gives no stars and puts no time on the leaderboards.
The rival
Section titled “The rival”The rival is nameless (“Rival”) and drives a copy of the player’s car: the same model and the same parts, with less power and a driver who makes more or fewer mistakes (QUICK_RIVALS in player/quickRace.ts). Each level has its own paint, so the levels look different on the line.
| Level | Power | Sloppiness | Paint |
|---|---|---|---|
| Easy | 72% | 0.4 | Toxic Lime |
| Medium | 82% | 0.3 | Bayside Blue |
| Hard | 90% | 0.1 | Jet Black |
Because the rival copies the car, the difficulty follows the player’s progress in every class without a table per car. scripts/quickRaceCheck.ts measures it: a player at 85% of the car’s best run (the career check’s HUMAN_EFFICIENCY) wins 80 to 88% of easy races and 37 to 71% of medium ones, and hard needs a better driver (62 to 84% at 92% of the best run). Traction control (2026-11-08) made a full-power car worth more against a detuned copy, so easy went from 65% to 72% power and medium from 75% to 82% to keep those rates.
How it runs
Section titled “How it runs”A quick race is a CareerRace without an event, with an id like quick~hard~harbor~half (quickRaceId). pickRace in race/EventRace.ts and the race server’s raceOf (party/src/api/raceApi.ts) build it from that id and the car raced, so the ticket, the replay and the result screens work as for a career race. The server rebuilds the rival from the car stored on the ticket, so the client cannot pick a weaker one.
judgeQuickRace (party/src/race/quickRace.ts) settles it with settleQuickRace (player/level/quickRaceRewards.ts) instead of the career’s prize and stars, and skips the leaderboards and the double prize. Results and the pause menu lead back to the quick race screen (race/raceHome.ts).
Tracks are those of the districts the career has opened, so a quick race shows nothing the career has not.
Rewards
Section titled “Rewards”A win pays a share of the furthest open district’s average event prize (quickRaceCash, rounded to
$50), the same base as the daily bonus, so quick races keep up with the career. Medium pays about a
quarter, what replaying an average event pays (REPLAY_SHARE).
| Level | Win | Finished loss |
|---|---|---|
| Easy | 10 XP, 15% of the average event prize ($700 in Street) | 5 XP |
| Medium | 20 XP, 25% ($1,200 in Street) | 5 XP |
| Hard | 35 XP, 35% ($1,700 in Street) | 5 XP |
A race that does not reach the line pays nothing. Only the first 20 finished quick races of a UTC day pay (GarageState.quickRaces, the server’s clock), so an easy rival cannot be farmed for cash or levels. The screen shows how many prize races are left today.
Checking it
Section titled “Checking it”tests/quickRace.test.ts covers the ids, the rival and the rewards with the daily cap. npx tsx scripts/quickRaceCheck.ts prints the win rates per level.