tva

A calm flight game for the browser: fly over real places, under the real sky and the real weather, rebuilt as a toon-shaded voxel world.

Version: 1.0

Type: Calm Arcade Flight Game / Progressive Web App (PWA)
Domain: Flight / Maps and Weather

Purpose & Origins

tva is a flight game built for looking out of the window rather than at the instruments. The genre's landmarks are simulators, with checklists, fuel and failures, and arcade games, with missiles and scores. Trans Voxel Airlines takes the same controls and points them at the view: your own city at golden hour, the real weather over it, the sun and moon where they actually are. The world is built from open map and elevation data in the browser as you fly, then drawn as chunky voxels with thin black outlines. The name borrows from Trans-Canada Air Lines, the airline that became Air Canada, which suits a game that takes off from the Toronto waterfront.

Architecture & Technology

A single page written in TypeScript with Svelte and Three.js on WebGL2. Vector map tiles from OpenFreeMap and Terrarium elevation tiles from the AWS Open Data terrain set are decoded in web workers and turned into voxel meshes, two metres to a voxel at the finest detail and coarser toward the horizon. A quadtree streams finer detail where you are and coarser detail far away, cross-fading between levels, while fog measured from the camera hides the edge of the loaded world. The outlines are found in the depth buffer in a single pass, so the scene is only drawn once.

The sky follows the place and the hour. The sun and moon are computed for wherever you are, the weather comes from Open-Meteo as cloud, rain, snow, fog and wind, and after dark the city lights up window by window. The tower talks: calls built around your chosen call sign are assembled from short clips synthesized ahead of time with the open Kokoro voice model, in a female voice (af_nicole) and a male one (bm_george). The procedural music changes key and timbre by region.

Toronto has hand-made tours and postcards; everywhere else is reachable too. Fly anywhere searches 9,488 airports from OurAirports without leaving the browser, the world hands over between regions as you travel, runways settle onto the terrain where a published elevation disagrees with it, and landmarks and short tours are picked from the map's points of interest. A route planner, an autopilot, a landing assist, a logbook and a hangar of four planes with paintable liveries and share links fill out the rest.

Settings, planes, the logbook, postcards and cached tiles are kept in your browser's own storage. It installs as an app and keeps working offline for the app itself, for areas saved as offline packs and for a procedural test city. On a phone it lays itself out for touch, with tilt steering as an option, and a gamepad works anywhere. It also ships as one self-contained HTML file with the voices embedded; the hosted version adds the worldwide airport data.

Scope & Uniqueness

Flight games usually measure the pilot: fuel burned, landings scored, missions failed. tva keeps none of that. There is no fuel, nothing breaks, and flying into a building pauses the game and offers to rewind a minute rather than staging a crash. It still keeps records, a logbook of flights and landings with gentle firsts such as a first night flight or a first landing on a new continent, but it files them away instead of showing them while you fly. There is no account, no leaderboard and no analytics; the only network calls go to the three disclosed services for map tiles, elevation and weather, and everything you make stays on your own machine. The one thing it asks you to chase is postcards, collected by flying close to landmarks.

Privacy & Network

Unlike the rest of this site, tva contacts other services from your browser. It requests map tiles from OpenFreeMap, elevation tiles from AWS Open Data and weather from Open-Meteo. Those services receive the map area being flown over and your IP address. tva never uses your location: the weather follows the aircraft, not you. The procedural test city (?world=test) works offline and makes no network requests. Cached tiles and offline packs can use hundreds of megabytes of your browser's storage.

Screenshots