nervk is a native Linux procedural survival FPS squeezed into a 32 KiB runnable.
It is a .kkrieger-flavoured tiny game experiment: generated floors, procedural materials, synthesized audio, weapons, enemies, curses, boss pressure, automap, seed/floor sharing, death/retry, and cumulative run scoring.
The point is not just that it is small.
The point is that it is still recognisably a game.
Current release artefact: 32 KiB class. The GCC 9 BCJ+tight-stub build measured 32,701 bytes, leaving 67 bytes under the 32 KiB line.
| Works | Hive |
|---|---|
![]() |
![]() |
| Vessel | Mixed |
|---|---|
![]() |
![]() |
| Crawler + Skitter | Spitters + Acid |
|---|---|
![]() |
![]() |
| Brute + Bruiser |
|---|
![]() |
| Pistol | Shotgun |
|---|---|
![]() |
![]() |
| Rocket | Dynamite |
|---|---|
![]() |
![]() |
nervk is a single-C-file native Linux game with no asset files.
Everything is generated or embedded in code:
- procedural dungeon floors
- generated wall / floor / ceiling materials
- normal maps and glow sprites synthesized at startup
- generated audio and weapon sounds
- multiple weapons and pickups
- enemy variants, curses, boss pressure, and a stalker threat
- automap, scoring, seed editing, and replayable floor commands
- self-extracting compressed runner
The final runnable is a tiny shell self-extractor containing a compressed native ELF payload.
The current release build is a 32 KiB runnable.
The size budget refers to the generated runner file, not the system libraries already present on Linux.
Expected direct ELF dependency after the GCC 9 build:
NEEDED: libdl.so.2
SDL2, OpenGL, libm, and libc are loaded at runtime. The self-extracting runner also expects xz on the target system.
Exact byte count can vary if rebuilt with different compiler, linker, binutils, shell, or xz versions. The checked-in runner is the measured target.
chmod +x ./nervk
./nervkPress ESC to quit from any screen. Press F11 to toggle fullscreen.
For the size-targeted build, use the bundled GCC 9 Bullseye wrapper:
sh ./REBUILD_ME.shThat wrapper uses Podman and the local toolchains/gcc9-bullseye/Containerfile. The build script applies a temporary source pre-pass when useful, then builds the packed runner.
Disable the source pre-pass with:
COPT_SOURCE_PREPASS=0 sh ./REBUILD_ME.shCLICK start
E edit seed
F edit floor
ENTER apply edit
ESC quit
F11 fullscreen
WASD move
Mouse look
LMB fire
1 / 2 / 3 / 4
pistol / shotgun / rocket / dynamite
Mouse wheel cycle weapon
M toggle automap
TAB hold expanded automap
ESC quit
F11 fullscreen
LMB descend
C copy run/floor command
R retry current floor
ENTER new run
nervk is playable, experimental, and deliberately ridiculous.
It is small enough that an ordinary screenshot can be larger than the game itself.
That is the joke.
That is also the achievement.










