DOS terminal graphics — Pseudo-3D tunnel rendered with Unicode block elements, box-drawing characters, and 256-color ANSI palette. No graphical window required.
Browser preview — Open index.html in any browser to play the same game rendered as a canvas-based terminal emulator. No build step, no server, no dependencies.
Cross-platform — Runs on Windows, macOS, and Linux. Any terminal that supports 256 colors and Unicode.
Neon warp tunnel — Fly through a perspective-scrolling tunnel with pulsing neon walls, animated ring stripes, and a parallax starfield.
Ship controls — Steer, boost, and fire a pulse cannon.
Obstacles and mines — Dodge rotating obstacle blocks and blinking mines that deal shield damage on contact.
Energy orbs — Collect glowing orbs to gain score and restore shield.
Progressive difficulty — Speed gradually increases with distance. Obstacle density grows every minute. Mines begin spawning after the first minute and escalate over time.
Warp transitions — Every minute the run steps up a difficulty level, and the step announces itself: the tunnel walls shift from blue and cyan to magenta and white, the speed lines down both margins double up, and a >> WARP LEVEL 2 << banner blinks on the HUD for two seconds.
Asteroid field sections — Every two and a half minutes of tunnel the walls come down for fifteen seconds and seventy rocks arrive across the whole screen, spread over the full width and height the ship can reach rather than inside a corridor. A >> ASTEROID FIELD << banner holds the HUD for the whole of it, since the walls being gone is a state you are in rather than an event you might have missed. The pulse cannon reaches the whole screen while it is open, because there is no wall left for a shot to cross. Then the tunnel returns and the section's rocks go with it, so the run's own obstacle density is exactly where the section found it. A section is held off while a warp banner is up rather than opening under it.
Boss encounters — Every three minutes of flying a >> WARNING << banner holds the HUD for three seconds, and then a single large mine appears at the far edge of sight and closes on the ship under its own power, firing back as it comes. It closes at its own rate rather than being carried in by the tunnel, so the fight runs on the same clock however fast the run has got: two hundred units in at fourteen a second, a little over fourteen seconds. It takes twenty pulse hits, is worth 5000 points against the combo multiplier, and leaves three pickups behind - one of each kind, every time. The three land side by side across the block it died in and hold that spacing until the kill's own explosion has cleared the cells they are in, so all three can be read before they start drifting toward the ship. Its shots are aimed at where the ship is on the frame each one leaves, so a shot sent from far out is seconds in the air and easy to leave while one sent from close in has to be read before it is fired; each costs 12 shield. Let it reach the ship and it rams instead, for 50 shield and no reward at all. The boss sits on the tunnel's axis rather than anywhere in the band, which is the one column the corridor is never narrower than, so every one of those twenty hits is a hit you can actually land. The HUD counts its health down as BOSS 17/20 for the whole fight.
Powerup drops — About a third of the mines you shoot down leave a pickup behind, and it drifts toward the ship as it comes in. A green + restores 25 shield, a cyan ! gives ten seconds of rapid fire, and a magenta ~ halves the world's speed for five. The two timed ones count themselves down in the footer.
HUD — Live score, distance traveled, shield percentage, shield bar, and a speed readout showing the current multiple of the starting speed.
High score persistence — The browser version saves your best score and restores it on load. A [ NEW BEST ] banner flashes the moment a run passes it.
Leaderboard with name entry - A run that earns a place in the top ten stops at a name entry screen before the game over screen: three characters, spelled with up and down for the character and left and right for the slot, the way the cabinets took them. The table is drawn on the title screen under the launch prompt, in two columns, as many rows as the screen has room for. The browser version stores the table in localStorage and the terminal version keeps it for the session, and a debug scenario never earns a row.
Replay ghost - The run you just flew comes back on the next one as a grey hollow ship, at the position yours held at the same point of its own flight. It is the path that is recorded rather than the keys, so it retraces exactly what you flew whatever the frame rate was then or is now. Pass the moment the recorded run ended and the ghost disappears, which is the screen telling you that you have outlasted it. Normal runs only, and a run abandoned rather than flown out does not replace the one before it.
Performance mode - A device that cannot hold 30 frames a second has its presentation thinned rather than its gameplay: every second of a run is measured, and a mean frame time past 24 frames a second steps the starfield down from forty stars to twenty-four and then to twelve, with a burst's debris cut to 60% and then 30% alongside. Nothing a run is scored on moves. The tier is named in the footer while it is below the fullest one, and a device that recovers climbs back a tier a second until it is gone.
Pause — Press P to halt a run and show a [ PAUSED ] overlay. The world freezes with it, so once an in-flight flash or shake has finished, the pulsing overlay label is all that still moves. Useful in the browser, where there is no terminal interrupt.
Screen shake — Taking damage jolts the view for a fraction of a second. The browser build offsets the whole canvas; the terminal build jolts only the play area, leaving the HUD and border anchored.
Barrel roll — Q and E roll the ship for half a second. The wings turn through the roll and the hull goes white, and nothing can touch the ship while it does. A cooldown keeps it an escape rather than a way of life.
Combo scoring — Kills strung together inside two seconds chain: the second is worth double, the third triple, and a COMBO x3 counter reads the multiplier back on the HUD. The chain tops out at COMBO x8. Two quiet seconds drop it.
Retro sound — The browser version synthesizes every tone on the spot with the Web Audio API. No audio files, nothing to load: a pulse cannon zap, an orb chime, a damage crunch, a mine explosion, and an engine hum that pitches up with the boost. Most browsers want the page touched once before they will make any noise, so sound usually starts on the first keypress; a browser that permits it outright plays from the first frame.
CRT overlay — The browser version lays scanlines and a soft vignette over the canvas. On out of the box, toggled with C, and the choice is remembered across reloads.
Touch controls — The browser version grows a thumbstick and a pair of buttons the first time it is actually touched, so a phone can fly a run and a laptop with a touchscreen is left alone. The FIRE button doubles as Enter on the menus, which is the only key a phone otherwise has no way to press. They come down again on a window too small for the game to draw on, where the notice asking for the window back has the screen to itself, and come back up the moment the window holds the grid again without waiting for a second touch. Each of the three is capped three ways, and the smallest cap wins: a share of the window wide enough for a thumb, a pixel ceiling past which a bigger circle buys nothing, and the band between the HUD and the footer - which is the cap that was missing, measured in character rows no viewport unit can reach. So on a phone held upright the window decides how big they are, and on a short wide one the band does, which is what gets you smaller controls instead of controls sitting over the shield bar. The FIRE and BOOST lettering shrinks with the circle it stands in rather than being clipped by it, and on a window short and wide enough that the circle is smaller than any readable word the lettering comes off altogether: at that size position and colour already say which button is which, and the word only adds a smudge.
Split screen - The browser version seats two pilots at one keyboard. V on the title screen divides the canvas into two halves, each drawn by the same renderer a whole screen is, with the pilot's name over the frame and that pilot's own keys along the foot of it. Pilot 1 flies on WASD with Space to fire, F to boost and Q / E to roll; pilot 2 has the same shape on the right of the keyboard, IJKL with Enter, ; and U / O. Both launch into the same tunnel, from one seed drawn when the round opens, so the field the two of them start in is the same field; it drifts apart from there, because each pilot reaches a given depth at their own speed. Each half keeps its own score, shield, powerups and boss fight, under the rules the solo game already has, and the higher score takes the round. A wrecked half says so and holds the frame it was lost on while the other pilot flies on. P pauses the round and M mutes it from either hand, and a round opens at whatever the page was muted to and carries that into its rematch. Enter starts a rematch on a fresh seed once both are down, on a window still wide enough to open one - dragged under the floor, the panel asks for the window back instead. Esc goes back to the title screen. A round never reaches the leaderboard, because the table has one name to a row and a round has two pilots. It needs 45 columns a half, so 91 columns of grid, and the key is offered only on a window wide enough to hold one. A round already open and then dragged narrower keeps flying, with each half shortening its own score, distance and shield readings to whatever fits rather than writing them over one another.
Gamepad — The browser version reads a standard-layout controller as a third way in, beside the keyboard and the touch controls. The left stick steers, A fires during a run and confirms everywhere else, B boosts, and the two triggers roll left and right. It feeds the same inputs the keyboard does, so nothing about a run knows which one is flying it, and any pad plugged in can take over. In a split-screen round the whole pad flies pilot 1 — the stick on that pilot's keys, A as that pilot's trigger — because one controller is one pair of hands, and a round read off the solo game instead sent the trigger to the other seat.
Light mode — The browser version follows the system colour scheme. Dark is the game's natural state and stays the default; a system set to light gets the same tunnel re-inked in dark blues and teals on pale paper, and it switches under a run in progress without touching it.
Debug mode — Five test scenarios accessible via CLI flag or URL parameter for isolated gameplay testing.