What it does
Touchdown missions come from createTouchdown. The world is a wrapping heightfield with flat landing sites, and
each round lights a set number of them with score multipliers. A landing needs both feet on flat ground and is graded
by vertical speed, horizontal speed and tilt: good earns points times the multiplier and a fuel bonus, hard earns
fewer, and a crash earns fewer still and can cost fuel. Fuel is the only life, bought per coin. Missions change
gravity, atmospheric friction, engine power, burn and steering, and an abort rights the craft, kills the drift and
burns hard. The camera follows the arcade rule: the far view scrolls near an edge and zooms in close to the ground.
Taxi missions come from createTaxi. Each screen is authored: walls that destroy the cab on any touch, numbered
fare pads, a fuel pad, a gate in the top wall, optional gravity wells, and hazards that move along paths, bounce in a
box, fall and restart, or blink on and off. A passenger appears on a pad and hails, and a tip starts running down.
Land there with the gear out and the passenger walks to the cab, boards and names a pad, or asks to go up once every
pad is served: the force field opens and the cab carries them to the next screen. Delivery pays the fare plus the tip,
unless a rough landing spoiled it. Landing on a passenger costs money, and running dry in flight is a crash.
Both sets sit on thrust-craft, which owns the flight, the landing grades, the gear, the fuel burn and terrain
contact. You step either game with plain input, read its state and readouts for the HUD, and drain events such as
landed, crashed, hail, deliver and gate to present.
Features
- Lit pads and multipliers — flat sites with multipliers, a configurable number lit each round, and an unlit multiplier for landing elsewhere.
- Graded landings — good, hard and crash by vertical and horizontal speed and tilt, with both feet on flat ground.
- Fuel as the life — fuel per coin, a tank cap, a bonus for good landings, a crash penalty for an unspent allowance, a low warning and a delay before game over.
- Missions — gravity, friction, thrust and burn multipliers, controlled or momentum rotation, and tilt limits.
- The abort — rights the craft, brakes and burns hard, between a minimum and maximum burn time or until it has climbed enough.
- The landing camera — edge scrolling and a zoom close to the ground, given as the view to draw.
- Passengers and fares — hailing, walking, boarding, fares within and between screens, a running-down tip and penalties.
- Gear, fuel pads and the gate — gear that must be out to land and can lock the side thrusters, refuelling for money, and a force field to the next screen.
- Hazards and wells — static, path, bouncing and falling hazards that can blink, and gravity wells.
- A fleet and shifts — extra cabs at money thresholds, speed and take-off lights, and screens in order or drawn at random.
Good for
- Lunar landers in the style of the 1979 arcade Lunar Lander, with lit pads, missions and fuel per coin.
- Landers on other worlds, with a generated landscape, different gravity and different pads and scoring.
- Ferry and taxi games in the style of the 1984 home-computer game Space Taxi.
- Rescue shuttles that collect survivors from pads and leave by the top of the screen.
- Cargo and courier runs on a timer, through screens of black holes and timed lasers.
- Mixed craft, since a rotating lander can run taxi missions and a thruster cab can run touchdowns.
Make it yours
Each game is a definition, and the presets are starting points. A touchdown definition holds the world width, the view and zoom rule, the terrain, the sites and how many light, the craft's hull, thrust, lever positions, burn, turning and landing tolerances, the missions, fuel and scoring, and the abort. A taxi definition holds the screens, the shift, gravity, the cab's thrusters, tank and landing speeds, the fleet, every fare, tip and penalty, the fuel price, the timings and the hazard speed.
Two presets show how far apart they are. lunarLanderPreset is fifteen sites with multipliers from 2 to 5, four lit
each round, a 16-position lever, four missions, and Easy, Normal and Arcade as the cabinet's own fuel-per-coin
settings. spaceTaxiPreset is nine screens, shifts in order or random, six cabs, fares, tips and an extra cab, with
Easy, Normal and Arcade scaling the landing speeds, fuel use and hazard speed. Beyond them, a Martian lander on a
generated landscape with a 6x pad, or a moon-base courier whose screens have black holes and blinking lasers, is new
data rather than new code.
A quick look
A lander from its preset, a coin and a start, then a step with the controls:
const LM = game.landerMissions;
const g = LM.createTouchdown(LM.lunarLanderPreset({ difficulty: 'normal', mission: 0 }));
g.insertCoin(); g.start();
g.step({ turn, lever, abort }); // lever 0..1 snaps to the lever positions
g.readout(); // score, time, fuel, altitude, speeds
for (const e of g.drain()) { /* round, landed, crashed, abort, zoom, low-fuel, over… */ }
Works with
thrust-craft— the flight model under both rule sets, used as a package; use it alone for free flight.vector-terrain— a generated landscape with flattened sites makes a touchdown terrain.vector-2dandvector-font— to draw screens and craft as line art.cave-flyer— for cave shooters with turrets, reactors and a towed pod.
Good to know
- Touchdown terrain is one wrapping heightfield, and sites must be flat stretches of it.
- Taxi hazards move on fixed patterns; hazards that react to the cab, teleporters, switches that toggle walls and moving pads are not modelled.
- One passenger at a time, and one player.
- Some values in both presets are estimates, such as the taxi's gravity, thrust and tip rate, where no disassembly exists.






