Since my very simple proof of concept of King Under the Mountain last weekend, I’ve been continuing to work on the game. I can’t promise a releasable version in the near future because this is still a side project of mine, but I’d like to have a playable alpha as soon as possible, so you can pick it up and give me your thoughts.
I am currently experimenting with Unicode support. I have a build option set up that currently toggles this behavior, and I’ve doubled the X width of each display character to accommodate. Surprisingly, this looks great in both modes! But, there’s a problem.
Certain fullwidth characters, such as Emoji, behave badly with my terminal software. Rendering Apple Color Emoji, for example, has a transparency channel that makes Terminal.app look like Swiss cheese, as each character cuts a transparent region out of the back of the window. I haven’t yet found a good way to reconcile this, though it does look substantially better in other terminal software that doesn’t use Apple’s full color equivalents.
That’s my current quandary. My next steps after this are to rewrite the UI and make characters able to interact with one another.
Are these dev posts interesting to you all? I’d love it if you let me know.
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.