
Dwarf Fortress' creator on how he's 42% towards simulating existence - phodo
http://www.pcgamer.com/dwarf-fortress-creator-on-how-hes-42-towards-simulating-existence/#page-1
======
kderbe
Quote from Tarn Adams (DF's creator):

 _I don’t even use version control. If you don’t know what that is then you’re
not gonna yell at me. If you even know what version control is you’re gonna be
like, ‘You don’t use version control? You don’t use source control? What is
wrong with you? How can you even work?’_

If you're the sole developer of a project and you have, say, hourly backups,
then maybe version control is a waste of effort? I would still use it out of
habit, but it seems perfectly reasonable to me that Tarn would choose not to.

~~~
clevernickname
Popular version control takes natural, insignificant, almost unconscious
modifications and turns each into an explicit diff that must be entered into
the system and documented forever. If you are a solo developer, version
control is literally a waste of time. Just write the damn code and back up it
at the end of the day. Leave meticulous documentation to the uberprojects,
megacorps, and CS grads that want to pretend that they are doing something
meaningful.

~~~
nv-vn
I disagree. Version control very much impacts the process of writing code. For
example, if I'm going to make a major change to a solo project but I don't
know what angle to approach it from, I'll create a branch to test one approach
and another to test a different approach. If I'm unhappy, I can always branch
from master again. The alternative would be to either attempt to make as few
breaking changes as possible or test out exactly one at a time and lose
progress when I go from one approach to another. Also, if I need to go back to
an older version to fix something broken or remove a part of my code, commit
messages document the changes so that I don't have to think of the code as a
linear timeline of changes and search for the date, but rather search for
commits that include keywords in the names and focus on those.

~~~
cturner
You can do much of what you described by copying directories around, keeping a
text file running sheet and judicious use of winmerge. The key thing is to be
managing complexity. git provides good mechanisms for this but it is not the
only way. Linus didn't use version control for at least a decade, either. git
started out as an automation of an existing manual process he had.

~~~
imdsm
> You can do much of what you described by copying directories around, keeping
> a text file running sheet and judicious use of winmerge.

Sorry, but can I just check, are you saying this is the alternative as in you
SHOULD do this, or are you saying this is the alternative as in you SHOULD NOT
do this?

It's just the way you wrote it sounds like you're saying this is the
recommended way of developing, which I'm sure is not what you meant.

Also, is winmerge available in .deb/.rpm?

~~~
to3m
Winmerge is Windows only. I imagine this means this strategy can't be followed
at all unless you use Windows? ;)

The approach is an alternative, as in: you can do it. I used to work that way
before I used version control, and I know I'm not the only one. I definitely
prefer the workflow with version control, that's for sure, but some seem not
to find it especially compelling when working alone and that is their
prerogative.

When you're working on your own, any process is fine, if you are comfortable
with it. The object of the exercise is to create useful/interesting/etc.
products for people to use/enjoy/etc. - and you'd have a hard time arguing
that this is a goal Dwarf Fortress has failed to meet.

(Unsurprisingly, I've yet to meet anybody that's preferred working without
source control on shared code. But perhaps they do exist.)

------
gilrain
Dwarf Fortress is beautiful art. I feel confident the Tarn brothers will be
remembered for centuries for this work. I don't know of any other game,
software even, being so laboriously created from the heart.

~~~
Sargos
It is certainly a fun experiment but it's also the poster child of wasted
potential. If even a few more developers and artists could work on the game
with toady still making 100% of the decisions the game would be much more
flexible and much more polished and accessible. It is still a wonderful
sandbox that can be experience by a select few but I hope one day the code is
released to others and the game can truly blossom.

~~~
VonGuard
No need. Plenty of 3rd party tools. Take a look at the Lazy Newbs Pack:
[http://lazynewbpack.com/](http://lazynewbpack.com/)

It contains utilities to do just about everything you feel is lacking, save
some major interface overhauls. I agree, the interface is byzantine, but at
the end of the day, it's basically like emacs or vi....

Tools in the Newbs Pack include 3D fort imager, StoneSense, Dwarf
task/military/nobles manager Dwarf Therapist, dozens of pixel art packs to
turn your d's and c's into little dogs and chickens. There are even tools to
directly modify the game: turn off aquifers, turn off invasions, remove races,
turn off vampirism, limit the number of children.

The only wasted potential in Dwarf Fortress is people who maybe can't get into
it because it's so freakin' complex. Tarn knows the code's a mess. He's not a
programmer. He's a mathematician. He writes code that works, and when it does,
he moves on. Nothing in Dwarf Fortress was written to be touched by an
outsider. It's a truly personal project for the Adams.

~~~
exDM69
> No need. Plenty of 3rd party tools. Take a look at the Lazy Newbs Pack ....

A _lot_ of trouble has been put into making tools such as Dwarf Therapist in
the Lazy Newb Pack. They're basically made by snooping the memory of the DF
process (unless I'm mistaken here). If DF source code was available (even if
it would be immutable), a tremendous amount of effort could have been into
better use than practically reverse engineering parts of the core game.

In my opinion, Dwarf Fortress could be much better if the source code was open
or at least available.

~~~
ximeng
He does talk in the interview about why he doesn't do that, and the reasons
aren't completely unreasonable (basically he wants to avoid professionalising
the dev process)

~~~
clarry
That sounds unreasonable to me.

To put a different license and dump the source somewhere, you don't need to
change your personal process at all.

~~~
VonGuard
You absolutely do. Open sourcing code is not just throwing a tarball over the
wall. It's comments, it's documentation, it's changelogs that go a lot deeper
than "fewer children are spawned." When people are reading the code, they want
to make changes. They want to help. Tarn has no interest in changing his job
from one of programmer/designer to one of gatekeeper/manager. I can completely
understand why he doesn't want to do this. It'd make a lot more work for him,
and people would come to him with complaints, demands, questions about it.

~~~
clarry
No, you don't need to change anything about comments, documentation,
changelogs, anything. You can totally just throw a tarball over the wall. No,
you don't need to accept contributions. When it's your project, you do
whatever you like, regardless of the license. Whether you occassionally upload
a binary or a source snapshot.

------
brudgers
The Software Engineering Daily [podcast] interview with Adams is a great
listen. It's a great narrative about software development as art and passion.

[http://softwareengineeringdaily.com/2015/10/22/dwarf-
fortres...](http://softwareengineeringdaily.com/2015/10/22/dwarf-fortress-
with-tarn-adams/)

~~~
Ericson2314
Hmm interesting description there. From the OP article and things I've read
previously, I'd say Dwarf Fortress is the epitome of focusing on the ends of
the software rather than means of software developement.

~~~
versteegen
I'd say you're both correct. It's not the architecture/engineering details of
the program that are a work of art, but what it actually does. In other words,
the Adams are passionate about developing a particular piece of software, not
passionate about software development.

~~~
Ericson2314
Yeah that's is what I meant. The end result is definitely art.

------
rav
Poor Zach Adams (Tarn's brother), not getting any mention in the article (or
even this comment thread). Even though he doesn't work on programming the
game, he still writes the stories that (as far as I can tell) carry the
creation of DF forward.

Even more weirdly, the article calls Tarn Adams just "Adams", as if that name
is unambiguous when discussing Dwarf Fortress.

------
Vexs
Dwarf fortress is one of my favorite examples of emergent behavior- the
maneating carp, cat-explosions, cats getting drunk, etc. Actually, a lot of
cat based bugs in general.

~~~
zdkl
Survived 18months of goblin siege, the last 6 of which spent without access to
water. Survived the Roc that drove the goblins away.

Fortress became unplayable due to catsplosion. I love this game.

~~~
INTPenis
Eat the cats? I never saw a problem with catsplosions because I restrict them
to pastures so they don't adopt dorfs.

~~~
SolarNet
I would swear all the comments starting here are made up.

~~~
zdkl
I promise you they aren't! It really goes that far. Thanks for the laugh :)

------
SixSigma
The most epic of Dwarf Fortress epic tales

Room Carnage

This is the link for episode 58, but start from 1

[https://www.reddit.com/r/dwarffortress/comments/49iiom/roomc...](https://www.reddit.com/r/dwarffortress/comments/49iiom/roomcarnage_glacial_victories_and_crushing_defeats/)

------
Joof
This is great. Dwarf Fortress is a huge part of the reason I became a
programmer.

Maybe that's why I'm a bit disappointed now that I actually am one, but that's
life :p.

------
acemarke
The thing that really scares me is that he doesn't use version control. I hope
and assume that he has SOME kind of backup approach, but the thought of trying
to wrangle that many lines of code without proper VCS, in what is clearly an
insanely complex codebase, is just beyond me.

~~~
db48x
Version control is a must when you're working with other people. When you're
the only one writing code it's not so important.

~~~
wingerlang
That's debatable. Version control have helped me a lot. It also helps me
experiment with new code without risking forgetting something because I can
always roll back.

~~~
dalke
I agree that the topic is debatable.

A few years ago I looked for any studies on the usefulness of a version
control system over, say, a versioning filesystem. (Examples of such include
the VAX filesystem which auto-versioned every save, Dropbox does the same for
at least 30 days, and the Mac Time Machine gives access to previous backup
snapshots.)

I wondered if for some projects auto-versioning on save or clock event in a
VFS would be more useful than manual versioning with a VCS. For an common
scenario, co-authors working on a paper might have a shared Dropbox directory.
They can modify the images, Word document, etc. safely without risking
forgetting something because there's the option to see older versions of the
directory.

Those studies have not been done. I know for myself, for the initial stages of
a project, I find it more effective to iterate through multiple directories
(eg, "foo", "foo2", "foo3") so I can easily compare different approaches, than
to create a new repo, name the branches, and check out each one to get the
same effect. I also have hourly backups, so I won't loose much in the way of
code.

~~~
jon-wood
At least for me version control maps better to how I think about my code than
individually versioned files at the OS level.

It's very rare that a change will hit only one file, at the least it's likely
to imply changes in the test suite as well, and likely there'll be several
objects collaborating. Being able to group those changes together and then
annotate them with a commit message is hugely useful to me for a couple of
reasons. Firstly I can roll that change set back as a single unit, but more
usefully I can look at the history of a given file, of even a given line of
code, and then map the changes to the wider context that influenced them. I
couldn't tell you how many times I've wondered just why a line is doing
something, run git blame, and instantly been given an answer by a past version
of me who still has all the details fresh in their head.

~~~
dalke
Oh, certainly. My comments is to highlight that there's no research that helps
identify if these personal beliefs are generally true. Perhaps it's only
useful for large (>1M LOC) projects, or 40% of programmers. Perhaps it's worse
for spike projects with 1-3 people, <1KLOC, and <1 week of development, as
compared to auto-backups of a project directory every 10 minutes and/or vim's
"go back in time" history tracking.

We don't really know, beyond personal experience, which is why this is very
debatable.

~~~
dilap
I programmed for a long time (middle school to the end of college) on 1 person
or 2 person projects without version control. I'd just manually copy the
directory when I'd made significant progress, or wanted to experiment with a
different approach. Multi-person collaboration happened by working out who
would work on what ahead of time and manually merging the bits back together.

It worked great, and even though I now use git for even personal projects, I'm
not sure it's on balance useful, along the lines of your thinking.

Because: VC warps your thinking. You change your work habits and spend time
crafting this artifact, the VC commit history, which is secondary to your
actual goal. For example, there's a tendency to quickly jump between different
areas, or make unrelated changes, because that works against the nice 'commit-
per-thing' history that looks nice in VC.

So no VC doesn't seem so crazy to me :)

------
bjackman
Anyone know if/when/where the recording of the talk will be uploaded?

------
memracom
I think he is pulling your leg because he believes that the answer to life the
universe and everything is 42.

------
Paul_S
Is there any chance of him going opensource?

It would be nice to be able to get a better ui which clearly he has no
interest in coding himself.

~~~
colinramsay
This is mentioned in the article. I think his response is totally
understandable.

    
    
      > People are still doing this kind of stuff with the game being close
      > and making this amazing stuff. Why not put the code open source?
    
      > It’s basically a kind of paranoia or prudence about what might happen.
      > Because there’s forking that would just be way easier just to have other
      > projects going out there, people selling it and stuff. And people asking
      > for, say they’ve fixed some of the bugs, and they’re like, ‘Here, could
      > you incorporate this patch?’ I become a project manager, and it brings
      > out some of the [reasons] why I’m not in an industry job, right? I have
      > no experience working with other coders.

