FULLMETAL CHICKENS // ftz.dossier · build 2026.09
ALL SYSTEMS OPERATIONAL

Transmission — a real Earth, slightly wrong

FASTER
THAN ZOMBIES

A rail-survival game on the real Earth. Not a map — the planet: true continents, a rail graph of 50 real cities on real corridors, a crew of six you carry between runs, and a slow tide of the dead closing ~14 km every leg — faster than the timetable. Every run is a different line, a different season, a different night sky over the same Europe you could book a ticket to.

  • REAL-EARTH GLOBE
  • 50-CITY RAIL GRAPH
  • GENERATED RUNS
  • CREW OF SIX
  • THE CATCHER
  • ZERO CDN
  • BUILT WITH GENERATIVE AI
  • DEEPSEEK HARNESS · QWEN3.8:27B · 5090 BRAIN
BOARD THE TRAIN READ THE DOSSIER // the playable build (Travel Console M1) rides over on the companion deck — deepnoizer.com/merged/

00 // LIVE SPECIMENThe Orb, live

Not a screenshot. A trimmed build of the game's globe bridge — one WebGL context, one sphere, GeoJSON continents, fifty cities, zero textures, zero CDN. Drag it.

48.86°N · 2.35°E — PARIS (the railhead) — fps · dpr ×— DRAG · WHEEL = ZOOM · IT SPINS WHEN IDLE

// stripped from travel-globe.mjs (≈4k lines) — the live build adds the cloud dome, moon tints, the route pulse, the catcher marker, and a six-seat crew. The projection math below is the same one the game flies.

01 // GRAPHICS STACKEight layers, one sphere

The orb is painted back-to-front like the game paints it. Everything above the dark ocean is additive on the sphere — light is drawn, never decoded from a texture.

L00

Ocean Shell

SPHERE(R100) · MESH PHONG
1 DIM KEY + AMBIENT

One dark night ocean. One mesh, one light. Every layer above rides on it additively — the baseline the terminator carves.

L01

Continent Plates

GEOJSON 110M · 426 KB
LINE SEGMENTS @ R+0.4%

The coastlines aren't drawn — they're borrowed. Natural Earth 110m, fetched once, the same file that feeds the live build's first paint.

L02

The Rail Web

50 NODES · ~60 ROUTES
PATH SAMPLES EVERY ~10–20 KM

Real corridors between real cities. Amber is the planet; cyan is the game. What you run burns blue.

L03

City Lights

POINTS ×2 · SUP-WEIGHTED
ADDITIVE, NO SPRITES

No spritesheets: light is a dot and a discipline. Majors (sup ≥ 1200) burn bigger — the ones where you'll spend.

L04

Route & Labels

TUBE LEG · PULSE TRAVELER
DOM CHIPS OVER THE GL

The only things that move on purpose: your route, its pulse, the chips above it, and the catcher that doesn't ask twice.

L05

Cloud Dome

PROCEDURAL BAND
DRIFT + SHIMMER PASS · 2026-09

A slow-drifting band with a shimmer pass, tuned screenshot-by-screenshot until the operator said the exact words. (Not on this trimmed orb — it's in the live build.)

L06

Terminator & Rim

FRESNEL BACKSIDE
SUN-DRIVEN · DUSK BAND

The halo you can see on the orb right now is this layer, trimmed. In the game the sun owns day, night, and the amber dusk band between them.

L07

Moon Tint

SCENE TINT DOME
NORMAL / RED / GREEN / COLD / DUST + LIVE

The moon has moods; the dome carries them. Five presets and a live auto that drifts with the sky. Shipped with the words "ok works great".

02 // FIELD EVIDENCEAcceptance frames, unedited

Captured from the operator's console during a passing run — D1 · 06:00, ledger fresh, crew posted, lines cold. These are the frames the build was judged by.

The travel surface: a dark satellite globe of night Europe, an amber dashed route from Port Halvor toward Vesper Heights, quarantine markers, world status panel
V10 · 06:00 — THE TRAVEL SURFACE
Port Halvor → Vesper Heights · rail blocked ahead · threat board: Kestrel Cross, 72 km, QUARANTINE
Side-view rail combat: the consist between the rails, zombies closing, Overdrive ready, fire-heavy button armed
V10 · 06:05 — THE FIGHT
Side view, locomotive front (right) · rail 152/960 · kills 4 · OVERDRIVE: READY · FIRE HEAVY armed
Top-down train console: four wagons plus locomotive ahead, health bars, crew chips, overdrive panel
V10 · 06:12 — THE CONSOLE
Top-down, locomotive ahead · M cycling the console · hold the rails: crew at the rails = firepower

03 // THE STEPSHow the globe got here

Five states across the build. Each one was a bet the operator could kick. The logs below are real — from the field log, not the marketing deck.

STEP01

The Cesium Era V3 — V4

The game lived on a real satellite globe: dark tiles, fog of war, 43 cities, the whole route in 3D. Beautiful, heavy, and — per the operator — 3D-ambiguous: the lines scatter "off the cliff," the alert rings bury the route. The verdict was fair. The globe went to the bench; the flat board took the wheel.

STEP02

The Starmap V5

The 2D FTL surface: a flat canvas with the whole rail web laid on the table — board-fit, pan, zoom ×1 – ×500. FTL's nerve, a rail engine's soul. The globe still stood by, unused, waiting for a better body. It got one.

STEP03

The Three Bridge V6 → V7 · 2026-09

A framework-free port of the globe in: three.js 0.185.1, bare import 'three' mapped to the box's own node_modules — no CDN, no build step, node --check between every cut, the user's browser as the only review pipeline. The starmap kept its hands; the globe kept its world — and the bridge is one plain .mjs the whole way: no bundler, no framework, the disk as the source of truth.

STEP04

The Look 2026-09

Four passes, four rounds of screenshot → verdict → ship: cloud shimmer (L05), terminator + rim (L06), the dusk band, and the moon tints — five presets plus live auto (L07). Acceptance words, verbatim: "ok works great". Those layers are now frozen stone.

STEP05

The Resize Hunt 2026-09

Load on one monitor, move the window to the other — the globe stayed pinned to the old window while the page grew. A tiny probe in the field log named the guilty box on the first line: the slot itself carried a stale size from the #map ↔ #globe swap dance. The fix self-heals the host on every resize and re-reads devicePixelRatio per event. The two lines are the before and after, from the same console:

RESIZE · win 1482x1563 dpr1.25 · main 1482x1283@t131 · globe 1482x759@t131 · canvas 1482x759@t131 buf1852x948
      ··· main tracked the new window — globe froze at the old 759
RESIZE · win 1482x1563 dpr1.25 · main 1482x1283@t131 · globe 1482x1283@t131 · canvas 1482x1283@t131 buf1852x1603
      ··· healed on the same line: globe == main · buffer == dpr ✓
03.5 // FIELD NOTES

What to steal — for whoever builds the real Earth next

Six load-bearing tricks from this exact deck, in the order they were learned. All copy-pasteable, all cheap.

φ = (90 − lat) · π/180        θ = (lon + 180) · π/180
x = −r·sinφ·cosθ              y = r·cosφ          z = r·sinφ·sinθ
  · the whole trick: lat/lon → sphere, and its asin/atan2 inverse for the "you are here" readout
  · one convention front to back — put Paris where Paris is, then stop thinking about it
F01

One Dark, One Light

OCEAN: ONE NON-ADDITIVE MESH
GLOW LAYERS: ADDITIVE · DEPTHWRITE OFF

One dark phong sphere with a dim key light. Everything that glows — coasts, routes, cities — is lines or points with additive blending and depth-write off. No textures, no z-fight, and the terminator gets to own the dark half.

F02

Radius Discipline

COAST R+0.4% · RAIL R+0.9%
LIGHTS R+1.2% · HALO R+14%

Each layer sits a hair above the last, in draw order. That's the entire anti-z-fighting rig — and why the coastline stays readable inside the halo instead of flickering with it.

F03

No CDN, No Bundler

IMPORTMAP → LOCAL THREE (635 KB)
ONE PLAIN .MJS · NODE --CHECK

Three is a file on the box, mapped by a three-line importmap. The rest is one plain module the browser loads directly — no build step, no env, no network. The disk is the source of truth.

F04

Screen State Is an Event

RO + WINDOW BACKSTOP
DPR RE-READ · HOST SLOT SELF-HEAL

Move a window between monitors and devicePixelRatio changes — and your layout box can lie to you. Re-measure both on every resize, and if the tree has a swap dance in it, force the host slot back to full-bleed before you measure.

F05

Tune by Verdict

SCREENSHOT → VERDICT → SHIP
FOUR PASSES · FOUR "OK WORKS GREAT"

The operator's browser is the only review pipeline. No parameter on the orb above was tuned by vibes — each one passed a screenshot and a sentence. Field log is the spec; this deck is the marketing.

F06

Stay Static

FETCH ONCE (426 KB), CACHE FOREVER
WORKS WITH THE INTERNET OFF

One geojson fetch, then everything is local state. The page has zero CDN hits and the globe still spins — the most reliable deploy is the one with nothing left to deploy.

04 // THE VISION — WHY A ZOMBIE TRAIN ON THE REAL EARTH

A dystopia lands hardest when it's true.

Faster Than Zombies doesn't draw a map — it borrowed the planet. The Paris–Lyon line is the Paris–Lyon line. The quarantines sit in Marseille, the stockpiles in London, the cold rail in the north — geography you already know, wearing a mask you don't. Nothing here is fake: the only fiction is what happened to it.

And the line never stops. FTL's nerve — the crew, the pressure, the ledger between runs — wrapped around a timetable that closes in faster than you travel. Every run is a new line through the same Europe: a different season, a different moon, a different sky, a crew of six that remembers your choices — and a catcher out on the tracks, ~14 km behind you, that does not.

  • NO FAKE MAPS
  • EVERY RUN A NEW LINE
  • THE LINE DOESN'T STOP
  • GEOGRAPHY YOU KNOW

05 // SPEC SHEETThe numbers, unspun

Everything the page above claims, in table form. If a number on here is wrong, the receipts are in the source.

Surface
WebGL · three.js 0.185.1 · device-pixel-ratio aware, capped at ×2 · one context, one render loop
Geo
Natural Earth 110m — 426 KB, fetched once, cached · coastlines as lat/lon line soup on the sphere
Graph
50 cities · ~60 rail routes — real corridors, sampled every 10–20 km · majors flagged by supply weight
Runs
FTL-style nerve — every run a different line · ledger, W/L, best times, WORKS (permanent train fittings) carry over
Pressure
The Catcher — closing ~14 km every leg · "caught under 12" is the readout that means it for real
Crew
Six, persists between runs — Nadia · Eli · Tove · Marcus · Sana · Petra · morale, injuries, rations
Resize
ResizeObserver + window backstop · dpr re-read per event · host slot self-heals (STEP 05) — survives monitor-to-monitor moves in both directions
CDN
None. Every file — three.module.js included (635 KB) — ships on the box. The page works when the internet doesn't.
Origin
Dreamed and built with generative AI across 2026 — DeepSeek Harness in front of a qwen3.8:27b Ollama server, with the 5090 as the brain behind it. The operator kept the receipts, the screenshots, and the verdicts.