Dwarf Fortress Creator Explains Its Complexity and Origins [video]
youtube.com
youtube.com
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.
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!
Doesn't sound overstated at all...
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.
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
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.
You are just far more productive with a keyboard, especially once the commands are in muscle memory.
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.
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.
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.
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.
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.
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.
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.
> - 0009195: [Dwarf Mode -- Pets] Cats dying for no reason - alcohol poisoning? - resolved.
[1] https://www.bay12games.com/dwarves/mantisbt/changelog_page.p...
> 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
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:
https://www.bay12games.com/media/df_talk_8_transcript.html
> 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.
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.
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
* 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.
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.
Do you mean Animal Crossing? Stardew Valley drew inspiration from Animal Crossing and Harvest Moon.
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)
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
If LCS is any indication, the code in DF will be a horrible mess.
That being said, LCS came out in 2004, so presumably Tarn has improved over the years.
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.
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.
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.
[1] https://github.com/DFHack/df-structures [2] https://github.com/DFHack/dfhack
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.
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.
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.
Every friday the subreddit has stickied thread for sharing in-game stories: https://old.reddit.com/r/CrusaderKings/comments/hc4iyp/feuda...
https://www.destructoid.com/crusader-kings-ii-s-community-is...
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!
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.
[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).
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?
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.
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.
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 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...
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?
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.
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.
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.
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.
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.
You have to build a shelter, craft some rudimentary weapons, hunt, and then survive your first raid.
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.
https://store.steampowered.com/app/457140/Oxygen_Not_Include...
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.
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've been trying to learn game design.