Repository navigation
v0.8.0 — Fun mode, and the island can finally catch fire
Two things: a fourth flight-assist level built for an 8-year-old, and the
discovery that the wildfire this project has shipped three releases about has
never once started in anybody's game.
Fun mode
I fly this with my 8-year-old and we both found the controls too twitchy. There
is now a Fun (kid mode) option in Settings → Assist. It is a different
control law, not a stronger version of the same one:
- The right stick is where the helicopter points. Stick position is the
bank angle and is the dive angle. The command is rate-limited — a full
second corner to corner — so a slammed stick swoops instead of snapping. That
is the actual fix for "too touchy": the softness lives in the command, where
it costs no responsiveness on a gentle input. - The left stick is altitude. Up is up, centre holds the height you are at.
- Turns carve. Bank it and the nose comes round on its own at the proper
coordinated rate, with the collective easing up so the turn holds its height
instead of sagging out of it. - You cannot break it. No rolling inverted, no settling with power, no
running the tail rotor out of authority, and it will not fly you into the
ground in a dive.
Tip past about 30 degrees and it commits: the speed cap opens, you get a real
dive, and pulling back zooms you out of it.
It is not on rails. The same blade-element flight model is still underneath, so
the machine still has weight and still lags behind you — deliberately, because
without inertia there is nothing to carve. Tab can neither reach Fun mode nor
leave it, so a kid pressing everything cannot fall out of it by accident.
The wildfire never started
The only code that lit a fire was behind a developer environment variable.
_boot_ignite() had exactly one caller, gated on ROTORWASH_FIRE_NOW, and
nothing else in the repository called pick_incident() or ignite_at().
So if you downloaded v0.7.0, v0.7.1 or v0.7.2 — three releases whose headline
was a wildfire and a water bucket, with a feature bullet about it on the front
page — the island could not burn. I am sorry; that is a bad one, and it is the
kind of thing worth saying plainly rather than quietly fixing.
A fire now starts on its own a short while after the world settles. Verified in
this exact build, with no environment variables set.
The end of a sortie was unreachable too, in both directions: the "fire is out"
and "fire is lost" checks each had zero callers, so a fire you put out never
registered as won and the HUD's finished FIRE OUT banner had never been seen
by anyone. Both are wired now, both are announced, and a new fire gets called in
once the last one closes.
Also fixed: the burnt-hectares figure — the number the end-of-sortie banner
quotes as your result — went down when you put fire out, because doused
cells were being subtracted. Burnt ground does not un-burn.
Everything else
- Ignition no longer stalls the frame: worst single frame 158 ms → 69 ms.
- Repeat call-outs no longer send you back to ground you already burnt.
- Ending a sortie no longer deletes the burn scar 30 seconds later.
- The scorch pass no longer copies and re-uploads a whole tree buffer per call.
- The assist level persists between runs, and now actually reaches the flight
model — there was no code pushing it there at all before. - The collective tape turns amber when the lever is pinned.
- Smoke reads as a plume rather than a chain of soap bubbles. Better, not fixed:
up close you can still see the individual puffs, and it remains the weakest
thing in the frame.
Honest notes
Fun mode has not been flown by a human yet. It passes 118 flight-model tests
and a lot of measured step responses, but this project's own history says
headless checks do not settle whether something feels right. If it feels
wrong, that is useful and I would like to hear it.
macOS is a universal build (Apple Silicon and Intel). Neither build is signed —
see the README for the two-click way past the OS warning.