Repository navigation
KERNEL PANIC v3.1.0 — Expansion + Compatibility
Expansion + Compatibility. A fourth story act, a weekly that changes every week, a leaderboard that refuses to take your word for it — and three new ways to install the game on Linux.
3.0.0 sat in pre-release because four defects were still in it. They are fixed, and this is a full release.
Compatibility — it installs almost anywhere now
Before this, the game was a loose binary unless you were on Arch.
- AppImage — any distribution. Download,
chmod +x, run. Nothing installed, nothing left behind. 32 MB. On machines without FUSE, run it with--appimage-extract-and-run. - Void Linux —
xbps, built from source. Void ships Godot 4.7.2 and its export templates at exactly the version this project uses, so the package compiles the game rather than wrapping a prebuilt binary, and it runs the game's own test suite as its check phase. There is also a script that produces an installable.xbpson the spot from a release binary. - Nix / NixOS — a real flake.
nix run github:mafuzyk/kernel-panicplays it;nix buildexports it from source withgodot_4_7;nix develophands you the engine and the export templates with nothing installed on the host. - Arch / Artix keep the two AUR packages,
kernel-panic-binandkernel-panic-git, both now at 3.1.0.
The dependency lists in all three are read out of the binary, not guessed. A Godot export links only glibc and reaches X11, EGL, ALSA, PulseAudio, dbus, fontconfig, libdecor and udev through dlopen — invisible to ldd, to xbps's automatic scan and to autoPatchelf. Each format declares them the way that format needs.
Expansion
A fourth act: macOS
/System, /Applications, /Library/Updates and kernel_task. BEACHBALL plants a spinning wheel that costs you time instead of health. GENIUS is a lancer that blinks to a better angle when you dodge too early. The act boss, KERNEL_TASK, flips the colour of the entire field mid-dodge while it prints its stack at you.
Story mode has something to chase
It used to be a list of waves — enter, kill, leave.
- A voice. The process you are purging answers three times per stage, in both languages, with an arc across the four acts.
- A target. Every stage publishes a time, announces its contract on the intro card — no damage, inside the time — and grades the clear S / A / B. Never a gate: a B still unlocks the next stage, and a lazier replay never downgrades a rank you already earned.
- A build. Each stage issues its own, hand-picked and always the same. That is the opposite of endless on purpose: there the build is rolled and the roll is the game; here it is the premise.
- A rule. Each stage imposes one of five field hazards: pools that bloom on their own, rings of orbs closing from the edge, a field that shrinks every wave, no integrity given back, or a cast that speeds up as the stage runs.
- A reward. Clearing an act unlocks a field tint for the endless modes.
Three processes that change the rules, not the numbers
- ZOMBIE dies into a
<defunct>husk and comes back at half integrity unless a second shot reaps it in time. - CRON never attacks. It schedules, on a visible clock, and the cycle will not end while it lives.
- SWAP drags you and the loose motes toward itself. Dash is the only thing that ignores the well.
Waves attack in turns
There is a ceiling on how many enemies commit to an attack at once, rising with the cycle and the difficulty; whoever misses the window keeps repositioning instead. Lancers and spewers lead their target now, by an amount that starts at zero and stops where dodging is still possible. And enemies no longer all orbit you on the same side — when you are pinned against a wall they converge on the side that cuts the escape.
Weekly changes every week
The week rolls two traits and its own enemy roster from the week number, announced in the menu before you enter. SWIFT, ARMORED, SWARM, ELITE, CRAMPED, NO DASH, GLASS, OVERDRIVE, FRUGAL, VOLATILE.
An optional weekly leaderboard
Self-hosted, and it does not trust anyone. You send the run's input — the commands, five bytes per physics step — and the server re-simulates the match with the game itself to find out the score. A submission claiming a score the simulation disagrees with is refused, and so is one with a tampered input buffer.
It ships switched off, with no server configured. Submitting sends your whole run and your name off your machine, so nothing is sent automatically and a run only travels when you press the button. With nothing configured the game is unchanged, and a board that is unreachable says so in one line. See server/leaderboard/README.md.
Fixed
The four that kept 3.0.0 in pre-release:
rm -rf /ends the run instead of freezing it. Typed in the pause terminal, it left the tree paused with the pause panel back on top of the ending.- Switching language stops resurrecting the old menu — and finishes the job. Closing settings brought back the old chrome and labels, and half the shell stayed in the previous language.
- The Win11 stage stopped burning the eyes. Its field was blowing out to pure white at the centre. It is dark glass now, and every stage theme is measured so it cannot happen again.
- The combat HUD takes the colour of the arena, and anything walking under a module shows through as a silhouette instead of disappearing.
And more found along the way:
- The run clock ran on your frame rate. Story ranks are graded on that clock and the speedrun timer displays it, so both depended on your monitor.
- Spawn timers ran on rendered frames, so how many physics steps fit inside a spawn telegraph depended on the machine.
- On touch, dash and overclock skipped the point where a command is resolved — on a phone they would never have been recorded.
- The six new enemies could not be logged in the bestiary, so clearing the whole macOS act left every new entry locked.
Notes
- Android is signed with the same key as 3.0.0, so 3.1.0 installs straight over it and your progress carries forward — no uninstall, no lost save.
- KERNEL PANIC stores progress locally and makes no network request on its own. The leaderboard is the only thing that ever sends anything, and it is off by default.
- Check what you downloaded.
SHA256SUMS.txtcovers every file here —sha256sum --ignore-missing -c SHA256SUMS.txt. The APK's signing certificate should read9fd554575a253ba9a98fec403e45a72a8deb0b066ff70e505a60d6393fb45e31underapksigner verify --print-certs.
Autotest: 2492 pass, 0 fail, and the same suite passes against the shipped Linux binary, through the AppImage, inside the Nix sandbox, and from the .pck the AUR source package builds.