1223: Dwarf Fortress

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
Dwarf Fortress
I may be the kind of person who wastes a year implementing a Turing-complete computer in Dwarf Fortress, but that makes you the kind of person who wastes ten more getting that computer to run Minecraft.
Title text: I may be the kind of person who wastes a year implementing a Turing-complete computer in Dwarf Fortress, but that makes you the kind of person who wastes ten more getting that computer to run Minecraft.

[edit] Explanation

This comic is a reaction to the recent reveal of a U.S. electronic telecom surveillance program called PRISM, run by the NSA. You can read a Guardian article about it. PRISM, leaked by a former NSA official, incited some controversy since it provides government access to private data (e-mails, videos, chats, file transfers, etc.).

Dwarf Fortress is a freeware strategy game in which the player builds a civilization by giving orders to — as opposed to directly controlling — a group of dwarves. It is famous for having a very detailed simulation of its world and for allowing deep micro-management (as well as an incredibly steep learning curve).

"Big Brother" means "a tyrannical government body that constantly monitors all its citizens." The term comes from the classic dystopian novel Nineteen Eighty-Four by George Orwell.

Cueball has a discussion with Big Brother ("corporate surveillance state"), in which he mocks Big Brother's interest in the inconsequential activity of playing a video game ("Dwarf Fortress" in particular) by drawing a parallel between Big Brother's omniscient surveillance of Cueball and Cueball's omniscient surveillance of the dwarfs. Big Brother appears to be mortified when it realizes the accuracy of Cueball's comparison.

Informally, a system exhibits Turing-completeness when it is theoretically capable of executing any algorithm. One of the simplest Turing-complete systems is the Turing machine, a device that manipulates symbols on a strip of tape according to a table of rules — it can be proven to have the same capabilities as any ordinary programming language. Other very simple systems include Rule 110, lambda calculus, Conway's game of life, and Brainfuck. The reason we don't work with these is because they're a real pain in the ass. Would you rather build a network of spaceships that collide with each other to simulate the successor function, or just write i := i + 1?

A common CS nerd challenge is to prove the Turing-completeness of a system that wasn't intended to be that way — games in particular. The usual way to do this is to construct a Turing machine simulator within the system. It has been done for Dwarf Fortress, (infinite) Minesweeper (pdf), Magic the Gathering, Little Big Planet, Minecraft (another Minecraft example), Pokémon Yellow (through the elaborate use of many in-game glitches) and 3D chess (but see the note below). These kinds of proofs often involve formulating ridiculously complex creations just to simulate a little machine writing symbols on a tape!

(Technically, a computer is not really Turing-complete. A Turing-complete system has to have unlimited space, and that's not possible for a memory-limited computer or any software running inside it. But even if we don't have access to Turing-completeness, we can build a theoretical machine and show how it can be extended indefinitely. In a few of the games, we prove Turing-completeness in infinite variants.)

Finally, Randall makes a crack that users will try to nest their Turing-complete computers; after finishing his Turing-complete Dwarf Fortress computer, someone else will try to make the Dwarf Fortress computer run Minecraft (a highly inefficient process that would be a nightmare to co-ordinate, and would run incredibly slowly).

[edit] Transcript

[Cueball sits at a desk with a computer, hands on the keyboard, talking to an unseen observer.]
Cueball: If the corporate surveillance state monitors and controls every aspect of my life...
Big Brother: We do.
Cueball: And I play Dwarf Fortress all day...
Big Brother: You do.
Cueball: Then you're effectively Dwarf Fortress players watching your dwarves play Dwarf Fortress.
Big Brother: ... Oh God.
Big Brother realises he's trapped in the most tedious possible Hell.

comment.png add a comment! ⋅ Icons-mini-action refresh blue.gif refresh comments!


Turing-complete computers were built in Dwarf Fortress [1] and Minecraft [2] Sebastian -- 05:48, 10 June 2013 (UTC)

"getting that computer to run Minecraft" means getting the Dwarf Fortress turing machine to run minecraft. Which would probably be impossible, because the computer Dwarf Fortress is running on will not be able to run the turing machine fast enough or with enough memory. -- Hkmaly (talk) 09:12, 10 June 2013 (UTC)
Speed may be considered irrelevent (as exemplared by A Bunch of Rocks). Memory upper-limits applies to every real-world example (possibly including the Universe itself, thus anything that is not self-contained but capable of sharing data with the external Universe, in order to overcome this limitation). However, usually we can fudge this if this expected usage will get nowhere near the effective memory capacity.
The real problem in Dwarf Fortress is that there is a hard-coded maximum fortress size. It cannot be extended infinitely like the minesweeper example or Magic the Gathering, which is inherantly infinite assuming you keep supplying the legally generated creature tokens. 04:40, 12 June 2013 (UTC)
However, apart from the speed of running (and the fact that the quantifiable 'Fort-contained' memory theoretically available may not be sufficient to hold the state of any reasonably Minecraft-like playing environment), I'm wondering about the interface. Playing Minecraft-within-Fortress would require some interesting setting up. Having myself made a Tetris-within-Fortress (sort of, never got around to rotating tetronimos, although translation of the falling pieces and line-anihilationsof those that had settled all worked as planned), I suppose you could start with a matrix display made of remotely controlled bridges (from water-activated pressure-plates), a bit like I used to 'externally' represent the data held within the "block matrix" pump'n'pool 'processor' for my Tetris example.
Something that somewhat evaded me (or, rather, forced me to slow the game progression down well below its normal pace) was a control mechanism. Clicking and setting levers to be pulled, or locking and unlocking doors to allow creature-activated pressure-plates to be run over, depends on knowing that all dwarves (or animals, or hostiles being sent scurrying in circles in a dungeon loop as each tempting exit is automatically closed off and the next one round the track temporarily opened) continue to respond to your requests. It did very much seem like the Bunch Of Rocks situation, indeed. ;) 13:07, 10 June 2013 (UTC)
I thought the point of the mouse-over text was that running Minecraft on a turing-complete computer in Dwarf Fortress would be utterly pointless, impractical, and a waste of time, and that's IF it's even theoretically possible. The point of this comparison in my mind is a comment on just how pointless and impractical the task of complete population surveillance is. I mean, surely there's an easier way to get what you want? Excrubulent (talk) 01:24, 12 June 2013 (UTC)

Shouldn't it be "I do" and "Then you're effectively a Dwarf Fortress player watching your dwarves play Dwarf Fortress" because "Big Brother" is singular? DiEvAl (talk) 09:22, 10 June 2013 (UTC)

Not necessarily, because "Big Brother" is the nickname for the nebulous amoral mass of people who make up the surveillance arm of the government. Yes, in Orwell's book, this was actually represented by a singular man to the public (who, possible spoilers, may or may not still be alive). But the nickname could refer to a lot of people as a whole. See also the "corporate we", where people in a corporation refer to the company and ambiguous nonspecific people in the company as "we". Not related to the "royal we". --Tustin2121 (talk) 14:04, 10 June 2013 (UTC)
Meta spoiler alert- Big Brother may never have existed at all. Or his nemesis Goldstein.Seebert (talk) 22:34, 16 June 2014 (UTC)
You sure it's not related? Isn't "royal we" referring to the country and ambiguous nonspecific people in the country in very similar way? -- Hkmaly (talk) 11:21, 27 December 2013 (UTC)

Then you're effectively Dwarf Fortress players watching your dwarves make comics about Dwarf Fortress players watching their dwarves play Dwarf Fotrress. DiEvAl (talk) 09:26, 10 June 2013 (UTC)

Question: Who is the 'you' in "that makes you the kind of person who wastes ten more getting that computer to run Minecraft"? The reader of the comic? Big Brother? I'm very confused how it is that if "A" is the kind of person who implements a Turing-complete computer in Dwarf Fortress, that it follows that "B" is the kind of person who wastes ten years getting it to run Minecraft. 15:23, 11 June 2013 (UTC)

I think the 'you' is Big Brother. Like I said above, the task of surveilling a population is so daunting that it's like doing the DF-computer-MC thing. It's never going to be practical. Excrubulent (talk) 01:27, 12 June 2013 (UTC)

You missed spacechem off that list of Turing complete games. (talk) (please sign your comments with ~~~~)

From the referenced site, Pokemon yellow isn't turing complete as a game (unlike, say, DF / MC) - rather it has bugs which make it vulnerable to buffer overrun exploits allowing the attacker to write arbitrary GameBoy code. So while a great hack, that site tells us that the GameBoy CPU's machine code is Turing Complete, not Pokemon Yellow itself. (talk) (please sign your comments with ~~~~)

I think you're missing something here: Minecraft isn't just any other game with sufficient flexibility to build computers in-game: Minecraft is heavily influenced by DF, and any hardcore DF fan would consider it vastly inferior when compared with DF. So I think the additional twist behind the ALT text is that ten times more time would be wasted on something far less prestigious. Cheers! -- 12:49, 24 September 2015 (UTC)
Personal tools


It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal?