πŸ“– LAST MILE← WIKI

One tap is one step. A hundred taps is a tenth of a mile. Run it at your hour.

An idle game about running, built on one rule you can check yourself in the first ten seconds: a tap is a step, a thousand steps is a mile. Train your stride until each tap is worth dozens of steps, then train the things that run without you β€” cadence, a metronome, a pace group, a coach, a tailwind β€” until the miles pile up whether you are at the keyboard or not. The ground underneath changes constantly, and so does what it does to your pace. And every mile eats your shoes: run a pair into the ground and retire them, and the miles you put on them become Leather, a permanent bonus on everything you run afterwards. Version C rebuilds the look as cut cardboard: everything on the road is a piece of card with a jittered hand-cut outline, a paper core edge and a hard offset shadow, and the sky is whatever hour it actually is where you are sitting.

β–Ά PLAY LAST MILEVERSION Gby Long Way Round

STORY & LORE

The Rule

Everything in the game is counted in steps and only ever displayed as miles. One tap is one step. A hundred taps is a tenth of a mile. A thousand is a mile. You can verify it on a fresh save before you have bought anything, because the first stretch of road is always open road, where nothing modifies anything.

Cut From Card

Nothing in the scene is a smooth shape. Every piece β€” the runner's thigh, a tower on the skyline, a mile post, the ground itself β€” is an irregular polygon whose vertices are pushed off the line and whose long edges are subdivided, so a cut looks sawn rather than ruled. Each piece is filled with a baked paper texture carrying fibre speckle and corrugation ridges, edged in the pale colour of a torn card core, and dropped onto a hard unblurred shadow so the layers read as physically stacked. The jitter runs off a fixed seed per piece, so a cut looks hand-made but never crawls between frames.

Your Hour, Not The Game’s

The sky is not on a game clock. It reads the player's own device time and interpolates a nine-stop palette across the real twenty-four hours β€” sky gradient, the colour and strength of the light falling on the card, star density, and how hard the street lamps burn. Run at two in the morning and it is the middle of the night, with a moon, a full starfield, lit windows in the towers and a warm sodium pool on the road. Run at lunchtime and it is flat daylight with no lamps at all. Night is the hero look and gets the deepest contrast.

The Road

The route is generated from the mile marker itself, not from a dice roll, so the same stretch of road is the same stretch of road on a reload. Open road is the baseline. A track is fast and kind to your shoes. A trail is slow and abrasive. Climbs cost more than half your pace; the descents that follow give it back and then some. Sand is the worst of both β€” slow and brutal on tread. Ice is oddly gentle on shoes and only slightly slow.

Shoes

You wear one pair at a time and they are consumable. Tread is spent per mile, scaled by whatever you are running on, so a mile of sand costs nearly twice what a mile of track does. When a pair is done you drop to a quarter pace β€” a limp, not a stop β€” until you lace up something else. Pairs you have already bought stay in the closet through everything, including a retirement.

Leather

Retiring the pair on your feet is the reset. It costs you every training level and every dollar of grit you are holding, and pays Leather based on the tread you actually put on them. Each point is a permanent +5% pace and +4% grit. Lifetime distance β€” the only number the leaderboard cares about β€” is never touched by it.

HOW IT PLAYS

Grit

The spendable currency, earned per mile rather than per tap, so a fast mile and a slow mile are worth the same and the choice of where to spend your effort stays honest. Energy Gels multiply it.

Tapping vs. the engine

Stride raises steps per tap and is priced on a steeper curve than the automatic lines, deliberately: it should carry the opening and then get out of the way. Cadence, Metronome, Pace Group, Coach, Tailwind and Second Wind are the engine, and by the time the second or third is running the game plays itself.

Terrain scales everything

The current terrain multiplier applies to taps and to the automatic engine alike, and is shown live in the header. Running the wrong shoe on the wrong ground is the single biggest thing you can get wrong.

Shoe affinity

Three pairs have a terrain they were built for and get Γ—1.5 on it: Trail Grips on trail, Road Racers on open road, Carbon Plates on track. Road Racers are also punished on trail and sand. The rest are honest all-rounders that trade pace against tread.

While you are away

The automatic engine keeps running for up to eight hours after you close the tab, and the tread it uses is charged to your shoes exactly as if you had been there.

What is drawn when

The skyline, the ranges and the ground are baked once into an offscreen canvas and only rebaked when the terrain or the light of the hour actually changes. Only the runner, the markers, the lamp and the particles are redrawn per frame, which is how a scene this layered still holds 60fps.

Why the multiplier prices are so steep

Legs multiplies pace, which becomes miles, which becomes grit. Energy Gels multiplies grit directly. Both feed the same loop, and each contributes log(effect)/log(cost growth) to the exponent on income. If that sum reaches 1 the game grows faster than itself and the numbers run away to nonsense in a matter of hours. It was 1.28. Steepening both price curves puts it at 0.68, which gives distance a healthy polynomial curve instead of a vertical asymptote. Tread Care is floored at βˆ’65% for the same structural reason: shoes that never wear out mean you never retire, and retiring is the entire long game.

THE GROUND

Pace scales how far every step carries you. Wear scales how fast your shoes are consumed.

TerrainPaceShoe wear
Open RoadΓ—1.00Γ—1.00
TrackΓ—1.35Γ—0.75
TrailΓ—0.80Γ—1.55
ClimbΓ—0.55Γ—1.20
DescentΓ—1.70Γ—1.45
SandΓ—0.62Γ—1.80
IceΓ—0.90Γ—0.55

THE CLOSET

One pair on your feet at a time. Tread is in miles at Γ—1.00 wear; abrasive ground burns it faster.

ShoeCostPaceTreadBuilt for
Hand-Me-DownsfreeΓ—1.0030 miβ€”
Daily Trainer900Γ—1.35120 miβ€”
Trail Grips12.0KΓ—1.25260 miTrail (Γ—1.5)
Road Racers160KΓ—2.1090 miOpen Road (Γ—1.5)
Carbon Plates2.40MΓ—3.4070 miTrack (Γ—1.5)
Century Boots45.0MΓ—2.301,400 miβ€”
Ghost Soles1.50BΓ—6.80600 miβ€”

TRAINING

Stride is the tap line. Everything with a steps/sec figure runs on its own.

LineBase costGrowthPer level
Stride8Γ—1.24+1 step per tap
Cadence30Γ—1.18+3 steps/sec
Metronome900Γ—1.20+40 steps/sec
Pace Group24.0KΓ—1.22+600 steps/sec
Coach700KΓ—1.24+9,000 steps/sec
Tailwind35.0MΓ—1.26+150,000 steps/sec
Second Wind2.00BΓ—1.28+2.6M steps/sec
Legs3,000Γ—2.05All pace Γ—1.25
Energy Gels900Γ—2.25Grit per mile Γ—1.35
Tread Care8,000Γ—1.90Shoe wear βˆ’12%, floored at βˆ’65%

VERSION HISTORY

VERSION G2026-09-14
  • The shoe-wear meter moved off the road and into the HUD. It used to float over the bottom-left of the scene, which is exactly where the site stamps its WowCool.World watermark β€” the two sat on top of each other. It belongs with the rest of the telemetry anyway, and it leaves the road as nothing but road.
  • Medal toasts moved to the bottom of the road. They were landing on the runner's head.
  • The training list clears the watermark too, via bottom padding on the scroll area.
  • The runner is about a third bigger and is now the subject of the frame rather than a detail in a landscape.
  • The camera moves. A stride bob that quickens with pace, plus a kick on every tap, so a tap is felt by the frame and not just by the counter.
  • Speed lines, at two depths β€” torn slivers of card flicking past behind and in front of the runner, absent when standing still and heaviest at full pace.
  • A ghost trail at speed: two or three faint copies of the runner smeared behind them.
  • A foreground. The bottom third of the frame was bare card β€” the part closest to the camera and the one with nothing in it, which is backwards for a sense of speed. There is now a kerb with stones and scraps of litter running past at full parallax.
  • A flat shockwave pressed into the road on every footfall.
  • Tap numbers spawn clear of the runner instead of on their chest, are throttled to one every 90ms so a fast tapper gets a fountain rather than an illegible smear, and fade before they can be clipped by the top of the panel.
  • THE SHOP IS CUT FROM THE SAME CARD AS THE ROAD. The rows were flat list items separated by hairlines β€” correct for a settings screen and completely at odds with the scene. Each row is now a card with a hard offset shadow, a cream cut edge down the left that turns volt when you can afford it, and corners clipped just off square. The tab strip and the HUD have torn edges, and the panel carries the paper grain.
  • New icons, drawn with the same bakePaper and roughen the scenery uses: a torn paper tile with the line's own mark stamped on it β€” a footprint for Stride, a pendulum for Cadence, a whistle for Coach, and so on β€” instead of a flat coloured disc with a letter in it.
  • Performance: the runner is rendered once per frame into an offscreen tile and the ghosts are blits of it, rather than four full cut-paper redraws. The kerb and litter shapes are roughened once per panel size instead of every frame. Still 61fps under the regression suite's load test.
VERSION F2026-09-13
  • THE LEADERBOARD SCORE CHANGED. It was hundredths of a mile, which crosses the site's 1e12 ceiling after about three days of real play β€” the long-game simulation reaches 5e10 miles at 72h, which submits as 5e12 β€” and from then on the board was frozen. The board now ranks DISTANCE POWER, 1000 points per factor of ten. Lifetime distance still survives every retirement.
  • Scores submit once a minute instead of once every five seconds, and immediately on leaving the page.
  • Saves split by cost: localStorage every three seconds, the cloud every fifteen.
  • Fixed: on a short phone the upgrade column had no min-height:0, so it refused to shrink below its content and the whole frame scrolled instead of the list.
VERSION E2026-09-10
  • Made the canvas respect the host's safe-area inset. The host reserves the bottom of the frame for its own chrome and publishes it as --safe-bottom; the DOM overlays already honoured it but the canvas did not, so on a phone the artwork was drawn underneath the very controls that had moved out of its way.
  • Fixed on a real phone: tab labels could wrap at 390px, and the shoe meter and tap hint sat under the host chrome.
  • Verified inside the real site for the first time, not just a test harness. All three games mount in the real GameFrame behind its PLAY gate, complete the SDK handshake, render, and the host receives score, save, load, tokens and achievement messages. Signed in, the host persists saves to /api/saves keyed to the account, so progress genuinely follows a player between devices.
VERSION D2026-09-10
  • Fixed a runaway economy found by simulating three days of play. Income scaled as roughly grit^1.28 β€” any exponent above 1 blows up in finite time, and it did: a simulated day reached 8.7e63 miles. Legs went from Γ—1.55 to Γ—2.05 cost growth and Energy Gels from Γ—1.48 to Γ—2.25, putting the exponent at 0.68 and turning the curve from an asymptote into a healthy polynomial.
  • Tread Care is floored at βˆ’65% wear. It previously trended toward zero wear, which silently deleted the prestige clock: shoes that never wear out mean a player never retires and never earns Leather.
  • Added severe-only cheat detection (the shared IdleKit.guard). Saves are signed and checked, values beyond anything a curve can reach are caught, and a counter that grows faster than the game can produce trips the watchdog. The thresholds are set deliberately absurdly high: an autoclicker is a legitimate way to play an idle game and nothing here punishes one β€” taps past ~50/sec simply stop being credited rather than counting against you. The only consequence of a trip is that scores stop being submitted; play continues, the save is never touched, and achievements keep working. Unsigned saves from before this existed are grandfathered in, and only rejected if they also carry impossible numbers. It is a speed bump against editing localStorage, not security β€” everything runs on the player's machine, so the server remains the only real authority.
  • Reworked Leather from three days of simulation. Its bonuses were linear in an unbounded currency, so more Leather bought more pace which banked more tread which paid more Leather β€” three simulated days reached infinity. Pace and grit bonuses now follow sqrt(Leather), and the payout curve is flattened from ^0.55 to ^0.40, which turns the prestige loop from divergent to convergent.
  • Every point of Leather now also keeps you jogging without any training levels at all (sqrt-damped, and deliberately outside the Leather pace multiplier so it cannot compound against itself). A retirement wipes every training line, so without a baseline a player who retired and closed the tab had zero income and the run was dead permanently.
  • Separated shoe wear from the Leather bank. Equipping a fresh pair used to reset the same counter the payout was computed from, so anybody who sensibly upgraded their shoes silently threw away all their prestige progress β€” three simulated days produced exactly zero Leather.
  • Retiring is now gated on a payout worth at least a quarter of the Leather you already hold. It previously offered itself the moment you had banked a single mile, which is a strictly losing move that wipes every training level, and a greedy player could loop on it forever and never progress.
  • After all of it, three simulated days runs 230 miles at 4h, 225K at 24h and 5e10 at 72h with about one retirement every two hours β€” steady polynomial growth with the prestige layer engaging throughout.
VERSION C2026-09-10
  • Rebuilt the whole look as cut cardboard collage. Every piece on the road is an irregular hand-cut polygon filled with baked paper texture (fibre speckle plus corrugation ridges), edged in torn-card cream and dropped on a hard offset shadow. The runner is now a jointed cardboard puppet on the same hip/knee/ankle and shoulder/elbow rig, so the gait animates a collage.
  • The sky follows the player's real local clock across a nine-stop 24-hour palette β€” gradient, light colour and strength, star density and lamp intensity all interpolate. It replaces the old cycle that advanced with distance. A street lamp, moon and lit tower windows appear only when the hour is dark enough to want them, and the runner's breath shows on the cold hours.
  • New athletic UI: one volt accent, tabular numerals on everything that moves, uppercase micro-labels, thin rules instead of boxes, a pill terrain readout, a hairline shoe-wear meter and pill buttons. The clock is shown on the road so it is obvious the time is yours.
  • Scenery is baked to an offscreen canvas and rebaked only when the terrain or hour changes; the scene holds 60fps with the extra layering.
  • Fixes found while rebuilding: the paper blotches repeated at tile size and read as stains across the ground; the runner's torso was far too narrow beside its limbs and read as a scarecrow; the cap covered most of the head and read as a helmet; tenth-mile posts were as tall as a fence; the moon was drawn behind the street lamp; and toasts covered the header on a phone.
VERSION B2026-09-08
  • Moved onto the shared idle kit (public/gamedata/_shared/idle-kit.js): a procedural sound engine, newest-wins cloud save, and a fix for time lost while the tab is hidden.
  • Real sound. Ten synthesised effects β€” tap, footfall, UI click, purchase, upgrade, achievement fanfare, prestige, mile chime, denial and snap β€” through a compressor and a short synthesised plate reverb. Nothing is downloaded, so there is no asset to 404. Rapid tapping is voice-throttled so a burst can never clip, effects brighten with progress rather than getting louder, and there is a mute button whose setting persists.
  • Cloud save now genuinely follows you between devices. Both stores are written on every save and the newer of the two wins at boot, on a timestamp β€” the cloud is not automatically right (you may have played this device offline since) and neither is local (you may have just put an hour in on your phone).
  • Fixed the worst bug a browser idle game can have: requestAnimationFrame stops while the tab is hidden or the phone is locked, so the game earned nothing at all for that time. Elapsed time is now measured and credited on return, capped at eight hours.
  • Tuned for touch as well as desktop: every control is at least ~40px tall on a coarse pointer, the HUD and shop respect the device safe-area insets, scroll chaining is contained, and layout is verified with no horizontal overflow at phone portrait, phone landscape, tablet and desktop.
  • Footfalls are pitched and filtered by the ground you are on β€” ice and track ring, sand and trail thud β€” so the terrain is audible as well as visible. A soft chime marks every whole mile, and a pair giving out snaps.
  • New MEDALS tab showing all ten achievements as a grid, earned ones lit, with a running count.
  • Phone layout fixes: the runner was sized off the viewport and swallowed the entire road panel; the current mile sign was drawn on top of him; and the tap hint collided with the shoe-condition bar. The runner is smaller and stands further left, and only markers still ahead of him are drawn.
VERSION A2026-09-08
  • First catalogued version.
  • Built on the fixed rule that one tap is one step and 100 taps is 0.1 miles, verified on a fresh save before any upgrade applies.
  • Endless procedural route generated deterministically from the mile marker, across seven terrain types that scale both pace and shoe wear.
  • Seven pairs of shoes, three with a terrain affinity; tread is the prestige clock and a blown-out pair drops you to a quarter pace rather than stopping you.
  • Ten training lines: Stride for taps, six automatic engines, and three multipliers.
  • Leather prestige paying floor(tread miles ^ 0.55); lifetime distance is never reset, so the leaderboard only climbs.
  • Side-view runner animated from real hip/knee/ankle and shoulder/elbow joints, wearing the pair you have equipped.