A 4WD sandbox where the physics comes from the parts. Bolt it on, then drive it.

The 4WD Mod Simulator runs in the browser on DownThunder. Pick one of 34 rigs, fit tyres, a lift, lockers, bars and a rooftop tent, and see what each one does to weight, centre of gravity, tip angle and clearance. Then take it out on twelve tracks, from K'gari's beach to the slickrock at Moab, and find out whether the lift you were so pleased with actually helps.

Role
Just me. Physics engine, 3D world, interface and API, from Claude Design mock-ups.
Timeline
29 September to 25 October 2026: 722 commits and 46 releases.
Stack
Nuxt 4, three.js, own TypeScript physics, Laravel
Client
DownThunder · Browser game · 2026
downthunder.com.au/mod-simulator
The 4WD Mod Simulator: a built 79 Series dual cab on the beach on K'gari, the rusted Maheno wreck ahead, with the mini-map, gear display and speedo on screen
Free in the browserA built 79 Series on K'gari, the Maheno wreck up the beach.
"Everyone has an opinion on 35s and a three-inch lift. I wanted somewhere you could try it before you pay for it."

The questions about mods are always the same. Will 35s fit, what does a rooftop tent do to the way it leans, are lockers worth it? The honest answer is usually “it depends on the rest of the build”, which is exactly the part that is hard to picture.

So the simulator works it out from the build: what the rig weighs, where the weight sits, how far the wheels travel and what grips. The numbers are estimates for comparing builds, and the page says so. But they move the right way, and you can take the result for a drive.

Torsten · Brisbane

// By the numbers

  • 34rigs, from a Jimny to a Unimog on 47s. Five are TrailDays trophies
  • 12tracks from K'gari to Moab, with ten missions on four of them
  • 42mod settings in eight groups, from tyre size to a 270° awning
  • 722commits in four weeks, 29 September to 25 October 2026
01 // Before and after

The same 76 Series, stock and built.

A stock 76 Series wagon in the workshop, then the same wagon after twelve changes: 35-inch mud tyres, a three-inch lift, both lockers, bullbar, spotties, winch, snorkel, rock sliders, roof rack, rooftop tent and awning. The build sheet keeps score. It is 391 kg heavier and its centre of gravity sits 15 cm higher, so it now rolls at 44° instead of 51°. In return it gets 5 cm more clearance and 7 cm more wheel travel, and uses 5.6 litres more per 100 km.

The same wagon after twelve changes, on 35-inch mud tyres with a lift, bullbar, snorkel and rooftop tent, the build sheet at 2,670 kg, rolls at 44°
The workshop with a stock 76 Series wagon on 31-inch tyres, the build sheet at 2,279 kg, rolls at 51°, no changes
STOCK · 0 changesBUILT · 12 changes
02 // The hard parts

Physics on a phone, without cooking the phone.

A browser tab is a tight place for a driving game. The interesting work was making it behave the same everywhere and keep running smoothly on a phone. Each of these comes with a measurement in the commit that fixed it.

The same drive at any frame rate

Problem
A 120 Hz phone and a 30 fps laptop drove slightly differently. At 30 and 120 fps, 6 and 5 of the 102 headless test runs came out different.
What I did
The drive got its own clock: fixed steps of 1/60 s however fast the screen draws, with the leftover time carried to the next frame and the picture blended between steps.
Result
The same inputs give the same drive at 30, 60 and 120 fps, to six decimal places.

Phones running hot

Problem
At 60 fps a phone's GPU ran flat out for the whole drive. An iPhone 15 Pro got hot and throttled itself from 60 down to about 12 frames a second after 20 seconds or so.
What I did
Phones draw 30 frames a second by default, with 60 a setting away. The physics clock takes two steps per frame, so the handling stays the same.
Result
A steady frame rate on phones, and the rig drives exactly as it does on a desktop.

Ground that streams in

Problem
Each track is open ground in every direction, built in tiles as you drive. Working out a tile's ground took 66 ms of the main thread, and you could feel it.
What I did
Heights, water, colours and worn ruts are now worked out in a Web Worker and handed back ready to draw.
Result
5 ms of the main thread per tile. Frames over 20 ms dropped from 202 to 17 in 900.

A freeze the first time

Problem
The first time something came into view, its shaders were compiled on the spot. On the Glasshouse Mountains the first rig by the track cost a single 967 ms frame.
What I did
Shaders are compiled in the background before things come into view, and rigs further up the track are prepared ahead.
Result
No more stall when a rig, a forest or a shadow first appears.
03 // One screen, closely

The Physics panel, annotated.

Press O on any track and the rig turns see-through, the yellow plumb line hangs from its centre of gravity, and the numbers sit next to it. This is the built 79 Series dual cab on the test track.

The Physics panel on the test track: weight 2,510 kg, rolls at 47°, centre of gravity 80 cm, next to a see-through 79 Series with a yellow plumb line
  1. 1Rig and trackSwap either without losing the build. Weather and time of day sit right next to them.
  2. 2ModsSix changes on this rig, one click from the full list of 42 settings.
  3. 3Back to drivingT starts the drive from right here, with the build as it stands.
  4. 4What your mods doWeight, tip angle, centre of gravity, clearance, wheel travel and fuel, worked out again with every change. A tick on each bar marks the stock figure.
  5. 5Centre of gravityEvery part is a mass at a position: a rooftop tent moves the dot up, a bullbar moves it forward. Its height sets the angle the rig rolls at.
  6. 6Three live testsSide slope, rocks and angles run on the rig itself, not as a table of figures.
Side slope test: the 79 Series on a 38° slope, the gauge reading 38° of 47.2°, holding with 9.2° to spare
Side slope. Tilt the ground until it goes. Here: 38° of 47.2°, holding, for now.
Rocks test: the 79 Series on rocks with coloured markers on the wheels
Rocks. Raise the rocks until a wheel lifts. Lockers, low range and traction control change the answer.
Angles test: the 79 Series with red markers along the ground at its front and rear
Angles. Approach, departure and breakover, measured from the actual bar, spare and tray.
03b // Behind the numbers

No scripted rules, just parts and forces.

There are two physics models. Classic is hand-tuned and good for comparing builds. Advanced, the default since 23 October, works the drive out from the parts: an engine with a torque curve, an automatic gearbox, a transfer case with 2H, 4H and 4L, and diffs that are open, locked or limited-slip, with each wheel turning on its own. The body is one rigid body on four damped springs, so it squats, dives, leans and rolls over without anyone writing a rule for it. Press N and the forces are drawn on the rig.

  1. 01Tyres and diffs as constraints. Tyres, diffs and brakes are solved with sequential impulses, the way Box2D and Jolt do it. Each tyre has a grip budget, its friction circle, shared between pulling and turning.
  2. 02Sand and mud that give way. Sinkage and drag come from the Bekker and Janosi–Hanamoto soil models, over 19 surface types. The code says it plainly: tuned, not measured.
  3. 03Readable before literal. Lifts are exaggerated on purpose: the physics counts each inch as 1.8, and the drawing adds more so a lift looks like one. Fine for comparing builds, and the page says it's not an engineering assessment.
A Wrangler climbing rocks at Moab with the force arrows on: weight, springs, grip and where the body touches the ground
04 // On the tracks

Twelve tracks, all of them a bit different.

Real screens from the simulator, no mock-ups. Each track is open ground with a winding track through it, and the rig you built is the one you drive.

A Defender 110 on Cape York, next to a parked white 4WD in red dirt and scrub
Cape York. Creek crossings all the way up the Old Telegraph Track, and the first mission: a rig on fire.
A GU Patrol crossing a deep ford in the High Country, the water gauge on screen
High Country. Fords, a hut and a goat track. The gauge shows how deep you're in.
An Ineos Grenadier on a red dirt track in the Outback at dusk
Outback at dusk. Weather and time of day are one click away.
A Jimny on a muddy logging track in the rainforest of the Forgotten Range
The Forgotten Range. Old logging tracks into the range: wet clay, and a creek every 85 metres.
A stock Hilux on a red clay track under power lines in the Glasshouse Mountains
Glasshouse Mountains. Red clay climbs, deep ruts and Big Red at the top.
A stock 76 Series wagon on soft red sand in the Simpson Desert
Simpson Desert. Soft sand, where tyre pressure matters: six steps, from road pressure down to 6 psi.
05 // After launch

Four weeks, forty-six releases.

DownThunder's changelog is written by hand and has its own tab for the simulator. Most weeks brought a new track or a new rig.

Read the changelog: /versions ↗
  1. 29 SEP · 3.5First version: 13 rigs, three live tests and a rocky track. Builds kept per rig and shareable by link.
  2. 30 SEPDriving on open ground streamed in tiles. Twelve more rigs, and members' own rigs from their garage.
  3. 2 OCTOne water system for creeks, bogs and the sea. Game controllers work.
  4. 7 OCTAdvanced physics, worked out from the parts, and a fixed clock so it drives the same at any frame rate.
  5. 11 OCTK'gari, the whole island, starting on the barge from Inskip Point.
  6. 15 OCTThe first mission: a rig on fire on the Old Telegraph Track.
  7. 19 OCTThe workshop scene. Build my rig opens it.
  8. 23 OCT · 3.66Tropical Coast. Advanced physics becomes the default.
  9. 25 OCT · 3.69Cattle stations, a wash bay at Eurong and two Big Things.
06 // Decisions

Which tools I picked, and why.

Load the game only when someone wants it
The page arrives as a still image and text, so a visit that only reads costs nothing. The 3D code loads on Just drive or Build my rig.
three.js for the picture, my own physics
No physics library and no game engine download. Every rule lives in TypeScript I can read, test and explain.
Deterministic, so it can be tested
A fixed clock means the same inputs drive the same way. 68 test files drive the real scene in Node with an autopilot, and a change that moves a result fails a test.
Share links carry only the changes
A build link holds what differs from stock, and anything out of range is clamped when it's opened.
Honest about its numbers
The page calls them estimates for comparing builds and tells you to check your GVM and your state's rules before fitting anything.
Designed in Claude Design
The page, the phone layout, the HUD and the workshop started as Claude Design mock-ups and were built from there.
// Open for work

Need something people can play with, not just read?

Configurators, calculators, something in 3D. I'll build it so it runs on a phone, loads only when it's wanted, and is honest about its numbers.

Start a conversation