Dwarf Fortress Development
bay12games.com
bay12games.com
In an interview I read, Tarn said something to the effect of that "he was not interested in learning about version control and it would just be a distraction that would take away time from the important work, since the way he works has worked for him for many years".
I can't help but think that first, it's a bit dangerous way to work, all "past, current and future" state of the project is only in his head and if he happens to become indisposed, the project is very very likely to die (though I suppose there would be hardcore fans willing to reverse engineer it)...
Second, it's a loss of historical record... imagine in fifty years historians wanting to analyze the project's history, it would be so much more useful to have a granular history instead of just a blob of files scattered across thousands of directories...
Just look at Unix History repository here for example: https://github.com/dspinellis/unix-history-repo - I think there's immense long term value in preserving this kind of archival history.
I see it as a double edged sword. It's good we get DF, but at the same time, DF itself is a huge mess.
He did do a re-release recently that I funded on $kickstarter_analogue, but I haven't had a chance to play with it yet (and it's been a while...)
Though I guess there's the question of trust... would have to be someone they knew very well.
But it will never ever happen. Forget it. Anyone dreaming about open source DF should go make their own game. And I mean that sincerely: Dwarf Fortress is very good, but there are even greater things that will come. Build those things!
However, as yet, no-one's come close to the epicness of the generated world and story, even if they've made progress on the core gameplay.
https://web.archive.org/web/20091102174928/http://notch.tumb...
Not that it's close to done yet.
It has proper graphics (though simple, it is a one man project). It includes utilities like Dwarf Therapist. The random events are not so random, but tries for better story telling.
There are some limitations, which might or might not be fixed. For example, there is no digging down, only one z layer, so you cannot build elaborate fatal traps.
Overall, I really like it. :)
I haven't tried other DF inspired games from Steam, though...
Subversion tried to generate everything and have deeply complex simulations -- mostly because he realized Introversion couldn't design every last detail by hand at the scale the project was trying to provide. PA itself was actually directly the result of Chris realizing that he had more fun trying to build these intricate simulated scenarios than actually playing them.
There's a beautiful demonstration of Subversion where he shows a heist scenario with intricate alarm and security systems and how the player could just bypass all of it by simply shooting people -- that was apparently the dying blow to the project.
There's plenty of crafting games way before DF. In fact, some of the earliest RPGs I played, like Neverwinter Nights (1991), allowed crafting weapons and armour. Maybe crafting has taken off a bit (too much) since DF.
I'd try "survival sandbox". In Minecraft and Dwarf Fortress the initial goal is to survive. Later the game turns into a sandbox where you can build magnificent structures. For the sandboxing there is some complex simulation going on (biomes,fluid dynamics,etc).
http://i.imgur.com/YzevDTs.png http://dwarffortresswiki.org/images/4/40/FunComic.png
I know EVE was in the original version I saw years back, and there seems to be some misattribution to XKCD (presumably due to the art style and humorous graphs?). Bonus points if anyone knows the POTBS reference offhand.
http://images.mmorpg.com/features/4577/images/LearningCurve....
https://m.reddit.com/r/AskReddit/comments/3m1ahz/which_games...
The only thing DF has going for it is the depth of detail. That is a significant feature, but some day one of these superior games is going to have that too.
I am a huge DF fan, I wish they'd hire an art developer or something. It's just ridiculous.
There is a great 3D one that lacks features but the interface is great, that one is called Dwarves! if I recall correctly.
And that's ignoring the lack of any story component, complex interactions, any interesting events apart from "something came to attack your area", etc. It's just boring once you play it a few times.
The same bug that's never going to be fixed makes the game not fun at all for me.
That sounds to me like you're avoiding parts of the game because they're not fun, regardless of the chance of them being fixed in the future.
I've read the developer's reasons for not having graphics, and it's BS. If he doesn't want to do it himself he should let someone talented in that area join the development team.
You're right of course, it's his project and he doesn't have to share it. It's free and beggars can't be choosers. But a game belongs as much to it's community of players as it does to the people who create it. The best games ever created have all been open, either open source or by embracing a modding community. As a gamer who's had a passion for all forms of gaming since before I could read, I find the developer's attitude extraordinarily negative in general.
That's my opinion, nobody is obligated to share it. I'm just saying something superior is going to come along and when it does nobody will remember DF. And that would be a shame, really.
> If he doesn't want to do it himself he should let someone talented in that area join the development team.
And it's also one guy living off Patreon and the donations generated by DF. Where should he find the money to pay an employee?
Toady's reason for the simple graphics is that it lets him focus on core gameplay, which is what he enjoys.
And in the same way, they are honey traps for young coders who don't get the sheer amount of different games which are working together here. (With the commensurate gripes about interfaces as well)
On the other hand, Tarn has said that he now no longer understands this part of the code. If he ever needs to modify it he'll either have to learn how it works from scratch, or farm the work out to the community again. Since he has no desire to become a project manager, he's unlikely to do the latter.
Also, the game isn't completely closed-source; it uses SDL, libpng, zlib, etc.
Interestingly enough, this hasn't really stopped people from improving on DF after the fact. Just take a look at the dfhack and Text will be Text projects, for instance.
On the other hand, Tarn has said that he now no longer understands this part of the code. If he ever needs to modify it he'll either have to learn how it works from scratch, or farm the work out to the community again.
Reasonable, but that's when, surprise, revision history is pretty useful in figuring out what the changes are and why they were made :)The comment that tells you what happened is merely saving you some time parsing the code. The comment telling you why it's done like that is completely irreplaceable.
Documentation saves lives, people.
Not only can this be surprising to a client, but it also makes it difficult to leverage the code for reuse elsewhere ("I only wanted the IP address, not the rest, guess I'll write one called getIpAddressOnly", etc).
Functions like this also tend to become muddled and difficult to maintain because as time marches forward, functionality may need to be added between these side effects, and again, unless it is refactored, it has to end up within the same function, making the whole problem even worse.
I want you all to imagine having to work with this person.
I mean I love dwarf fortress but I probably wouldn't kill toady for it
So, there's a chance?
It is painful to see people so smart pooh-pooh something so obvious as a useable UI (I won't say "decent", because "decent" nowadays is this brightly-colored material-design garbage) that isn't super painful for people who like to come and go.
Treat the experience more like playing with some sort of odd micro-kernel in a VM, with tools for poking and probing it. Approach it like a software development tool, or a Linux server and it becomes a little less daunting, especially as all the letters are on the screen for quick reference, rather than in a man page.
Still, the beauty of Dwarf Fortress IS that it doesn't care about the UI. It's not for you. It's not for anyone other than it's creators. It's for Zach and Tarn. Yes, it's also for the game's fans, but the brothers have always been building the game THEY wanted to play, and doing exactly what they wanted to do. They're not beholden to a schedule, or some massive revamp required in order to make the game more accessible. They're true to their own desires and souls.
They're artists. This is their art. Yes, it is truly impenetrable, but as with almost all art, taking the time to delve deeper is uniquely and spiritually rewarding. Yes, spiritually.
Yes, they're artists and this is their art, but software rarely -- if ever -- exists in isolation, yet DF acts like it does. You've all these nerds with too much time on their hands building all this ridiculously complicated infrastructure just to play the game in a way that is more comfortable, when instead the DF guys could simply allocate X amount of time and then be done with it. And this isn't a demand that the DF guys make the UI better, just a wish that they would put in a minimal amount of effort so that the community could hook in their own GUI code with a minimum of fuss.
Besides, I write code and debug fussy computer shit all day for work. Games shouldn't require that kind of advanced hackery just to play.
And who cares if they're artists? Neither the artist nor his art are immune to criticism (or, wishfully thinking, critique).
In cinema that sentiment has resulted in some of the most vapid, unwatchable trash ever created. In music this results in experimental, unlistenable noise that never seems to appeal to anyone enough to be self-sustaining. It's like an emotionally repressed teenager crying out, "you don't understand my pain, man! you'll never understand!" We do understand, we've all gone through it, and we've moved on.
If DF's creators want to be avant garde, then fine. But it is a lonely, and possibly pointless path, and again a damn shame, because oh how amazing it would be if it weren't!
Game development, these days, is so focused on hand holding, genre, and accessibility that it is only by truly following ones heart that something unique and new, like Dwarf Fortress, can be created.
Plus, it's still not verion 1.0, so who knows, maybe someday they'll fix the interfaces! But since other things are always in flux, it'd be a premature optimization now, anyway. Those pave the road to Balrogs, or something.
But, as you say, it's their project. They can do with it what they want. I can sit here and critique and wish it were better, and you can defend it, and together we change nothing. I just really want to play a game as inspired as this in a way that doesn't require the kind of devotion and study this game does, because its a friggin videogame and I need to devote my studyin' time to shit that actually matters (to me, touche).
(And besides, I think we human beings have a fetish for complexity that we really could do without)
The original link for this thread is basically a huge list of the things that are not yet implemented.
The rest of that list? Stretch goals. Or the entire vision. What, you think I've never seen that list? It's a big list, and it's stupid because it is so impossibly long. The entire vision is never 1.0...
I call BS
They've already been working on it for a dozen years, so what's another dozen?
Anyway, back to the UI: they can rethink or polish it in the run-up to 1.0; no need to spend too much time on before then.
It prevents everything from having the same esthetic and feel. The graphics of DF is also what makes it unique from the rest.
And this is why, fascinating as it sounds, I'll never play Dwarf Fortress. I already have a job, and I get paid for it not only in satisfaction but also in money. It's awesome that they're able to devote their lives to their artwork, and I like reading about it from time to time, but in the end it's an unappealing value proposition for someone with limited time.
That being said, I'm glad that I donated. I feel that I've gotten my money's worth just from reading about it every few months and knowing that I am supporting indie game developers. Hopefully at some point it will become more user-friendly so I can actually play it. Or maybe I should drop some hobbies...
Does anyone know how long it takes an average new player to get to the point where Dwarf Fortress is more fun than confusing and frustrating?
Or, like me, you just turn off acquifiers in the Lazy Newb Packs launch options. Newbs should probably also turn off invasions.
Finally, a quick hint to help your fort flourish: ALWAYS kill the elf traders. You get all their stuff, and they never invade or get angry. They tend to come back again, actually, bringing you more cloth and food for free!
The reason he transitioned to Dwarf Fortress (aka Slaves to Armok: God of Blood, Chapter II: Dwarf Fortress) is that developing the graphics and UI took so much time away from gameplay.
The problem with DF is that the UI runs off in a completely different direction. Playing the game requires untangling a mess of counter-intuitive mental contexts, using controls that seem to make little sense. It is an experience wildly different than the way one expects-slash-wants UI to behave. Artistically, one might say that DF's creators are making a statement against modern UI and its inherent complexity, but then I think that falls flat when you realize that the alternative (as in, what is it right now) requires considerable study to enjoy.
Is it artistic statement, or laziness? Or something else? Software, like all interactive mediums, has a functional component that you can't just ignore. If this were a painting, or a sculpture, or music, and I could only interact with it through perception, then that's fine -- entire art movements are built from challenging prevailing norms. But software is experienced through use, and no artist is immune to the practical considerations of their medium; rules which are best heeded. (Or not, but very veeery carefully and with great discipline.)
DF is a game, and games are meant to be played. This is a fundamental tenet of games. Play happens through approachability, among other things, and approachability is the product of an equation that includes good interface design. A game seemingly opposed to even a modicum of approachable design (something as simple as remapping mouse and keyboard controls to behave intuitively, as one would expect an ncurses-type app to act) runs opposed to very fundamental notions of game design. It is also terribly ironic, I think, and irony really is one of the basest and most-overused cliches in modern art.
Again, even the barest of olive branches extended to the community -- a simple, low-level API to hook into, or better default mapping of controls, or a recanting of their weird ideas of how windows should work -- would satiate this critic, as I really do want to enjoy DF. It is a shame that such brilliance is locked away in such a homely and unapproachable exterior.
Of course it can be ignored. Given the depth of the feature list (see the original link), and the vagueness of the items on it, it's not surprising that they haven't gone through and come up with a comprehensive and perfect UI before anything else has actually been implemented.
Instead the UI grows to accommodate the features as they are added, like every other program in existence.
But what if, beyond working on the gameplay itslef, it was artistically interesting for someone to play around with the practical necessities of the medium and try to diverge from the norm? Everyone believed in a standard, approachable reading format from left to right until poets and writers started messing around with that (I'm thinking ee cummings and House of Leaves by Mark Z. Danielewski). People tried to defy conventional ways to listen to music or watch movies too.
The DF UI is definitely a pain on the practical side and it's made it difficult for me to really get into the game yet, but from an outside perspective I think it's interesting that way too.
Personally I don't think the UI was planned out that much; maybe "it gradually got so" as the song says.
I think it's a bit like the qwerty keyboard. Maybe there was a rational for it at one point, but now it's just a thing you memorize and then don't think about much. In DF the 'loo(k)', '(v)iew', and '(q)uery' commands do similar but disjoint things which could easily be combined if Tarn really wanted to stop working on features for a while. Since he doesn't, it's just a thing that you memorize and then no longer need to think about; it becomes very much like touch typing.
Yes. Exactly!
And in many cases (especially with games), people DO play around with the practical necessities and often stumble on something inspired. Like HomeStarRunner's "Virus" SBemail, or fourth-wall-breaking adventure games that comment on their own interface. But I think in DF's case it falls flat.
Western music is written in a consistent scale for practical considerations: it was discovered that writing music in a mathematically consistent format made it easiest for musicians to play and reinterpret. Sure, people deviate, but the vast majority of those efforts are terrible. Cinema -- even avant garde -- is constrained to the limits of film, audience attention, and patterns in storytelling, and the viewer generally expects certain things. Literature is constrained by the practical considerations of books and the written word, and so written text is formatted consistently per reader expectations. How is software any different?
These guys are clearly really smart. I agree with the other posts here in that I have no beef with the gameplay in any way. But god damn it would be nice if they would get off their high horse and learn from some working engineers.
Ugh, no. Isometric views are a nightmare for usability. They look nice, but they obscure things and make for particularly error-prone tile selection, which is just poison in a game where that's the main thing you're doing.
I'd look to Prison Architect and RimWorld for UI inspiration, not Stonesense and Gnomoria.
It doesn't have to be good looking. It doesn't have to pretty. It doesn't need to be 3d, or need all these fancy bells and whistles. Nowhere has that been suggested (at least in anything I've written), yet people nonetheless frame their answers in this artificial contrast.
Once again: just make the UI intuitive. Make things behave as normal. Grant a few hooks into the GUI code so the community can create their own without having to reverse engineer your game. That is all!
You literally just suggested a pretty isometric visualiser become the new basis for the game UI.
That's a bit like complaining that vim is obtuse and to fix it we should switch its rendering engine to use proportional fonts.
> just make the UI intuitive
Oh yes, "just" do that.
If you actually have something new to suggest, feel free to contribute: http://www.bay12forums.com/smf/index.php?board=5.0
Generally the attitude is perpetually "yes, it'd be nice, but then we also want all this other stuff". And at the end of the day, Toady does what Toady does, he doesn't owe us anything.
I did. They were still easier to learn and play than Dwarf Fortress.
A lot of people like to say that Dwarf Fortress is too deep and complex to ever be "easy," that making it more usable would dumb it down. This is silly. No one is saying that it should have fewer variables, fewer controls, that the underlying model should be changed any way. None of those things are necessary to build an interface which e.g. doesn't assign different keys to the same options in different menus.
To compare it to another famously unforgiving game, would Dark Souls be better if the controls reversed themselves every time you opened a menu? Would people consider that an exciting challenge?
I've worked with people like the DF developers, and even when they're skilled enough to tolerate their eccentricities, no one would ever pretend that it's a good thing. I think that's my real beef with it. As a programmer, I don't like shitty design. Dwarf Fortress is an awe-inspiring concept and engine buried in the shittiest of shitty design.
That being said, I play it regularly and I found its learning curve incredibly similar to learning Vim. Videos really help in this regard - plus reddit's dorf fort community is really welcoming. Watch videos, pause a lot, and practice. A huge part of the game is !!FUN!!, which can be directly translated to "you will lose quite often". And that's okay!
You can find a fort almost exactly like that in Roomcarnage:
It'd be bad enough coming from the people who actually donate the money that adds up to the steady living the Adams brothers earn by their work on Dwarf Fortress. Coming from random Hacker News commenters, many of whom hasten to add that they'd never play anything with such an awful UX themselves, it is bewildering and disappointing.
Isn't this community supposed to be above such things?
However, certain things do become issues once your dwarf population scales past 15 or so. Checking dwarf occupations manually (e.g., to make sure that there is at least one dwarf who is currently assigned the furnace operator occupation) becomes a pain, so I'd suggest using Dwarf Therapist [0] to manage that. It also lets you quickly check other things, such as whether any dwarves are feeling particularly sad.
Also, I encourage people new to the game to check out some of the stories that the community has generated throughout DF's existence. The game's ability to generate interesting scenarios that lead to good stories to tell your friends is perhaps the most interesting part of the game. Boatmurdered [1] is a classic. Roomcarnage [2] is currently in the process of being told and is quite good.
[0]: https://github.com/splintermind/Dwarf-Therapist
[1]: http://lparchive.org/Dwarf-Fortress-Boatmurdered/
[2]: http://www.bay12forums.com/smf/index.php?topic=139393.0
http://fourkitchens.com/blog/article/fix-scrolling-performan...
Is it also an issue on IE/Edge or Firefox? What about Safari/Mobile Safari?
> The performance for this feature is so bad that iOS simply ignores this property.
I first started with adventure mode, and tried to make a conversation with someone... tried. New conversation system is a huge mess. Sure it is much more advanced but interface is needlessly complicated, it takes away all the fun.
I just closed DF and didn't even try fortress mode after that. I love DF but Toady's tastes with ui is too eccentric for me. I hated military UI when it came out and now this.
People doing awesome job with DF using reverse engineering. Playing it without dwarf therapist for example would be a nightmare. I wish it was opensource or at least had more modability.
There is a reason the "old-fashioned" tiling window managers are still popular. And today most applications are internally structured via tiling/splitters and tabs, rather than individual window placement. Let alone that all attempts for a "web desktop" never took off.
Alas, I don't know any authorative sources for that, but I bet that manual window placement (and most of the time, also overlapping windows) is a well-known anti-pattern of user interface design.
Decompilers of varying quality have existed for a long time:
Something that looks like the UI code has its source included with the game, so there's some info to be gleaned there. Also, any interfaces to external libraries would be fairly easy to trace.
Still: Very difficult, due to the size of the binary (21MB), and the level of painstaking attention to detail that's necessary to reverse-engineer a program from its binary. Automatic decompilers exist, but they're fairly limited, and you'd still have the issues of meaningless variable names, even in the best case.
I've always thought it would be useful to have a debugger that logs all the locations that data is read from or written to during execution, and which addresses were executed as instructions. Just play the game for a while to try to get some good code coverage, and import the data as extra input into IDA (probably you'd have to write your own plugin for that too).
I am sold on the ASCII graphics, especially once you drop in a decent replacement set. Generating unique icons for all the bazillion different things would be a huge undertaking graphically, and you pick up what things are quickly.
Sadly, the UI (and I use the term loosely) is still, well, awful. The menu system makes no sense (sure, you can memorize where something is, but that's not what I mean), and the keystrokes seem to be randomized across menus. As others have said, there's actually a pretty good game under there these days. It's just horrible to interact with.
I suppose for new folks, it can be hard getting into it, but for the rest of us, I think it works quite well.
Praise the miners!
He's developed a procedural story generator; it doesn't look pretty on the outside, but it's become his life's work and inspired generations of developers.
The visual style of the list may be closer to an academic's webpage (he is a math PhD after all), but for fans of the game, it's a blueprint for a masterpiece.
I personally like the way he designs; write a story then build the game until it could potentially be generated by the game.
This strikes me as a particular, intentional style.
Dwarf fortress is fairly unique in style. I could say it's style is good, but I'd have to describe the game, it's culture, it's development history and how the minimal, perhaps unclean and cludgy style can help weave your imagination into it's narrative.
He could clean up the site, but I think it helps players understand the contract they are getting into by playing this game. A clean website would misrepresent dwarf fortress and it's style.
Or you could wait till someone makes a web page which tracks and sorts all the goals into a readable tree, thus side stepping the issue all together.
The game has a huge community of fans but no one can contribute in any meaningful way. I dunno I find it mildly frustrating.
commit 7245 - working now, dont know why. whatever
commit 7244 - added debugging
commit 7243 - stupid impossible bug reported
commit 7242 - UI unimprovements I am required to make
commit 7241 - it is friday so committing before I go home LOL
And also what usually stops me from submitting pull requests on github.
Going open source is like letting someone walk around inside your brain; If you are not thick skinned enough it's going to hurt, a lot.
I tried it once, and admittedly I was a much worse coder than I am now - it was my first big personal project (a MUD server) and I basically levelled up my coding skills from 'tinkerer' to 'semi-expert' over the years I was I writing it. When I finally open-sourced it (due to pressure from the community) several people tore it apart, and basically told me I was a shit programmer.
And that's why I don't do Open Source.
It's basically a single 37kloc file.
Now, ... I'm not really one to say that you should keep all your to one function/class/whatever, i can appreciate the times when splitting things up does more harm than good, and I'm totally comfortable managing a 3-5kloc file.
But goddamn, 37kloc in one file is pushing it.
[0] http://www.bay12games.com/lcs/ (check 3.05, not sure if the later ones got cleaned up, i remember there was some effort by a couple devs to do so but... i don't know how far they got)
The `game.cpp` file is 925kb(!) in size and momentarily choked up my NVim upon opening the file. Hilarious.
Edit: Reading the source code made me want to play the game. The premise is great:
> The Conservatives have taken the Executive, Legislative, and Judicial branches of government. Over time, the Liberal laws of this nation will erode and turn the country into a BACKWOODS YET CORPORATE NIGHTMARE. To prevent this from happening, the Liberal Crime Squad was established. The mood of the country is shifting, and we need to turn things around. Go out on the streets and indoctrinate Conservative automatons.
EDIT 2: looks like it's still being developed and no longer 1 giant file https://github.com/Kamal-Sadek/Liberal-Crime-Squad
Heck, just reviewing someone else's code is a potentially huge time sink.
Honestly, I find it hard to comprehend how much entitlement your comment suggests. A game is a work of art for his creator(s) and it is their own prerogative if they release the source code or not.
I can understand someone that wishes a game to be open source for study or moding purposes. But insulted by a game that doesn't align with my political agenda/view is a bit too much.