For the last several weeks, I’ve had a game idea bouncing around my mind. So, taking the excuse of this weekend’s Ludum Dare game design competition, I decided to start writing it:

King Under the Mountain* is a text-based roleplaying game where you play as a dragon. Not content to simply pillage and burninate the local villages and farms, you also take up the wing of politics, toothily coercing neighboring peoples to champion your cause. This plays out similarly to Dwarf Fortress, except with loftier goals and a bit more political intrigue in mind.

Written in C using ncurses**, this game is in very early alpha and isn’t yet playable. Most of the game exists as notes and code snippets I’m still in the process of writing, but world generation is far enough along that I can at least post the teaser above.

Like Dwarf Fortress and Nethack, this game is designed to be a roguelike with primarily procedurally-generated elements guiding play. Certain elements will be mutable to the player from the start, such as their name, gender***, and specific world characteristics. Of course, randomizers will be available if one prefers to start playing immediately.

I’ve found writing this to be surprisingly therapeutic. I’d missed this level of ultra-simplistic, low-level coding in time spent in higher-level languages such as Python and Go. In a way, getting back into C feels like rediscovering my roots.

Would you be interested in this game if I ever released it? Since it’s a terminal app written in C with low-spec systems in mind, hitting all major OSes wouldn’t be especially difficult.

* I had considered this name before the competition’s theme, “Beneath the Surface”, was announced. It’s a double entendre cited here, referring both to the dwarven ruler, the King of Erebor, and to the dragon, Smaug. Get it?

** I had originally planned to use this to study the Go programming language. However, this plan ground to a halt when I discovered that no complete terminal UI library existed for the language. So instead, I settled for using ncurses directly, taking many stylistic, code layout, and presentation decisions from Nethack.

*** This will be substantially more open-ended than binary. I’m thinking free input for all pronouns, up to some number of characters apiece. It doesn’t fit everyone, but it should serve the needs of the gamut of genders people express in my audience. I intend to make all text conform to these, too, which will make localization difficult. I’m still ambivalent on how to translate this, if I ever get that far along.