The Game
A first-person shooter in the Doom idiom, and the ground war of the saga that opened with Strataris — that was the air war; this is the retake on foot.
You carry a plasma rifle and a flamethrower at all times, and find a rocket launcher in the field. Ammunition is finite — energy cells, pressurised fuel and proximity mines — so every floor is a resource problem as much as a fight.
Levels are procedurally generated and verified solvable with a keyed flood-fill, so every floor is beatable: rooms and corridors, doors and coloured-key locks, hidden secrets, hazard-walled fuel stores, and an exit you have to earn.
The Brood
The colony holds one organism, in two castes:
| Caste | Points | Behaviour |
|---|---|---|
| Drone | 100 | A slick green-black melee pack-hunter. Slow, but it thinks: it comes in numbers, flanks, and kills up close. |
| Queen | 6,000 | The rooted brood-mother that holds each floor. She births fresh drones, she loathes the light, and she gates the exit. |
Only plasma wounds the Queen — and only fire keeps her down. Put her down with the plasma rifle, then burn the corpse with the flamethrower, or she revives and the floor never ends.
A five-page FIELD INTEL dossier lays out both castes, the arsenal, the field supply and what hurts you — and how badly.
The Arsenal
| Weapon | Ammunition | Notes |
|---|---|---|
| Plasma rifle | Cells · 400 | Always carried. Fast energy bolts — the workhorse, and the only weapon that wounds the Queen. Auto-targeting, within its limits: bring the reticle near an alien and it turns green and takes the shot from there, but the cone is narrow and it will not do the aiming for you. Refills at wall sockets. |
| Flamethrower | Fuel · 300 | Always carried. A short cone of fire — the only thing that keeps the Queen down for good. Refills at fuel drums. |
| Rocket launcher | Rockets · 16 | Found in the field. Heavy splash — if you’re too close to the blast it’s going to hurt you too. |
| Proximity mines | 8 carried | Drop one and back off. The swarm has to blunder onto it, which is the whole point of a mine. |
Shoot a fuel drum to rupture it into a bomb, or stand by one to refill the flamethrower. Plug into a wall-mounted recharge socket to top up plasma cells — the sockets slowly refill their own reserve, so you’re never permanently starved.
Descend
Each of the six planets is a citadel of eight floors. Clear a floor — kill and burn its Queen — then call the freight elevator: the leaves part, you step into the car, and it rides you down to the next. Clear the eighth and you teleport to the next planet, a fresh citadel that runs bright at the surface and dead-dark in the depths, the lowest floors flooded so you wade.
Forty-eight floors across six citadels to retake, and the difficulty scales with how far down you are.
All Light Is Man-Made
You are underground, so there is no daylight and no ambient glow from anywhere. Every photon comes from something you can point at: ceiling fixtures and their cast shadows, the sickly self-lit glow of terminals and nukage, and the lamp on your own helmet.
The rooms act on you, too, and neither tell is announced. A sick bay is guaranteed to hold a med-kit, and standing in one slowly closes wounds — ten points every thirty seconds you stay. A room the nukage has reached does the reverse at the same rate, pool or no pool: the air in there is the hazard. The only sign is your own health moving.
The Fire
The flamethrower is a genuine volume of burning fuel — a cloud of advected impostors that blooms, rolls and goes sooty, lighting the room as it goes.
It is also the only way to finish a Queen — and the only decent thing left to do for the colonists you might find along the way, who have been down there a very long time.
Clearing a Floor
Kills, secrets and score are totalled on a panel inside the freight car before the ride down. The visor HUD carries the rest: there is no status bar, so the 3-D view fills the screen and every readout is projected onto the helmet glass — an Aliens-style motion tracker with an objective caret on its rim (it points at the living Queen, then swings to the exit once she is ash), vitals, weapon pods, and always-on cells / fuel / mines telemetry.
Drawn in Code
Citadel’s world is drawn in real time by a Metal rasteriser whose every surface is generated in code — no sprites, no level files, and not one texture in the world itself. The iron-and-steel architecture, the wall-routed pipework and steelwork, the fuel drums and recharge panels and the pickups are all built as geometry at level load and shaded procedurally, HDR-lit and colour-graded on the GPU.
Four deliberate exceptions earn their place, and they are the only asset files in the bundle:
- The bodies — the biomechanical aliens ship as 3-D meshes with baked base-colour maps. Organic, ridged anatomy reads better sculpted than generated.
- Three hero plates — cinematic images backing the front-end screens, the title among them.
- Five imported models, geometry only — the dormitory bunk and the four plant machines, decimated to the house budget and re-materialled in code, so the shapes are borrowed and the surfaces are ours.
- Audio — the atmosphere leans too hard on sound to synthesise convincingly, so Citadel ships a small, curated set of CC0 / CC-BY samples: weapon fire, the aliens’ voices, and a reactive ambient bed that thickens as the swarm closes in. A from-scratch synthesiser remains in the binary as a fallback for any missing sample.
The Hall of the Fallen
A persistent high-score table records name, score, depth and colony across sessions. Forty-eight floors is the highest-scoring run the game has, and whether you watch the ending or skip it, the score stands.
Saving
Save whenever you like (⌘S) into any of ten named slots. A save records the checkpoint — the state you arrived on the current floor with — and loading rides the lift back down to that floor, so you always resume on a clean floor start rather than half way through a fought room.
That is why a save is a few hundred bytes: the floor is regenerated from the run’s seed, so nothing about the map, the swarm or the mess you made of them is written down. Saves survive death, and finishing the game doesn’t clear them.
Keyboard Controls
| Key | Action |
|---|---|
| W A S D | Move / strafe |
| ← / → · mouse | Turn / look |
| shift | Run (hold) |
| space | Fire |
| E | Use · open door · hit switch · recover a nearby mine |
| G | Deploy a proximity mine |
| 1 2 3 · [ ] | Select / cycle weapon |
| tab | Automap |
| P · M | Pause · mute |
| B / I | Briefing / field intel (from the title) |
| K / C | Keyboard / controller setup |
| ⌘S / ⌘O | Save game · load game (ten named slots) |
| ⌘, | Settings (volumes, sensitivity, reset scores) |
| esc · ⌘Q | Back · quit |
Every gameplay key is reconfigurable from the Keyboard sheet (K) — the bindings above are just the defaults.
A connected controller (Xbox / DualShock / any Extended Gamepad) is detected automatically: the left stick moves, the right stick turns, triggers and bumpers fire and switch weapons, and the d-pad left/right fine-aligns the crosshair — a genuine precision yaw that ignores the turn-speed slider, because delicacy is not the same preference as how fast you spin. All of it is rebindable from the controller sheet (C), and the keyboard always works alongside.
Installation
Two formats on every release — both signed and notarised, pick whichever suits:
- Installer (
.pkg) — recommended for first-time installs. Double-click to run; macOS Installer placesCitadel.appin/Applicationswithout quarantine or App Translocation. - Download (
.zip) — unzip and dragCitadel.appto your Applications folder.
Auto-updates are handled by Sparkle, EdDSA-signed so your copy only ever installs genuine Jorvik Software releases.
Building from Source
Citadel is free and open source, and builds via the shared Jorvik release.mk. With the jorvik-release sibling repo cloned alongside it and GNU Make 4 installed:
- Clone the repo:
git clone https://github.com/PerpetualBeta/Citadel.git - Build the app:
gmake build - Run the freshly-built copy:
open .build/Citadel.app - Signed, notarised, stapled
.zip+.pkgready to ship:gmake release
Requirements
An Apple silicon Mac (M1 or later), running macOS 14 (Sonoma) or later.
Citadel is the one Jorvik app that is not a universal binary, and that is deliberate. It is a real-time Metal renderer tuned to a 16.7 ms frame budget, and every measurement behind that tuning was taken on Apple silicon.
License
Code released into the public domain under The Unlicense — do whatever you like with it. The bundled audio is CC0 / CC-BY, with sources and the required attributions listed in CREDITS.md. Note the bundled crowd recordings are CC-BY 4.0 (Gregor Quendel), so that attribution must travel with any redistribution.