THE RULES OF THE STREET

Every law Midtown Dash lives by — the running contract for how this city behaves.
When a rule changes, this page changes with it.

▶ Play the game Design decisions

01You, the runner

MoveStrafe with arrows / A D, or press-and-drag. You never stop running forward on your own…
JumpSPACE, a quick tap, or a swipe up (mouse/touch) — a hop with a ground shadow that drops away beneath you (height/duration via player.jumpLiftPx / player.jumpSeconds). It only works underground, to hop the subway turnstile bank — it does nothing on the street, and never lets you hop a person or other furniture.
…and the brakeHold ↓ / S — or with the mouse/touch, drag down below your runner (pull back on the reins) or hold right-click — to stop dead on the sidewalk. You can still steer sideways while stopped. The world keeps moving — this is how you let an ambulance pass. Tunable via player.brakeEase.
PauseP, ESC or the ❚❚ button at the top right fully freezes the game (everything stops, unlike the brake) with a PAUSED overlay; press again, or tap anywhere, to resume. Leaving the app mid-run pauses it too, and it stays paused until you come back and tap.
Distance is imperialThe HUD shows feet, rolling to miles past 5,280 ft. (The engine stays metric inside — the proportions contract depends on it.)
Your legs workA four-frame walk cycle keyed to distance travelled (~one stride per 0.8 m) — no floating. The bob stops when you stop.
Hitting solid furnitureRun into a bus shelter, a curb newsstand, a food cart, a fire hydrant, a USPS mailbox or a public trash can and you don't just get bumped like a tourist — you go down: a heart lost, knocked ~50 ft back down the block (the world scrolls backward), then you sit on the pavement for 2 s (everything holds still) before scrambling up. I-frames cover the spill.

02The grid

Cross streetsEvery ~200 m; 60 ft building-to-building (20% are 100-ft majors): ~13-ft sidewalks flanking a ~34-ft roadway with four lanes.
Lane paintThe outer two lanes are parking — their dividers are solid; only the centre travel-lane divider is dashed. No markings inside the intersection box or across any crosswalk.
The one-way gridOdd streets run toward the avenue from your side, even streets the other way. Parked cars (nearly full kerbs, both sides) face accordingly: odd = nose at the avenue, even = backs to it. Crossing traffic and ambulances drive the same way.
Street furnitureNewsstands, hot-dog carts, fire hydrants and DSNY trash cans sit out at the curb edge (not against the buildings) and are solid — run around them, on the building side, or you go down. A pair of USPS boxes (a blue collection box + its green relay box) also stand at the curb mid-block every other block (off bus-shelter blocks) and are solid too. Nothing spawns in a crossing or on its crosswalks. The sidewalk crowd steps around this solid furniture too — nobody walks through a cart, newsstand, hydrant, trash basket or bus shelter. Signs mount by their left edge on the pole, with no ordinals (W 13 ST), and the blade rides in the crowd layer so pedestrians at or behind it pass behind the sign, not over it.
Sign colours by neighbourhoodStandard NYC green citywide — but designated historic districts get brown signs, like the real DOT: Greenwich Village (W 9–14) and Ladies' Mile (W 15–24) here. The map lives in CONFIG.signs.
Pole stack, top to bottomMast arm + signal head · street-name blade · CITY SPEED LIMIT 25 · pedestrian signal.
Steam ventsA decorative steam-vent field (~3.2 × 3.4 m, like the real ConEd ones) sits in the sidewalk mid-block every other block — decor.ventEveryBlocks (0 = off), sized by ventWidthM / ventLengthM.
Citibike docksA row of blue Citibikes sits on the far sidewalk, between it and the bike lane, every decor.bikeRackEveryStreets cross streets (0 = off).
Cellar doors [experiment]Flush metal cellar hatches (Bilco doors) — dark diamond-plate, a cross seam and corner bolts — tucked against the buildings, their long axis running along the walk. Pure decoration (closed, you run right over them); decor.cellarsPerBlock are scattered along each block every decor.cellarEveryStreets cross streets (0 = off).
Storefronts [experiment]Every building block — on both sides of the avenue — gets at most one deterministic storefront dressing, so they never overlap each other, and they z-sort properly: a nearer pedestrian or a crossing vehicle correctly passes in front, a farther one is occluded. Near ones grow and ride off the bottom (never squish at the near plane). Many blocks are plain; the rest are awnings — seven NYC types: a bodega text-box, a striped sloped shop awning, a dome/bullnose, a long residential canopy (on posts, with an address plate), a flat cafe awning, a scalloped-valance one, and an open pipe-frame vinyl. Cafe/restaurant blocks also spill outdoor dining — bistro tables + umbrellas behind a planter rail, set near the wall so they stay out of your line. Now and then a stretch of consecutive blocks is given over to a full NYC sidewalk shed (a long, occasional multi-block run) spanning the whole width of the walk — a galvanized pipe frame (standards, ledgers, diagonal cross-bracing), a plywood plank deck lit by sodium tubes, the signature blue parapet board along the curb, and a green plywood hoarding on the building. You run under it, and it is layered bay by bay: the bays you have passed under draw over you (their posts and deck in front of the runner), the bays ahead draw behind you — never the whole block at once. The plank deck turns glassy as it comes over you, so the lane you are steering in reads through it; a shed farther up the block is solid.
Trash bagsPiles of tied black garbage bags set out curbside only for DSNY pickup — in rows (a multiple of three) of random pile sizes. The crowd steps past them, but unlike the solid curb furniture they're soft: run into one and you plow straight through — the bag bursts, loose trash sprays out, a few flies puff up, and you wade a beat slower with a little jolt, but you're never knocked down. Each bag bursts once.
Traffic conesOrange traffic cones dot the sidewalk. Like the bags they're non-lethal — but hard and light, so instead of plowing through you punt one: it rockets up off your foot, tumbles end-over-end, grows as it arcs toward the camera and clatters off the bottom of the screen. A small stumble, but never knocked down. Each cone is booted once.
Bus-stop sheltersA glass shelter (flat roof, the blue NYC bus-stop sign, and a bench on the building side facing the road — so riders sit without stepping toward the bus lane) sits on the curb half of your sidewalk mid-block, every decor.busStopEveryStreets cross streets (0 = off). It's solid — run around it on the building side. Steam vents never share its block; it keeps its exact shape and just scrolls + fades away (no skew, no jump).
Subway entrancesA pair of entrances appears at the curb on CONFIG.subway.streets. To ride you need a fare card — a fare you collect from a pickup and HOLD (max one), shown in the HUD. Run into an entrance with a card and you swipe in (the card is spent) and duck into the subway. Either way you descend onto the fare-control area: a turnstile bank scrolls up to you (CONFIG.subway.gateZ). With a card it's OPEN — green cap, arms swung clear — and you just run straight through (no jump). No card? The bank is closed (amber, arms across) with a knot of riders exiting toward you: JUMP it (SPACE / tap / swipe-up) — time the hop so you're mid-air as the bank reaches your feet — while steering to dodge the riders (you can't hop a person). A big ▲ JUMP! prompt flashes as the closed bank comes into range. Clear it and you run on down the platform; meet it flat-footed and you spill over backwards — the same fall-down as a hydrant or hot-dog cart — for −1 heart. Touch a rider anywhere in the weave and it's an ordinary bump instead, like bumping any tourist — a heart lost, no spill or setback. But fare-beating has a cost: clear the turnstile and CONFIG.subway.police.chance of the time the cops come for you — officers rush in from up ahead and home on your lane, one after another. Weave to keep them off your plane; touch one and two of them cuff you on the spot — arrested, game over. You shake them only by boarding the train or surfacing. (Set CONFIG.subway.gateOpensWithCard false to skip the gate entirely once you've paid.) Either way you're now on the underground station stage — a tiled tunnel platform (cream tile + the green station band, yellow platform edge, rails, an enclosed ceiling of fluorescent fixtures) that you run for ~2 city blocks, dodging steel support columns (solid — they knock you flat) and the platform crowd, past painted steel I-beam poles down the track bed, before you surface back onto the street. Where you come up depends on whether you caught the train: ride it and you come out of the ground at the NEXT station up the line (a real station skip); walk the whole platform without boarding and you just come up the far exit of the SAME station (the other side of that crossing). From the last station in CONFIG.subway.streets the ride loops back to the previous one (e.g. 168→157), so a marathon runner never runs out of stops. The bed is a four-track express station — your local track, a far local, and two express tracks down the middle that express trains roar through on (no stop) every so often, screeching as they pass. A full 8-car train (its line marker — a white triangle, ring or pair of bars on a blue square — on the sides + ends) stands ahead at your platform. When you reach it the announcer sounds the iconic two-tone door chime (Web Audio, so it plays everywhere — including installed iOS PWAs) and, where the browser supports speech, calls “doors closing, please stand clear”; a countdown bar shows how long the doors stay open — dash to the platform edge AT an open door (you board only through a door, not the solid car side) for an EXPRESS ride (a big distance skip + score bonus); miss it and you just keep running (no freeze; the train screeches out forward). At the very end of the platform a wide EXIT staircase takes you back up to the street. You're invulnerable through the descend/ascend/ride transitions but vulnerable on the platform. A few riders climb up out of the street entrances (rate: CONFIG.subway.emitEverySec). And rats scurry across the platform now and then — rarer than the crowd (CONFIG.subway.rat) — scampering toward you; touch one and it costs a heart, just like bumping a rider, with a squeak.
Bike-lane flexpostsWhite delineator bollards (orange reflective band) line the buffer's centre the length of the avenue — NYC's protected-lane barrier. They break for each crossing, never standing in the intersection or its crosswalks.
Lane arrowsOn the approach to every crossing, each drivable travel lane gets a straight-ahead arrow (never the bus lane or the bike lane). Exactly one lane is a turn lane instead: left-turn on odd streets (the leftmost lane), right-turn on even streets (the rightmost drivable lane). The bus lane itself carries a flat ONLY / BUS legend (the two words stacked, painted dead-flat on the asphalt) repeating up the lane and scrolling with the world — it rides all the way off the bottom edge (unclamped near the camera, like the bus & subway), skipped through crossings.

03One clock rules every light

All right-of-way derives from CONFIG.signals via js/entities/traffic.js — retime it once and everything follows.

The cycle5.5 s green · 1.2 s yellow · 9 s red (cycle 15.7 s) for the avenue.
Three signal headsEach intersection shows two avenue mast arms — one on each curb, reaching out over the roadway, both lit the same colour you obey — plus a cross-street head on the near side, turned side-on to face the crosstown traffic (not you), lit the opposite colour (green↔red, yellow↔yellow).
Pedestrian signalWhite walker while the avenue has green; orange upraised hand otherwise. Always in lockstep with the mast arm — it cannot drift.
VisibilitySignals draw on their own layer above traffic — a car can never hide a light — and intersection furniture sinks smoothly out of frame as you pass (no pops, no see-through).

04Right-of-way (nobody collides, ever)

Avenue trafficDrives at its own varying speed; anyone closing on the car ahead matches its speed and holds a car-length gap (with the occasional horn). On red — or while anything is still in the box — cars hold at a stop line before the crossing and queue.
Crosstown carsMay enter a crossing only early in the avenue's red (your orange hand), so they're clear before the walker returns. One car per travel lane at a time. They brake for tourists in their path — never for you. Walking into one costs a heart.
Ambulances outrank everyoneThey cross whenever they like, signal or not. From the first siren note, nobody new enters the box; cars already caught inside roll out, and the ambulance waits at the avenue's edge until they've cleared its path.
Pedestrians tooTourists on both sidewalks stop at the edge of an ambulance's lane and wait — nobody walks over an ambulance. And it's mutual: the ambulance holds while anyone on foot is in the lane ahead of its bumper. You are the one exception — it will not stop for you.
Foot traffic40% of the sidewalk crowd walks your way, backs to you (crowd.sameDirectionShare). Everyone's legs actually stride — walk cycles keyed to each walker's own pace, frozen when they stand, with the bob to match. No floating.
NYC1 rulesThe default. Ordinary walkers keep right and walk straight — yours on the right, oncoming on the left — and now and then a New York moment plays out ahead: a zigzagging walker, someone on the wrong side, a phone-reader slowing the people behind, a hurry-and-stop, a step-out, a photographer's backstep, a group walking three abreast, friends stopping to meet, and umbrellas opening in a drizzle. The ones that cut into your path show a warning first and leave you a way through. A link with only a seed (?seed=…) plays the classic rules it was made with; the game-over card's link names its rules (&rules=nyc-v1).
The mixCabs, ordinary cars, box delivery trucks, and a lone city bus every ~2 streets in its terracotta lane (traffic.busEveryStreets; the first appears 3–7 streets in). Wheels spin at each vehicle's own ground speed, on every street.

05Ambulances

Odds20% per intersection (ambulance.chance).
The warning comes firstA two-tone siren plus red/blue flashes: the screen edge it will burst from pulses, with a light splash at the corner itself. Once the siren sounds it is committed — stopping doesn't make it re-time its ambush; it crosses anyway. That's the dodge.
How it drivesNot fast (2.4–4.6 units/s), in the correct travel lane for the street's one-way direction, timed (± jitter) to sweep your sidewalk as you arrive.
Touching itInstant game over. No hearts, no i-frames — nothing saves you.

06Scoring, and the combo you can't see documented anywhere else

Distance paysYou earn scoring.pointsPerMetre (0.35) for every metre run, scaled by any active multiplier. Running is the floor; everything below is how you beat someone who ran the same distance.
Near missesSqueeze past a tourist without touching them — inside a band of collision.nearMissBand (0.16) beyond the width where you'd collide — and it scores. Too far away is nothing; a hair closer is a lost heart. The gold sparkle and the Nice! / Excuse me! / Coming through! pop are the tell that one registered.
The comboThis is the whole scoring game, and nothing in the HUD explains it. Each near miss raises a combo counter, and a near miss is worth scoring.nearMissBase (5) × the counter — so they are worth 5, then 10, then 15, then 20… The counter holds for scoring.comboWindow (2.5 s) after each one and then resets to zero. Chain them and the points compound; pause and you start again at 5. A COMBO ×N label appears above the runner from ×2 up.
What kills a comboLetting 2.5 s lapse without another near miss — or taking any hit at all. Both a tourist bump and a knock-down reset the counter to zero, so the safe line and the scoring line are not the same line. That tension is the game.
Multipliers and bonuses☕ coffee is both a speed gamble and a scoring buff: for powerups.coffeeSeconds (6 s) you run at speed.coffeeBoost (1.4) × your speed and your score rate is multiplied by powerups.coffeeScoreMult (2) — the HUD shows ×2 beside the score. It does not stack; a second cup restarts the clock. 🍕 pizza is the game's only heal: it refills one heart — you start with lives.start (3) of lives.max (5) — and only when you are already full does it, like a second fare card you can't hold, convert to scoring.pizzaPoints (250) instead. Catching the express train pays a distance skip and a bonus.
Only the best survivesYour record is stored the moment you beat it, not at game over — so a crash, a swipe away, or the browser reclaiming the tab can't take a record run with it. The game-over card compares against the record you started with, which is what lets it say ★ NEW BEST ★.

07Sound

Horns are hornsA dual-note blare (F4+A4, nasty C#5 on top): hard attack, flat sustain, abrupt cutoff — never a beep, never a fade. Used sparingly: ambient honks roughly every 8–16 s at 45% odds, tailgaters occasionally — and the city goes quiet on the game-over screen.
SirensA continuous two-tone wail from warning until the ambulance is gone; stops on mute.

08Rendering laws