One HTML file · No install · No account

Codex of Conquest

A text dungeon with the dice showing. Seven scholar-kings died to seal the Void — you have a sword, a coin purse and forty-nine days.

▶ PLAY

Runs offline in your browser · saves stay on your machine

╔════════════════════════════════════════════════════════╗
 CITY STREETS — BIRKA              Act I · Day 1/49 
╚════════════════════════════════════════════════════════╝

 Rain on the cobbles. The sky over Birka flickers — and it
 is not lightning. It is something thinner than that.

 A young man in a brown courier's satchel rounds the corner
 too fast and collapses at your feet. His coat is dark.

 He presses a folded, stained map into your hand.

   > "Sweelinck."

 EXITS  north: slums   east: inn   down: the crypt
 HERE   ▸ courier (dying)   ▸ folded map

────────────────────────────────────────────────────────────
 > take map
 WIS Insight  DC 12
   d20 ⟨14⟩ + WIS 1 = 15  vs DC 12PASS
 The ink is faded. Four towns. Seven symbols.
416Nodes
2,853Quests
398Monsters
111Terrains
204NPCs
8Acts
🐉D&D · MUD
What it is

A MUD that rolls in the open

A MUD is a multi-user dungeon — the text games people played over terminals before graphics, where a room is a paragraph, movement is a compass direction, and the world is described rather than drawn.

Codex of Conquest is one of those, with the dice showing. You read a room, choose a verb, and walk somewhere. When something is uncertain, the game rolls a d20 and shows you the whole sum — the die, the modifier, the DC, the outcome — the way someone running a game at a table would say it out loud.

Classic tabletop mechanics, kept in plain sight: armour class, initiative, advantage and disadvantage, criticals on a natural 20, damage dice by weapon, six ability scores. What it does not do is hide any of it behind an animation.

You play one Human Fighter Champion, level 1 to 20, crossing a continent alone. You are frequently the hired help in someone else’s story — and the game is honest about that. You witness more than you command.

📜CLONE
Get it

Three ways in, none an installer

The whole game is one HTML file. Nothing to build, nobody to sign up with, and no dependency tree to audit before you can read the code.

Play it now

The copy on this site is the current build. Open play.html and you are in. Saves live in your browser’s localStorage — nothing is uploaded, nothing phones home.

Take the file

Roughly 5.5 MB, and yours forever:

# just the game — playable offline, for good
curl -L -O https://raw.githubusercontent.com/vonglurt/codexofconquest/main/play.html
open play.html

# or the whole project
curl -L https://github.com/vonglurt/codexofconquest/archive/refs/heads/main.zip -o codexofconquest.zip

Tagged builds land on the releases page. There is no artefact to choose between — the tag is the file.

Clone and run the tools

git clone https://github.com/vonglurt/codexofconquest.git
cd codexofconquest
make install        # restores src/node_modules
make                # lists every target
make play           # API + monitor, opens the game
make edit           # the world editor
make check          # the full gate chain
make test           # 960 Playwright tests

The node project lives in src/, not the repo root — src/NODE.md explains why, and how to run npm directly.

🗝️SYSTEMS
Systems

Everything a fighter can actually do

Walk, look, fight, carry, ask, endure. Every system below is built around those verbs — because that is the whole of what one person with a sword can bring to a continent.

🚶Walking

Movement is a system, not a menu. A cell grid with roads, junctions and sea lanes; terrain sets your encounter rate; distance costs days against the clock.

🗺️World map

416 nodes across four towns and eight acts — Birka, Tilbury, Visby, Weimar — with a live minimap, a region view and auto-travel along the road net.

Quests

2,853 of them. Escort vignettes, waypoint deliveries, arcs spanning acts. Arrival can complete a quest: walking to the right place is the verb.

👹Monsters

398 across tiers, with encounter rates per terrain — so walking somewhere you are not ready for is legible before it is fatal.

🎲Skill checks

STR, DEX, CON, INT, WIS, CHA — and Luck. DCs are named before you commit, and failure usually costs days rather than the run.

💬NPCs & favour

204 profiles, 213 dialogue sets. Favour rises when you choose people over efficiency, and the ending names the friends you kept.

🔖Mission bits

The world’s memory. Every witnessed event sets a bit; gates, quests and dialogue read them, so the world knows what you have done.

🌑Void pressure

The real loss condition. Pressure builds where defenders are thin — the twenty Epic Battlegrounds are specific failures waiting for you.

🪦Death & loot

Death leaves a corpse and a grave marker you can walk back to. Loot tables, weapon economy, and an honest message about what you lost.

🖋️Tattoos

A progression track carried in ink. Perks, badges and marks that survive New Game+ along with the journal you filled.

🌐Mesh multiplayer

Optional. Run the local server and your world joins a peer mesh — presence, chat, consensual duels, shared maps, hash-chained ledgers.

📓The journal

Seventeen entries from a dead courier. Entry 41 stops mid-page. In New Game+, you write Entry 42.

🖼️SCREENS
See it

Nine surfaces, one at a time

Every image below is a crop of the running game, captured straight from the test harness — not a mockup and not a render. The state behind each was seeded the same way the integration suite seeds it.

🎭Character creation
Character creation — Codex of Conquest
Choose an origin, then spend a 27-point budget in the open — the costs are printed right there: 9→1, 10→2, 11→3, 12→4, 13→5, 14→7, 15→9.
🧮Point-buy allocation
Point-buy allocation — Codex of Conquest
Every modifier updates as you spend. Nothing is rolled behind your back, and nothing is hidden until later.
📋The character sheet
The character sheet — Codex of Conquest
Six abilities, proficiency, AC and max HP — plus Luck as a seventh stat that behaves like none of the others.
⚔️Combat on an advantaged d20
Combat on an advantaged d20 — Codex of Conquest
The die, the modifier, the target and the result: d20 +6 vs AC 13 (1d8+3). Attack, skill check and saving throw are the same three buttons all game.
🏆Victory
Victory — Codex of Conquest
A fight ends and the banner says so. What it paid — XP, gold, drops — lands in the log behind it.
💀Death saves
Death saves — Codex of Conquest
Drop to zero and you are dying, not dead. Three successes or three failures on a d20, rolled where you can see them.
🎒Inventory
Inventory — Codex of Conquest
Sorted by what a thing is for. Every item says what it does and what it is worth; equipping is one click.
🎣Fishing gear and bait
Fishing gear and bait — Codex of Conquest
Shore, reeds and deep water unlock separately. Day and night hold different species. Catches feed the economy, quests and the inn ledger.
Level up
Level up — Codex of Conquest
Roll the hit die yourself — d10 plus your CON modifier. The feature you gained is named, and the sheet shows exactly what changed.
📓ENTRY 42
The story layer

A journal that stops mid-page

The courier’s name was Froberger. His journal is found early and read in fragments — seventeen entries, five of them read aloud at particular places in the world. Entry 41 is the last. He stopped writing in the middle of the page, and the blank line beneath it is not an accident.

The theme is the curse of knowledge: once you understand something, you can no longer remember what it was like not to. Froberger saw the Void clearly and tried telling people. They could not hear it. So he stopped telling and started fixing, and became the only one who could do what needed doing — and that, not anything with teeth, is what destroyed him.

In New Game+, you write Entry 42. There are four endings; one names every person you helped, by name. One does not.

🛠️BUILD
Build the world

The editor ships with it

edit.html is a visual world builder — nodes, terrains, monsters, quests, NPCs and mission bits, the flags the game reads to know what has already happened. Point it at the local API and you can add a town, wire a road, write a quest chain and watch it appear in the running game.

A set of CI gates then checks the world for dead links, unreachable nodes, duplicate keys and quests that can never complete — because content that cannot be reached is the failure mode this project keeps finding.

🔬114
The lab reports

114 write-ups, each measured

This project documents itself unusually hard. Every significant piece of work has an engineering write-up: the spec, what actually shipped, and a delta table naming everything that did not.

They are not marketing. A report claiming something that never shipped is marked NOT SHIPPED and kept, because the gap is the useful part. Their line-number citations are gate-checked — 4,718 anchors across 118 documents, zero dead. Titles open the rendered document; RAW gives you the plain markdown.

Architecture & Engine15

The Quest VM (§VM-01)9

Combat, Economy & Progression18

World, Map & Navigation21

Narrative & Arcs35

Multiplayer & Mesh3

Tooling & Process6

Other7

Whole folder: docs/lab-reports/ · master index: docs/design/index.md · open work: six phase backlogs.

⚖️MIT
Open source

Take it apart

Codex of Conquest is MIT licensed — not source-available, actually MIT. Copy it, change it, sell it, ship your own world on it.

Good first contributions

Read CONTRIBUTING.md first — it carries the working rules, including the existing-work-first policy that has saved several rewrites of work already shipped.