← BB / INDEX
CASE STUDY·2026·IN PROGRESSSOLO. DESIGN, ENGINEERING.

Vantage

Orbital takeover game. You drop payloads from orbit to convert a planet region by region. Not a simulation: no maneuver nodes, no n-body. The skill is alignment and release timing. Work in progress.

STACK

  • TypeScript
  • Three.js
  • WebGPU
  • TSL
  • Vite
Vantage near the day/night terminator: the ship in rim-lit silhouette against an orange to blue atmosphere band, city lights on the night side below, and a ground-track minimap with full HUD
Crossing the terminator: the atmosphere band shifts from orange to blue, and city lights mark the night side below.

INTRO

Vantage is an orbital takeover game. You fly a lone ship in orbit around an inhabited planet, dropping payloads onto the surface to convert it region by region, docking with stations for resources, and evading defenses that escalate the longer you push. It is arcade rather than simulation: no maneuver nodes, no apogee or retrograde, no n-body physics. The skill is aligning a drop window and timing the release, not managing an orbit.

The decisions below are the ones with a real tradeoff behind them: dropping simulation fidelity on purpose to keep the skill arcade, giving units autonomy instead of direct commands, tracking resistance per region instead of behind one global meter, and putting every system, textures, game data, the minimap, and picking, on one shared coordinate space.

01

SECTION

Arcade, not simulation

There are no maneuver nodes, no apogee or retrograde markers, and no n-body physics anywhere in the game. That is a deliberate boundary, not a missing feature: real orbital mechanics would put the skill in planning a maneuver in advance, and the skill this game is built around is reading a live pass and timing a release inside a moving window. Orbit adjustment runs on an arcade thrust model instead, direct prograde and retrograde control on one axis and plane change on another, so the ship handles like something you fly rather than something you plot.

Daylight orbital view with the full HUD: payload status, dock target, wanted level, and heat, over terrain and cloud cover with a blue atmospheric limb and a ground-track minimap in the corner
The full HUD in daylight: payload, dock target, wanted level and heat, with the ground-track minimap bottom left.
02

SECTION

The planet is the centerpiece

The shader work goes into the planet, not the ship. The planet is three concentric layers, a PBR surface, scrolling translucent clouds, and an additive fresnel atmosphere shell, with sun shafts, a city-lights pass on the night side, and ocean glint under direct light. The ship beside it is one loaded model on a stock standard material, plus a single emissive sphere at the tail bright enough to clear the bloom threshold. That allocation follows from what the camera actually looks at: the ship is a small silhouette against a planet that fills most of the frame, so the planet is what has to hold up under scrutiny.

A closer daylight pass over terrain and cloud formations, ship in frame, with a ground-track minimap showing the orbital path and mission markers
A lower daylight pass over terrain and cloud cover, with the ground-track minimap tracing the orbital path.
03

SECTION

Drop and watch, not command

The player places drops; the units that come out of them act on their own, running a fixed loop between the landed pod and a worksite. Nothing in the interface selects a unit or gives it an order: the game is about reading the planet and choosing where and when to commit a drop, not about micromanaging what happens after it lands. Resistance is tracked per region rather than behind one global alarm meter, the alternative the design rules out by name, so pushing one region does not raise the temperature everywhere at once. Discovery follows the same regional logic: tracker density scales with how deep into a region you push, with edges left lighter than the interior.

04

SECTION

One coordinate system, everywhere

Textures, the region and terrain data maps, the minimap, and surface picking all share one equirectangular coordinate space, latitude and longitude mapped straight to UV. A shader samples the same region-ID and terrain-type texture that CPU code samples for picking and gameplay, so there is one authoritative map instead of a render copy and a logic copy that could drift apart. The minimap is a flat rendering of that same texture with a sinusoidal ground track drawn over it, not a separate asset.

A dusk limb view over ocean, ship in frame, with the HUD showing wanted level risen to one star and heat status moving to suspicious
Dusk over ocean, wanted risen to one star and heat climbing to suspicious as the defenses escalate.
05

SECTION

Permadeath, and a curated hosted build

Damage that isn't repaired at a station leads to atmospheric entry and burn-up with no escape pod, so a run ends and stays ended. Texture quality runs through two separate checks, not one. A tier, showpiece, phone, or floor, is chosen before anything initializes, from what the device looks like: pointer type, screen size, memory. That choice decides texture resolution along with tessellation, antialiasing and the post chain, and changing it takes a reload rather than a live toggle. A second check runs after the renderer exists, once the real texture limit is known, and clamps to the smaller texture set when the device can't sample the larger one; skip it and the result isn't a slow planet, it's a black one. The hosted build ships a curated subset of the full baked texture library rather than the whole set: a deployment decision to keep the deployed payload smaller, not a change to how the tiers themselves are chosen.

OUTCOME

In progress at vantage-ecru-five.vercel.app, requiring WebGPU (Chrome 113+ or Edge). The repository is private. The next work is the remaining wanted tiers, defense grid platforms and off-world warships, both designed but deferred from the current build.