jesse e9aec28af3
CI / quality (push) Failing after 1m0s
Restrict RX-7 to allowlisted UserIds (owner + son demo lock)
- GameConfig: RX7AllowedUserIds allowlist + isRX7Allowed/starterCarFor helpers
- ProfileTemplate: no hard-coded starter; granted per-player by UserId
- DataManager: grants RX-7 to allowlisted players, public car to everyone else
- Economy.buyCar + CarManager.spawn: server-side refuse RX-7 for non-allowlisted
- Cars: RX-7 flagged Restricted; client dealership hides it from non-owners
- Gates: stylua clean, selene 0/0, rojo builds
2026-07-21 23:39:59 -04:00

Fast & Furious: Tokyo Expressway — MVP

A Roblox street-racing simulator. Start in a 1993 Mazda RX-7 (the owner's real car), race the neon Tokyo expressway, earn cash + rep, buy and upgrade faster cars.

Status: Playable vertical slice. Drive → race → earn → save works end to end. Built code-first — there is nothing to hand-build in Studio to run it.


Prerequisites

Toolchain is managed by Rokit. Once Rokit is installed and on your PATH:

rokit install     # installs rojo, wally, selene, stylua at pinned versions
wally install     # restores ProfileStore into ServerPackages/

Installed tools (see rokit.toml):

Tool Purpose
rojo Sync/build code ↔ Roblox place
wally Package manager (ProfileStore)
selene Static analysis / linter
stylua Code formatter

Build & run

# Build a standalone place file you can open in Studio:
rojo build --output build.rbxl

# OR live-sync into an open Studio place (install the Rojo Studio plugin):
rojo serve

Then in Studio press Play. You spawn on the expressway; use the bottom bar: GARAGE (buy/equip/upgrade), SPAWN CAR, RACE, DAILY.

Quality gates (run before every commit)

stylua --check src/     # formatting
selene src/             # lint
rojo build --output build.rbxl   # must compile

CI runs all three on every push (see .github/ → mirrored to Gitea Actions).


Architecture (server-authoritative)

Clients request, the server decides. Money, rep, and car ownership can never be set by the client.

ReplicatedStorage/Shared     GameConfig, Cars, ProfileTemplate, Remotes
ServerScriptService/Server   init.server + managers (below)
ServerScriptService/ServerPackages  ProfileStore (Wally)
StarterPlayerScripts/Client  init.client (HUD + Garage UI)
Module Responsibility
DataManager Wraps ProfileStore — session locking, reconcile, Studio mock. The data-safety foundation.
Economy The only place cash/rep/ownership change. Buy, upgrade, daily, race payouts.
CarManager Spawns the equipped car (VehicleSeat-driven placeholder) with upgrade-scaled tuning.
RaceManager Solo time-trial; server validates the finish-line touch before paying out.
MapBuilder Procedurally builds the expressway, spawn pad, finish line, neon pylons, kill walls.
AntiCheat Movement sanity check (speed/teleport) — a speed bump, not a fortress.

See docs/GDD.md for the game design doc and docs/ROADMAP.md for the realistic solo-dev plan.

Replacing the placeholder RX-7 with the real mesh

The car is currently a coloured block + VehicleSeat so the game is drivable today. When you import the real RX-7 model:

  1. Drop the mesh/model into ReplicatedStorage (or an assets folder).
  2. Rewrite only CarManager.buildCarModel to clone it and weld a VehicleSeat.
  3. Everything else (economy, upgrades, races, saving) keeps working unchanged.

Reference photos of the real car live on the NAS at unraid-1:/mnt/user/data/yy-roblox-games/0-fast-n-furious-sim/001-1993 Mazda RX-7/.

S
Description
Tokyo Wangan Racing — Roblox street-racing sim. Cruise, duel, or time-attack the Wangan from Daikoku Futo PA. Rojo + Wally + ProfileStore.
Readme
12 MiB
Languages
Luau 92.7%
Python 7.1%
PowerShell 0.2%