Features
Everything Pilot Matter does, in the order the parts of it were built.
Flying it
- Arcade flight model - pitch, roll, and bank through coordinated turns, with a throttle lever the airspeed chases
- Airspeed-driven lift - hold cruise speed and level flight holds altitude; let the speed decay and the wing stalls and drops
- A flight already in the air, or held on the ground - every flight opens at 80 knots, 1390 ft, climbing at 1260 ft/min on a heading of 000, or stopped at a runway threshold with the engine idling, whichever the start state is set to
- Crash detection - settle onto a hillside gently and you fly on; fly into it and the aircraft is wrecked, the controls go dead, and the flight resets itself
- Runway landings - put the aircraft down on the strip softly enough and square enough and it is a landing rather than an arrival, reported as a state the instruments and the game modes both read
- Eight game modes - Runway Landing, Flying through Loops, Dead Stick, Cargo Run, Search and Rescue, Traffic Pattern, Canyon Run and Photo Survey, each three or four stages long and each getting harder at exactly the thing it is about
- Flown, not just arrived at - a traffic pattern marks every leg of the circuit on how near its heading and its height it was held; a canyon run counts a cut only when it is crossed inside the walls and under the ceiling; and a photo survey counts a landmark only when the shutter goes with the aircraft inside the height, the range and the heading the brief asked for
- Flying with no engine - a dead stick opens with the lever already useless and a cargo run can spend its way into one, and in both the nose sets the airspeed instead of the throttle, so reaching a strip is a glide to be planned rather than a descent to be flown
- A landing scored rather than counted - where down the strip it touched, how far off the centreline, the rate it came down at, and how far off the strip the nose was, marked out of a hundred and read off once the aircraft has rolled to a stop
- Approach guidance that is withdrawn - an extended centreline and a bar across the threshold on the first stage, the bar alone on the second, and by the last the strip is where you work out it is
- Gates laid over - a loop course past its first stage lays its hoops off the horizontal and closes them up one way across, so a gate has to be flown at the angle it was laid at rather than upright every time
- Every stage timed - a clock that runs from the moment a stage is laid out to the moment its objective is met, against the best that stage of that mode has been flown in, kept between sessions
- A course you can find your way round - the whole of it drawn on the chart before the first gate is flown at, the gate being waited on pointed out by bearing and distance while it is off the screen, and a gate gone past reported rather than silently waited on
The world
- Procedural terrain - multi-octave fractal Brownian motion (fBm) noise generates the ground every world is drawn on
- The world as data - thirteen environment elements (mountain, canyon, desert, grass, sand, water, river, forest, town, extrude, snow, paint, runway), each declaring the ranges it can be configured through and the algorithm that draws it, so nothing in the world is a placed asset
- Five assembled environments - Highlands, River Basin, Canyon Country, Dune Sea, and Lakeside, picked from the settings panel and regenerated on the spot
- An element editor - the world being flown as the elements it was assembled from, where moving any range one of them declares draws the ground again from the algorithm rather than from another preset. L opens the builder, which carries these rows on Select's panel as one section an element
- An environment builder - L, or the last entry on either menu, opens the world as a canvas to build on: six to start from with Blank Canvas among them, drawn as the one tile the endless world repeats with the camera held over it
- Buildings that stand on the ground - objects drawn as meshes on the ground rather than as ground, built from recipes of simple shapes, standing level on a plinth wherever they are put, repeated across the endless world, and solid: any touch on one is a crash
- A city's worth of buildings - 27 original buildings, from a cottage to a skyline of towers, and seven parks to fly over: skylines, factories, homes, shops, infrastructure and parks
- Your own models - a GLB, glTF, OBJ, STL or SVG loaded from your computer and read in the page, set up in one step that says which insert menus it fits and why not, flown as a plane, placed as a building or laid as a runway over a real strip, kept by the browser, and carried inside a saved environment so it opens anywhere
- Insert City, and roads that snap - a card per building, park and road piece, placed by a click where the pointer previews it; six road pieces laid over the ground, each snapping end to end to the open end of a road already placed
- Five planes, and where a flight starts - Insert Plane chooses the plane a built world is flown in - a trainer, a bush plane, a twin, a jet or a biplane, each drawn by code and each flying a little differently - and places the one point and heading a flight on it opens at, kept with the build and saved in its file
- Element vertex colouring - every band the ground is painted in is a light-to-dark gradient of one base hue, rendered through vertex colours with no textures
- Atmospheric fog - exponential fog fades the world to sky blue in the distance, hiding the far ground and giving the illusion of an infinite world
- A day to fly through - the sun walks across the sky and the light, the sky, and the fog warm and cool with it, from first light through noon to dusk and back round; midday is the light the world was always drawn in, and a paused flight is a day that waits with it
- Weather to fly in - a cloud deck wrapped around the aircraft, rain that rides with it and shears downwind, and lightning that washes the sky and the fog toward white and comes back to the hour it interrupted. Set from the settings panel as
CLEAR,CLOUDYorSTORMY; the deck and the rain are lit by whatever hour the day has reached, and the sky body stands on the arc the light of that hour is coming from, so it reads as the sun or the moon without anything choosing which - Moving water - every surface below the water line rides a swell of two crossing wave trains and catches the sun on the face of each crest, held down to nothing at the bank so the water meets the shore rather than lapping over it, and going flat and dark after dark
- A world with no edge - the square an environment describes is one tile of an endless grid of them, each seeded from its own place, drawn out further than the camera can see and settled against the tiles beside it as it is laid, so there is always more ground ahead, no join anywhere in it, and nothing left to reach
- Worlds that tile - an environment can be one square of a larger assembly, generated in the world's coordinates so the ground runs on across the join, with every shared edge settled to one height and one colour
Seeing it
- Three camera modes - chase, cockpit, and orbit views, cycled with the C key
- Trailing chase camera - the chase view lags behind the aircraft instead of riding a fixed offset, so turns and pitch changes swing the frame around
- HUD - live readout of airspeed, altitude, climb rate, compass heading, throttle (%), and camera mode, on whichever scale the settings panel is set to
- Attitude indicator - an artificial horizon with a pitch ladder and bank marks, reading the aircraft's own nose and wings rather than the controls behind them
- Minimap - a north-up chart of the tile being flown over, with the aircraft's position and heading marked, moving on to the next square as the aircraft crosses into it, and carrying whatever the mode is flying to: a course of loops, the strips of a route in the order they are landed at, or the marker of a search
- Low altitude warning - a blinking caution over the terrain below, measured against the ground rather than sea level
- Photo mode - F2 clears every overlay off the screen for one frame and downloads the view as a PNG named for the moment it was taken
- On-screen controls - a phone or a tablet is given two crosses of pads along the bottom of the screen, attitude under one thumb and power under the other, writing the same controls the keys do
- Flying by tilt - on those same machines the device itself is the stick for pitch and roll, levelled to whatever angle it was being held at when the flight began; which machines are flown that way, and how far the device is turned before it asks for anything, are two rows in the control settings
- A screen you can clear - H collapses the control list to a single hint line and Tab clears the instruments off entirely for clean flying, remembered for the next session
Working it
- Start screen menu - the game opens on its name over a menu offering Start Flight, Game Modes, Controls, and Settings, with the flight held on the ramp until one is chosen
- Pause menu - P freezes the simulation behind a menu offering Resume, Reset Flight, Game Modes, Controls, and Settings
- A mouse on both of them - the start screen and the pause menu are worked with the pointer as well as the keys: the cursor follows the mouse across the entries and a click chooses the one under it, on one cursor the keyboard goes on moving
- Game Modes panel - opened from either menu, listing free flight and every mode there is, and marking the one being played
- Settings panel - opened with O or from either menu, setting the environment, the condition a flight opens in, control sensitivity, fog density, the weather the world is flown in, and the units the instruments read in, all remembered for the next session
- Element editor panel - listing the elements the world places and opening each onto the ranges it declared, with a way back to the preset it started from
- Environment builder picker - the six canvases a build session can start from, read off the environment registry, with Esc or
BACKleaving for whichever menu opened it - An editable start - the condition a flight opens in, the strip in the world, airspeed, altitude, climb, heading, throttle, and camera are fields a pilot sets rather than constants in the flight code, applied at once before launch and at the next reset after it
- Engine and wind audio - an engine note that rises with the throttle and a wind that rises faster than the airspeed behind it, muted with M and remembered for the next session
Building on it
- A simulator API - the Pilot API flies the aircraft against a host's own scene, terrain, and model; the Matter API hands a host the world as one detachable group anything can fly over, with both halves worked on one page in
examples/host.html - Zero build step - runs directly in the browser via ES modules and an import map