Mournhold
A downloadable game for Windows, macOS, and Linux
A terminal-based grimdark RPG
Mournhold is a kingdom dying because it tried to forget.
There was a famine winter, long ago, when the capital sealed its gates and let the outer holds starve. Then the kingdom convened, in full ceremony, and performed a true kingdom-wide rite of unremembering. It worked. But a forgotten thing still exists; denied a keeper, it began to hold itself, and grew hungry for the one cell it had escaped — memory.
That is the Pall. The kingdom's own forgetting, grown vast and starving, come back down the heights to un-remember the world entire.
You are no hero. The heroes died first. The last road that leads anywhere climbs into the Pall.
You climb.
The Chronicle of the Fallen
Mournhold remembers your dead between runs. Every character you lose is recorded — their name, where they fell, the line they left for whoever climbed after them. Their bones rise as the Hollowed in the zones where they died, and they will know you.
The climber who breaks the Warden at the Summit does not survive that ending. The Pall keeps them. On the next run, the climber after them — you again, the next character — faces themselves at the Summit. The Warden is your previous hero, kept and quoted back at you.
Every previous character leaves traces: a marginalia hand in a discovery, a Hollowed who recognises your walk, a pendant in your pack, a Chronicle line in your own handwriting. The kingdom holds them. So, eventually, will it hold you.
Sight, Sound, and the Composer
The terminal is not flat. Mournhold answers back.
- Hand-set ASCII banners at every threshold — the Witherwood is not the Cradle is not the Crossroads, and you know it the moment you arrive.
- Procedural ambient drones, one per region, modal and mournful. Opt-in, no dependencies. The Hollow Reach in F Phrygian. The Cradle in C Aeolian. Cached locally on first launch.
- Boss themes composed to lore. The mournful tritone for the Bellward. The recursive minor seconds for the Reader. The Shadow Warden is dynamic: every fight is re-rendered fresh from the list of bosses you have defeated this run. The Warden quotes them. The Warden is whichever piece of you is largest.
- Melody quests. A new quest class. You sit at a mourncross altar with the dead bell above you, and you type the song. Tolerance modes for exact and modal answers, four-stage hints in grimdark verse, live playback of whatever you've typed. The first arc — Bellward's Lullaby — asks you to ring the bell once, for the living.
- Experimental curses TUI behind
--tui: split-pane layout, an ASCII map panel with ghost markers for the places you have walked, a status bar the location loop drives directly.
What's in the Kingdom
- 22 named locations — 20 climbable zones plus two settlements, each shaped to its own facet of the kingdom's death.
- Five classes — Warrior, Rogue, Mage, Cleric, Ranger — each with their own ability tree (25 abilities total).
- Ten named bosses, six along the main climb (the Maw-Mother, the Hollow Bellward, Cantor Vael, the Ashen Penitent, the Shadow Warden) and several more guarding side-paths (the Dyke Warden, the Library Warden, the Shrine Keeper, the Chairman, the Devoured Captain).
- 2,242 quests, 1,001 marks. Quests are the kingdom's small unfinished business. Marks are irreversible per-character moments the kingdom never lets you take back — what you remembered, what you refused, who recognised you, who you became.
- Status-driven combat with six AI archetypes (aggressive, defensive, caster, relentless, enrager, ambusher), readable telegraphs, and weapons assembled combinatorially from over twenty thousand base configurations before drops ever roll.
- Roughly five to six hours to a first ending; the second run, when the Warden quotes you, is a different game.
Built in Pure Python
No graphics. No runtime dependencies. Just text, ANSI colour, optional procedural audio, and writing earning its keep. Pure Python 3.9+; the game runs on a stock interpreter. Audio is opt-in and fails silent. The TUI is opt-in. The composer is a normal location service.
820 tests, 94% coverage gated in CI, across Linux/macOS/Windows × Python 3.9 / 3.12. Every commit is checked.
If you have lived inside Caves of Qud, NetHack, or Hades-style meta-progression, and you want the same systemic depth in a quieter, more mournful frame — this is for you.
Currently in development. Expect rough edges, ambitious systems, and a thesis about kingdoms that try to forget.
Mournhold — the Pall remembers. So, eventually, will you.
| Published | 9 hours ago |
| Status | Prototype |
| Platforms | Windows, macOS, Linux |
| Author | abidlebob |
| Genre | Role Playing |
| Tags | ascii, Atmospheric, Dark Fantasy, meta-progression, permadeath, Roguelike, Singleplayer, Text based, Turn-based |
| AI Disclosure | AI Assisted, Code, Graphics, Text |
Download
Install instructions
Requirements: Python 3.9 or newer. Nothing else.
Mournhold has zero runtime dependencies. The game runs on a stock Python interpreter on Linux, macOS, and Windows.
To run
python3 rpg.py
Or, equivalently:
python3 -m terminalquest
Optional flags
--tui— experimental curses interface with an ASCII map panel. Recommended for a terminal at least 100×30.
Audio (optional)
Audio is opt-in and disabled by default. Enable it from the in-game settings menu. The kingdom will then render its ambient drones into ~/.terminalquest/audio/ on first launch (one-time, takes a few seconds). If your system has no audio player available, the game falls back to silence and continues without issue.
- macOS: uses
afplay(built-in) - Linux: uses
paplayoraplay - Windows: uses
winsound(built-in)
Saves
Saves and the Chronicle of the Fallen live in ~/.terminalquest/. The Chronicle persists across runs — that is intentional, and the heart of the game.
Source & releases
The full source and tagged releases live at github.com/butkeraites/terminal-rpg/releases. Current version: v3.0.0 — Sight, Sound, and the Composer.
Development log
- v3.0.0 — Sight, Sound, and the Composer9 hours ago
