FIG. 06 · NO BRAKES: TRAFFIC RUSH · IPHONE AND IPAD
no brakes: traffic rush
a vehicle-dynamics game for iphone and ipad: a tyre model, rigid-body crashes, synthesized engines and physically based light, at up to 120 frames a second on a phone.
SCROLL TO DRIVE ↓
no brakes is an arcade driving game i made for iphone and ipad. you hold a car at full throttle through rush-hour traffic with no brake pedal, and survive by reading gaps, skimming bumpers and timing junctions. under the arcade it is a physics project: a tyre model with a magic-formula force curve, a power-and-drag powertrain in six real gears, rigid-body crashes, engines synthesized from their firing order, and headlights calibrated to the inverse-square law, all inside an 8.3 ms frame on a phone.
a test run
thirty seconds of a no brakes run on sunset blvd, recorded from the iphone simulator with the game’s own autopilot driving (the one i use to test levels). the score climbs with every near miss; the hourglass is the slow-motion meter.
four ways to drive




- career: 50 levels in 5 chapters, easy to brutal, each with one rule stated in one sentence: reach the finish, survive a clock, outrun a chase, thread checkpoints, drive the wrong way, take a jump, keep a glass car unscratched.
- no brakes: endless survival on the map of your choice; traffic thickens the longer you last, and your best run drives beside you as a ghost.
- police pursuit: brakes and nitro this time. units chase and ram, roadblocks close lanes, and any contact is busted.
- express run: one big streamed map of interstates, districts, coast roads, bridges and passes with no loading between them: drop-offs against the clock, cash to bank, and police who don’t like speeding.
FIG. 06.2 · WHAT’S IN THE GAME · SPLITTING LANES










































the garage: sixteen cars
sixteen cars in ten classes, voiced by eight synthesized engines, from a turbo four to a v10 and an electric motor. nine are free cc by models from sketchfab (credited in the game), the rest cc0 or built for it. every one went through the same pipeline: converted to the game’s compact model format, cleaned up by hand, and given a low-detail copy for slower phones.




















the engineering
a driving game is a dynamics simulation that has to feel right, run in real time and never lie in a way the player can feel. most of the work was mechanical engineering wearing a game’s clothes.
a car is a bicycle with a magic formula
the player car is a planar rigid body: a bicycle model (one tyre per axle) with real mass properties. lateral tyre force follows a pacejka-style magic formula of slip angle, and the vertical load on each axle shifts with longitudinal acceleration through the height of the centre of gravity, as it does in a real car.
| parameter | value | why it matters |
|---|---|---|
| mass · yaw inertia | 1,580 kg · 2,100 kg·m² | how quickly it rotates into a turn |
| cg to front / rear axle | 1.32 m / 1.58 m | 54 % of the weight on the front at rest |
| cg height | 0.52 m | 1.4 kN shifts between axles at 0.5 g |
| tyre μ · B · C · E | 2.0 · 11 / 13 · 1.4 / 1.45 · 0.1 | front peaks at 11.4° of slip, rear at 8.7° |
| body roll spring | ωn 9.2 rad/s · ζ 0.54 | a 1.5 Hz roll mode, slightly underdamped |
| wet · snow grip | × 0.85 · × 0.72 | turning circle +15 % · +28 % |
μ = 2.0 is about twice a road tyre. that is deliberate: a phone game has to answer a thumb faster than a real car answers a wheel. but the shape of the curve, a linear region, a peak, and a gentle fall past it, is what makes slides progressive and catchable instead of a switch between gripping and spinning.
power, drag, gears and top speed
drive force is the smaller of the traction limit (11.5 kN) and power over speed (420 kW / v); resistance is aerodynamic drag plus rolling resistance, 0.36·v² + 14·v newtons. below 131 km/h the car is traction-limited, above it power-limited. left to itself it would stop accelerating where the curves cross, at about 338 km/h, but the six-speed box (3.8 down to 0.93, final drive 3.6) reaches the 7,200 rpm limiter in sixth at 284 km/h first: it is geared out, not drag-limited. the hero above climbs through the same gears.
predicting the player
traffic has to know when you will reach the next junction, to time cross traffic and red lights so a gap exists. my first version assumed a flat 3.2 m/s² of acceleration and was 3.5 s late at the first junction, which made the level impossible. integrating the car’s real acceleration curve (the same force model as above, with 5 % lost to gear changes) matched the simulated car to about 0.1 s.
240 steps a second
the physics substeps at 240 Hz whatever the frame rate (60 or 120), and collisions are resolved inside each substep, so a car at 280 km/h moves 32 cm per step, never far enough to tunnel through another. a scrape pushes the cars apart over a few substeps instead of teleporting them, so contact reads as a scrape with sparks rather than a glitch.
airtime and crashes
crests launch the car on a ballistic arc. while it flies, the game flies the arc ahead against the road’s height to predict where it lands, and the camera tilts down over the landing spot. the hollow ridge kicker gives about 0.95 s of air at 157 km/h; landings faster than about 3.6 m/s scrape the floor pan. hit a car and rigid-body physics takes over: bodies dent, cars roll, and a slow-motion replay plays it back from seven camera angles.


engines built from their firing order
there are no engine recordings in the game. each of the eight engine voices is synthesized live from how that engine works: every cylinder firing sends a pressure pulse into its bank’s exhaust at the right angle of the 720° four-stroke cycle, in firing order; each pipe is modelled as a comb filter whose resonances stay put while the harmonics sweep through them as revs rise, which is what makes a real engine howl instead of sounding like a sped-up recording. turbos, superchargers, blow-off valves, overrun pops and the rev limiter are added on top.
the electric ohmen has no cylinders, so it gets a motor model instead: the motor’s electrical frequency and its harmonics, a reduction-gear mesh tone slightly off them, the inverter’s switching carrier (2.4 to 2.9 kHz) with sidebands at twice the motor frequency, and the pedestrian warning hum that fades out by 30 km/h.
light, measured
the headlights are a physically based spot light shaped by a beam-pattern mask. i measured the renderer with a test card: a white card 10 m away reads 3.14 × lumens / 1000, falling with the square of distance. the old 3,400 lm lamps lit a car 10 m ahead ten times too bright; at 400 lm (900 on high beam) they look like real lamps. two colour bugs taught me how much numerics matter in light: half-float overflow on glossy paint made black squares on device, and clamping each colour channel separately turned the city’s orange street lights pure yellow, and with them every car roof that faced them.
a frame budget is a weight budget
at 120 fps everything (physics, traffic, audio, rendering) has to fit in 8.3 ms, the way a design has to fit a mass or a cost budget. that meant measuring before cutting: an express run that took 22 s to load turned out to be ~600 car models each waiting a frame to prepare, fixed by preparing them in one call; shadow maps in tower districts were the real cost on device, so they drop to 1024 px there; and the first launch of every new build warms up its shaders behind an “optimizing for your device” screen so the game never hitches later. on an ipad pro (m4) it holds 120 fps.


tested like a machine
the same autopilot that drove the test run above plays every level, without god mode, to set difficulty: chapter pass rates were tuned to roughly 96, 70, 56, 56 and 10 %. traffic is audited the same way: on two-lane roads the share of runs where an oncoming car made an overtake impossible went from 28 % to 0 % once an oncoming scheduler kept “overtake windows” clear.
how it maps to mechanical engineering
| in the game | the engineering | where it shows up |
|---|---|---|
| tyre model · handling | vehicle dynamics, tyre mechanics | slides you can catch, wet and snow grip |
| body roll and pitch | vibrations: a damped second-order system | 1.5 Hz, ζ 0.54 |
| power, drag, gears | powertrains, aerodynamic drag | traction- vs power-limited, geared top speed |
| junction timing | kinematics, numerical integration | 3.5 s error → 0.1 s |
| 240 Hz substeps | numerical methods, stability | no tunnelling at 284 km/h |
| engine sound | four-stroke cycle, acoustics, resonance | 8 engine voices, no recordings |
| headlights | photometry, inverse-square law | 400 lm measured, not guessed |
| frame budget | design budgets, profiling | 8.3 ms at 120 fps |
| car models | geometry, tolerances | 16 cleaned models, measured wheel radii |
| autopilot sweeps | testing and validation | difficulty set from data |
what i learned
- model first, tune second. when slow motion felt wrong, a version with extra steering lock felt unnatural; normal physics with slightly easier steering felt right. the model kept me honest about which knob was actually wrong.
- measure, don’t guess. the junction timing, the headlight brightness and the 22 s load all had an obvious-looking fix that was wrong. each real fix came from measuring the thing first.
- budgets are design constraints. frame time, triangles and memory behaved exactly like mass and cost: everything is cheap on its own and too expensive together.
- small numbers make visible bugs. a clamp applied per channel instead of to the whole colour, or a 16-bit float overflowing, showed up as a yellow roof or a black square. precision is a design choice.
- automate the test driver. an autopilot that can play a level a hundred times turns “feels too easy” into a pass rate, and a pass rate is something you can engineer toward.
- feel is a specification. players don’t read numbers; they notice when a slide can’t be caught or a landing doesn’t match the arc. the physics had to be right enough that nothing ever felt like a lie.
every feature
| area | what's in it |
|---|---|
| modes | career (50 levels, 5 chapters) · no brakes (endless, ghost of your best run) · police pursuit · express run (one streamed world, drop-offs, cash in) |
| level rules | reach the finish · brakes with limited slow-mo · endurance · police chase · no slow-mo · near-miss targets · checkpoint rush · wrong way · airtime · glass car · adrenaline · speed floor |
| driving | near-miss combos and insane passes · slow motion · nitro · handbrake drift · jumps and air control · red lights for a bonus · manual gears in the modes with brakes |
| cars | 16 cars in 10 classes · 8 synthesized engine voices, an electric motor for the ohmen · bought with cash earned in every mode |
| garage | paints and special finishes (chrome, matte, candy, pearl, neon, chameleon, gold) · 19 liveries · carbon parts · rims and calipers · window tint · plate frames · underglow · horns · flames-and-pops exhaust · cabin: seats, stitching, trim, ambient light, steering wheel |
| world | 10 places: downtown, sunset blvd, midnight rush, harbor bridge, pine pass, interstate, devil's pass, coastal cliff road, skyway, hollow ridge · morning, day, sunset, night · rain, fog, snow that settles · days that move on by themselves |
| police | chases, rams, roadblocks, heat levels, takedowns, a synthesized siren and light bars |
| cameras | chase · first-person cockpit with live mirrors, working gauges and a sat-nav · air camera · crash replay from 7 angles |
| controls | touch, tilt, an on-screen wheel, or a dualsense / xbox controller with rebindable buttons per mode |
| hud | move, resize and hide every piece · tap-anywhere actions · telemetry overlay for recorded clips |
| progress | cash, speed tiers unlocked by surviving, 26 achievements, 94 game center leaderboards, career stats |
| sound | per-car engine synthesis, sirens, horns, crash sounds, an adaptive procedural soundtrack |
| tech | graphics presets low to ultra · up to 120 fps on promotion displays · first-launch shader warm-up · clips saved to photos |
support
how do i steer? touch is the default; tilt and game controllers are in settings › controls. it feels slow on my device. settings › graphics has presets from low to ultra. why can’t i play express run? it gives you 5 attempts a day; getting caught uses one, and they come back at midnight. where are my recordings? in your photos library. new phone? progress is saved on the device; game center keeps your scores and achievements.
the game collects nothing: no account, no analytics, no ads, no tracking. read the privacy policy.
NEXTFIG. 01 · 01 / 06CASE chocolates: automating a chocolate production lineread it next ← BACK TO ALL PROJECTS