The Stack Overflow Podcast

You don't need a math PhD to play Dwarf Fortress, just to code it

Episode Summary

We chat with Tarn Adams, aka ToadyOne, the sole programmer on the text-based base building game Dwarf Fortress. He left a math post-doc to make his own games. From the bug that created a massive fractal sculpture to the diary that he writes in code comments, we get the run down of how he thinks about programming.

Episode Notes

Tarn and his brother Zach are the brains behind Dwarf Fortress and the community that rose around it.

Dr. Tarn Adams  received a math PhD, but left his post-doc because he was too busy making games. 

A bug created the statue Planepacked, a massive structure that contained the entire history of the world as well as 73 copies of the statue itself.

Many people, including one of our hosts, found out about Dwarf Fortress through a Let's Play session in a fortress called Boatmurdered

If you want a more human readable  version of Dwarf Fortress, you can wishlist it on Steam or use one of the Lazy Newb packs


Episode Transcription

Ben Popper What was your math job? You were a teacher?

Tarn Adams I got a PhD in doing Geometric Measure Theory, published one paper in the Journal Geometric Analysis on Flat chains in banach spaces, then went on, I got a postdoc, but I wasn't very good at it because I was spending all my time reading computer games. [Ryan laughs]

[intro music]

BP Visit and see why Linode has been voted the top infrastructure as a service provider by both G2 and TrustRadius. The Linode makes cloud computing fast, simple and affordable. Visit Overflow and you'll get $100 in credit. Alright, y'all, you heard him, head over there and let him know the podcast sent you, support the show, check out the service. 

BP Hello, everybody. Welcome back to the Stack Overflow podcast a place to talk all things, software and technology. I am Ben Popper, the Director of Content here at Stack Overflow, and I am joined as I often am by my co-host and collaborator, Ryan Donovan. Hi, Ryan.

Ryan Donovan Hey, Ben, what's new?

BP Well, I love video games. But I can't say that I've played them all. And I know you had a blog post recently that did super well got a lot of pickup and a lot of interest. It was about a video game called Dwarf Fortress. So tell us a little bit how did that blog post come to be? And who are we going to be chatting with today?

RD So that blog post came about because I've been playing Dwarf Fortress for 10, 12 years, not nearly as much as I used to. Every so often I tap in to see the new systems that are there.

BP It's a marathon, not a sprint, I guess. 

RD I still have most of the key combinations memorized. But you know, I just sort of admired this project as a solo developers passion project, and reach out to Tarn and he's was like, sure, let's chat. The easiest interview I've ever gotten. [Ryan laughs]

BP Well, the good news is we have Tarn Adams here with us today. Tarn, welcome to the show.

TA Hey! [Tarn laughs]

RD Well, for the lay person, do you want to give an overview of what the game is?

TA Yeah, Dwarf Fortress is sort of a fantasy—it's a settlement management game, right? It's it's, you run a group of dwarves digging into the side of the mountain, making crafts and dealing with various like tolkienesque threats. There's goblins and you don't want to dig very deep, that kind of thing. The basic mechanics are a bunch of dwarves sitting around and you assign them jobs, then they go do those jobs, the process by which you know, decide which dwarf does which job is fiddly. That's no longer true. But it's it's it is in the current version. And they'll go off and like mine, the things that you tell them to mine, build the workshops, you tell them to build. And then the workshops, you create tasks. So you can say, like build some tables. And of course, there's all automation systems and all that kind of thing. But the basic idea is that you you are sort of the official will have the fortress, you create the workflow and so forth, but they're not just like your minions, right? They're not like the instrum Dungeon Keeper or something. Although, I mean, they had free time, too, right? They would just kind of hang out and train and stuff or whatever, if I recall, it was kind of just have a lot of that stuff. Like there's a lot of socialization, that sort of it, I mean, it's like The Sims in that sense. I guess there's just there's a stuff going on. That's not you, and there's stuff going on that is you but it's not like The Sims where you don't have to, like tell them to, to eat or where to go to the bathroom and that kind of thing. They're fairly autonomous, but they don't independently, like make tables or work. They just kind of hang out and drink if you don't talk to each other and, and play with toys and live their best life. Yeah, it's sort of aspires to be a fantasy world simulator. That's kind of what we're shooting for, you know, over the last 20 years, when you start the game, you don't just kind of get plopped down into like mission one, dig into the mountain and make a table or whatever. It's like, now we are generating your world. And here are, here's 50 years of history, 100 years of history, there's this giant map and here's all these civilizations falling all over those, like what does this have to do with the game that you're playing, and we've tried to slowly make it matter more and more. [Tarn laughs] But it remains aspirational in a lot of ways. It's basically just another kind of settlement game but more more and more intricate to the point that people have a lot of really cool stories. So that's what we're aiming for. Ultimately, it's it's kind of a game that you can tell stories to about sort of just any kind of mythological fantasy thing, mostly involving dwarves, to your friends and just have fun with it. It's kind of a collaborative storytelling partner.

RD Yeah, I think I actually got into it because of the first sort of big collaborative storytelling, the boat murder back on something awful way back in the ancient days.

TA That was 2007, I think.

RD And I know we talked about your favorite bug on the blog post, but there's another bug that I came across from one of the comment threads that kind of talks about how deeply intricate this game really is a plane packed statues.

TA Like infinitely recursive artwork.

RD Yeah, yeah. So the the description I saw is that sometimes the dwarves get into strange moods and have to build something really weird and complex. And there was this statue made that contained the entire history of the world. And 73 copies of the statue itself. [Tarn laughs]

TA Yeah, it's some bug with with like—so when they come up with these things that dwarf is in a workshop, just like streaming, I need metal, I need this. And if you have the things available, they'll run off and get them. And it's supposed to be like four or six things. Not that many things. But when there's a bug with a job where it doesn't take them off, or sometimes people will try and intentionally set this up by forbidding certain items, as they're called for and so forth. But when the job just continues on, the game was sort of modular about it, where it's like, okay, there's now a gym in the workshop, let's add a gym improvement to the statue or whatever object they're working on. And when it adds an improvement, it can reference the history of the world, the history of the site, it can look through a list of all the objects. It's supposed to exclude the item they're working on. But sometimes things happen. And I don't remember how many items plane packed was, I mean, it was many, many dozens of pages, right? I mean, I don't remember, I have no idea. I mean, they just sat there basically babysat the creation of this thing, I guess, for as long as it was going. And they finished it too, which is also a miracle because you wouldn't get to see—otherwise, you wouldn't get to see the result. It doesn't kind of have like a partial history, it has to finish the object. And yeah, no, that's amazing in itself.

BP So for someone who doesn't know, like, you're sort of saying, when you get into the game, there's a ton of lore. And part of what makes it interesting is that you can create new storylines, and play them collaboratively with people. But what are like the basic, you know, mechanics? If I'm familiar with civilization, or World of Warcraft, or Minecraft, will I be able to drop in here and understand most of the bases?

TA Well, depends on where you're dropping. And if you're dropping in now, it'll take you a little while to understand what we haven't said, I think is that it's a text game, like Net Hack or Rogue or, you know, one of the one of those sort of games and you just have a bunch of text characters running around the screen. Now there are mods like the lazy new pack that have graphics just packed right in so that can be overcome. And of course, we're, we're releasing the game with graphics, hopefully next year. And it's all the same, it'd be like if you dropped into it bow, even with the lazy new pack itself, it's still quite tricky to get into.

RD So what's going on behind the scenes to manage that sort of level of simulation, that level of detail?

TA Oh, I mean, it's, it's just every little trick that you learn when you've been programming a long time. It's it's I mean, I have a huge like many people, I have a huge graveyard of dead projects. And Dwarf Fortress is the one that didn't die, right? It's like, I mean, just ran into the ground, just adding stuff. And then you just slowly learn how to manage that level of complexity. And it's just the things that you're either taught by mentors or in school, or that you pick up yourself like, you know, make sure you comment your code well, that kind of thing. Don't use stupid variable names, think about your class structures and things ahead of time, think about extensibility, and all that kind of stuff. And those are just words, though, right. And then when you are actually doing it, there's a lot to learn, there's a lot of little things to pick up. And then when you have a big simulation, you have to worry about optimization, not just at the end, you have to be worrying about it all the time. And the whole thing about premature optimization doesn't mean much when you have a live project for 20 years, right? You have to be doing it all the time, right. And just pick up stuff there too, when to use flags, when to use event timers, when to use dirty buffers. I mean, I learned that when I was doing like textures like UV texturing stuff back in like 93? I was like, whenever those games came out, there was like immediately, like a flood of little books that came out to teach you how to do it. And there was no like Direct X or anything, you just had to manually go through every pixel and manually move your UV coordinates, and you're like, here's fixed points, here's how that works, and so forth. Let's move these things. It's just kind of these linear algorithms to move along these lines through the texture space or whatever. But just to make it fast, when you have a depth buffer, when you're having like the triangles in front of each other and stuff, you have to keep track of where things are in depth buffers weren't free, either. You had to build them. And that's just you know, one of those, you know, zillion ideas, you just keep on plugging away, keeps losing 5% of the thing every, you know, two years. [Ryan laughs]

BP And so, when did this go from being like a part time project or as you said, one of many to being sort of like a full time thing and the one that I guess captures most of your time and attention?

TA Yeah, like the previous one that we spent four years on or so. The ormoc game, which was this weird 3d monstrosity, where we thought Oh, you build the fantasy world simulator from the bottom up. So let's get people walking, let's let's put hair on their arms and stuff. And it was just, it was a really foolish philosophy from a from a young person. That's what I did. It was not good. But we worked on that for a long time, we had a bunch of side projects that the ones that people may have bumped into our like liberal Crime Squad and World War One medic, just these kind of games that float around the internet. And those were cool, and people play them and stuff. And but you know, it wasn't a commercial thing at all. And we just kind of release those after working on for a few weeks and then back to ormoc, back to the thing. And so we worked on this game called Mutant Minor which is just gonna be like your you run around underground grabbing Teenage Mutant Ninja Turtle mutagen growing extra arms digging deeper, and going back and buying more arms and buying more and more shovels to hold in those arms and all that kind of thing. That game was a train wreck, of course. And we thought, you know, we had a bunch of mutants running around eventually. And we're like, well, it'd be more cool if they were dwarfs. Right? Let's put a theme on this. And they don't need to be like slurping mutagen anymore, but they find little threats underground, right, you're digging and finding threats underground. And it had that kind of typical problem you run into when you get more and more actors in your room, or agents or whatever in your game, where if it's turned basis, it's gonna take a zillion years. And so we made it real time. So then we had a bunch of real time dwarves running around the side of the mountain digging into it. And this was a game that was supposed to take a couple of months to write. Our more most ambitious side project at the time. I mean, like, World War One medic took a weekend to write and Liberal Crime Squad, ou know, the core of it took three weeks so that we went back to it because it was popular. I mean, as far as we could tell popular. And yeah, then we just had this dwarf game that siphoned more and more time out of ormoc and then it became the thing. And around that time in 2006, we put up a when when it released a few months before, actually someone was like, hey, could you put up a PayPal button because it's your birthday. And they gave us $75 and the PayPal just happened to be there when Dwarf Fortress came out. I mean, we I mean, I left my math job right around that time, I didn't even know what I was gonna do. And was not really hoping that dwarf fortress was going to be successful. And  there was a text game, right? It's just not going to be not going to be successful. But we made $100 the first month, just in random PayPal donations, and just kind of I mean—was this before Kickstarter? Around the time—I mean, this is 2006 right?

RD I think it was before.

TA Yeah, it was before Kickstarter, way before Patreon. And we just kind of built that framework for ourselves, this tip jar thing, that a lot of people of course had done by that time. But still, like the internet was there to save us basically. We had just barely scraping by. At that time, I had already kind of pulled the trigger and left my math job. But they were kind enough to leave me around for another year teaching. And because it was a it was a research job before and then it became a teaching job. It's just nice to them. That was cool.

BP What your your math job? You were a teacher?

TA I did a PhD in and doing geometric measure theory, published one paper in the journal Geometric Analysis on flat chains in banach spaces, then went on I got a postdoc, but I wasn't very good at it. Because I was spending all my time writing computer games. And and it wasn't fair to them. You know? And I do think about this thing sometimes where like, well, you took that slot from someone who worked harder at it and just wasn't lucky to get the job. Right. And yeah, it does, it sucks. But it's like that for everything. 

RD So has the math the PhD informed programming of the Dwarf Fortress?

TA I think I think the math PhD itself didn't because I'm not in like n dimensional non Euclidean space. It's tricky. But But I think having practiced a lot of math and just solved a lot of problems. And generally being good at math. Like I've taught linear algebra. So that part of games is not hard for me, right? It's like and same thing like I'm calculus comes up sometimes. I've used a partial differential equation once it was for like windspeed firing arrows. I don't remember what it was. It was something like that. But it didn't I didn't really end up needing it. I mean, I used it to inform what I was doing but in the end faster just to use discrete simulation and miss a little bit. It's fine to miss. [Tarn laughs]

BP Is it ironic that you were writing a paper on geometry but you made a text based game? You did mention you had 3d graphics before that, but it's hard to imagine two things farther apart. 

TA Yeah, no, I mean, I still use the geometry like we have vision cones like it like in those stealth games and use trig for that. But it's still show it highlights the text in the code, right? That's the background. Though it's a really it's it wants to be a more graphical game in the end and we were running out of symbols, right? I mean, what is a white G in Dwarf Fortress? Is the Goblin wrestlers and a mountain goat. And those two things have very different, like gameplay implications. [Ryan & Torn laugh] Although not so much, mountain goat is dangerous as well.

BP Who's the we in this?

TA Oh, yeah, yeah. My brother, he has been working on the game with me since it started and was actually able to also go full time in 2013. Like I kind of just went full time by leaving my job and it wasn't like, great decision or whatever. Although it turned out well. And then he was able to follow like five years after, he just kind of stayed where he was. And then when we had the money, then he came out. And that was like what you should do.

BP Got it. I'm curious, like, what's an average day for you? Like, do you spend time playing the game, reading what people are asking for, checking out the story threads that are developing, certain amount of time just coding away? Like, how do you structure a day around, yeah, this is sort of really amazing personal project that's been running for so long?

TA I guess the caveat now is my days are quite different now that I'm doing the interface update for the graphical release. Because I'm not adding new stuff generally to the game, I'm it's a lot more. I mean, it's a creative thing still, because I mean, the user experience is a whole field, right? But it's not my field. So it's like, my creative chops there don't really exist. But so there's a lot more what feels to me like drudgery. Because of that, I mean, wouldn't feel that way if I were better at it. So I just spent a lot of time coding. And I can just get into a state where I'm like, Well, I need to update this menu, there it was 14 hours. And that's not how it should be really, that's not how it used to be quite I didn't I didn't use the code all the time, we'd have kind of like my brother and I would have discussions about things. And we'd read community threads, there's a whole giant suggestions forum people come up with, with different ideas and discussions about things. And there's this whole file deebot, where people upload service, this whole community thing's got a grown up around this thing, almost as if it were an open source project or something.

RD And you've been very, very communicative with the community by posting updates on your coding progress, almost every day, every other day.

TA I used to be that way. Again, this is another casualty of the graphical release, the the dev logs have dropped off, because people I mean, I can't imagine people want to hear like, I made a scroll bar today or whatever is fun. And, we used it quite a bit. And we there's other forms of feedback. So we do we still do the monthly q&a. And I answer every question that people come in there, we have guidelines, like if you're just gonna make a suggestion, go the suggestion for more belongs, make a bug report and go on the bug tracker where it belongs, just because it's better there. Right? I mean, if you but if you want to ask about where things are going or what kind of concerns you have anything really, then we have the Future of the Fortress as the q&a and, you know, usually get anywhere from like 20 to 60 questions depending on how exciting things are.

RD I wanted to go back, you mentioned open source, I read in one of the comment threads, that there's a clause in your will that when you pass on the game goes open source unless it's murder.

TA Yeah, well, the thing is, like, you can't encourage people right to do the wrong thing. Or they'll do it. I mean, we have that problem, right, in gaming communities and so forth. It just makes sense. Because I mean, it was basically when when we got acquired by the Museum of Modern Art, and they were like, it would be cool, wouldn't it? And we're like, yeah, it would be cool. I mean, they they capture the dev logs and stuff. They just like periodically, we'll scoop everything in and just put it into a big Dwarf Fortress drive somewhere. You know, and the game is that as far as I know, it's not like generally on display there, they only have so much room or whatever, but it's just kind of still in a giant growing box of dwarf stuff. They were like bemoaning that I would throw away my planning papers or whatever. Like if I was just, you know, here's what I want this to look like or whatever on this tablet, like no, no, throw it away and keep him in a box.

BP So the museum owns it as well? Or they own the rights to display it or how does that—

TA I'm sure I signed something that says they can run their video or whatever. But they don't like own the game or own the the source code even in any meaningful way. We just said like, yeah, you'll we'll send you a copy or somebody will because I won't be here. But it's something that we've you know, been exploring in different ways, right? It's all just about, it's just practicalities, right? It's a risk to release the source code now. Especially before, because, you know, you'd be competing with forks and all that kind of thing. Like the paperwork and licenses don't don't mean anything, when you don't have lawyers to back them up. So it's like, who knows what would have happened, right? But now we're on a fairly good track. And so we've actually been flirting with, you know, well, maybe maybe we can release you know, here's how the world generation works. And now we're gonna look at the entire source code for. Like an entire source code dump is still dangerous for reasons. I mean, I hear people will just Let's compile them up and put them on other storefronts. And then the problem is not so much the sales or the loitering and so forth, because they're just not gonna, they're not gonna, like take an appreciable, it's just like piracy, they're not gonna take it, you know, money, you weren't gonna get anywhere, blah, blah, blah. But like, what happens is they don't update it. And then you've got like, a permanent source of like old bugs going on your trackers, I think. This is all anecdotal. I mean, I don't know how much this is actually a problem. But like, it's a big, I mean, it'd be a big deal if they wrote my bug tracker, right? And etc, etc, etc, and etc. There's other reasons and so forth. But if you chop it up, make it so it doesn't quite glue together and don't release everything. But people can still learn a lot. I just have these academic tendencies, I guess. It's just like, I want people to see how it works and be able to improve it and stuff.

BP And so one thing that Ryan had written that I was curious about was, yeah, after, you know, 20 years of doing this, do you ever go back in and find some code that you wrote or a comment and just can't make heads or tails of it? Like, is all of this legible to you still? What you did and why? Or is some of it lost to the mists of time?

RD I read a great quote from somebody, I don't know if it's quote, but one of the comments said there are three programmers working on the project to learn from the past and the present, and from the future. And they all communicate.

TA Yeah, yeah. Well, that's how it is with everybody, right? Because you have you have comments in your code. And you sometimes you date them, especially if you're confused about something. And I have no, there are a few things in there where I went and looked at this comment, this has happened to other people I've seen where you look at it, there was no comment because it was like old, old, old, or whatever. And you read through this code to try and figure out how this one piece of map generation works or something. And I just had to put a comment at the top and stamped it like 2011, I don't know what the hell is going on here. And it just, that's what it says—and then I write like, you know, I spent five hours no more time to spend on this, but I don't know what's going on here now. And then it was a minor bug or something. So I just, you know, went on with my life. And then I went back in like 2016, or whatever, when something came up with it again, I saw that comment. And then you're like, well, it's time to revisit this or whatever. But no, and I had to leave a comment like 2016 I still don't know what's going on here. It's like you're having a diary all over the place like little diary snippets that you're like, putting on the wall and connecting with red strings and things and it's just. And they are connected, because you can put tags on them and stuff. And like just kind of searchable labels. My planning file is have this list of labels, and then I can do like find in files and it pops up 50 places where this happens. It's just all part of this kind of code organization stuff that I'm not, I'm not great at tools wise, like I don't use a lot of the tools because I just didn't work in those environments. I didn't work—I still don't program with other people generally. So it's just like the the benefit of those tools is I mean, I'm sure it's there. It's just it's just a big buy in and then it's not as big a benefit, because I'm not working with other people. So but I have my own system.

RD Yeah, I mean, I imagine, you know, working on anything for 15, 20 years, like you were forget what you did.

TA Yeah, no, it's really this way you have like patterns and doing things the way that you named variables, the kind of it's not just about clarity, but just being consistent. I mean, people use like I on for loops is the simplest example probably that kind of thing. But there's a ton of things like that were like, I know what SC1, SC2 mean, in my game, it doesn't mean anything to anybody else. But if I see it, I know what it means. And I know what it means from 10 years ago, because it's the same thing. It's been the same for 13 years, it's just the sub material. Like, his materials weren't good enough. So we had to have a sub material or whatever. And then another one, it's like, now I know what that means. I just use the same label for it. And it's short, so it doesn't fill the screen. 

RD Did it take a while to come up with those processes? Like did you have a period of time where it's just like, indecipherable?

TA Yeah, well, it's kind of like crawling out of the muck, like some primordial thing, right? It's like, it got better and better and better, better, better. And now I feels okay. I don't know if I've never had a code review either. So it's like, maybe it's not, but it works. I mean, it's well, sort of, I mean, it as far as I can tell, I mean, I have kind of independently developed a lot of standard practices.

RD One of the comments in the blog post that got the most comments on it was when you made the item system polymorphic. And when everyone was like, yeah, preach it, brother.

TA Yeah. You mean when I did, or when I didn't. When I decided was a bad idea? 

RD When you decided it was a bad idea.

TA No, it was just a thing. I mean, it was it's been it was been a thing. And I was like, oh, I should try it. People seem to talk kindly about this object oriented stuff back in 2008 or whenever. And yeah, not just not not the thing to do if you want to, and then it might make sense in the in the in a smaller context, or if you're trying to make something pretty or elegant or whatever, but that's not this game. [Ryan laughs] It's just not extensible. It's supposed to be built to be extensible, but it's not conceptually extensible the same way. The concepts get frozen in time, right? Especially the basic concepts get frozen. And I needed to unfreeze them. When I wanted to add a wheelbarrow on a stepladder, and all that kind of stuff, it just where does that fit anymore and you didn't want to have those these specific and you want them to share function sometimes. And then people talk about the dreaded diamond or whatever. And that's like, my game would be like, just the matrix of diamonds and things. And I just don't want to do it that way. So components make more sense. I mean, I know people, I mean, I remember I actually read the comments of that. And people were like, he was confused about what ECS is. And I was like, not me, that's confused. It's that game developers talk about ECS in two different ways. There's entity component systems in a very technical optimization way. And then there's entity component systems—this is just about breaking shit up inside your structures, and being sensible about it and allocating when you need them and so forth.

BP If somebody you know, came to you and said, I've been really inspired by this project, or, you know, just me personally, I felt drawn, you know, for a long time to game development, I want to create something, what advice would you give them? You know, like, what about this sort of process, do you think has maybe given you some insight into what works and what doesn't as an individual or, yeah, like how people could approach this in terms of getting the most out of it, you know, for their own creativity, or their own career?

TA Yeah, well, career is harder these days. I mean, I don't want to pretend like I know how to break in these days, right? I mean, it's so different now. There's hundreds of games being released every day. And there's engines like Unity and Unreal and stuff that like, I don't know which one to recommend, or which one, you know, if I should recommend one and that kind of thing. And those are really, really important, right? I mean, that helps people get over that. I mean, I rolled my own engines at first, and then I use STL, which is like not nearly as encompassing as those other ones. It's not a great idea, really, in the end, because here I am doing this graphical update. I can't take things as far as I'd like to take them. So, I mean, that kind of advice is not you know, I'm not sure how to give, how to give that sort of advice. But yeah, but you have to, I mean, I'd say like, make a short project, don't work on your giant dream project first, work on a short project. See if you like all the pieces of it. Do you like doing menus? Do you like polishing? Do you like making sure all the bugs are gone? Because people are not going to want to play the game if it's a broken mess. And then you may not like that part. [Torn laughs] And I'm not saying that in, you know, in relation to the graphic or release and all the work I've been doing recently, but just in general, I mean, it is not the job that you think it is at first. If you're making games for commercial release, or even for like hobbyist releases and want to grow a community. And that's another thing. So there's also this whole thing about, like, you know, don't work completely in secret create, like your web presence. People have that kind of thing. There's all kinds of helpful social media for that I was just hoping to navigate, but just just having like the I mean, I wouldn't want to call it flypaper. But I don't have another metaphor right now. But just having something up to capture people that come by and you know, so they can talk to you about stuff. And so you can, you can kind of grow your audience. I mean, our audience grew over six years, and we weren't like a sudden success. I put the web rights in 2000. I mean, you have to be cagey about certain things. But you also need to get good at managing your community. Like if you're going to be a small developer that doesn't have, you know, a whole community management department and so forth, then you need to be good at that you're going to need to wear all the hats. And you can mess it up. And that whole side, like all the sort of soft skills and learning how to make a mega development log that is informative, and truthful. And don't try to blur what you're doing, or try and fool people or anything. It will always comes back to bite you. I never tried to do that kind of thing. 

RD Have you ever had an incident where you learned a lot of lessons from trying to manage a community?

TA Like you need to know how to deal with that stuff, if you're going to be a community manager, or if you're going to run a forum. And we had to just learn as we went. It's not that hard, because I mean, you just try and be a decent human being can take you a long way. But it's not just tha,  right? There's a lot of—and I'm not I'm not saying I'm an excellent forum moderator either, because it's a hard thing. But you're going to have to wade into a dispute, which may be a complete gray area thing and try and figure it out. And it's not what I was anticipating. When I was just like, here's my game!

BP What games do you like to play for pleasure outside of this? Do you play other video games for fun? 

TA Oh, sure. Most recently, I just got Nioh 2, I was gonna try it. I mean, I was late on that one because I didn't have a computer that could play it. And so that changed recently as my computer suffered a casualty, and then I happened to get one that could play it and I had fun with it. I had fun with all those Souls II type games I was having. I was having fun with that one last night. It took me a while to get through the first mission, but I did. And yeah, various other stuff, though. I mean, I was into the whole kind of I mean, I played the Dyson Sphere project was the was the last one I put a lot of time into. Built a little band, maybe, you know 1000 components or whatever around a sun. That's fun, right? Building things around suns is fun.

RD Have you played any of the games that Dwarf Fortress has inspired?

TA It's hard. It's just a little weird. I mean, we've looked at them though. I mean, we've looked at Rimworld and Gnomoria and and well I mean we're not we're now on to like the kind of grandchildren and great grandchildren of the game. It's like, you know, what percentage of base building is inspired by the kind of game right? Or whatever. It's like, what is the Fortnite-Dwarf Fortress connection or whatever? Who knows? Right? Because I don't claim credit for any of that, like, because there's so many other base-y building type things. And of course, there were games about base building before Dwarf Fortress. But yeah, we kind of sparked a sub genre of things that then sparks some other things. And you can tell because you see Dwarf Fortress easter eggs all over the place.


BP So usually, at the end of every episode, I shout out the winner of a lifeboat badge. But today, I thought it'd be appropriate, I'm going to give a shout out to the question with the most votes that references Dwarf Fortress on Stack Overflow. So viewed 1.7 million times as recently as five days ago, but asked 12 years ago, "How to print colored text to the terminal." So if you're curious about that, we've got an answer for you. And it says, yeah, you can find some of these bitmaps that you can use on the Dwarf Fortress Wiki. [Tarn laughs] Helping people print color text to the terminal for 12 years now.

TA It's funny too, because it doesn't sound like a terminal. It sounds like they're using the cheating that I did, which is just texture a quad. I mean, that's what the new terminal is a texture grid of quads with like a code page for 37 used as a texture. Sadly.

BP Little hacks will do? All right, everybody. Well, thank you so much for listening. Tom, thank you so much for coming on. I am Ben Popper. I'm the director of content here at Stack Overflow. You can always find me on Twitter @BenPopper, email us And if you enjoy the show, leave us a rating and a review on the podcast platform of your choice. It really helps. Ryan?

RD I am Ryan Donovan. I edit the blog and the newsletter here at Stack Overflow. I am secretly on twitter @RThorDonovan. And if you have a great idea for a blog post, you can email me at Tarn?

TA I'm Tarn Adams, you can find us at and on Twitter @bay12games.

BP Wonderful. Well, Tarn, thanks so much for coming on. If you haven't checked out Dwarf Fortress, now's your chance. And thanks for listening to podcast. We'll talk to you again soon.

[outro music]