Dwarf Fortress


I played Dwarf Fortress more back in 2006 when it still was 2D but still check it out every now and then... mostly just fooling around. The threshold to get into it now is even steeper, with the 3D and all. I don't use any utilities or mods, but I do modify the palette, and sometimes use custom curses, and enable TTF text.

One of my early forts from 2006 (21.104.21b). Trees were still single tiles. The mountain was a solid vertical wall. The further in (right) one dug, the more dangerous it got, with rivers (of water and lava) to cross. There was no going around. One could probably spice that up having lots of different types of danger rooms. Gas pockets, monsters (standard and elder), treasure chambers, forgotten tombs, Diablo shrines... I think if I were to make a DF-clone I might make it a bit more smörgåsbord-gamey like that, to differentiate. Old school RPG things, finding stuff, like lost Vorpal Swords, a chest full of gold in a mossy cavern with a skeleton.


The size of the creatures in DF is given in thousands of cubic centimeters, which I guess can be easily translated to kilos for creatures like humans that are close to the density of water. Could be different for fluffy or mineral creatures (maybe weight is calculated from creature composition but I don't know if the data gets specific with ratios). Dwarves apparently draw close to humans in mass, probably because they're broad and stocky. I was surprised that Goblins match the Dwarves (and slender Elves). I imagine that Goblins probably vary a bit in size and form depending on factors like mal-nourishment (could be common), and maybe sub-type. My head-canon is that large Goblins are rare. Kobolds are smaller. I made them purple rather than brown. They're often portrayed as some kind of reptile in fantasy art. The Rebelstar Sectoid sprite stood model for the head design that I used here.

The Cave Blob doesn't have a child-state but I drew one anyways. The Floating Guts doesn't float in the air afaik, rather, its guts float like those in a jellyfish. I borrowed a design I saw in Kruggsmash's vidoes. The Gorlak should be rounder and have 4 fingers and 3 toes.


Varied Goblins. Could probably come in varians, like gray, brown, greens, each with different traits. I think world design benefits from some definition and style that's not completely random... it provides an anchor. My Trolls might have to be a bit wider (more stocky), but I didn't want them to look like Ogres. I gave them hairy sideburns.


Oh, right, the DF goblins are actually dimporphic... but who knows how that's expressed. Up to imagination I guess.

Elkbird, Beak dogs

Beakdogs! At first I thought these were from Golden Axe, but apparently the design was inpsired by the things from Tremors. I've been drawing those type of mandible beaks for quite some time and decided to used them here too. I like Beakdogs for their round bodies. The round head and torso reflects the form of the B. Because the B is red I made a red version. They might be spectral coloured though.

Goblin variants/subspecies. If I were to make a world generator I'd probably mix randomly defined ones (to spice things up) with multiverse canon variants (which act as a point of stability and familiarity). Each world seed would see a different selection come out on top. It's a balance to find... not too random, not too same-old. Apparently Elves in some settings (not just DF) use wood gear (grown) and eat people. I'd probably make those characteristics a part of variance. Implementing variants in a DF/RL ascii style game is several magnitudes easier than normal (unless new/specific mechanics are needed).

Rutherer with some blue skin showing underneath the gray fur. I had drawn some other flying things which I'm not sure are in the game. As a side-note, I think the DF desriptions of random Forgotten Beasts should probably state that the creature is e.g. Giraffe-like rather than "a Giraffe with...". It would allow for more monstrous interpretations.

A Forgotten Polterbeast crossed over from another dimension. A fun design to remember once again.

When I as fooling around in the Object Testing Arena I discovered that Alligator Women were quite ferocious. They show up as "Alligator Man" but I suppose Alligator Man Woman is weird. Humanoid Alligator might be too long. All these humanoid animals could use some spicy, though vague lore. For the Alligators I'm thinking... what if they're 98% amazon women, and occasionally a rare -man seeks refuge in the Dwarf Fortress, then the -women show up to retrieve him through negotiation or violence.

The data files contain a lot of anatomical info, and it's clear there that the Harpy is of the bird type rather than sexy woman. The Flesh Balls seems to be made out of muscle. I gave mine a pseudo-eye (i.e. just a spot) because it's cute. The Magma Crab has tiny feet in the desription but not in data (maybe too small to be relevant). It has wing paddles like a penguin, and no claws. Some smallish creatures have 5 fingers and it's always a hassle to draw. These drawings somewhat to scale but not quite.


One way to at least somewhat mitigate the problem of being too specific with the interpretations could be to explore different morphologies.


Harpy spreading her wings. Slightly more humanoid than implied earlier. Some sort of ptera-bird scavenger could be useful for cleaning up surface refuse and battlefield junk/clutter (which supposedly is a source of lag). Picturesque. I think a sort of trash-heap seagull-vulture design might fit. It's easy to implement as birds can just show up and fly off to an off-screen colony which builds up (maybe triggering an event later). Less annoying than Keas if they mostly take corpses, and garbage to decorate their nests.


There has been some discussion about how DF could be made more accessible. These are my Top-4 ideas for vanilla DF, with no utils or mods... some of those actually just add friction to getting started.

  1. More effective glyphs as used in the olden days, i.e. figurative drawings in 1-bit. An editor so they can be added ingame. More on this later.
  2. UI restructuring, and mouse control. See mockup below.
  3. Sound is a big part of a game. It can be used for atmospheric purposes, or as a way to inform or provide feedback. I think just having sounds for alerts and notable activities (sightings, finished artifact, dying, lever pull) could be a big improvement (global and not local to viewport). Given how busy the game can get, I don't think e.g. idle camel noises are necessary or even feasible to implement.
  4. UI stuff.
  5. Perhaps a quickstart world would help (separate download or random seed?). A tiny world with a tiny fort (perhaps a template stamp-down) consisting of a functional farm and a few rooms, a tavern to liven things up. Some people can't get started because they don't know what to build. It might be easier to continue expanding or just fool around, learning that way. Z-levels are confusing so it'd have to be pretty flat (going into a cliff wall). The tiny fort could feature carefully made mascot characters (an interesting rag-tag group, 5 dwarves and some friendly monsters). Even seasoned players might get something out of a starting scenario I think.


Quickstart group. An interpretation of the 4 dwarves from the intro, and a few novelty characters. They could be handcrafted, a bit overpowered, with artifact gear... menaces with spikes? Coloured somewhat after their skills.

UI thoughts


Sluggish when selecting items on a map. Immidiate when selecting items in consecutive menus (assuming familiarity). Not possible to do hover over tool tips, unless there's an arrow key item highlight/selection system.


Sluggish when selecting menu items in consecutive menus. Immidate when selecting items on a map. It's possible to do hover-over tool tips and info. It might be possible to address the menu problem by using denser menu item placement and contextual menus close around cursor.


I think mouse wins for me, but mostly because I'm terrible at remembering keys and I mind sluggish menu item selection less than sluggish map navigation. Hover-over info on the map would be very useful but the keyboard cursor is too slow for it. Having done combined keyboard-mouse interfaces in the past, there's a little bit of conflict when the arrow keys have selected one thing and the mouse another, but perhaps the keyboard could modify the mouse cursor position when needed.

As for window and menu system restructuring, I'd have to map it all out to see what what optimizations could be made.

I guess I would clearly separate viewing and editing into monitor and action panels/windows. There's a theory that the player is the god Armok and the Dwarves are the slaves at its whim, so perhaps the monitor panels are the two "eyes" and the action panel is the "hand". Maybe Armok lost the other hand to a ghost. The monitor panels are used to keep an eye on things. For example, one could have a list of dwarves up during simulation. I think that might promote intimacy... the dwarves do feel kind of distant currently. The action (hand) panel is used to influnce, edit and place things. Not much info in this panel.

Dropdown hierarchy lists are useful, though maybe too text heavy and information'y (have to be careful with spreadsheet omniscience). Only allowing one unfolded item at a time would help to limit text masses. Unfolded items tend to displace/push stuff around (jarring if not smoothed), though it does work to minimize mouse movement because relevant items are nearer.

Digging (pattern editor?), designating, placing workshops, etc. is done from the action panel, but I think it's best to still use the main map to plop things down. The mouse cursor could change to plop mode.

The keyboard could still be used to quickly select things from build menus, change panel tabs, and obviously for entering text.

DF UI mockup

Mockup. The panel edges could perhaps be slid around but it might not be necessary since the text'y panels could have a known useful width. For the Alerts (announcements) I'm thinking that panel can be expanded to show more items. Messages age and turn gray. In the action panel some filters could be set up. Added an icon editor in action panel. Useful for Forgotten Beasts, Artifacts, Visitors, but normally folded up to not distract.

Pixel mockup, not made for 1x pixels, unless viewed on an old machine. I'm quite partial to simple abstract graphics for these types of games, but, I think there are more effective ways to convey information than using the extended ascii table letters and symbols. Overall, visually not really that different from DF as it is now, it's just that the c looks more like a cat in expanded mode. More Obscure stuff might show up as a letter but then it would stick out and the player can move in and redefine if needed:

I think a 12x12 1-bit in-game graphics editor which allows character remapping on the fly would be a great scalable solution. One could give artifacts and dwarfs custom graphics, or just gradually rework the entire game whilst playing. 1-bit art is a very friendly and quick medium. One can't get bogged down in detail, like giving dwarfs the right armour & tools. 1-bit stuff only takes a minute or two to finish. They could be saved on a sheet (a library of sorts), along with a translation/association table. I think there's some existing way now to move beyond the 256 tile limit, but if it involves editing some sort of middleman textfile for each thing that's kind of a hassle.

Here I use three fonts: 8x10 variable width for compact text, 12x12 for curses, 12x12 for figurative/custom characters. The menus could have keyboard shortcuts in green but I omitted it here. V for Visitors (forgot to add those here too). The C/EGA-like palette has 16 colours, plus 16 halfbrights which are mainly used to knock back background tiles. Perhaps also more usable for the custom characters. Maybe also Z depth. I'll have to figure something out for slopes and flat cave walls. Pause-Resume is related to the time bar and control (hand) so maybe it should go in the bottom right brown corner. I suppose when the game is running the right eye and hand needs to be updated dynamically which might be a hassle. DF pauses during menu stuff.


Smiley tests. C/EGA palette. There are actually a few different versions of that palette but I picked one at random.

12x12 curses 16x16 curses

Some curses (tiles/fonts) of mine. The 12x12 works fine at 2x or 1x on smaller screens (netbook). The 16x16 one was tough to make and I thought it wouldn't work, but it somehow manages to be quite functional on my larger monitor. I guess soon 4K will be common though.

Slightly related, the DF screen update/draw system seems to lack a proper/full retain mode to keep processor usage low during menu use (no map action). I tried (inexpertly) tweaking some of the init settings but only saw a small effect. Curious, I made a test using BlizMax and found that immediate mode (steady) rendering of a similar screen does indeed use quite a bit of resources, but for menu and text screens that can be frozen processor use should easily be sub 2% even on an old machine like mine. However, it appears the OS does some [stuff] when the mouse cursor moves over an active window. Firefox goes from 4% idle to almost 60% during mousing (even on a blank page). My program fares better with a 13% mousaroo cost (0% if window is inactive). With no mouse action and just the main loop waiting for input, it's possible to introduce delays over time (user afk or in other program) which can get idle CPU use fully down to 0%. It does however make the UI less responsive if the user makes a sudden return. As for immidiate mode rendering, there are a number of optimizations to make. Tilemap rendering could probably be multithreaded, though it's beyond my expertise so I won't bother. A partial retain mode can be a bit of a hassle to make but more or less frozen screens are easy enough. More significantly, these type of games don't really need 60FPS visual updates. I'm guessing 5-20 would be fine. DF and my test are both ~70% CPU but my test drops to a tenth of that at 8 FPS.

Clone thoughts

I started on a clone in 2006 but only got a few weeks of work done on it. I think I fell into the OOP trap which introduced too much engineering friction. One thing I'd consider now is... DF is a game about stories, so how are those communicated? The player has to be informed about (or able to inspect) important/relevant states, and not be bogged down managing details which aren't contributing. What kind of story generators are interesting? In a talk Toady mentioned that it's the ones which tie into a mechanic that the player engages with. The randomly generated Forgotten Beasts worked well because their description is strategically relevant. Things like Dwarf mannerisms were more superficial and also hard to depict in illustrated let's-plays (unlike e.g. injuries).

Actually relates to an incident on Japanese Twitter.

[I]. Engraved on the support beam is a finely-designed image of a dwarf. The dwarf is doing a standing split. The artwork relates to an incident in the tavern I-Shaped Balance Club in early spring of 160.

Art by Arne Niklas Jansson