# 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](https://github.com/rojo-rbx/rokit). Once Rokit is installed and on your `PATH`: ```bash 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 ```bash # 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) ```bash 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/`.