The UI in Dwarf Fortress is completely indefensible. Even when you do understand how to play the game it's a kludge. Let alone the fact that AN ASCII GAME CAN BRING AN 8 CORE DESKTOP TO A CRAWL. (The ASCII is actually rendered in OPENGL for performance which is a joke in and of itself because 99% of the system resources are spent poorly simulating stagnant blocks of air rock and dirt with nothing happening to them).
There are many amazing and laudable aspects to DF. Tarn has a physics background and in this regard the game is well thought out. It has unmatched emergent gameplay and behavior due to the physics and complexity of each dwarf.
What isn't well thought out at all are both the 'design' of the software and interface. This is the most beautifully complex game with endless unique and hilarious morsels of awesome (the naming of geographic features and depictions engraved on items) Yet absolutely no effort is spent on conveying that to the user. It's like the game itself is autistic in its savant level complexity and all that beauty is hidden behind an utterly unusable interface and horribly inefficient software design.
Dwarf Fortress is a perverse decent into a single brilliant yet mal adjusted person's 'ideal' game. It's wildly capable and meticulously tended to in all the wrong areas while the glaringly obvious flaws go unattended.
It's like a brilliant mathematician who shits on the floor and writes earth-shattering proofs on discarded fast food bags leaving them strewn about homeless shelters. The hobos (DF fans) all rightfully commend his genius and defend the antisocial idiosyncratic behavior as "part of the creative process" or that anything else would detract from 'the experience' of reading a revolutionary proof off of a shit stained McDonalds bag.
The main problem is Tarn's inability to work with anyone else or compromise. The poor quality interface and software design is a perfect metaphor for the developer behind it. The smallest improvement such as rendering more ASCII layers at once from an isometric perspective would vastly improve the usability and likely expand the userbase by 10 fold yet no effort is made to make ANY UI adjustments.
Minecraft is the perfect example of the level of success DF is capable of. Their premise is quite similar, but where Notch's effort went into a simplistic usable UI with simple physics, Tarn went without a UI and devoted his effort to a bewilderingly complex and amazingly inefficent engine with no reasonable way for anyone to experience it. Tarn could be a multi millionare if he simply would take some damn advice about sofware and UI design.
Seriously, With two more people helping him, one person focused on optimizing the codebase and another focused on improving the UI this would literally be one of the greatest games of all time.
Until that day DF will remain an obscure oddity, like a model train set with a revolutionary efficient engine whose owner steadfastly refuses anyone to use it in anything except a toy which actually causes physical pain to all who attempt to play with it.
I assure you, the current player base is acutely aware of how bad the UI is. It's not even that it's opaque until learned, it is sometimes just downright impossible in vanilla DF to answer certain elementary questions like "how many dwarves are set to mine?" Workflow automation is really primitive, leading to either the "constantly assign dye thread jobs through the manager so the fools will do it" problem or the opposite "oops I left the mason alone for five minutes and now I have a hundred masterwork statues in a single 5x5 square" problem. Not for nothing does Dwarf Therapist exist, and I flat out will not play the game without dfhack's workflow and autobutcher plugins.
It's still genius. But it is definitely one of those "scribbles on the wall in crayon" type works of genius. As the innards of the program itself is better understood, I expect dfhack to supplant more and more of the original UI; it already has a dwarf therapist like mode, a much better job manager, and has started venturing into fundamentally reworking the UI. I recall a plugin not too long ago that allowed you to say things like "as soon as a bed is constructed, put it here".
yeah, and sometimes new things get patched in like squad management so you can say "alternate patrolling with training", and of course it has a brand new interface, which is subtly different from all the other interfaces...
UI critiques of Dwarf Fortress are incredibly valid. But Tarn makes a living off of DF despite that, because he's trying to procedurally generate interesting stories. That's a really big challenge, and it's something very, very few other games try and do. If you check out his devlog (http://bay12games.com/dwarves/index.html) and his planned feature list (http://bay12games.com/dwarves/dev.html) you can see the scope is... staggering in complexity. So the vision is what draws me, personally into the game. The fact that this is all free and driven by donations (publicly tracked here http://www.bay12forums.com/smf/index.php?topic=122396.0) just makes it even more incredible.
This complexity and vision comes with a price. As people noted below, UI is not really Tarn's focus and probably won't be any time soon. The code is not open and Tarn is pretty straightforward about not wanting to share it with anyone, because he doesn't want to introduce more complexity with non-canonical versions and churn as he continues to replace older subsystems with new ones (At least, this is my recollection of the topic, but I've been out of the loop for a while). So no, it's not going to get fixed any time soon.
so far i'd just been beta-testing this on friends who haven't played yet. If you want to try out DF for the first time, please give my tutorial a shot and let me know how it goes!
"UI critiques of Dwarf Fortress are incredibly valid." Yes, and no one has ever marketed the game as anything that's Ready For The Prime Time, possessed of a decent UI, or anything other than something that's really fun and interesting despite being an early development version of someone's cool pet project.
You can come back and complain some more in earnest when you've paid money for it. :)
--
Postscript: If some friend, roommate, frenemy, or random dude on the Internet has, in fact, marketed the game as something that's ready for the prime time or possessed of a decent UI, they're putting you on. :P
Maybe he just wants to make his game, perhaps not a game for you or many other people - but his game. For him. Not everything has to be simplified and dumbed down. We have plenty of those kinds of games.
Also, I'm confused by your shock that an ASCII game can bring an 8 core desktop to a crawl. Just because most games spend most of the system resources on displaying pretty graphics, doesn't mean that DF has to as well.
I'm sure he does just want to make his game. I'm also free to criticize the glaring shortcomings. There is VAST room for improvements without dumbing anything down. A perfect example of this is the fact there are two ways to draw rectangles for designating areas for trash vs mining. What on earth could be the reasoning behind that and how would fixing that be 'dumbing' it down?
What about the nonesense up/down stairs. How many thousands of dwarfs have perished at the bottom of a Down only stairway they have just dug, only for the mistake of not designating the stairway as both capable of upward/downward movement. So you watch, helplessly as all of your miners slowly die of thirst in a hole 6 feet deep a foot away from everyone else.
Playing chess by moving the pieces around with your hands is surely easier than rolling them around with your nose, but I would hardly call it 'dumbing down' the game.
First make it work. Then make it elegant. Then make it fast.
DF is at stage 1 now, and I think it's very reasonable to postpone ui polishing and optimisations till all the features are in place. Otherways he would need to constantly rewrite optimizations and the structures that allows speeding the game up, to kep up with new features. Which will take much longer in the end, and could kill his enthusiasm, ending the project.
Tarn, the creator, has said that Dwarf Fortress might be the last game he ever creates. He may still be working on it 20 years from now, and it may still be in a pre-release state at that time.
Eh, I don't know. Part of what makes Dwarf Fortress unique is its meticulous attention to detail. Tarn has so far been able to concentrate so fully on the game's simulation aspects by mostly ignoring things like the UI and optimization.
Could he hire on another person to work on the non-simulation bits? Perhaps. But that takes money. Tarn makes donation information public, and he makes between $40k-50k a year before taxes and the ~$800 a month he pays his brother for the help he provides. Enough to support himself, but not nearly enough to hire on another full time person.
Not to mention there are already other games out there attempting to emulate Dwarf Fortress (Gnomoria and Towns immediately come to mind) in a more user friendly form, but neither of them yet come close to intricacy and scale of Dwarf Fortress.
If he opened up the code I'm sure people would do it for free. If he doesn't want to open up more of the code I bet there are scads of people who would do it for a cut of the profits. And yes if he doesn't improve things eventually a competitor will mop the floor with him.
I am of the opinion that beyond a certain level of complexity Stage one depends on Stage two. DF has been there for quite a while. Stage 2 should be done in tandem with stage 1.
Complexity is like beauty though. A programmer can turn something as trivial as a command line calculator into one of the worlds greatest feats of engineering.
Where you are mistaken is your assumption that given enough time, every programmer will follow a predetermined structure.
Our tools may require logic, but that doesn't mean we must behave logically.
I understand that no two people will design any system identically, but for many situations there are 'obvious' solutions.
Regardless of that, well engineered code is far easier, more flexible and waaaay faster to maintain in the long run when compared to a mess of quick dirty hacks to get passable results. It takes no time at all for the hacks to impede your ability to make changes to the system.
Early in a project it's often difficult to get the design perfect. Requirements are refined and unforeseen engineering challenges crop up. When this happens your existing design pattern may no longer be a perfect fit. This is how I approach it:
I think about what the new 'ideal' or obvious solution is considering the new challenge.
If that solution is not practical to implement. I may try to engineer around the problem in a way that is consistent with the design of the rest of the system. While it may not be the 'optimal' solution the next developer who needs to get in there and change something will readily understand what's going on if they are familiar with other parts of the system. I like to call this 'fractal' design.
I rarely encounter a situation that I cannot solve via the ideal or fractal approach. But only after I have ruled out both do I allow myself to resort to hacks.
Regarding the inefficiency of the engine. There is something seriously FUBAR with the design when you must choose the size of simulation (the rendered rows and columns of ASCII representing the playable zone in the window not the physical dimensions) at the beginning of a game before embarking. The performance of the game is directly proportional to the number of blocks in this zone + the number of dwarfs and NOT the actual stuff happening to them.
The bad part is that you have to completely start over and embark with new dwarfs if you decide that your system can/can't do a bit more and you wish to adjust the size of the zone.
Current hypothesis on the forums is that he uses some simplistic variant of A*; in extreme situations everything pathfinds to everything else once a tick in a totally serial program. The player base sometimes resorts to weird hacks and layouts to reduce the branching complexity of the path finding, but ultimately the more loose stone and objects you have to pathfind off and the more things you have pathfinding the worse everything gets. You don't even have to have a large number of dwarves for it to crop up; sheep are capable of bringing your machine to its knees if you don't ruthlessly cull them, or notoriously the catsplosion problem.
I would love to see a bunch of hard hitting engineers focus on optimizing DF with multithreading and GPGPU stuff. It would probably require a full rewrite. Having some experience with AI and pyopencl physics simulations I have no doubt that DF could be many orders of magnitude faster and capable of sooooo much more. That's really where my angst stems from.
Last time I played it, it wasn't that bad. It was like a year ago, before that minecart updates. People are exaggerating a bit or performance went worse?
Nope, it's about the same, if anything I believe there are some improvements...which just mean your system gets pushed to its knees doing something even more crazy.
"There is something seriously FUBAR with the design..."
I call shenanigans.
I would like you to point out another reality simulator where you can dynamically resize the simulation. Can you ask SimCity "hey, generate me a few extra acres of The World around my periphery"? Or chop it back off again?
A fixed-size simulation is the norm. Anything else is fairly exceptional (and even Minecraft has caveats). What's different here is that you get to choose the size of the simulation in a very customizable manner.
> There is something seriously FUBAR with the design when you must choose the size of simulation (the rendered rows and columns of ASCII representing the playable zone in the window not the physical dimensions) at the beginning of a game before embarking.
Normally the DF executable works like a terminal emulator, rendering the glyphs using GL or such. You can however run dwarf fortress in a console (ie, to run it over SSH) by changing the configuration file, and then it is a true text game.
BTW it doesn't use only ASCII but a larger subset of unicode. ASCII would be a very restricted set of characters to use.
It uses a mix of graphical tiles and text, it's not all just an array of unicode. They're sufficiently decoupled now that you can have most text rendered nicely using truetype fonts alongside whatever graphics set you're using.
Keeping the game a purposefully obtuse niche thing might make sense, depending on the values of the developer. It's possible to not be interested growing the dev team creatively, like most novelists are perfectly happy just writing by themselves. Solo gamedev is cheap, you basically just need to feed yourself and be able to run a computer, so in case you just want to work on the game all day, a very modest wage has you covered there.
Extra money never hurts though, so why not try to grow as much as you can? Well, there's the thing of interacting with your player base, which might be the most interesting social interaction you get if you live and breathe the game. The more successful you grow, the bigger the player base grows and the bigger the status difference between you and a random player becomes.
If it's just you and a few dozen players, it's basically just a social hangout with you providing some interesting entertainment. If it's a few hundred players, it's no longer quite that, but it's still a manageable community where you can have discussions with people. Once things go big enough, the emergent community stuff isn't going to work anymore, and you might be too big of a deal yourself to be able to do random chat and not have things go weird. You might end up having to either get some people as community moderators (you wanted to develop a game full-time, not work as a manager, remember), or just go into radio silence and lose the social venue. And now working on the game is crappier than it used to be, like providing entertainment for a social hangout, but now you need an opaque wall between you and the other people who keep throwing beer bottles at you and each other, dismantling the furniture and lighting fires. So why were you doing this again?
There is (was?) actually an isometric add-on. It really only makes things slower and more confusing as far as I can see. The UI isn't the part bringing one's computer to its knees, rather the very detailed simulation going on (and a whole lot of pathfinding over ever-changing maps).
His goal has always been a sort of "fantasy world simulator" which is anything but simple. I should know... I helped find a ton of physical properties of random materials. Saguaro wood in particular was a pain & had to be determined empirically because there simply weren't any good sources.
Lastly, there is one guy helping with the interface. I don't think it will ever turn into a simplified GUI, though. To be honest, that would require so many different buttons that I wonder how it could work.
Chalk it up to the price you pay to play a game where you can drain the ocean, trap whales, load them into lead cages in lead minecarts, set them on fire, then push them down a giant ramp to ram them into the demons down in hell (yes, you can really do that). I'm not sure he wants to be a huge success anyhow. I think he sees this more as a lifestyle business.
Empirically. I got my hands on a piece and measured the density myself. It's roughly 430 kg/m^3.
Still have a box full of the damn stuff, actually, just in case someone can figure out any half-sensible way to translate the other properties into something DF uses.
Hmm, I think I remember coming across the material properties thread a long time ago.
Wow that was some data gathering. It's kinda strange to think that along with DF you can get a dataset with the properties of various real world materials.
Part of it was crowdsourced to my fellow forumites, but a lot of that thread was just me, Google & Wolfram Alpha. You could probably still find it buried somewhere on the suggestions forum with that giant table of materials, material properties & sources.
Here is the thread where the initial !!Science!! on whether bolt weight made an impact on their lethality - [Dwarven Research: The Effect of Bolt Weight on Crossbow Performance](http://www.bay12forums.com/smf/index.php?topic=115683.0)
I didn't play it, but when I watched some videos of adventure mode (yeah I know, that's missing ALL of it, but the simulation is the same, yes?) on youtube I couldn't help but notice silly things like breaking bones and "bruising the brain" by throwing snow at things, or that dude who killed a bunch of wolves by repeatedly throwing a dead wolf. I am sure there is a lot of simulation going on, but how realistic is it?
The simulation is pretty wonky, yes. There's quite a gap between things that are somewhat reasonably simulated and things which are... not. Throwing is pretty OP though.
Also try dropping a thousand socks on someone. Its hilarious.
Yes, as I described in the first paragraph rendering it in openGL is a joke in terms of the performance gain. The real room for improvement lies in the simulations. Ignoring the crippling UI, there is vast room for algorithmic improvement in nearly every aspect of the game.
We don't need a button for everything, we could have context sensitive menus that change.
It's hard to read, but don't miss the fact that the female titan is leveling skills during combat. Skills like "mammal body familiarity" and "female titan body familiarity." It's every bit as weird as it sounds.
At least the titan managed to injure the bush's "first twig" a little.
The horrendous interface is likely a symptom of the poor quality of the codebase he developed for Dwarf Fortress.
Look at his other projects, such as Liberal Crime Squad (http://www.bay12games.com/lcs/). The code for LCS available on that site is atrocious. I know, because I helped to convert the 38K lines (yes 38 THOUSAND LINES) of code in a SINGLE C++ FILE into something that is actually maintainable when he open sourced the game (fun fact: the IDE I used back then would crash when opening that file).
The reason for this is clear, like you say, Tarn comes from a physics/math background. He does not seem to be very experienced at software engineering (at least he wasn't 9 years ago when LCS was open-sourced). I would not be surprised if the Dwarf Fortress codebase is just as inscrutable as the resulting game.
Oh it's possible to enjoy it. What i'm saying is it's an absolute crime that such a work of art must be experienced in that manor.
Tarn actually exposes enough of an interface for UI improvements (tilesets for example). I've looked into it a few times. Each time I've worked up the gumption to dive in, I've been driven away by the quality of the code I would have to interface (if you think the UI is indecipherable try looking at the source). That coupled with the horrendously inefficient engine has driven me away each time.
It /is/ possible to write a usable UI on top of what exists now, but the entire codebase needs some serious re-factoring before I would even consider it.
There are many amazing and laudable aspects to DF. Tarn has a physics background and in this regard the game is well thought out. It has unmatched emergent gameplay and behavior due to the physics and complexity of each dwarf.
What isn't well thought out at all are both the 'design' of the software and interface. This is the most beautifully complex game with endless unique and hilarious morsels of awesome (the naming of geographic features and depictions engraved on items) Yet absolutely no effort is spent on conveying that to the user. It's like the game itself is autistic in its savant level complexity and all that beauty is hidden behind an utterly unusable interface and horribly inefficient software design.
Dwarf Fortress is a perverse decent into a single brilliant yet mal adjusted person's 'ideal' game. It's wildly capable and meticulously tended to in all the wrong areas while the glaringly obvious flaws go unattended.
It's like a brilliant mathematician who shits on the floor and writes earth-shattering proofs on discarded fast food bags leaving them strewn about homeless shelters. The hobos (DF fans) all rightfully commend his genius and defend the antisocial idiosyncratic behavior as "part of the creative process" or that anything else would detract from 'the experience' of reading a revolutionary proof off of a shit stained McDonalds bag.
The main problem is Tarn's inability to work with anyone else or compromise. The poor quality interface and software design is a perfect metaphor for the developer behind it. The smallest improvement such as rendering more ASCII layers at once from an isometric perspective would vastly improve the usability and likely expand the userbase by 10 fold yet no effort is made to make ANY UI adjustments.
Minecraft is the perfect example of the level of success DF is capable of. Their premise is quite similar, but where Notch's effort went into a simplistic usable UI with simple physics, Tarn went without a UI and devoted his effort to a bewilderingly complex and amazingly inefficent engine with no reasonable way for anyone to experience it. Tarn could be a multi millionare if he simply would take some damn advice about sofware and UI design.
Seriously, With two more people helping him, one person focused on optimizing the codebase and another focused on improving the UI this would literally be one of the greatest games of all time.
Until that day DF will remain an obscure oddity, like a model train set with a revolutionary efficient engine whose owner steadfastly refuses anyone to use it in anything except a toy which actually causes physical pain to all who attempt to play with it.