- Rojo + Wally project; ProfileStore (loleris) for safe saves - Shared: GameConfig, Cars (RX-7 free starter), ProfileTemplate, Remotes - Server: DataManager, Economy, CarManager, RaceManager, MapBuilder, AntiCheat - Client: neon HUD + Garage/Dealership UI (buy/equip/upgrade), race/daily - Procedural Tokyo expressway (spawn pad, finish line, neon pylons, kill walls) - CI workflow (Gitea/GitHub), Makefile, selene+stylua clean, rojo builds - Docs: README, GDD, realistic solo ROADMAP
3.1 KiB
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:
- Drop the mesh/model into
ReplicatedStorage(or an assets folder). - Rewrite only
CarManager.buildCarModelto clone it and weld aVehicleSeat. - 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/.