Commit Graph

25 Commits

Author SHA1 Message Date
m3ultra
939c2c5c35 Gateway Bridge: 64.5 m over the river, and a drag strip to match
The Sir Leo Hielscher Bridges and their industrial hinterland, from OSM
+ DEM like everything else -- but a 64.5 m concrete box girder split
across 13 OSM ways and twin carriageways broke every bridge assumption
the builder had, three different ways, before the right abstraction
appeared:

- Per-way sine humps (the Story Bridge recipe) turned each short
  approach span into a 52 m wall.
- A whole-bridge axis projection lifted named segments 3 km from the
  water and cliffed at every segment seam.
- The fix: deck height is a CONTINUOUS FIELD of distance-to-river --
  smoothstep from terrain to +57 m over the water. The river is the
  thing being bridged; let it set the profile. Seams are geometrically
  impossible because the field doesn't know what a segment is.

The bridge arg grew to Name:hump:style. Style "box" adds concrete
piers under every bridge-tagged span (28 of them), collision guardrails
chasing both deck edges (a 64 m deck with open edges is a cliff with
lane markings -- the first playtest fell off it), and puts Spawn,
DragStart/End and the RacePath on the deck field. Story Bridge keeps
its 16 m truss unchanged.

The payoff mode: a 1,422 m drag strip -- the longest in the game --
running up and over the bridge, verified in-shot racing Nanna's Morry
between the steel rails with the deck climbing ahead. Race mode's
auto-traced loop weaves interchange ramps and is honestly chaotic;
README flags the hand-authored-loop fix if bridge racing matters.

Plus the trace stitcher's loose-join pass (carriageways within 60 m
merge), a FLUX river-industrial sky, and the loose-join is what future
divided-road levels will lean on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 18:41:24 +10:00
m3ultra
9844bee7ab Two mountains: Mt Coot-tha and Mt Gravatt hillclimbs on real terrain
The OSM pipeline pointed at actual mountains. Both levels ride the real
terrarium DEM (Coot-tha's range tops at 287 m, Gravatt's at 196 --
matching the survey numbers) with the real roads draped and carved over
it: Sir Samuel Griffith Drive winding up one side of town, Mount
Gravatt Outlook Drive zigzagging up the other. Race mode is 3 laps of
the mountain; the drag finder even discovered a 1080 m strip through
Mount Gravatt's suburbs (Logan Road, of course it is).

Pipeline upgrades earned along the way, all reusable:

- trace: RacePath mode now STITCHES every OSM way sharing the name into
  one chain by shared endpoints (SSG Drive is 19 segments; tracing only
  the longest produced a fraction of the route) and samples densely --
  16 points cut hairpins cross-country and gridded race starts in a
  paddock.
- 9th builder arg selects the raw-terrain texture. Bushland levels pass
  "grass" (tiled at 3 m -- 18 m tiling reads as macro-photography lawn
  blades under the car) which also enables forest fill: ~2600 extra
  gums, 65% biased to within ~150 m of roads, where the driver's eyes
  actually are.
- amenity=parking polygons are now PAVED (draped asphalt) as well as
  stocked with parked shitboxes -- a summit lookout carpark is a
  burnout pad, not a dirt patch. Both summits come ready.
- man_made mast/tower ways become tapered lattice towers with a cage
  and whip antenna, built from beams into the steel bucket. Mount
  Gravatt's telecom tower stands over its carpark.
- Levels can carry their own sky: levels/<id>/sky_<time>.jpg overrides
  the global panorama for any time of day, including day (previously
  always procedural). Both mountains ship FLUX skies with the Brisbane
  skyline on the horizon; Gravatt also has a sunset one, because John's
  reference photo demanded it.

Suite green at 11 levels. Next burnout spot: the Gateway Bridge, when
the details arrive.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 12:08:05 +10:00
m3ultra
324dbdf625 Cashies tool library: dealgod photos -> TRELLIS -> shuntable paddock props
The dealgod.pro products database holds ~82k secondhand tool listings
with photos (69k cached on the VPS). This turns the good ones into game
assets: 15 tool classes curated from 45 candidates (socket set, air
compressor, chain block, car ramp, OBD reader, trolley jack, engine
crane, engine stand, toolbox, angle grinder, welder, jerry can, battery
charger, jack stands, grease gun), each run through the MODELBEAST farm
by the new tools/cc_to_glb.py: bg_remove_local cutout, then trellis_mac
image->3D (1024 tier). Retries with backoff after a transient queue 401;
the jerry can made trellis_mac exit 2 on two different photos and went
through hunyuan3d_mlx instead (--operator flag), which ate it happily.

Raw TRELLIS output is ~20MB per prop, so tools/slim_glb.py (headless
Blender) decimates to 18k tris and re-exports with 1024 JPEG textures:
the library lands at 27MB total for 15 props instead of ~300MB.

The Willowbank paddock strews the whole library as RigidBodies --
TOOL_SPECS in dragway.gd gives each class its real-world size (TRELLIS
output is unit-ish; the AABB is measured live and scaled) and an honest
mass, so clipping the 70kg engine crane is a different event to punting
the grease gun. The loader is directory-driven: drop a new GLB into
assets/tools/ and it appears in the paddock next boot.

Textures inherit whatever branding was in the source photos -- fine for
secondhand background clutter, flagged in the README for anything that
gets promoted to hero status. Smoke suite asserts every GLB in the
library spawns as a prop.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 14:25:48 +10:00
m3ultra
9e98d5ba65 DIEHATSU FACADE 1.0: the 1984 Charade, from the owner's own exhibits
3.55 m, 680 kg, one-litre three-cylinder -- gutless beyond parody in life,
which under the reversed-stats rule makes it elite: grip 8.0, the most
chuckable thing in the fleet, slotted just under the BUBBLA on power.

Modelled from reference photos: upright glasshouse, short bonnet, wide dark
grille band with amber corner indicators, black side strip, tiny 12-inch
wheels, and rear hatch louvres (det_, shed slat by slat) per the Cape Town
specimen. New builder key black_bumpers: 80s econoboxes wear true black
plastic, not body-tone dark -- the Lazza can adopt it too.

35 cars.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:29:17 +10:00
m3ultra
65da434678 Real terrain: DEM elevation under every level
tools/fetch_dem.py pulls the open AWS terrarium elevation tiles for each
level's bbox (derived from the OSM geometry itself -- the fetch bboxes were
never recorded) and writes an f32 heightmap. The builder bilinear-samples it:
roads/footpaths/crossings drape (subdivided to ~8 m so long OSM segments stop
chording across curved ground), buildings lift rigidly to the lowest terrain
under their footprint with a 2 m foundation skirt, trees/props/planters ride
their own base heights, and the flat ground slab becomes a real terrain mesh.
Bridges get an explicit deck profile (lerp between end heights plus a hump)
instead of draping down into the river, the truss follows the deck, and the
Bradfield Highway now genuinely flies over Kemp Place -- the game has an
underpass. Kangaroo Point's cliffs are an actual 20 m drop, Edward Street
climbs to 55 m at Spring Hill.

Junction events bake spawn/convoy heights (osm_junction.py grew a pure-python
DEM sampler); the game respects marker heights everywhere it used to hardcode
ground=0.

Bugs the terrain surfaced, all found by measurement:
- Long road segments chorded across curved ground: the car visually sank to
  its windows mid-block. Fixed by subdividing draped ribbons.
- The 9 m terrain grid aliases cliff edges and bulged metres ABOVE the finely
  draped roads: a car spawning there was inside the terrain sheet and got
  depenetrated through the floor into the void (y = -710). Fixed by giving
  roads real collision and carving the terrain grid down wherever a draped
  road sample lands (11k+ carve samples on Kangaroo Point alone).
- The junction validator and tuner drove throttle-only, which cross-slope
  drift turned into 40-86 m misses; they now hold aim like a player would.
- Edward x Elizabeth launched down a 17% grade, went airborne at the crest
  and wedged off-street: unwinnable geometry, not a bug. Swapped for
  Elizabeth x George on the flat lower CBD. All 9 junctions validate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 15:08:42 +10:00
m3ultra
52f7705e13 Dusk and night: FLUX sky panoramas, working street lamps, headlights
A Time column in the menu picks day / dusk / night per run:
- Dusk: low orange sun under a FLUX-generated equirectangular panorama (golden
  hour rakes the heritage facades -- best light in the game).
- Night: dim blue moonlight, city-glow panorama, headlight spotlights on the
  player, and every street lamp gets a real OmniLight under its lantern.
  Because the light is parented to the lamp's physics body, toppling the lamp
  takes its pool of light with it.

Panorama seams are wrap-blended in post (PanoramaSky tiles horizontally and
FLUX edges never match on their own); flux_local.py learned non-square
generation (1024x512) for exactly this.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 13:54:34 +10:00
m3ultra
d886188475 Fleet expansion: ute, wagon, muscle coupe, microcar (34 cars)
Four new archetypes, all one spec dict each:
- HARDON WB UTE: builder grows ute=True support -- cab glass ends behind the
  seats, open tray with visible floor, bulkhead and a det_ tailgate. The most
  load-bearing vehicle shape in Australian culture.
- HARDON WAGGO HJ: the roof refuses to end; vinyl cap, tan over brown.
- FALCODORE 351 GT-OH-NO: black bonnet, ducktail, and per the reversed-stats
  rule the worst grip in the game (4.6) under the most bark (1710 kg).
- BUBBLA 600: a jellybean with delusions. 640 kg, grip 8.2, second-quickest
  car in the game behind the Excel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 13:44:40 +10:00
m3ultra
3070a96b41 Car bodies sculpted, wheels that spin, destruction that reads
Skin pass (build_cars.py, whole procedural fleet rebuilt):
- warp_obj() kills the slab: plan taper (nose/tail pull in), tumblehome (the
  glasshouse leans inward above the belt) and rocker tuck, applied to
  world-space verts so det_ panels stay flush with the body.
- Beveled body edges catch light instead of vanishing into flat shading.
- Wheels are tyre + rim with the mesh centred on the hub and the OBJECT at the
  hub -- the old wheels baked position into their verts, so a spinning wheel
  would have orbited the car's origin. Chrome det_hub hubcaps on every corner,
  dark arch shrouds so wheels sit in wells rather than under a slab.
- B-pillars over the one-piece glasshouse, licence plates, exhaust, door
  handles. Mirrors anchored to where the tapered flank actually ends up.

Destruction feel:
- Visual wheels spin with road speed and the fronts steer (rotation order YXZ:
  yaw then roll, so steered wheels roll about the steered axle).
- Shed panels burst outward with lift instead of just detaching; light hits
  ping a hubcap off first, saving doors for crashes that deserve them.
- Sparks on every impact, soft-puff smoke on wrecks and heavy damage, tyre
  smoke while drifting (src/fx.gd -- procedural particles, radial-gradient
  billboards, no textures). Camera shake on player crashes, applied after
  look_at so it reads as the camera being knocked, not re-aimed.
- Crumple strength up ~40% now that scratches and dulling ride on it.

Traffic and parked cars inherit all of it via the shared fleet GLBs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 11:06:45 +10:00
m3ultra
589e99c727 Procedural sound kit: the whole game has audio, no recordings
Every WAV is synthesized from maths by tools/gen_sounds.py (run through Blender
for its bundled numpy) -- sines, noise and envelopes, seeded and reproducible,
licence-free by construction. Loops (engine, skid, boost, siren) are built from
integer-Hz components over exactly 1 s so the seam is mathematically silent;
noise beds get a crossfaded seam. Seam continuity is verified numerically.

Wiring: pitch-tracked engine loop on every car (idle burble to top-end scream,
bump while boosting), skid loop off slip, player boost whoosh, small/big crash
by jolt with glass on wrecks, two-tone siren on pursuit cops (derby brawlers
stay silent), Crashbreaker boom, gearbox clunk/bog, win/lose stings on
takedowns, outruns, escapes, busts and derby eliminations.

Loop flags live in code (sfx.gd), not per-file .import settings, so a
regenerated wav never silently loses its loop.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 13:05:48 +10:00
m3ultra
aac4384c05 Per-junction medal targets, measured; fix the last unplayable junction
Medal targets are no longer one uniform 15/35/60k guess across every event.
tools/tune_junctions.gd plays each junction 12 times with varied launches and
sets bronze/silver/gold at the 35th/65th/88th percentile of actual damage, so
they now range from $4k at Cliffs Corner to $73k gold at Melbourne x Merivale.
The old numbers made half the events impossible and the other half trivial.

Grey x Glenelg scored $0 in 12/12 runs and took three fixes, each found by
measuring rather than reading:
- The launch sat on the street centreline, so the car drove cleanly BETWEEN the
  two convoy lanes -- closest pass 2.9 m, almost exactly the 2.7 m lane offset.
  It now launches in a lane. (The first attempt offset the wrong way and widened
  the pass to 5.5 m, which is how the sign error announced itself.)
- int(L / headway) floors to one car on a short clipped stream, so that junction
  fielded 9 convoy cars against the usual 20-25. Minimum 3 per stream, evenly
  spaced to fit.
Result: $0 -> $91k, convoy 9 -> 18, and 0 of 9 junctions now unplayable.

The tuner has turned out to be the event validator as much as a balance tool --
"scores nothing in every run" is an unplayable event, not a tuning problem.

Also from the review: the deformer no longer crumples det_* panels after they've
been shed onto their own body, and notes that rebuilding an ArrayMesh drops any
imported LODs.

Honest gap: Cliffs Corner and Bridge Approach show median == max at ~$4.7k --
winnable and correctly tuned, but the run ends on scenery before the convoy is
reached. Both are curved approaches; they want better crossings picked by hand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 00:15:05 +10:00
m3ultra
0c13c82eac Pursuit, drag and derby modes; crash-damage paint; junction fixes
Three new modes, all our own code:
- Pursuit (Simpsons Hit & Run's meter): smashing in cruise fills heat, at full
  the police hunt you. Open 250 m for 6 s to escape, get pinned 4 s to be busted.
  Heat decays, so picking a fight is a choice not a timer.
- Drag (NFSU2's): the gearbox IS the event. The builder finds each level's
  longest genuinely straight run of wide road (442-628 m across the five OSM
  levels) and drops DragStart/DragEnd, so no level needs hand-authored coords.
- Derby: five opponents in the carpark, last one running. Reuses the pursuit AI,
  each hunting a different car so it's a brawl not a mob.

Crash damage now shows: total control-point travel drives paint dulling,
roughness and a scratch layer, so scuffs and crumple can never disagree.

Junction generator fixes, all found by measurement rather than inspection:
- streams[:6] truncated after street A's ways, so junctions where A yielded 3+
  usable ways shipped with ZERO cross traffic. Interleaved before capping;
  every event now has 2-4 crossing streams.
- RADIUS 170 -> 95 spread the convoy over a 340 m window, so you threaded the
  intersection through a 20 m gap. Margaret x Edward was unwinnable: 27 convoy
  cars alive, zero collisions, $0.
- Launch points now walk the street to exactly SPAWN_DIST and pick the busiest
  shared node, and _clear_spawn() unblocks a buried start. Albert x Adelaide
  went from $0 (drove 1 m into a building) to $91k.
- build_all_junctions.sh records the street pairs, which existed nowhere before.

Fixes from an adversarial review (23 confirmed findings), the worst being:
- Derby could only ever be LOST: wrecked opponents un-wrecked 2.2 s later via
  Car._recover, so "last one running" was unreachable and the kill bounty could
  be farmed to the boost cap off one revived car. They now hold their wreck.
- Drag reported WON to a beaten player: the AI's lookahead wrapped on a 2-point
  path, U-turning before the line so its distance-to-finish grew again.
- The scratch layer used BLEND_MODE_MIX, whose mask defaults to white -- it
  replaced the paint entirely rather than scuffing it. Now MUL.
- Drag on a level with no strip left the car at the origin, half-buried, unable
  to end. Cop spawns used an unflattened basis. Stale "WANTED" HUD text.

Test harness: smoke covers all seven modes, and failures now exit instead of
hanging -- a failed assert in a headless SceneTree halts the script but leaves
the tree spinning, which cost 53 minutes of wall clock to notice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 23:07:41 +10:00
m3ultra
e9717326f4 Smashable street furniture; fix levels losing every texture on rebuild
Street lamps, bollards and bins are no longer baked scenery. The builder emits
SL_/BO_/WB_ markers off the OSM nodes and game.gd spawns them as RigidBodies
with a low centre of mass, so clipping a lamp at 100 topples it instead of
driving through a painted pole. ~206 physics bodies per level (58 parked cars,
60 lamps, 88 bollards/bins), all asleep until hit. Verified by ramming one:
23.6 deg tilt, launched at 18 m/s.

Fixes a self-inflicted trap from the last commit: level_*.jpg are Godot's
extraction of the GLB's embedded textures, NOT Blender output. build_all
cleared them to avoid orphans but left level.glb.import, so Godot's cache
decided nothing had changed and never re-extracted -- queen_st_mall shipped
with 0 of its 31 textures, loading fine but rendering untextured. The .import
now goes with them.

Also confirmed the Wheel of Brisbane pivot really does turn (0.086 rad over
120 frames, 0.000 m centre drift) -- it was previously untested.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 18:53:05 +10:00
m3ultra
1db71420a3 Scenery v4: traffic signals, power lines, local FLUX fallback
Taps the last big unused seam in the OSM data: 140 highway=traffic_signals per
CBD level become pole + mast arm + two lantern heads with emissive lenses.
Timber power poles with catenary-sagging wires run down one side of every
residential street. Billboards now cycle three fictional ad designs.

Cloudflare's free tier (10k neurons/day) ran out mid-session, so flux_texture.sh
now falls back to the local MODELBEAST farm automatically -- transparent, same
output contract. tools/crop_poster.py trims generated billboards to the poster
face by saturation, since FLUX renders them in situ with sky and support pole
however the prompt is worded.

Fixed: signal lenses were built as 0.04 m beams and beam() bails under 0.05 m,
so they silently never existed -- caught by inspecting the exported GLB, not
the screenshot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 17:21:35 +10:00
m3ultra
6808710f31 Scenery v3: smashable street life, Brisbane colour, Southbank landmarks
Every OSM level now spawns 50 shuntable parked fleet cars + 40 wheelie bins
from builder-emitted PP_/WB_ markers (kerbside + real amenity=parking rows;
asleep until rammed, absent in junctions to keep the puzzles deterministic).
Traffic bumped in cruise/crash.

Brisbane pass: red busway asphalt, jacaranda canopies on a fifth of the street
trees, Queenslander weatherboard + corro on building=house, art deco + glass
apartment facade variants, fictional shop-fascia signs above awnings, rooftop
billboards. Southbank gets the Wheel of Brisbane (by its mapped ticket office)
and the Grand Arbour's bougainvillea tendrils along the mapped footway.

Verified: smoke green, 50+40 smashables counted on southbank, screenshots of
the wheel, arbour trail, red busway, and one authentic parked-car rear-ending.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 16:42:14 +10:00
m3ultra
81ed13b1ff FLOORED LAZZA 1.5: John's actual first car, '82 KA Laser hatch
Built from his photos: white 5-door wedge, black bumpers + belt-line rubbing
strip, amber corner indicators, wide dark grille bezel (pale headlights vanish
on white paint without it), and the crown jewel -- rear hatch louvres, five
slats that shed one by one on impact like a dropped pie. New optional spec
keys: louvres, indicators, side_strip, wide_grille; build_cars.py now takes
`-- <id>` to rebuild a single car; screenshot harness gains cam=rear.

Reversed-stats rule applied: 54 kW carby IRL -> 21.0 power / 860 kg / 7.8 grip
here. Second-quickest thing in the game behind the Excel, and the chuckable-est.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 16:16:32 +10:00
m3ultra
82dae637a1 Scenery overhaul: real OSM street furniture, FLUX texture set v2, lighting pass
Builder now uses the furniture OSM already carries (footways, lamps, benches,
bins, bollards, bus stops, crossings): raised chamfered footpaths, shopfront
bands, awnings in three fabrics, parapets, layered fig/palm trees, zebra bars,
dashed centre lines, Queen St Mall winged canopies. ACES tonemap + SSAO + fog
in game.gd. flux_texture.sh gains size/luma clamping (FLUX renders "pale" as
blown-out white); gen_textures.sh + check_textures.py manage the set. Woolies
carpark rebuilt textured, parking the real fleet. Fixes: fractional OSM layer
tag crash, zero-length-normal UV projection, blood-red mall pavers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:13:29 +10:00
type-two
565caa6f85 Crash Mode junctions: scripted convoys, Aftertouch, Crashbreaker, medals
9 junction events across 6 levels, auto-generated from real OSM intersections
(tools/osm_junction.py): each crossing street's ways become lane-offset convoy
streams, deterministic speeds/intervals/models -- learnable puzzles, not dice.
Menu lists CRASH JCT entries; crash -> 9s settle with camera-relative
aftertouch on the wreck and a one-shot crashbreaker shockwave (blast() on
traffic, radial impulse on debris, orange boom). Damage tally vs
bronze/silver/gold targets. Fixed zero-normal UV projection that striped
roads. Smoke test drives a full junction run to tally (k, gold).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 00:14:33 +10:00
type-two
7fd11f3806 Four more Brisbane levels + FLUX textures: these scenes pop
southbank, albert_parklands, story_bridge, kangaroo_point + queen_st_mall
rebuilt textured. Level builder now does: FLUX facade/road/grass/water/rock/
steel materials with box-projected UVs (roofs split to plain grey), parks,
multipolygon river water (solid, cars skim it), tree nodes as low-poly cones,
natural=cliff walls, and a procedural steel cantilever truss along a named
bridge way (Story Bridge / Bradfield Highway, 338m). osm_xml_to_json.py
assembles water relations; osm_level_args.py gains trace: mode for race paths
that follow one iconic road. 11 textures via Cloudflare Workers AI
flux-1-schnell (tools/flux_texture.sh, creds from .env never printed).

Data (c) OpenStreetMap contributors, ODbL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 23:48:55 +10:00
type-two
d9b69e688e Brisbane: Queen Street Mall crash-run level from OpenStreetMap
tools/build_level_osm.py extrudes OSM buildings (-col), lays road strips,
Spawn + RacePath empties; osm_level_args.py computes a building-clear spawn on
a named way and race-loop corners from street intersection nodes. game.gd
builds Path3D from GLB RacePath empties, sanitizes spawn bases, and places
bodies BEFORE add_child. Three real bugs fixed: mall canopies (building=roof)
extruded as solid blocks, underground busways rendered at surface, and the
km-wide ground trimesh breaking suspension raycasts (now -convcol). Cars get
continuous_cd for thin building shells. tests/probe.gd is the physics
raycast debugger that found it.

Data (c) OpenStreetMap contributors, ODbL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 23:33:51 +10:00
type-two
c4f11cc7de Batch-import the whole shitboxes stash: 13 more real models
FX/EH/HR Holdens, Kingswood HZ, both Excel imports, 240Z, AE86, KE80, both
Minis, Minicab, Delica coach, Leyland bus (untextured ghost bus, still
menacing). import_shitbox.py grows pitch axis, 1K texture cap and 150k-tri
decimation (cars/ went 501MB -> 146MB). tools/import_all.sh is the rerunnable
manifest with per-pack orientation fixes. Cutlass pack was junk, skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 22:47:38 +10:00
type-two
4c5323ba60 Reversed stats pass + real-model import pipeline (CASSEROLA DX, MORRY)
Stats quietly inverted: shitboxier IRL = better in game. Excel X3 is now the
fastest car; TURDRUNNER is the slowest. tools/import_shitbox.py converts
downloaded models (glb/gltf/fbx/obj/blend) to game GLBs -- normalizes scale,
yaw, ride-height origin. First two imports: Corolla mk7 and Morris Mini.
shitboxes/ stash gitignored + .gdignore'd (its .blend files broke Godot's
headless import scan).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 22:24:36 +10:00
type-two
9a3b0c6c6a CHAEBOL HLYR dynasty (X1/X2/X3) + HARDON CMERE
Excel X1 boxy '86 sedan, X2 rounder '90s hatch; existing X3 renamed into the
family. Camira in head-gasket cream with black plastic bumpers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 22:06:42 +10:00
type-two
9a4d96ae54 MINI MERK, MAXI MERK (6 wheels), HARDON SHAGGEN panel van
New moke body style: open slab tub, no doors, exposed seats, windscreen,
rip-off det_roof canopy on posts, optional extra visual axles (physics stays
4-ray). New van style: cargo box from cab to tail with det_tailgate. Smoke
test ram made deterministic (re-aim loop instead of blind throttle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 21:48:37 +10:00
type-two
09c7b2b280 TURDRUNNER SLUR 500, FLOORED XD LOLTOP, DADSON 420YO repaint
Builder learns 2-door coupes, two-tone accent bonnets, vinyl roof caps and boot
spoilers. Datto repainted orange with vinyl roof per reference. Screenshot
harness gains cam=front for front three-quarter checks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 21:41:37 +10:00
type-two
eb7c189c9f Gameplay systems + procedural Blender car fleet
Modes: Cruise / Crash Mode (60s damage dollars) / Race (3 laps, rubber-banded
rivals). Burnout loop: boost earned by drift, near miss, smash; takedowns refill
and grow the meter to 4x; hard crashes shed det_* panels and trigger Impact Time
slow-mo. Traffic follows the level RacePath frozen-kinematic and goes dynamic
when whacked. tools/build_cars.py builds six Aussie shitbox GLBs (profile
extrusion + detachable doors/mirrors/bumpers/bonnet/boot). Smoke test covers
all three modes headless.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 21:29:42 +10:00