Rename: Tokyo Wangan Racing (was Fast & Furious: Tokyo Expressway)

- Title in README + GDD, UI/log prefixes FnF -> Wangan
- Rojo project name -> TokyoWanganRacing
- Fix undefined `H` in CarManager seat CFrame (selene error) -> Chassis.BODY_SIZE.Y
This commit is contained in:
Hermes
2026-07-30 20:03:52 -04:00
parent e0bee80795
commit 681c3462c6
9 changed files with 23 additions and 17 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# Fast & Furious: Tokyo Expressway — MVP (drive-only) # Tokyo Wangan Racing — MVP (drive-only)
A Roblox game where you cruise a neon Tokyo expressway at night in cool cars — A Roblox game where you cruise a neon Tokyo expressway at night in cool cars —
starting with a real 1993 Mazda RX-7. **This MVP is deliberately tiny: just starting with a real 1993 Mazda RX-7. **This MVP is deliberately tiny: just
+2 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "fnf-sim", "name": "TokyoWanganRacing",
"tree": { "tree": {
"$className": "DataModel", "$className": "DataModel",
@@ -41,6 +41,7 @@
"Lighting": { "Lighting": {
"$className": "Lighting", "$className": "Lighting",
"$properties": { "$properties": {
"Technology": "Future",
"ClockTime": 0.0, "ClockTime": 0.0,
"Brightness": 1.0, "Brightness": 1.0,
"Ambient": [0.05, 0.05, 0.1], "Ambient": [0.05, 0.05, 0.1],
+1 -1
View File
@@ -1,4 +1,4 @@
# Game Design Document — Fast & Furious: Tokyo Expressway (MVP) # Game Design Document — Tokyo Wangan Racing (MVP)
## Vision ## Vision
A neon Tokyo expressway you can cruise at night in cool cars — starting with a A neon Tokyo expressway you can cruise at night in cool cars — starting with a
+2 -2
View File
@@ -53,7 +53,7 @@ local function corner(inst: Instance, radius: number)
end end
local screen = make("ScreenGui", { local screen = make("ScreenGui", {
Name = "FnF_UI", Name = "Wangan_UI",
ResetOnSpawn = false, ResetOnSpawn = false,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling, ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
}, playerGui) }, playerGui)
@@ -296,4 +296,4 @@ respawnBtn.MouseButton1Click:Connect(function()
showToast("Respawning your car...") showToast("Respawning your car...")
end) end)
print("[FnF] Client UI ready (drive-only MVP).") print("[Wangan] Client UI ready (drive-only MVP).")
+5 -5
View File
@@ -224,14 +224,14 @@ end
local function buildGreenhouse(folder: Folder, body: BasePart, paint: Color3, glass: Color3, style: Style) local function buildGreenhouse(folder: Folder, body: BasePart, paint: Color3, glass: Color3, style: Style)
local origin = body.CFrame local origin = body.CFrame
local roofY = H / 2 + 1.5 local roofY = H / 2 + 1.9 -- tall enough that a seated avatar fits under it
local roofLen = L * 0.26 local roofLen = L * 0.26
-- Windshield: raked wedge (slope toward front) -- Windshield: raked wedge (slope toward front)
vis({ vis({
Name = "Windshield", Name = "Windshield",
Size = Vector3.new(W - 1.0, 1.3, 1.9), Size = Vector3.new(W - 1.0, 1.7, 2.1),
CFrame = origin * CFrame.new(0, H / 2 + 0.85 + 0.5, -L * 0.09) * CFrame.Angles(0, math.pi, 0), CFrame = origin * CFrame.new(0, H / 2 + 1.05 + 0.5, -L * 0.09) * CFrame.Angles(0, math.pi, 0),
Color = glass, Color = glass,
Material = Enum.Material.Glass, Material = Enum.Material.Glass,
Transparency = 0.25, Transparency = 0.25,
@@ -262,8 +262,8 @@ local function buildGreenhouse(folder: Folder, body: BasePart, paint: Color3, gl
local rearGlassLen = if style.TailKind == "hatch" then 2.4 else 1.7 local rearGlassLen = if style.TailKind == "hatch" then 2.4 else 1.7
vis({ vis({
Name = "RearGlass", Name = "RearGlass",
Size = Vector3.new(W - 1.2, 1.3, rearGlassLen), Size = Vector3.new(W - 1.2, 1.7, rearGlassLen),
CFrame = origin * CFrame.new(0, H / 2 + 0.85 + 0.5, L * 0.235), CFrame = origin * CFrame.new(0, H / 2 + 1.05 + 0.5, L * 0.235),
Color = glass, Color = glass,
Material = Enum.Material.Glass, Material = Enum.Material.Glass,
Transparency = 0.25, Transparency = 0.25,
+4 -1
View File
@@ -223,7 +223,10 @@ local function buildCarModel(car: Car, tuning: Tuning): Model
seat.HeadsUpDisplay = false seat.HeadsUpDisplay = false
seat.CanCollide = false seat.CanCollide = false
seat.Color = Color3.new(0.1, 0.1, 0.1) seat.Color = Color3.new(0.1, 0.1, 0.1)
seat.CFrame = origin * CFrame.new(0, 1.2, -0.5) -- Seat pan just above the body slab (top = H/2): low enough to look tucked
-- in the cabin, high enough that the avatar's legs never interpenetrate
-- the slab (which causes physics launches).
seat.CFrame = origin * CFrame.new(0, Chassis.BODY_SIZE.Y / 2 + 0.3, 0.2)
seat.Parent = model seat.Parent = model
local seatWeld = Instance.new("WeldConstraint") local seatWeld = Instance.new("WeldConstraint")
seatWeld.Part0 = body seatWeld.Part0 = body
+2 -2
View File
@@ -64,7 +64,7 @@ local function onPlayerAdded(player: Player)
if profile == nil then if profile == nil then
-- Another server holds the lock, or player left mid-load. Kick to be safe. -- Another server holds the lock, or player left mid-load. Kick to be safe.
player:Kick("[FnF] Your data could not be loaded. Please rejoin.") player:Kick("[Wangan] Your data could not be loaded. Please rejoin.")
return return
end end
@@ -85,7 +85,7 @@ local function onPlayerAdded(player: Player)
-- The session was lost (another server stole it, or we released it). -- The session was lost (another server stole it, or we released it).
profiles[player] = nil profiles[player] = nil
if player.Parent == Players then if player.Parent == Players then
player:Kick("[FnF] Your session ended (data loaded elsewhere). Please rejoin.") player:Kick("[Wangan] Your session ended (data loaded elsewhere). Please rejoin.")
end end
end) end)
+5 -3
View File
@@ -347,13 +347,15 @@ local function buildDaikoku(map: Folder)
end end
-- Spawn pad (cars appear here — Daikoku is the meet) ----------------------- -- Spawn pad (cars appear here — Daikoku is the meet) -----------------------
-- Subtle painted zone, NOT neon: the cars are the stars of the meet, the
-- floor must never outshine them.
local spawn = part({ local spawn = part({
Name = "SpawnPad", Name = "SpawnPad",
Size = Vector3.new(120, 1, 60), Size = Vector3.new(120, 1, 60),
CFrame = CFrame.new(0, 1.2, z0 + 130), CFrame = CFrame.new(0, 1.2, z0 + 130),
Color = Color3.fromRGB(20, 220, 120), Color = Color3.fromRGB(45, 60, 55),
Material = Enum.Material.Neon, Material = Enum.Material.Asphalt,
Transparency = 0.4, Transparency = 0,
}) })
spawn.Parent = folder spawn.Parent = folder
+1 -1
View File
@@ -87,4 +87,4 @@ rEquipCar.OnServerInvoke = function(player, carId)
return true return true
end end
print("[FnF] Server booted (drive-only MVP): map built, car system online.") print("[Wangan] Server booted (drive-only MVP): map built, car system online.")