Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

umvi

A great example of not getting bogged down in analysis paralysis. Adams chose and continues to choose "sub-optimal" technologies for developing and running DF. Heck, last I checked he is still manually doing version control with folders and flash drives. As he states in the article, he is infinitely more interested in the design side than the technology side. The takeaway is that he is motivated to make his vision a reality and ships regardless of the tech choices. An imperfect project that ships is better than a perfect one that doesn't.

honkycat

I always take the opposite view of the development of Dwarf Fortress. I think it is a shame how much the game has stagnated, and it is frustrating when the creator brags about not bothering to use version control.

I love Tarn and I think there is some wisdom in the way he develops, and he is clearly brilliant.

But I look at the state of Dwarf Fortress now, and Dwarf Fortress 5 years ago, and I do not see a huge amount of additional features and design space that has been explored.

Even when Tarn decided: "Hmm, maybe making some money for a product I am proud of and work extremely hard on" when he decided to add the Steam version, it has been a long load to make it there.

The game still has FPS death when fortresses get to a certain, actually relatively modest, size. This is a big deal, it means people cannot dig in as deep as they want with their fortresses. Imagine if your Skyrim game choked to death after investing months into a character because of an unspoken, undetectable limitation.

It is an impressive project, but the lesson I always take from his talks is: "Take your time. Build it right. Someday you may have to make a new GUI front-end, and I don't want that to take multiple people multiple years to accomplish."

Kelamir

> Even when Tarn decided: "Hmm, maybe making some money for a product I am proud of and work extremely hard on" when he decided to add the Steam version, it has been a long load to make it there.

Not quite. It's health concerns.

Quoting https://www.polygon.com/features/2019/3/14/18264569/dwarf-fo... :

"Not long ago, he explains, Zach had a cancer scare. Even with a good insurance plan, the costs to tease things out were high. When Adams looked at his own plan he was shocked.

“We were looking at the health care prices,” Adams says. “If it had been me — we grew up in the same town, right; we have all the same doctors and everything — I would have been wiped out.”

“It’s just scary,” Adams says, referring to the health care system. “The whole thing. So that was on our minds. But also, the whole crowdfunding environment has been a little bumpy, just in terms of how Patreon changes. [...] That’s just how it is in games in general. People just feel kind of a little squeezed right now.”

And so the brothers at Bay 12 are doing something they thought they’d never do. Nearly 16 years into the project, they’ve pulled the trigger on a plan to make a proper commercial release. But how they’re planning to do it is the remarkable part."

HumanReadable

FPS issues is what eventually killed dwarf fortress for me. If you want to do anything interesting be prepared to watch the game slow to a crawl.

That and construction of anything being a nightmare as your dwarfs will get stuck in every conceivable way trying to build even a simple wall more than a meter high.

That said, I have spent hundreds of hours on the game with some great stories to tell so overall I can't complain too much.

chmod775

>because of an unspoken, undetectable limitation.

It is certainly not. It's a well-known limitation.

And it's not even specific to Dwarf Fortress: with most "simulation" games you really can't have your cake and eat it too.

Some games sidestep it with "make-believe" simulation, where they reduce simulation resolution to arrive at something plausible, but not necessarily correct.

But that's not what people are playing DF for. I like my pinkies damn well simulated.

Vvector

But your pinky doesn't have to be simulated every frame, right?

lfowles

Over the entire development of DF an afternoon or two to try out git or similar would have been a drop in the bucket. There's a lot of (useful!) ground between using flash drives and trying out a hot new version control workflow every week.

p1necone

Absolutely agree. The single master branch, commit when you feel like it workflow is very simple, and still miles better than just copying files in the file system.

korijn

But, who cares? If this worked for the developer, what's wrong?

flatiron

So you mean svn?

deepinthewoods

You forgot to mention the "click on this one specific checkbox or your source code is now leaked to the entire internet forever" part. So actually, not that simple and potentially much much worse.

colechristensen

Probably, but also that will always be true “one afternoon of X will make things better” but if it’s working for somebody I’m not going to tell somebody their workflow is wrong.

roenxi

Normally lauding a "sub-optimal" tech means the optimal tech isn't a fit for the problem space or the cost of adoption is higher than the benefits. Something like Tarn doing everything in C/C++ which is arguably good and arguably bad but works. It is unclear that switching languages would be a net win or loss.

In the case of not using a VCS system "sub-optimal" means he's making his own life difficult for no gain. It is difficult to see that it is anything other than a mistake - a 20 year old project with 700k lines of code is going to benefit from version control. The only saving grace is that Dwarf Fortress development predates git so at least there is a good excuse for how it happened this way, but it is still a mistake.

We all make mistakes though, so the world will continue to turn if Tarn sticks to it.

paavoova

I've noticed that people tend to have varying differences in their mental map of organization. If you view a codebase as largely monolithic with only a few states such as previous/backup, current, and future/editing, the addition of version control may not help workflow. Editing is always a rolling-release model, be it backwards or forwards (at least that's what I interpret from "there is kind of an active molten core that I have a much better working knowledge of" in the article. If version control were introduced, you would now be tasked to actively divert workflow to the versioning software, such as when reverting commits, etc. You don't create a repo for trivial objects, such as a simple shell script you write for your personal desktop, so it's easy to see this applied to scale, especially with a single-person codebase like DF. For the script example, a file will typically have undo/revert history in an editor, which itself is a limited form of version control. So there obviously has to be some form of version control used by the author other than file copying, albeit not as explicit as git. I think it's unfair to call it a mistake unless you're directly affected. In the 20 years of (solo?) development of DF, do you not suppose a rational person would adopt versioning were a lack thereof impacting them noticeably? So obviously it's a non-issue as far as scope of the codebase goes.

eru

I understand your example, but as a counterpoint: I do keep simple scripts in version control, too.

But the real simple stuff usually starts out in my misc scripts folder. But that's more for filesystem organisation, not because creating a git repo has any (mental) overhead.

> In the 20 years of (solo?) development of DF, do you not suppose a rational person would adopt versioning were a lack thereof impacting them noticeably?

If they never got around to learning about version control, it's totally imaginable that they are sort-of rational, and that version control would have improved their lives.

bitexploder

If nothing else to see and learn from your own history. Imagine a rich 20 year history of commits. Even if it was all the most basic system with just branches and commits and merges. I am still a source control simpleton after 20 years, but having a few branches using git is rather trivial.

ant6n

Well there must be 20 years worth of backups. I wonder whether there is a way to turn 20 years of zip files storing different versions into a git repository, using the dates of the zip files, the dates of the files inside and perhaps the name of the zip files. Bonus points for detecting branches.

SomeHacker44

I managed code in version control long before Git, and before DF existed in 2002 we had decent and sometimes great tools (ClearCase?). Still, I personally do not care how other people work. Different strokes for different folks, etc.

dragonshed

ClearCase was expensive, unless you pirated it.

As far as other opensource go to solutions, CVS and SVN, branching in them was nontrivial. Many folks preferred zipped folders to using CVS/SVN.

hermitdev

Maybe at one point ClearCase could have been considered state of the art, but that ship has long sailed. I used it professionally from 2004-2013, and it was awful. Branching was slow. Well, everything was slow. It was way too easy to miss new (view private) files. Non trivial merges were atrocious. We were begging to migrate to svn...

jrochkind1

I'd be cautious to take a 20-year project with only a single developer the entire time as an example for other projects that are not that.

But the particular advantages of a single-developer project are worth pointing out; I do think you can "get away" with a lot of... things that would be messiness on a multi-developer project, but aren't on a single developer project when they match whatever predilections of the single developer. There are real "organizational" costs to adding more developers, with the biggest spike at adding a second. There are also obviously disadvantages and limitations to having only one developer. (in this case, not even only one developer "at a time", literally only one developer over the lifetime of a project that's lasted longer than most still-alive software projects!)

chii

But the other side of the argument is that the game is amazingly complex, and this level of complexity may not be possible if you add in a 2nd developer - their vision would conflict, or compromises given early on that prevents future complexity to be added.

AKA, a 20 year project with 1 developer could take more than 20 years with two (to reach the same level of complexity)!

jrochkind1

Right, my point was meant to be that some things are indeed possible with a single developer that aren't with a team and that adding more developers adds organizational challenges. (But there are of course other things not possible with a single developer).

I agree that there are advantages to a single developer project that I don't see talked about a lot.

suifbwish

“ An imperfect project that ships is better than a perfect one that doesn't”

Very very well said.

orf

I see the opposite. DF is stagnant as hell and other games have eaten it’s lunch by building and iterating at light speed compared to the comparative snails pace of DF.

flippinburgers

Using git as a single developer takes tens of minutes to understand at most. It is hugely helpful over time to see what changed and why. The fact that he isn't doing this is a net negative.

krychu

infinitely better*

AndyKelley

I'm really looking forward to the steam version. When I tried the game back in college (admittedly this was 12 years ago), my conclusion was that the beauty and complexity of the simulation engine was effectively inaccessible from the user interface. Not the fact that it was text based, but that it was limited in its ability to expose the state of the system, and provide an interface to perform the mutations of the state that are an intended part of the game experience. Presumably, these are the main bits of polish that are going into the steam version.

P.S. I say this as an [enthusiastic Nethack player](https://alt.org/nethack/player-stats.php?player=superjoe) :-)

chongli

To get the full benefit of Dwarf Fortress I found it was necessary to use 3rd party tools. One of the big ones is dwarf therapist [1]. This tool makes it far easier to toggle job preferences for all your dwarves according to their abilities. It presents a big table of your roster and lets you see all their skill levels and job assignments at a glance. It also has convenient features for grouping dwarves based on criteria such as migration wave which lets you tackle the mustering in one shot whenever migrants show up.

[1] https://github.com/Dwarf-Therapist/Dwarf-Therapist

smegsicle

therapist seems like an important one, iirc they showed a similar interface in a steam version demo. Without it, jobs and aptitudes of all different dwarfs are all over the place and woe to you if you forget the key combo because by the time you figure it out you probably forgot the friggn guys name

AndyKelley

This is a third party mod. You shouldn't need a third party mod to get the main gameplay experience.

Note that Dwarf Fortress is not open source.

eru

What form of "shouldn't" are you using here?

"Shouldn't" as in: the developers of dwarf fortress should be ashamed?

Or "shouldn't" as in: the guy who uses mods is not purist enough?

Or something else?

Since dwarf fortress is free as in beer, I wouldn't complain too much.

I've played dwarf fortress a bit about a decade or so ago, and had fun. But I didn't stick with it. For me, the main benefit was in all the other games, like RimWorld, that dwarf fortress inspired.

wongarsu

> You shouldn't need a third party mod to get the main gameplay experience.

Why? As long as everyone is aware of the mod, what is the practical difference?

Note that dwarf fortress is free as in beer

ant6n

Just.. get good.

libraryatnight

This was the tool that finally made DF playable for me, with it I was able to get into the game enough to enjoy myself and realize what everyone was going on about :)

DonHopkins

They should have called it "Dwarf Shrink"!

entangledqubit

What state are you looking to access/mutate? To me, a large part of the fun from the DF experience came from only being able to twiddle the high level knobs and watch the shenanigans emerge.

I also got the impression that low level interventions may not be usefully realizable in the codebase.

Gigachad

Awesome interview. DF is certainly a fascinating project. But I always felt like it is held back by it’s poor accessibility.

A newer game Rimworld takes most of the core ideas from dwarf fortress but packages it up in a nice gui with help text so you can learn to play in the game rather than with a wiki.

NikolaeVarius

Rimworld is NOWHERE near the amazingness of Dwarf Fortress.

Gigachad

That is what I have been told. I have tried both and I ended up getting a lot of enjoyment out of rimworld while in DF I spent several hours studying the getting started wiki and still didn't really feel like I understood what was going on.

Would be amazing to see all this work that went in to DF exposed to a wider audience with some kind of UI improvements.

eru

Rimworld is nowhere near as deep as dwarf fortress, but it's a game many more people actually manage to play.

They are both interesting.

OnlineGladiator

As someone who has played neither game, can you please explain why?

cassiopeia

Rimworld is an accessible game and while it has a certain level of depth compared to other games, especially on the emotional side of your characters, it's shallow compared to DF.

The problem with DF is, it's hardly accessible. This is why so many people hope for the Steam version. It's often more fun to read people stories playing the game compared to playing it yourself.

DF offers you the illusion of a living world, that is writing it's own history.

Dwarfs discovering some kind of creature living on a mountain edge. They gain interest in it. Throwing stuff at it, talking about it, giving this creature a funny name. Later on your mason will carve stories on your walls in your castle and somewhere in the story, maybe, he will write about this creature.

It's these little things that make DF fun.

detaro

Dwarf Fortress goes into depth to a truly magnificent, ridiculous degree. (I guess also in the non-ridiculous degree of having a 3D world instead of 2D ;)) It simulates a lot more, and thus more is possible in game and more weird and wonderful chain reactions can happen.

NikolaeVarius

I implore you to read stories here https://dfstories.com or a LetsPlay on https://lparchive.org/Dwarf-Fortress-Boatmurdered/

Rimworld has systems, but they are generally pretty simple. Dwarf Fortress allows some insane interactions between agents that are all organic

beaconstudios

Both are driven by systems so they're both effectively simulations, but dwarf fortress is much, much more in depth. It's basically a "real life" simulator but set in a fantasy universe, where you control a colony of dwarves. The interplay between systems is unheard of in any other game*, the closest you get is some roguelikes.

*except maybe space station 13

capableweb

Help is coming! Look how pretty it'll be: https://store.steampowered.com/app/975370/Dwarf_Fortress/

AQuantized

To be fair this is basically just a texture pack, which is already something you can use. The real problem is the highly consistent UI design, differing in things as simple as if you have to use a keyboard or mouse to navigate a list.

Toady is understandably disinterested in putting time into that element of the game, and I think he had a bad experience the last time he 'outsourced' it.

paavohtl

It's not just a texture pack in any way - just read the dev blog. They are also overhauling all of the UIs, adding mouse support to everything and so on.

genocidicbunny

Luckily DF is getting a ux overhaul for the upcoming Steam release.

libraryatnight

I'm super hype on this. I've managed to play DF a bit successfully thanks to Dwarf Therapist, but I'm really excited to come back and play again with the UX overhaul.

saeranv

Are there any articles/posts/resources that delve into technical overview of how DF achieves it's simulation complexity? For example, something like: how does the game constrain it's randomness or sampling process for new procedural generation, how is this woven into the story development?

I realise this is somewhat of a vague question. I've never played DF (or any video/pc games) but I find descriptions of it's development fascinating, and would like to learn more about how the creator actually designed and evolved this game.

tempest_

You may find this NoClip interview interesting, though it doesn't delve too much into technical things and is more high level/ game design focused.

https://www.youtube.com/watch?v=VAhHkJQ3KgY

saeranv

Still interesting to watch, thank you.

dopu

It should be noted that Tarn would probably agree with a lot of the criticisms leveled here regarding the UI. The focus so far has been on getting the systems working (and there are many more to go and be further fleshed out: magic, the organic development of economies in the game, world history, warfare, etc). The Adams brothers essentially want to construct a general fantasy simulator capable of constructing rich worlds all on its own. Wouldn’t make much sense to pour tons of energy into making and refining the UI over and over again when the game isn’t even halfway done yet.

tluyben2

If that is the goal, they should make it trivial to make UIs for it by others. I know there are many UIs for it, is it easy to make those or is it reverse engineering and if the latter, why? I don't know; I personally don't mind the UI.

ajvs

DF has always been an interesting game to me, but I find it such a shame that such a deeply complex game remains closed-source. I've fortunately since found a number of open-source games that scratch the same itch - Cataclysm: Dark Days Ahead, Space Station 13, Space Station 14, KeeperRL. I hope the dev one day does free his code to be examined and fully modified.

chayleaf

His will says the code shall be open-sourced, unless he gets murdered

mapmap

Where could one learn more about the Entity Component system as described in the article? Is it as simple as an object contains an array of components?

kovek

ECS or "Entity, Component, System". You have Entities (like a soccer ball or a player, or any object in the game) which are objects, that contain a list of Components (like phenomenons on the entity, like physics, sound tracks, health bar, etc) and a game loop that calls out a list of Systems (like Physics System, Sound System, HealthBar System), which are "static" objects that hold a reference to all Components and which update them to move the game forward (eg. Physics systems moves position down by vt + a/2 t^2)

easton

The first time this has happened, but (2021) should be in the title.

Gigachad

I feel like we can let it pass for a less than 2 day old article.

genocidicbunny

It's actually a repost of the same article from earlier in the year as the editors note points out.

LilBytes

Earlier in 2021?

jokoon

I wish I had the patience to play such game.

Factorio can already entertain me for hundreds of hours, but even factorio can become a bit boring once you built a large base.

I'm really looking forward the UI revamp that will be sold on steam.

wolfgang42

Previously on HN (5 months ago, 388 comments): https://news.ycombinator.com/item?id=27996684

Shadonototra

OOP was a mistake, it's nice to hear from such a large project

Hopefully more people will stop that trend of OOP everything, and learn a little more about what we really want to do with our data

kamac

The point in the article was to prefer composition over inheritance, which is sort of like using OOP “the right way”. It didn’t discourage OOP as a whole, nor do I think it should - making a game without objects would be a nightmare.

wheelerof4te

Plenty of games were made using plain C and even Assembler.

What is really needed are not objects in a OOP sense, but a way to make a mutable, composite data type. Else you would have to pass tens of arguments to even simplest of functions.

Toutouxc

"Making the item system polymorphic was ultimately a mistake" is so far from "OOP was a mistake" that it's not even funny.

Daily Digest email

Get the top HN stories in your inbox every day.