Minecraft was my gateway drug. It seduced my imagination with grand ideas: setting foot in a dangerous new world, gathering provisions from the wilderness, erecting meagre shelter and surviving on your cunning and creativity. Regrettably, these concepts quickly wane once you learn a handful of commonsense safety rituals. Late-game Minecraft becomes a different game entirely, one largely centred on erecting impressive macrostructures or testing the limits of redstone torch circuits. This minor letdown gave me a taste for “harder stuff”, which led me to the seemingly impenetrable pioneer simulator Dwarf Fortress.
Dwarf Fortress has a peculiar dual inheritance: the permanent death and procedural generation of Roguelikes and the city-building strategy of games like SimCity. Its well-deserved reputation for inaccessibility is rooted in several factors, most notably the extreme austerity of its graphics. Simply learning to mentally translate a screenful of ASCII into a bustling dwarven settlement is a considerable endeavour (though a sprite pack certainly helps). Underneath this mess of characters lies a byzantine system of mechanics that drive the game’s detailed world simulation.
The scope of this simulation is almost inconceivable. For starters, every dwarf has a unique name, equipment, proficiencies in various professions, work orders, religion, moods (sometimes strange), relationships, and health status categorized per limb. The world generator models elevation, temperature, rainfall, drainage and erosion to generate several dozen biome types. These biomes are populated by thirty kinds of trees, a few dozen types of rock and ore, and several hundred creature species ranging from elephants to hydras. Despite its anachronistic low-fidelity graphics, the sheer quantity of information being processed and updated under the hood necessitates modern computing power.
Agency in this complex world is expressed through the dwarves, but they are not directly under your control. Instead the player outlines a high level task (dig here, store wood here, construct a workshop here) and the game chooses a dwarf to perform it based on certain criteria. As far as I can tell, this aspect of the control scheme is unique; strategy games usually require manual unit selection before issuing simple commands. Dwarves are highly autonomous once set up with the proper facilities, and will occupy themselves with eating, drinking, sleeping and working without the player’s input.
Regrettably, this remarkable system also has a massive flaw: the nontrivial task of managing who does what. Each dwarf has a list of “labours” that he or she is permitted to perform. These labours loosely correspond to professions: mining, wood cutting, farming, masonry, hauling etc. This system allows you to maximize the benefits of your specially trained dwarfs. After all, you don’t want your best farmer to be hauling barrels while your expedition starves. However, needlessly restricting labours can create a work bottleneck or leave an overspecialized dwarf idle. Managing labours manually becomes extremely tiresome once your dwarven population swells to thirty or more, necessitating third party spreadsheet applications such as Dwarf Therapist.
One aspect of Dwarf Fortress that particularly appeals to me as a programmer is that its systems are not inherently complex. Instead, the complexity arises from the interaction of many simple systems. Tarn Adams described this design philosophy as: “finding the key, basic elements, finding the rules that govern them, and then activating those things in the world.” For instance, one of the first challenges for a new dwarven settlement is securing a source of food, and the safest ways of doing this is subterranean farming. In order to plant crops underground, the soil must be muddied by temporarily covering it in water. Rather than having one preordained way of doing this, a number of interesting options emerge from Dwarf Fortress’s sophisticated fluid dynamics simulation. One method involves setting up a dwarven bucket brigade to carry in water from a distant source. Another option entails digging out the side of a murky pool so that the water flows into a larger chamber. Advanced players can even work out complex irrigation systems using floodgates and pumps. Hungry dwarves, thirsty plants and simulated water physics intersect to create an interesting problem.
The intersection of simple systems is also responsible for Dwarf Fortress’s peculiar difficulty scale. The level of challenge associated with any given playthrough is largely determined by the choice of embarkment site. Each biome offers a distinct set of flora and fauna, and is further classified on axes of savagery and alignment. Evil and untamed lands are teeming with dangerous creatures and are thus far more perilous to inhabit. Proximity to other civilizations is also a difficulty factor. Human and elven neighbours will send trade caravans; goblins neighbours will send raiding parties. The most pernicious threat to dwarven pioneers is the presence of aquifers: underground layers of water-saturated soil. They’re difficult to dig through, can cause accidental flooding, and halt excavation toward more valuable ores. Since all of these gameplay factors are presented on the embarkment screen, it’s up the player to choose how difficult their experience with Dwarf Fortress will be. For instance, Tim Denee was clearly playing on “hard mode” when he chose to embark the Oilfurnace expedition in a haunted land infested with undead and riddled with aquifers.
Dwarf Fortress is chock-full of fascinating design ideas and endless procedurally-generated adventure. Don’t let the steep learning curve scare you away: grab a guide, embrace the philosophy that losing is fun and strike the earth!