Hacker News new | past | comments | ask | show | jobs | submit login
Dwarf Fortress Creator Explains Its Complexity and Origins [video] (youtube.com)
315 points by doener 18 days ago | hide | past | favorite | 134 comments

I have been playing dwarf fortress for about 7-8 years. If anybody has any questions feel free to ask me.

I think the difficulty of learning the game is overstated: if you follow a tutorial, use a graphics pack, and use dwarf therapist (dwarf therapist is a must, most experienced players also use this because it's just a better UI) I think you can get the hang of the game in a few hours of play time. Probably the biggest barrier to learning the game is the UX but if you're a programmer that will be much easier to learn. I recommend https://dwarffortresswiki.org/index.php/DF2014:Quickstart_gu... and https://dwarffortresswiki.org/index.php/DF2014:Dwarf_fortres... as guides, and I recommend downloading the "Lazy Newb Pack" version compatible with your operating system, as it makes switching graphics and managing utilities/settings very easy.

Learning the gameplay is reading a related wikipage, which is acceptable. The hard/annoying part is learning UX. It really shouldn't be that complicated. Talking to people in adventure mode, managing jobs (as you said, dwarf therapist is practically a must since the base interface is just horrible), managing armies, hospitals... everything is a chore and you need a tutorial for everything. And every UX in game is different.

To dig for example. You have to create a designation for it. But how do you know that unless you watched a video/read a tutorial? On top of that if something is wrong, the game gives you very little clue. Do you have a dwarf with digging task? Is he available? Does he have pick? Can he pathfind? The game gives you no answer other than not initiating the digging (edit actually my bad, i think it gives you some logs for some cases.). Stuff like that is a hard barrier for most players and they won't be able to continue unless they are really committed.

There’s a nice example of someone coming up with a good UX for this game, in the form of an iOS app that lets you play against a remote instance of DF called DF Remote (http://mifki.com/df/). I learned about it here on HN and I’ve found it to be a really impressive example of what the UX could be like. It’s not a 100% complete UI — but what’s there is pretty consistent and intuitive.

> Stuff like that is a hard barrier for most players and they won't be able to continue unless they are really committed.

Free software has a price too, in terms of efforts the user has to spend on dealing with issues and shortcomings.

Pay. Or do not pay. But there is no bargain.

I found that you get used to the ascii after a while. Now I dont even see the code, just blonde, brunette, redhead, quantum stockpile...

Yeah, once you get accustomed to the tilesets for a bit it becomes trivial to switch to ascii. But I think it's nice to learn using the tileset because it's usually pretty clear what something is.

I think the joke went flying over your head.

Edit: It is a Matrix reference, where Neo asks Tank if he can understand what is going on by just looking at the green characters whizzing in the screen. He answers "You get used to it after a while. ... For example, I see blondes, brunettes, redheads ... "

Edit 2: I guess I remembered it wrong, it was Cypher!

I figured it was a half-joke half-serious comment so I responded to the serious part

Except for anyone playing Hack or Dwarf Fortress or any other ascii based game it's not a joke, it's reality.

Small nitpick, it was Cipher, not Tank.

Smaller nitpick, it was Cypher.

Weirdly enough, they make that same joke in the video within the first few minutes.

A few years ago i tried to get into this. Like I really tried. I too installed and used Dwarf Therapist.

here's where I struggled: I still wouldn't have the hang of managing the dwarves I had and then a new crop would come along. Even with all these tools it quickly descended into me not having any idea who was doing what or why. Or why they weren't doing the things I was asking them to do.

A lot of the things seemed way too roundabout to me too. Like I'd have chickens (or were they ducks? I forget) and I was attempting to breed them. But the whole process of making egg-laying boxes or nests or whatever was tedious and then you had to lock the door to stop the dwarves coming in and taking the eggs.

Likewise, i found the process of feeding the dwarves hard to manage largely because I couldn't easily figure out if there was any food, whether that was because no one was making any or that it was simply all getting eaten. Was it an issue of not having room to stockpile food? Or was the dwarf who could make food doing something else (possibly because he was the only person who could do that or he just happened to be the one who'd picked up the pick for some reason)?

So I never got to that point where I felt like I had a good grasp of my colony as a coherent unit and could then engage in flights of fancy.

I think the last time I tried I then got a monster invading and I hadn't figured out military yet. That was a whole new system to learn and I just lacked the motivation so stopped and never went back.

There’s a very deep lesson in Dwarf Forts motto of loosing is fun.

I’ve struggled to embrace it because my habit is defensive safe playing. In other words “succeeding”- beating your enemies without suffering a loss or misfortune and never having to deal with jank.

My second fort blew up to a yellow “i” which I had no clue was a fire imp (2d DF era volcano embark.)

But I got lucky and found the ascii explosion of ascii booze barrels fascinating.

Embracing that pain makes all the stories of DF interesting. This does include just letting things blow up because you didn’t get the interface and just enjoying the situation you are in.

To a large extent, the new tutorials and helpful community have eroded that ideal, the long learning curve have you a crucial part of the DF experience - loosing is fun.

I have never been able to fully capture the point or explain how fundamental it is to appreciating the game and how it changes your enjoyment of things.

Tools like Dwarf Therapist might give the impression that labor assignments actually matter a lot in the game, but really workers are really productive and a full-grown fortress of 200 dwarves can be easily run by under 10 workers. You could assign all your labors in the embarking screen, assign the first few arrivals as farmers and miners, and all the rest can be left to idle, or drafted into the military, or made scholars or priests or entertainers.

The likely reason for there not being food is underproduction. Causes of that could be not having enabled planting for every season, planting textile crops or crops that need to be processed before they are edible (if the textile crop fields are too large it might be fine on embark when you have only 5 seeds, but end up using up all planting time once the seed count is high), lacking seeds, perhaps from cooking the plants directly (cooking does not give back seeds), or being bottlenecked on field size or planter count. Food will rot if not in a food stockpile, but the rate is pretty slow and easy to outproduce, also if underground the rot will produce miasma making it easy to notice. The next likely reason is that a single dwarf might have become unable to path to food. In such a case the dwarf is likely walled off from the fortress in either the caverns or the surface, because anywhere else there wouldn't be water and they would die of dehydration first. Disabling web gathering at game start helps prevent dwarves being stranded in the caverns. It's also possible all food was forbidden or there was an active civilian alert.

It's a bit complex in that there are many ways to fail, but again the winning formula is simple. For me the learning curve was first giving up because I didn't even know what I was looking at or that z-levels existed, and then a year or two later watching a video tutorial that quickly laid down all the basics, and finding the game relaxing to play after that. Unfortunately I don't remember what the tutorial was and some tutorials out there are pretty mediocre, e.g. anything that recommends making a refuse stockpile outside is not adequately conveying that sealing off your fortress from the outside world is key, and IMO building an indoors well should be mentioned as something you need to do even if the process's not covered.

You can cap the migrant waves by setting a max dwarf limit in the LNP configurations. The first two migrant waves are (or were) hard-coded so if you set the limit very low you would potentially go over it. But if you set the limit to like 60, you wouldn't get repeated huge wages.

To make sure they're doing what you want them to do, have them "specialize" into professions. Leave a large bulk of low-skill labor for hauling, and try to keep the number of idle dwarves low (it shows up in the corner and you can inspect with 'u' from the main menu).

Yeah, the initial set up process for industries like eggs take a bit of getting used to. I actually usually have my craftsdwarf start building nest boxes as soon as I've mined out enough stone. You can also selectively 'forbid' individual clutches of eggs rather than locking the door by selecting them with q and going to the nestbox (or t, I forget) and hitting f after scrolling down to the eggs.

For food, it sounds like your issue was not knowing the UI. If you have a bookeeper (set with 'n'->bookeeper, change granularity with 's') with an office they will automatically keep track of your food, which you can check with z->kitchen or z->stocks. You should use a stockpile for food because it prevents food from rotting and keeps it in convenient locations. You can make one with p->f although when just starting a fortress you might instead want to create a general stockpile with p->t(select most things except refuse and stone)->c. Regarding the food production, it's good to limit dwarves in essential industries/positions to have all labors except their particular specialty disabled, including all hauling, and then manage tasks so that those dwarves are not left idle.

I was surprised how fast the (frequently inconsistent) keyboard commands just get into your fingers, where you don't think about it anymore.

Similarly for the graphics, and that applies to games in general. You really stop noticing the graphics around ~30mins into a session, because you're running this asynchronous simulation in your head that only needs minimal information to update. That might be a reason why we remember games we played a long time ago being a lot prettier or detailed.

Dwarf fortress are an example I used to bring up in some discussions on UI UX.

You are just far more productive with a keyboard, especially once the commands are in muscle memory.

I think it's a really important consideration of design that gets forgotten about in the name of "useability" and "discoverability". With a little practice a consistent keyboard interface is very fast. _Nobody_ is fast with a mouse.

So I have to install 2 third-party tools and follow 2+ third-party tutorials/guides for a few hours before I can potentially start enjoying the game.

Doesn't sound overstated at all...

You can just play the base game as is. The Lazy Newb Pack is simply a launcher where you can checkbox the third party graphics and tool options.

There are lots of games with some learning curve. When starting with Crusader Kings II, I spent more time reading the game wiki than actually playing the game.

Not to mention doing a detailed study of the geography and history of medieval feudal Europe, including just what the heck agnatic-cognatic gavelkind succession is and that the Holy Roman Empire was neither holy, Roman, nor an empire.

Some days I prefer a sickly in-bred imbecile devil-worshipping king, and some days I just want to deal with short sturdy creatures fond of drink and industry.

Amen. It's deep, and the UI is complex.

And then there is the regular updates/DLC thing, which often adds whole new, poorly explained features.

Still a lot of fun though. Breath Status: Held for CKIII

I still don't understand CKII. Believe I had tried noob island last, it seemed comprised of waiting for things then being uncertain whether I'm skipping time too much or too little. I must have invaded a vassal as per tutorial 2-3 times and failing.

hell, reading the wiki is half the fun!

It's only a few hours. That's how long it takes to learn many games.

I appreciate his effort (having played for decades), but that aside...the difficulty is knowing what's wrong and why something is happening.

The horrid military UI is inherent to the game. Bugs that are left for months (if not years) like the inability for seiges to enter your site (hiding just offscreen, slowly killing your CPU) or the current persistent bad memories, often makes aspects of the game unplayable WITHOUT the complexity and issues with mods that are necessary. Yes you can play the game in ASCII or with chopsticks or blindfolded with someone barking at what you need to do, but complexity and difficulty is not commensurate with fun or depth. DF is not the only game to fall into this trap.

DF has depth outside of the UI/setup/bugs, but onboarding is what Tarn is addressing (partly) in the Steam release. Good.

I think the difficulty of learning the game is on point.

DF is much more forgiving and easier than it used to be. Follow the wiki, setup DFHack for a lot of bugfixes and UI improvements and you're pretty much set. You don't even need Therapist anymore when you have the in-game labor manager. Yeah there's a bit of fiddling involved but I can't possibly believe this can be a problem for Hacker News readers.

As you might imagine after watching, and if you haven't read it before, the Dwarf Fortress change log[1] is a thing of absolute beauty.

> - 0009195: [Dwarf Mode -- Pets] Cats dying for no reason - alcohol poisoning? - resolved.

[1] https://www.bay12games.com/dwarves/mantisbt/changelog_page.p...

For anyone doubting the complexity of Dwarf Fortress, the dying cats bug provides a fantastic glimpse.

> Cats have a self-cleaning interaction that contains the [IE_SYNDROME_TAG:SYN_INGESTED] tag [...] They might be walking through spilled alcohol, licking it off their fur and ingesting the drunkenness syndrome. Toady also said alcohol effects are related to body size, so it theoretically wouldn't take much to do them in.

> Haven't made a tavern yet myself, but does alcohol routinely end up on the floor?

So Dwarf Fortress simulates 1) spilling alcohol, creating puddles on the floor, 2) cats walking through puddles getting dirty with the puddle’s contents, 3) dirty cats having the desire to clean themselves, 4) self-cleaning leads to the substance being ingested, 5) ingestion of alcohol intoxicates the cats as a function of their body size

Of course for the longest time, carp were the most dangerous animal in the game, they would drag you into the river and kill you if you were standing on the bank. The reason? Swimming trains strength. Fish swim all the time. Their strength went through the roof.

And of course, for the longest time a main way to defend fortresses (armies were broken) was to have an entrance corridor, with another corridor filled with molten lava underneath it. This would cause the upper corridor to become warm. Not really hot, but warm. And there was a bug with the melting point of fat being set too low, so your enemies entering your fortress through the main entrance would die from having all the fats in their organs melted off them. Path finding didn't know about warm rooms.

It helps if you think of it as 1a) spilling liquids, creating puddles on the floor; and, 1b) alcohol includes the property liquid; because then you can start considering scenarios like "if I spill a potion of rampage, would the cat go berserk?" — and I don't know whether a potion of rampage exists, but if it does, I expect the answer would implicitly be 'yes' because DF is coherent like that. There are absolutely a few 'potions' mods and so someone motivated could test this :)

Until then, please enjoy this interview with the creator of Dwarf Fortress. I quote a paragraph about the puzzle of intersecting the side effects (blisters and flight) of a potion of happiness with the simulated motivations of a slightly depressed dwarf:


> But just in general things like a potion that makes you happy ... there are two obstacles there now in the current system. One of them is that you'd need to have the effect, you'd need to give the modder or vanilla modding control to change the happiness of a dwarf, so it's not just giving blisters or whatever but there's a new effect, and that list is just going to increase over time and hopefully cover the basis. The other problem is to get a dwarf to actually use the thing; to recognise that there's now this flask filled with this juice that when you drink it it makes your happiness one hundred and fifty percent for a week, and having the dwarf know that that's something that needs to be used is a large problem, especially for a modding situation where you make happiness juice that gives you blisters and makes you fly ... when do you drink it? I don't know, it sounds like an adventure mode thing; the adventurer would take that journey, but not necessarily a dwarf craftsman that's feeling a little bummed out.

He actually goes in depth in the first 5m of the video. There's also the whole eyelid thing.

Modding dwarf fortress is ridiculously fun. All the raws are a plethora of awesome just too detailed things like that.

I attempted to play DF in high school many years ago, booted it up and was immediately overwhelmed. I ended up uninstalling it and forgetting about the game for a long time. Recently I remembered the game and gave it another shot, and have been having a lot of fun [0]. Having the noob pack available to try out some titlesets made it a lot more approachable as well. And there have been a lot of quality of life improvements for new players; I think the Steam release will add a lot more in this direction as well.

There is also a large community of content creators who play the game and post the stories of their fortresses. This can be an interesting place to jump in. I enjoy Kruggsmash's videos [1] and if you haven't heard it yet, a classic DF story is Boatmurdered, from the Something Awful forums. I recently listened to this reading of the story: [2]

[0] https://dwarffortresswiki.org/index.php?title=Fun

[1] https://www.youtube.com/user/kruggsmash

[2] https://www.youtube.com/watch?v=CZF59Dkk73g

In case anyone wants to try out the game, these are two great tutorials for very recent releases:

* https://www.youtube.com/watch?v=QtQyRNNEMRA

* https://www.youtube.com/watch?v=eTeQJOC1H38

Head over to the Bay12 Games forums (https://bay12games.com/dwarves/) and find one of the noob packs for your platform (there are versions for macOS, Windows, and Linux). Download and install it. It'll take a few hours to create the world, so let it run over night or plan to watch DF tutorials while it runs.

Create a smaller world with a shorter history and it shouldn't take more than a couple of minutes. No need to overnight it -- not like a new player's going to get quite as much out of the extensive history of the world, so might as well get to playing sooner.

I can see it being very fun for a certain kind of person, but I don’t think most people will get a ton of pleasure from just making your base bigger without any end goal

I'm an "aiming to win in a fixed round" type gamer myself but I think lack of an end goal is less of an issue for more players than you think. Minecraft is huge. Animal Valley is currently all the rage. The Sims was once upon a time the shit. Farmville once (still?) dominated facebook.

People love base or society building for the sake of base and society building.

If anything, playing to win/end is the minority in gaming.

> Animal Valley

Do you mean Animal Crossing? Stardew Valley drew inspiration from Animal Crossing and Harvest Moon.

Sounds like Animal Crossing and Stardew Valley wires got crossed.

Yep. Was meaning to reference Animal Crossing specifically here.

There is an endgame area you can either accidentally or intentionally enter and some players have managed to 'beat' that.

It's an interesting simulation game for sure, if you enjoy sim city but want to try something a LOT deeper and more complex I think you would like it.

There is also a lot of time that can be spent actually growing up to that size and managing all the various things that can happen (spoilers: raiders, kidnappers, war, were-things, vampires, forgotten beast attacks, very strong creature attacks, tantrum spirals)

The fun comes from logistical planning as you get more dwarves and they do more sophisticated things. The !!FUN!! comes from events/creatures that can kill your dwarves and cause issues.

Sandbox games, especially base-building, survival and colony sims, are immensely popular nowadays and most are open-ended with either an optional ending or no end goal at all.

Nice to see NoClip getting some love on HN. I'm an unabashed Danny O'Dwyer fan and I think this community would enjoy all of NoClip's work if this is your first taste. His docs cover quite a few behind the scenes stories that I feel all us startup / programmer folks can relate to. His work captures the heart of what it means to be a creator. My dream is that one day he makes a doc about the community around Vim. It'll never happen, but a boy can dream.

Some of my favs

The untold story of Astroneer's development https://www.youtube.com/watch?v=tfUjl4owxTQ

Doom: To hell and back https://www.youtube.com/watch?v=PS6SBnccxMA

NoClip is fantastic; I also really enjoyed the Rocket League[1] and Half-Life[2] documentaries. Danny just seems like a genuinely nice guy who just loves to tell the stories behind these games, it's awesome to see the success he's had with NoClip.

[1]: https://www.youtube.com/watch?v=Om0j9SLBDPQ

[2]: https://www.youtube.com/watch?v=BQLEW1c-69c

The NoClip Spelunky[1] documentary is also particularly good.

[1] https://www.youtube.com/watch?v=jv434Xyybqc

I went into the Astroneer doc without knowing much about the same or the circumstances of how the game was completed. It hit me really hard...

I would love to be able to read the Dwarf Fortress source someday. I know Tarn considers Dwarf Fortress to be his life's work, so it would be amazing if he decided to release the source someday -- even if that's 10, 20, 30 years from now.

He has said multiple times that he will release the source if he dies, so long as foul play is not suspected in his death.

I think for him it's more about being able to "own" dwarf fortress. If he open sourced it, large teams of people might be able to develop it much faster than he could, and if he doesn't really want to manage an open source project, that might end up in him losing control/maintaining a less popular game than whatever gets forked out. It's also widely suspected that the codebase is really bad, and he might not want to manage a clean up of it that makes it 'better' but which results in him not understanding it as well.

Why not manage the project like Cataclysm DDA? Let people write mods. If they are good enough just merge them into the main code base.

He wrote Liberal Crime Squad [0] which is GPL.

If LCS is any indication, the code in DF will be a horrible mess.

[0] https://sourceforge.net/projects/lcsgame/

The fact that the game has been seeing continuous development of relatively complex new features for this long means the code can't be too horrible. Perhaps very idiosyncratic and particular to Tarns personal preferences, but certainly not unmaintainable (this is just an assumption though).

I have maintained a fork of LCS. The code is unspeakably horrible. It's like its been run through an obfuscator. It requires a hardened, dedicated developer who has developed life-long immunity to code cooties to hack it.

He did start out as an academic/scientific programmer, so yeah.

Thanks, just spent some time browsing through that source. At first I was going to say it didn't look too bad, but then saw some comments from someone named Chris Johnson that everything used to be contained in a single game.cpp file. The current state of the source honestly doesn't look too bad. Some large and scary case statements and functions, but that's not always a terrible idea in game dev, and it looks to be well commented. But I'm not sure how much of that is thanks to Tarn or other people that have cleaned up the source.

That being said, LCS came out in 2004, so presumably Tarn has improved over the years.

From my understanding, Tarn first and foremost focuses on making the game fun (and Fun) rather than making the code well-organized and clean; I seem to recall some interview or maybe forum post where he made that clear.

In practice that likely means that the code is not all that well organized and planned out. Doubly so if he and his brother have been the only ones who have touched it -- there's a lack of outside influence that would drive one to clean up their code. I of course have not seen any of the source code for DF, so I this is purely my own hypothesis.

And yet I have seen other code bases become true unmaintainable messes after so long a time, even by their creators. DF works remarkably well. I know he has gone through a few large refactorings in the past out of necessity. I doubt the code is pretty or easy to follow, but I also doubt it’s bad in many ways that code can be so.

Yeah, agreed. The Dwarf Fortress code might look like a mess to an outsider, but the only thing that really matters is that it works for Tarn. A codebase that will likely only have one contributor ever doesn't need to be written to the same standard as codebases with many contributors. (I believe Tarn does all the programming and Zach does creative work / writing -- somebody correct me if I'm wrong.)

A dwarf can only dig deeper.

That style seems similar to a number of other terminal games. I think it's just the natural pattern to grow more and more switch statements and arrays if you expand your game without major refactoring.

At one point I tried to edit Nethack to make it impossible to die. It was kind of shocked by all the random checks strewn throughout the code.

For the time being you can enjoy the lisp/perl/ruby reverse-engineering/c++ decompiler tool used in df-structures[1] that was made to make dfhack[2] and Dwarf Therapist possible that were made to make managing a 100+ dwarves fortress possible.

[1] https://github.com/DFHack/df-structures [2] https://github.com/DFHack/dfhack

He's hinted that he could release the sources if the Steam/Itch sales make enough money that he could stop worrying about the stability of his income in the long term. The worry was that if DF got open-sourced and forked, people would give more money to the forked, polished version as opposed to the one version Toady is working on, but he wouldn't mind if he had enough money in the long term.

> He's hinted that he could release the sources if the Steam/Itch sales make enough money that he could stop worrying about the stability of his income in the long term.

The saddest part of Tarn's decision to put the game on Steam is to make enough money to pay off medical bills for his brother.

They are adding graphics to the game! And it will be on Steam. It's exciting to see where they are taking it.

That's great but I wish the creator'd do something about death by FPS. Which is arguably how I end up all the time. I like to build big complex fortresses with a lot of industry and a lot of mining. And oftentimes I end up with a lot of animals to produce meat, leather and bones (had a very promising Draltha industry at one point). It's quite disheartening to put time in a fortress and "die" by FPS just because you are doing good. Will still buy the Steam version (been supporting them for a while now).

Being able to explore goblin spires and human cities in adventure mode would be nice too. It's sad when you have to avoid exploring the biggest city in your world mode because taking a step takes two minutes or more. It sucks all the more because exploring things in cities in adventure mode has given some of the best roleplaying adventures i've had in a game. It just take so damn long to do anything.

Can't think of any other game i've played where the leader NPCs of a city were vampires who'd taken over the city a few hundred years ago and were at war with a church started by a human who found jewelry created by a dwarf who'd ran away after murdering a child and crafting their bones into jewelry in a fell mood that was found by a random human in the city who started a cult around it, who then took up a personal vengeance with the vampire overlords and were undergoing covert operations against them that i disrupted when I killed the fuck out of everyone, gathered the child bone jewelry and read about that shit in legends. All procedurally generated and created on the fly through the simulation of all those respective NPC's lives.

Caves of Qud [1] is a fantastic roguelike with procedurally generated backstory, quests, towns, etc.

If you like the classic Fallout games (1 & 2) and you enjoy roguelikes with a lot of weird stuff, I think you’d get a kick out of CoQ. The game has incredible atmosphere that gives you this feeling like you’re exploring a real, living, breathing world. There’s a lot of depth to the gameplay as well, with deep character building and a complex crafting system.

I really want to get back to playing it but I’m in school right now and have a ton of work to do!

[1] http://www.cavesofqud.com/

I just learned about Caves of Qud by this great talk by its developer that goes over examples of its procedural history generation: https://www.youtube.com/watch?v=ClGAApZYIvI

Apparently it's slated to leave early access in Q4 2020, so I'm holding off on buying it for the moment, but I'm very eager to play it.

And here is the paper [1] about how they procedurally generate the histories in Caves of Qud. Very interesting both from a storytelling theoretical point of view, and from a practical programming point of view (state machines and replacement grammers)

[1] http://www.freeholdgames.com/papers/Generation_of_Mythic_Bio...

Makes you wonder what you could do applying something like the GPT-3 AI text model to this kind of problem (history generation).

Definitely make sure you don’t forget to play it. It’s an absolute treasure. I’ve played to the end of the campaign so far and I can’t wait to play some games again when I get on a work term this fall!

I tried Caves of Qud, but after dying a dozen times due to botched combat, I can't get into it.

The way I played I got more of a NetHack in an open world setting vibe, rather than a sandboxy exploration of a generated world.

I'm not sure what I was doing wrong. Was I focusing on battle too much? Is it even avoidable when the plains are full of monsters, and goals are placed on the other side of the plains?

CoQ has a steep learning curve with the combat. There are some things to learn that are really not obvious. Building a new character is a complicated process and it's easy to mess up and make a character that seriously struggles in the early game. It took me about a hundred hours of play before I got a quasi-win (reached the end of the quest line as they've written it so far).

You can play characters which avoid combat to a large extent, in quite a few different ways. You can get so good at talking to people that you can get some extremely powerful allies to do all the fighting for you. You can also tinker up some really powerful automated turrets that will clear enemies no problem, and use force fields to protect yourself from attack. You can also avoid combat to a considerable extent by picking up some wilderness lore.

Having said all that, combat is a major part of the game, just as it is in most roguelikes.

Only game I've played with emergent (alt-history) stories like that is Crusader Kings.

Every friday the subreddit has stickied thread for sharing in-game stories: https://old.reddit.com/r/CrusaderKings/comments/hc4iyp/feuda...


Considering DF is still all mostly single threaded and IIRC Toady doesn't really know how to make it multi-threaded (per his own admition) that might take a while.

Every time multi-threading gets brought up one of the devs explains that being single threaded isn't the bottleneck. It is the cpu cache that is the bottleneck.

And if it was written with a single thread in mind (which it most likely has been) naively 'multi-threading' it will likely not help do much except increase the number of bugs. Too many independent but intertwined systems communicating with each other.

Making DF use multiple cores efficiently would be amazing, but I have serious doubts its viable in the short-ish term without a significant rewrite. The most you're likely to see is some peripheral systems offloaded onto background threads when possible.

My hope is that with the upcoming Steam release they make enough money to hire another veteran game programmer or two to help them work on game and make it perform better.

DF has many things that could be multithreaded or perhaps even vectorized (such as the heat simulations) very easily.

I agree you can't make the whole agent-based system multithreaded overnight but there are many calculations happening with every 'tick' that I would be quite confident are easily parallelizable.

Isn't (a large part of) DF basically a huge cellular automaton? That problem is already solved for multiple threads.

In a lot of ways, yes it is. But that's where theory and practice diverge. Could all the current systems of DF be implemented anew in a way that easily scales to however many CPU cores are available? Most likely in some way yes they could be. Could the current systems as implemented be ported to better scale with the number of available CPU cores? Questionable.

Game engines are incredibly complex -- there are usually dozens if not hundreds of systems interacting with each other. Over time, this all ossifies to the point where making changes to one system requires changes to many other systems. This is kind of a fact of life with almost every game engine or codebase that I have encountered, worked with, or heard of. When you start getting into more than a decade of development, there are going to be a lot of tangled systems that are going to be very difficult to pull apart.

Yes, the fundamental problem may be solved for multiple threads, but DF solved it for one thread, and that solution is part of what makes DF fun. Messing with that solution is asking for trouble.

Just because something uses a grid doesn't mean it's a cellular automaton. You can probably write DF as a cellular automaton but that's probably not what happened.

If dwarfs have x,y coordinates that mark their position and the coordinates are changed when they move then it would not be a cellular automaton.

A cellular automaton would take a cell and look at surrounding cells to see if there is a dwarf that wants to move to the currently processed cell and switch the current cell to a new dwarf cell. The dwarf cell would see that the dwarf can successfully move and delete the dwarf cell.

Which method do you think is DF using?

I think individual dwarves could still be modeled as cells, if there was an additional layer (or a single cell?) holding their future actions.

The automaton would lose the nice property of being spatially isomorphic to the screen, and the possible states would explode, but if my understanding is correct, it could still be a cellular automaton.

Forgive my ignorance, but do you have any good references to multi-threaded cellular automata implementations? This is something I've been dabbling with myself.

You have two grids. Clear grid 2. Go over grid 1, calculate the new state for the current cell, write it to the second grid. At the end of a step you swap the grids.

Just slap on a good old "#pragma omp parallel for" with OpenMP (a nice guide is here [0]).

[0] https://bisqwit.iki.fi/story/howto/openmp/

I also found this pdf if you are interested. http://www.shodor.org/media/content/petascale/materials/UPMo...

You could even do it on the GPU, with 1 thread per cell.

We don't really know how feasible multithreading is, but the community suspects at least some tasks could be computed on different threads, such as e.g. the pathfinding stuff that one of the worst offenders when it comes to FPS.

Does that sound right? Do I have this wrong: there is too much to cache so some of the memory goes to RAM or disk where loading will take longer than cache. You could move some of the loading to another thread so that the UI (text or otherwise) can continue while other data in the backend is moved around between cache, RAM, and disk, and then processed before sending to the interface.

Don't modern processors have more cache available between all cores than available to a single core?

They must mean its memory I/O bound.

I think they meant it only runs quickly enough when everything's in cache? But that doesn't make much sense to me. It's really hard for me to believe it'd be I/O bound though, when memory bandwidth is like tens+ of gigabytes per second?

IO bound can also mean that memory latency is a problem. It's not difficult to believe that DF is doing lots of pointer chasing.

I've started enjoying the game a lot more when I lowered my population limit (like to 10-15) and started playing smaller forts. Makes FPS death much less of a problem and means I can actually take care of my dwarves instead of rushing to keep up with population growth. Not breaching the caverns also helps a _lot_ with FPS.

Personally, I'm more excited for the myths and magic release that he's been working on for the last couple years. That's going to completely change the game and really make each world feel unique.

I love dwarf fortress, i've played it for years, but I always hit its limits what feels like far too soon after each release.

Graphics packs have always existed. But I am glad they are putting it on Steam. Hopefully doing so will make it easier to send money Toady and his brother's way. I know he is struggling with cancer right now... sad stuff..

I don't expect it anytime soon, though. I added the game to my Steam wishlist soon after it was announced on Steam. That was in March of 2019.

DF is wondrous not just because of what it is (I think it's one of the greatest living examples of the artistic potential of computers as a medium), but also because of how it came about. In a society which does about nil to allow for this kind of deep creative work to flourish (I mean, was Toady basically living on ramen for most of the 2000s?), the Adams brothers set out and did it anyway. And we're getting to see it happen in real time!

After watching this I went to go check in on my last fort that I played which was about two years ago. Turns out the countless hours I spent herding dorfs in college have left me with an instinctive memory of the key bindings over a decade later. DF has such incredible depth and nearly infinite replayability. It struck me today that despite all that time playing I have never actually made it to a fort that was able to produce adamantine weapons, and you know what? Loosing really IS fun! DF is one of those works of art that truly elevates our sense of the possible. Now, if only we could convince Toady to work on multithreading ....

>Now, if only we could convince Toady to work on multithreading ....

I have thought about this problem mostly because Minecraft runs like shit when you overload it with 300 mods.

It's much harder than you think. Unfortunately there is no "easy" solution. Converting single threaded code 1:1 would only be possible if you could guarantee that no deadlocks will occur and that requires trickery unique to the problem at hand. It's not really a scalable solution. If you can, you should try to avoid acquiring more than one lock at a time but that also means you will have to rewrite everything to use message passing. Rewrites mean bugs and no new features for a long time.

Or just opening the graphics interface ever so slightly. Those menus do not need to be so convoluted as they are, and plenty of fans would jump in to do a UI overhaul if allowed.

DFhack already modifies many parts of GUI. Changes in trade window or construction building(floors/walls) are so convenient I refuse to play new DF release until dfhack is able to support it.

Dwarf Fortress sessions have been fun, but Oxygen Not Included provides a lot of the same type of satisfaction (unfortunately with no combat aspect, but much more complicated designing and building of systems) with great graphics and great UX. It's 40% off on Steam right now:


The simulation is highly detailed, but in a different way than DF: liquids, gases, creatures in the environment, and networks of machines that you build to produce food and oxygen, recycle various elements, manage germs, and generally keep your base alive. ONI is made by Klei Entertainment, an experienced team, which is primarily known for the game series called Don't Starve. It was in early access for a while and launched in July 2019. They've been adding more content periodically for free since then.

I've enjoyed games of DF, but I'd find it hard to come back to after having played games like Oxygen Not Included, Prison Architect, Rimworld, Frostpunk, Banished, and so on. I'm looking forward to seeing what they come up with for the Steam release, though, and maybe be willing to give it another try.

Factorio is absolutely amazing, but that's an entirely different kind of game.

I love DF. I played it for so many years that I knew all the bindings I needed by heart. It was insane.

But I left it alone many years ago, like 6 years ago at least.

And after that I feel like you can get the same joy from simpler games, and prettier games, like Rimworld and Oxygen not included.

Sure they'll never be as complex and deep as DF but they're much simpler to get into after not having played and they don't have a steep learning curve.

To this day I'm on the lookout for DF-like games on Steam. And I'm still waiting for DF to come out on Steam to give it another shot.

I tried to get into DF by watching some of the better play through videos. It was fun but in the end it just inspired me to pick up Oxygen Not Included again.

Some casual alternatives to Dwarf Fortress include Gnomoria or Rimworld. They do not have the same level of depth, but they're enjoyable.

+1 for Rimworld. I've sunk hundreds, if not thousands, of hours into that game. It doesn't have the same depth as Dwarf Fortress, but still has a lot of depth and a ton of Fun. Especially with Randy Random and his random event generator

Another +1 for Rimworld. I picked it up after a particularly long stretch of playing DF, and it has managed to both satisfy that DF itch while providing plenty of its own unique Fun.

DF is certainly deeper, but Rimworld is much more approachable to the average player. I would argue that Rimworld is also significantly more moddable than DF is. While with DF you can change the raws, Rimworld allows modifying some of the base game code, so you can do way more with Rimworld mods.

I got the expansion. It is mostly for people that do the quests. I am not too much into the quests, caravans and such.

I actually haven't gotten that yet. With how much there already is to do, I haven't found the itch to expand the base game just yet.

There is also Cataclysm: Dark Days Ahead[1] which is open source

[1] https://github.com/CleverRaven/Cataclysm-DDA

I love CDDA, but it is not really that similar to DF. It's a very punishing rougelike with a huge amount of depth, but it's an RPG style game, not a strat/base management game, and it doesn't create a procedural story with Rich depth, it was some fun depth, but that's coded in by the developers.

HN crowd might be impressed by the scale of the contributors though. Last I checked it has over 1.1k contributors. Just cloning the repo takes a while.

Did not know about this one, I'll check it out.

Should also checkout Kenshi, on the surface very different, but in practice I think it can scratch a similar itch.

I liked Kenshi, but it was a bit too shallow and rather janky. I am looking forward to Kenshi 2.

Haha yeah, I consider Kenshi to be the jankiest game that I consider worth playing.

For me, that title was recently taken over by My Summer Car.

In Rimworld, the most entertaining mode is the one where you start with only one wounded colonist with no gear and no food.

You have to build a shelter, craft some rudimentary weapons, hunt, and then survive your first raid.

gnomoria is different insofar as the gnomes don't have personality. this makes it more of a "pure" sandbox simulation game rather than a story generator (which is probably the biggest part of DF/rimworlds appeal).


Edited, thanks.

CDDA is gradually evolving into more of a Dwarf Fortress than a Roguelike as time goes on.

Could you elaborate?

Digging, destruction, building, crafting, all are becoming as much the focus as slaying zomboids

I have learned to enjoy the game, but I enjoy it despite the abismal UX. I know other people can interiorize it, and that's cool, but it is not my case.

To be precise: I don't mind having keyboard shortcuts for lots of things. I think that's good UX. But all options should be mouse-clickable too.

I find the separation between Designations, Piles and Burrows (or whatever they are called) very confusing. In my mind they should be the same kind of "thing" in the UI (a "zone"). Farms are their own "kind of zone", with a custom UX which looks like the one used for building walls (which is just bad imho, just let us click on the two corners please).

That brings us to my biggest grip: lack of consistency across different windows. The initial overmap has a set of keys. The initial "prepare your journey carefully" has a different set of keys for moving around the menus. Then the zone designation window has yet another set of keys to navigate through the menu. The fortress task manager (where you queue new tasks) has another. When a merchant caravan asks you what items they should bring next year, that also comes with a custom UI which is not used anywhere else (and also has its custom set of keys). The steps required to set tasks on each dwarf are so contorted that there is a dedicated tool (Dwarf Therapist) just for that.

And over all this, there is the military management window, which I have never been able to master (I just rely on traps and atom smashers to deal with baddies, mostly because of this, and the fact that ranged attacks have been broken for a while). I wish Dwarf Therapist could handle that one as well.

This lack of consistency combined with the lack of mouse support means that in order to play this game one needs to learn and interiorize a bunch of keystrokes /for each single window in the game/. I understand that for others this is not a huge deal, but this really puts me off. I don't have the mental agility I used to have when I was younger and makes the game a struggle for me.

But the stories produced are great.

On that note, if you just want to see Dwarf Fortress stories and don't want to have to deal with all the UX issues I just mentioned, I recommend the Kruggsmash channel. He really takes this game to another level:


I wish they hadn't stopped the DF TALK podcasts. Listening to Tarn talking in crazy detail about the 10 year plan for some new feature was one of the sweetest ways to fall asleep.

I've been thinking for a while that the creator of Dwarf Fortress should win. Macarthur award. If any nominators read the HN comments, please consider!

I played DF for a while and seems to me that its main usability problem is not text graphics, but general bad UI design. It can be used as a cautionary example of why action-object (instead of object-action) approach and many-modes lead to bad usability.

Interesting. So it's better to have a character interact with the object and then br presented with action options?

I've been trying to learn game design.

DF and Aurora are the two 'games' i sunk the most time in by a far margin, what two pieces of great software!!!

Have you heard about Brogue[1]?

[1] https://sites.google.com/site/broguegame/

Brogue is so much fun, it hits the sweet spot for me between depth and accessibility

No i have not!! That looks great, thank you very much!!

Cogmind might be worth a look too, the author's dev blog is also superb.



Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact