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.

First-person view down a lit corridor: a drone comes over a fuel drum toward the player, the plasma rifle raised, the visor HUD showing health, armour and ammunition.

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:

CastePointsBehaviour
Drone100A slick green-black melee pack-hunter. Slow, but it thinks: it comes in numbers, flanks, and kills up close.
Queen6,000The 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.

The FIELD INTEL dossier page for the Queen: a rendered portrait of the broodmother beside her integrity, bounty, vulnerabilities and a threat description.

A five-page FIELD INTEL dossier lays out both castes, the arsenal, the field supply and what hurts you — and how badly.

The Arsenal

The three weapons as held in first person, side by side: the plasma rifle, the flamethrower and the rocket launcher.
WeaponAmmunitionNotes
Plasma rifleCells · 400Always 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.
FlamethrowerFuel · 300Always carried. A short cone of fire — the only thing that keeps the Queen down for good. Refills at fuel drums.
Rocket launcherRockets · 16Found in the field. Heavy splash — if you’re too close to the blast it’s going to hurt you too.
Proximity mines8 carriedDrop 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.

A sliding door parting down the middle at the end of a corridor, light spilling through the widening gap.

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.

A long concrete corridor on a plant floor, an amber bulkhead lamp glowing on the left wall, standing water reflecting the light, and the far end falling away into darkness and bare rock.

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.

The flamethrower firing: a large orange fireball fills the corridor with a drone silhouetted inside it, the walls lit by the blaze.

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

The FLOOR CLEARED panel inside the freight elevator car, listing kills, secrets and score, with a prompt to press fire to descend.

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 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.

The Hall of the Fallen high-score table: ten entries with names, colony and depth, and scores, beside a rendered image of the Queen.

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

KeyAction
W A S DMove / strafe
/ · mouseTurn / look
shiftRun (hold)
spaceFire
EUse · open door · hit switch · recover a nearby mine
GDeploy a proximity mine
1 2 3 · [ ]Select / cycle weapon
tabAutomap
P · MPause · mute
B / IBriefing / field intel (from the title)
K / CKeyboard / controller setup
S / OSave game · load game (ten named slots)
,Settings (volumes, sensitivity, reset scores)
esc · QBack · 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:

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:

  1. Clone the repo: git clone https://github.com/PerpetualBeta/Citadel.git
  2. Build the app: gmake build
  3. Run the freshly-built copy: open .build/Citadel.app
  4. Signed, notarised, stapled .zip + .pkg ready 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.