Strike the Earth!

There are only two games that I play with any "seriousness". Since I haven't had the time or inclination to blog lately, I thought I would rant and ramble about them, mostly because I'm a little sleep-deprived. Work provides endless layers of complexity and occupies most of my thoughts, but when I have time to myself, I shift that level of focus to a "game" that's self-directed and employs that same level of complexity.

The first game I want to talk about is a computer game called Dwarf Fortress, availible for mac, PC and linux 32&64.

There are lots of different styles of games, action, adventure, strategy, role-playing, chance, etc. These are all roads well-traveled and familiar to anyone who has seen, say, a game of chess and a game of mario brothers.

Dwarf Fortress is something that people tend to classify as a management game. It's an unfinished product, still in development, but profound nonetheless. It's a simple game that creates complexity by randomly generating parts of the game. Ms. Pacman was considered an advancement over regular pacman because the "ghosts" that chase the character around the screen had an element of unpredictability thrown in to them, while the original Pacman had the ghosts traveling the same paths over and over, leaving to the player to figure out how to avoid them and clear the level.

Enough about Pacman, back to Dwarf Fortress.

At first you're presented with a list of variables involved in randomly generating the world. The degree to which different x and y axis are correlated with more or less volcanism, savagery, temperature, rainfall, etc can be fiddled with to produce unpredictable results.

After this, history is randomly generated including high levels of detail down to individual people and battles and dragon attacks or anything else you would expect to happen in some random fantasy setting.

Next, it's time to choose the area in this world you plan to play the game in. Proximity to settlements from other civilizations have to be considered for hostility and caravan access, you want to pick a site that's likely to have fresh water or magma or whatever else you think is important. Caves maybe.

Next, you select the skills, abilities, and starting equipment of seven dwarves (yes, seven dwarves, try not to laugh). You can select their degree of skill among well over 30 different jobs, everything from mining to farming to soap-making, tanning, butchering, hunting, trapping, soldiering, weaponsmithing, lye-making, siege engineering, mechanics, and that's just off the top of my head. You start off with a certain amount of money you can use to buy wood, work animals, weapons, mechanisms or anything else you can think of that will help those seven dwarves survive.

Then it's time to embark! Your Seven dwarves relocate to the site of your new fortress, and it's time to get to work.

"Work" is accomplished not by telling any individual dwarf what to do, rather you give them all permission to work some of these specific jobs, then you plan out and designate what kinds of work has to be done (mining, farming, etc). The dwarves will then go about their business, working in time to eat, sleep, play, have kids, throw tantrums, etc, all without you being able to directly control all of it.

So, you have to plan. How far away is the primary food stockpile from the kitchen? Do we have enough people available for cleaning and refuse hauling? How's that military coming along? Are the fortifications ready? do we have enough crafted stone flutes to meet the demand of the next caravan? The dwarves will mostly do what you tell them to, but they also have their own agendas and can not be 100% relied upon, even though they can be 99% relied upon.

You have to create a system that is tolerant of those occasional glitches and faults, and sometimes even the best planning only results in more complex glitches and faults...all because of the emergent properties of the complex system you are attempting to manage.

"Best Practices" come into play. "Hey, if you're going to try to pump water out of that river, let's build in a shut-off switch in case we start a flood"

Simple things like that, all products of "lessons learned".

The motto in dwarf fortress is "losing is fun!". A failure that wipes out days of hard work gives you simultaneously the satisfaction of watching a large complex construction collapse with people running around in terror or slowly starving to death, it also gives you a better idea how to prevent that from happening at the future. You have to review.

In those moments before you trash a fortress and whip up a new one, there's a flash of insight. "Well, this would have worked better if I had done this instead."

Since the game is always random, there is never a specific order of steps that can be learned to be effective, there must be analysis of the local situation and appropriate delegation of the correct jobs to the right people to survive those circumstances.

People will write, at length, beautiful novellas about individual games they've played on the Forums for this game. The level of detail simulated borders on absurd (down to the degree of injury to individual toes, dwarves paying rent, breaking the law, throwing parties and fighting each other.

In addition to the "fortress" mode of the game, there's "adventure" mode. Instead of managing a population, you control a single individual and explore the remnants of old fortresses you previously created, seeing how the events that happened in the game changed the simulated history, inspired different themes in the artwork and statuary, things like that. You can wander from town to town taking on quests or hunting jackrabbits or trying to build a huge pile of mushrooms and then set it on fire, whatever.

This gives you the opportunity to explore the game you just played in a different way...as one of the uncontrollable individuals from the management-game. Maybe a hallway and dining-room seem a lot different when you're designing one versus when you're running through it.

One final mode simply allows you to browse the simulated history for the world you've generated.

The graphical representation of this detailed simulation is entirely minimalist and old-school. The graphical representation is more like the old terminal games from the early 80's like Rogue or Nethack.

The game is displayed with simple computer characters. % is a piece of food. ^ is a trap. @ might be a guard and $ might be money. a strip of floor with a stairway at the end of it might look like .,.,,,...,,,.> or ++++++X depending on if you were looking at a dirt floor with an up-staircase or a polished stone floor with an up/down staircase at the end of it.

Despite the simplicity of the graphical interface (which is all manipulated by keyboard, with some recent limited mouse additions added in), this game runs on almost any computer, but requires a powerful computer to play deeply.

The challenges are immense, which is why I'm so astounded that this seems to be mostly the product of one primary developer. The game seems simple enough, but when you have to keep track of up to 200 dwarves, all with clothing, jobs, spouses, toes, food, money, workplaces, preferences and desires, things get a little complicated. Just figuring out where everything's GOING gets complicated. Once you throw in realistic fluid dynamics (water will seek to find it's natural level, spreading and exerting pressure, just in real-life), weather and economics, you're asking a LOT of your computer.

I've let my computer slide in the past couple years. Nursing school and starting my career caused keeping my computer hardware up-to-date to take a back-seat. Now that I'm more settled into my job, I've decided it's time to upgrade mostly so I can play dwarf fortress longer. Things start to slow down to the 10 frames-per-second range (30 or even 20 would be great) once the population of my fortress hits 90 or so. My computer was pretty beefy when I put it together, but I've let it slide for too long.

I've got half the parts delivered already for the new one, I look forward to putting it together, mostly so I can extend my discovery of this game to the next level of managing populations over 150 entities. Watching some of the video tutorials has been instructive.

Anyway, back to the game. The level of randomly-generated (what's properly called "procedurally generated", since it's not "truly" random I guess) detail is staggering, and it's actually too much to keep track of. Oh, sure, in an ideal world you'd make sure that the one dwarf assigned to fishing doesn't mind being out in the sun, but if your fisherdwarf really hates the sun, do you spend the time training a replacement or do you build them a hut to fish under? Maybe you just stick it out and risk a tantrum while you make other arrangements?

Each dwarf has it's own thoughts and preferences, and it's reflections on it's short-term and long-term experience are immediately available. Oh, this one really hates goats but loves silver, raspberries and statues made of granite.

Well, that's nice, but we all have to get along in an environment that is NOT tailored to suit your exact tastes.

You can set your dwarves up to succeed, or you can set them up to fail.

Both are fun, both are educational, but why are you playing?