WHAT CHANGED
JET3D has been in active development since 19 August 2026 — around 250 changes across 25 working days at the time of writing. This page is the honest version of that: what changed, why, and in several cases what was tried, measured, and taken straight back out again.
The reverts are here on purpose. A flight model is tuned by guessing, measuring and throwing away the guesses that do not survive contact with a stopwatch, and a changelog that lists only the wins describes a project that does not exist.
November 2026
1 November — a lead circle, mouse aim, bots that defend, and cars that burn
- The gun lead circle. Point at an enemy and a ring appears where your rounds will meet it — bullet drop and time of flight included — and lights up when your crosshair is inside. Checked offline: rounds fired at the ring pass within a metre of the target's centre. Off in Settings if you would rather judge it yourself.
- Mouse aim. Settings → Mouse aim, then click the view: point where you want to go and the aircraft banks and pulls itself there, wings level once it arrives. Left button guns, right button SPEAR, Esc to let go. The keyboard stays the default and keeps working alongside it.
- Bots that defend. Every bot used to defend the same way, too late: an ace with someone on its tail lasted about six seconds, the same as a rookie. Now the better the pilot, the earlier it spots you and the longer it corkscrews — measured over a hundred fights each, an ace on an ace's tail now lasts a median 21 seconds, a veteran 19, a regular 11, and a rookie still about 5. Tried and thrown out, because they were shot down faster: a textbook break turn towards the attacker (a steady turn is exactly what a lead predictor tracks best), random jinks, and reversing the roll.
- The streets fight back — well, burn. Cars blow up now. A round on a car or a missile into an avenue throws it up on a fireball and drops it back as a charred, burning shell, and a burning car sets off the one beside it, so a strafing run down a busy street goes up in a chain. Rounds leave burn marks on the ground and blasts blacken it; both fade after a couple of minutes, and the traffic is back a minute later.
- In TEAM BATTLE and DEATHMATCH the death screen now counts down to your respawn instead of saying you are watching until the match ends.
- The page now says what the game is to a search engine: a free jet fighter game in the browser, rather than "battle royale".
October 2026
31 October — TEAM BATTLE, RANKED, and bots worth fighting
- TEAM BATTLE. Six a side, and nobody stays dead: you are back in four seconds, on your own side of the ring. Every aircraft the other team loses is a point — shot down, rammed or flown into a hill — and the first side to 40 wins, or whoever is ahead on the clock. The score sits at the top of the screen. QUICK PLAY now puts you straight into one.
- Levels, and RANKED at level 30. Signed in with Google, every match you fly earns experience toward your level, win or lose. At level 30 the RANKED button on the menu opens: TEAM BATTLE with a rating on it. Five placement matches, then BRONZE, SILVER, GOLD, PLATINUM and DIAMOND in four divisions each, and ACE at the top. Beating a stronger side pays more than beating a weaker one, and leaving a ranked match early counts as a loss. The scoreboard shows what the match was worth and when you are promoted.
- Bots that use their guns. They track you properly now — anticipating your turn, rolling into it, holding the nose on — and how well depends on the tier: a rookie chases where you were, an ace flies where you are going.
- No more firing squad at the merge. Bots no longer fire rockets into your face, wait a moment after spawning before launching anything, and keep their guided missiles for range where you have time to pull flares.
- Bots that can turn round. A bot that overshot the ring used to corkscrew off into the distance and die out there; now it reverses like a pilot. They also stopped hiding in the clouds.
- CHASE is a 100-second round. Stay red to the clock and every red wins. A countdown says how long is left.
- In DEATHMATCH and TEAM BATTLE the ring stops closing at three minutes, so the end of a match is a fight, not a queue to die at the edge.
- Fixed: after a long wait in a lobby, the ring and ceiling were drawn ahead of where they really were. Fixed: the big missile warning stayed frozen on screen after you were shot down.
29 October — a front door, a career, and towers that come down
- The menu is the game. Behind the buttons now is the real city, live: a flight of three running the avenues between the towers at street level, pulling vapour through the turns and lighting the burners on the climbs, with a red pair half a lap behind — golden hour or dusk, cut like a film.
- QUICK PLAY. One click from the menu to the air: it finds a match, fills the empty seats with bots and starts.
- A career, signed in or not. Every match flown is worth experience — kills, assists, the win, top of the board — and there are twelve ranks to climb, CADET to LEGEND, each with its own insignia. The scoreboard counts it up and tells you when you are promoted; the menu shows your rank and record.
- SPLASH. Shooting somebody down puts their name under your crosshair, with how you did it and your kills this life.
- Three rockets bring a tower down. Hits crack the facade and blow out the windows; the third brings it down — the slender ones snap and fold over, the rest collapse into a cloud of dust and rubble, and the shake reaches you in the air.
- A real afterburner. Your exhaust is a white-hot core tapering to orange, and on boost it goes blue with shock diamonds down the plume.
- A cleaner HUD. Speed and G beside the crosshair — the G turns amber, then red, as you near your airframe's limit — one line at the top for whatever the match needs to tell you, and the controls shown for your first few flights. The developer readout in the corner is gone.
- Bots in the kill feed go by the callsigns the lobby gave them, not "Player 4".
21 October — where shots land, who you are, and what time it is
- Storms. Now and then a match is flown under a low grey lid, in rain, with lightning lighting up the sky and the thunder arriving a few seconds later. The rain falls from the bottom of the cloud band — climb out of the top and you are in the dry. Visibility is no worse than a clear day. The streets go wet and shine, the shadows go soft, the volcano disappears into the murk, the bolts come down a few kilometres off, and the rain is heard on the airframe. The lobby tells you what light the match will be in.
- The city moves. Thousands of cars drive its lanes, on the right, and from dusk — or under a storm — their lights come on with the streetlamps, so from the air the avenues are rivers of white and red. Every tall tower carries red aviation lights, blinking; they mark the spires, and they go dark when a tower comes down.
- Everybody's engines glow — orange cruising, blue-white on boost — so you can see who is running and who is burning energy, at any range.
- Kills explode properly: a soft fireball, debris and a pall of smoke that hangs where it happened.
- DOUBLE KILL, TRIPLE KILL, REVENGE. The kill feed says how — GUN, MSL or RAM — and a missile kill flashes on the shooter's screen like a gun kill does.
- Hold Tab for the score, live, in the middle of a match — or tap SCORE at the top on a phone.
- Missile READY tells the truth. The SPEAR and HOUND bars showed only the trigger reload, but no launch is allowed while four of your own missiles are in the air — and a HOUND can stay up for 42 seconds. So the bar read READY while the key did nothing. It now counts that wait too and says 4 IN AIR when that is why. Practice applies the same limit, so it no longer teaches a habit that fails online.
- Pick the sky. The host chooses it in the lobby (any, day, golden hour, dusk or storm), and Settings has a choice for practice.
- Searchlights sweep the sky over downtown at dusk, and the lit city warms the cloud base above it.
- Rounds splash in the lakes, wrecks hit the water in a fountain of spray, and anyone flying very low kicks up a wake of dust or spray behind them.
- Photo mode has a camera: H, then drag to swing round your aircraft and scroll to zoom.
- G on the pilot: hold a pull at your airframe's limit and the edges of the view grey in, clearing as you ease off. It can be turned off in Settings, as can the edge arrows.
- The cockpit view has a cockpit: windscreen posts, the canopy bow, the glareshield — and in a storm, rain on the glass, swept back by the air.
- Wind: airspeed is heard, rising in level and pitch with speed.
- The mountains on the horizon are shaded, with snow on the volcano, instead of flat cut-outs.
- PULL UP. When the line you are flying meets the ground or a tower within about two and a half seconds, it says so, and sounds it. Level flight over flat ground never trips it.
- Hits are confirmed online. The crosshair marks every round of yours that lands and flashes on a kill — the server tells the shooter, so it is never a guess.
- Which way to turn. The nearest enemies you cannot see get a red arrow at the edge of the view with their distance, a missile chasing you gets an orange one, and when you are hit a red bar shows where it came from.
- A match card as the match goes live: the map, the time of day, the mode.
- Banks of cumulus on the horizon, lit by the time of day; muzzle flashes at the gun ports, in practice too.
- Shots land somewhere. Rounds into a tower throw sparks and concrete dust, into the ground a kick of earth; tracers stop at walls instead of flying through them. A missile that hits anything solid explodes — flash, fireball, debris, a column of smoke — and one that loses you to a flare goes off in the air, so you can see the flare worked. Hits on an aircraft throw sparks off it. Blasts and collapsing towers are heard, late if they are far.
- Time of day. Each match is lit at noon, at golden hour, or at dusk with the city's lights coming on — chosen by the server, so everyone in a room sees the same sky.
- Cockpit view on C.
- Gamepads work, with analogue sticks — half a stick is half a turn. And a DECOUPLE button on touch screens, which had no way to do it at all.
- The flare lesson is real: the tutorial now puts an actual guided missile on you and passes when a flare takes it off.
- Chat and callsigns are filtered, and reports can end in a ban — for a day, a week or for good, told to the person with the reason and the date. The address behind a ban is never stored, only a one-way key of it.
- Who you flew with: your account page remembers the signed-in pilots you share matches with. Guests are told at the end of a match that their kills are not being kept.
- Fires and fallen towers are on the minimap.
- Bots stop ramming. Mid-air collisions were twice what guns killed. A first version that broke off any close pass cut collisions but also cut the bots' kills nearly in half and sent some into the ground; it was replaced by one that only breaks off a genuine head-on merge.
20 October — a city worth fighting over
- Real streets. The ground is drawn per pixel now: carriageways with lane lines, crossings and medians, pavements, verges, parks, a paved plaza. 1,763 of the old trees were standing on roads; trees now line the avenues and fill the parks instead.
- Light. Sun shadows, a sky with a sun in it, glass that reflects the sky, four facade styles, snow on the peaks, lakes in the canyons, and bright things — fires, afterburners, nav lights — that glow. The glow turns itself down on a machine that cannot keep up.
- Three new aircraft: SABRE (the tightest turn in the game), BOLT (the fastest by far) and MAUL (three rockets a pass). All six got new paint and navigation lights.
- Buildings burn where they are shot — and enough damage brings one down. Hit high and it pancakes; hit low and it topples toward you and lies across the street, solid, for the rest of the match.
- Clouds are solid from above. You could look straight through the cloud deck at the whole city.
- Bots hunt. With nobody near, a bot used to fly to the middle of the map and then straight on. It now goes and finds somebody: team matches that took ninety-seven seconds to finish take fifty-five.
- Decoupling is rationed — a second and a half at a time, eight seconds between, three times as sharp while it lasts — and the tutorial teaches it.
17 October — F hands you the aeroplane
The Cobra is gone. F now decouples the nose from the flight path: the engine idles, you keep sliding the way you were going, and you can point anywhere — including backwards — while you do. Point it at an incoming heat-seeker and the seeker loses your exhaust.
14 October — measuring why bots hit mountains
Bots occasionally fly into terrain during a long chase. The suspected cause was that a bot has no sense of what a turn costs: it holds full stick at eighty metres a second and keeps holding it, while the flight model charges for that turn in proportion to the square of how hard it is and the inverse square of how fast you are going.
A harness was built to measure it properly — a real match, real bots, reading the actual network snapshots rather than a simulation of them. It produced a useful surprise: terrain now kills a bot roughly once every eight minutes, against thirteen combat deaths a minute. The dramatic version of this problem had already been fixed months earlier and nobody had re-measured.
Then the obvious fix — ease off the turn when slow, which is what a real pilot does — came out worse on every measurement and was reverted. Easing the pull does not make a turn cheaper; it makes it longer, so the saving per second is handed straight back.
14 October — advertising moved off the game
Adverts used to sit on the main menu and on the between-match scoreboard. Neither is a screen anybody arrives for, and both are now gone — along with the entire mechanism behind the between-match one, deleted rather than switched off. Adverts live on the flying guide and the about page, and nowhere the game is playing.
7 October — the camera through a Cobra
Pugachev's Cobra — the manoeuvre where the nose swings past vertical while the aircraft keeps travelling the way it was going — was landing correctly but the camera arrived late, so the last half-second looked broken. The view now rejoins the aircraft on exactly the clock the manoeuvre itself runs on, rather than on a fixed guess.
6 October — the Cobra, and the week it took to work
- The manoeuvre shipped, and did nothing, because three separate copies of the input-building code each quietly dropped the new field. There is now one shared builder and a test that asks the flight model what it actually reads.
- It was then found to fire on Q as well as F — two buttons had been given the same bit. Every button in the protocol was audited, and a test now presses each one alone and fails if anything else arrives with it.
- SPEAR and HOUND stopped taking turns: both missiles can be fired in the same moment, with separate reload clocks.
- Four times the engine thrust, four times the drag — the aircraft accelerates far more decisively while the top speed and the turn rate stay where they were.
- A jet that ran out of speed pointing straight up used to stop dead in the air. It comes down now.
- Deathmatch had never worked: five separate rules read "same team, leave them alone", and in a one-team mode that spared everybody from everybody. Twelve aircraft flew around unable to hurt each other until they met a mountain. Measured before the fix: zero kills in seventy seconds.
- The end-of-match scoreboard now says who won and shows the whole match's kills, deaths and assists.
- Finishing the tutorial is an event rather than a fade-out.
5 October — the room, the hangar and the phone
- The hangar explains what you are choosing between instead of showing three names.
- Bot difficulty now adapts to the people actually in the room.
- A phone is no longer treated as a small desktop; aircraft selection works with the handset on its side.
- A city with real streets, rather than a field of blocks.
- One missing sound or model can no longer take the whole game down with it.
2–4 October — accounts, moderation and the move to Cloudflare
- Optional Google sign-in, so a callsign can be yours and a record survives between sessions.
- An account page with two buttons that need nobody's permission: export everything held about you, or delete the account outright.
- Server-enforced muting — a muted player's messages are never sent to you at all, rather than hidden once they arrive.
- A leaderboard ranked on kill/death with a minimum number of matches, so it measures flying rather than free time.
- Backups, rate limits, and storage that cannot kill the game when a browser refuses to co-operate.
- Lint, build and the full test suite run on every push.
- Hosting moved to Cloudflare Pages.
- A successful sign-in killed the whole server — a typo in a branch no test could reach, because every test signed in with a credential that failed earlier in the same function. Fixed, and the test now stubs a verification that succeeds.
September 2026
23–30 September — fuel, and a map with no ring
- Boost is a tank you spend rather than a button you hold, and a kill refills it.
- Ring Valley: a second map, sealed, with no closing ring — a different shape of fight from the highlands.
- Link previews stopped being grey boxes.
17 September — chat, a tutorial, and a bug eating whole ticks
- A tutorial that stops the world to explain something and then hands it back.
- Chat, with the moderation tools that have to come with it.
- Flares became worth carrying.
- A single mistyped variable was throwing away entire server ticks — every aircraft in every room, several times a second.
- Two people can agree on a match before either of them connects.
1 September — somewhere to fight
A city was built into the middle of the map: a skyline with supertalls, room to fly between them, facades that read at speed, and towers that stop bullets. The buildings are capped at the cloudbase so the fight stays underneath the weather.
August 2026 — building the thing
31 August — phones
Touch controls, fullscreen from a home-screen icon, and three fixes for problems that only exist on a handset: silent audio, a HUD crowded with text, and a menu button that did nothing.
26 August — weapons, sound, and the netcode checkpoint
- Guns take five hits to kill, with smoke showing the four before it, so a fight is something you can watch play out.
- The three airframes were brought closer together, and their identity moved into what they carry instead of what they weigh.
- Unguided missiles, then guided ones, with flares and a lock you can hear building.
- An announcer, engine notes, gun echo, flare pops — and a tool for conditioning sound files so they sit in their slots properly.
- Two matches can run at once, and a player who arrives late can watch instead of being turned away.
- The last of the multiplayer stutter: the server now simulates exactly the inputs it has acknowledged, and the snapshot carries every piece of state the physics changes. Both stutter families came from breaking one of those two rules.
- The update rate went to 30 per second on half the tick cost, and the server moved to a dedicated core in Frankfurt.
- The game was renamed JET3D.
19–25 August — the flight model, four times over
The first week was mostly the same argument with the aeroplane. A jet that flew where it was pointing but not where it was going; a camera that swung off-frame during a roll and locked up near vertical; rolls that went the wrong way; a plane that kept turning after the stick was released, then tumbled when it did not.
Four separate attempts at auto-levelling were written and three were reverted, because every one of them fought the player for the stick. What survived is the rule the game still runs on: the flight path is pinned to the nose, and the pilot is never argued with. Slow flight genuinely falls, tracers stopped lying about where the rounds actually go, and the bug that made the fastest aircraft the worst fighter turned out to be in the bots' aim, not the aeroplane.
Underneath that: server authority, client-side prediction, snapshot interpolation, and a scale test to forty aircraft at sixty frames a second inside a measured bandwidth budget.
How this page is maintained
Written by hand from the project's own commit history, and updated when there is something worth reporting rather than on a schedule. Entries are grouped by the day the work landed. If something here is wrong, the suggestion box reaches the person who wrote it.
BACK TO THE GAMEHow to fly · About · Privacy