Text Adventure vs. MUD vs. Roguelike vs. Dwarf Fortress

Dwarf Fortress is a single game (rather than a genre) first released in 2006 programmed solely by Tarn Adam. It uses procedural generation to create an entire game world, along with history, lore, and natural resources. It extensively uses ASCII art and colors and looks like a roguelike except with a much more extensive system of menus and screens.

The player controls a entire tribe of semi-autonomous dwarves (each with a unique name, personality traits, skills, and stats) as they build a fortress and try to survive. The learning curve is incredibly steep for this game due to the complexity of its simulation. It is a single-player game that runs in real-time.

Dwarf Fortress is a monstrously complicated game, so programming something like it would not be too difficult so much as the large amount of design needed.

  • Single-player
  • Real-time (but can be paused since it is single-player)
  • Player indirectly controls several autonomous dwarves
  • ASCII art
  • Hotkeys and menus for input
  • City-building and simulation genre

Creating Your Own Text-Style Game

The largest advantage to creating a text-style game is that you do not need to be a good artist or spend time acquiring graphic assets for your game. However, these games still require design work to be done beforehand, along with decisions about how the gameplay should work.

When making your own game, consider between the following design decisions:

  1. Single-player or multiplayer. Single-player is easier but multiplayer is more fun and social. Multiplayer requires learning network programming.
  2. Turn-based or real-time. Turn-based is easier, but real-time is often more fun. Single-player games can be turn-based or real-time (with pausing and controllable time-speed) but multiplayer games almost always must be real-time (adding to their programming difficulty).
  3. English descriptions or ASCII art. Writing English descriptions is easy, but it requires a lot of work to create an expansive game world. Using ASCII art to draw out worlds is also easy-but-a-lot-of-work, however you can use procedural generation algorithms to automatically create large, unique (but formulaic and often repetitive) worlds, monsters, and characters.
  4. English commands or hotkeys/menus. Typing an English command like "get lamp" or "say 'Hello' to elf" offers a richer way to engage with the game, although it can also be opaque at times. (And nothing is more frustrating than constantly reading, “I did not understand that command.”) While hotkeys and menus are more limited, they are also more obvious. Games with story and role-playing are often better suited for English commands, while hack-and-slash games use hotkeys and menus.
  5. Story-base or hack-and-slash. Story-based games require more design work, and players may or may not like the story and writing. Hack-and-slash games are simple, but can become repetitive.
  6. Player directly or indirectly controls one or multiple characters. The player can either directly control the movements of one or more characters, or indirectly give instructions. Indirect control requires more complicated AI for the characters but makes it easy to control multiple characters by issuing orders and letting the character carry them out.
  7. Monochrome or colorful text. Colorful text is almost always better, but might require the use of a curses library to program this.
  8. Puzzles or stats-progression Similar to story-versus-hack-and-slash, puzzles require more design which the players may or may not end up liking. Stats-progression games where the player acquires better weapons or advances in levels can be fun but also repetitive.

Game design is all about decisions and trade-offs, but knowing what these choices are gives a hobbyist programmer more insight as to what’s been done, and what can be possible.

Page 3 of 3 | Previous page

6 comments on this post.
  1. Greg Taylor:

    Shameless plug, but Evennia is an open source, BSD-licensed MUD server with Django and Twisted. If you’re curious enough to try your hand at a game, consider checking it out: http://evennia.com/

    We hang out on #evennia at FreeNode, and the community is active and helpful.

  2. Chris:

    I would love to see a tutorial on roguelikes from you :) Keep up the good work!

  3. Jslakro:

    Nice to see a brief description of all text-related game genres.
    I didn’t know the meaning of hack-and-slash concept. I consider the 8 items list is useful for game design.
    Thx! It was plain

  4. bdubyapee:

    Interesting topic. I have been working on a MUD style game written in Python for years. Mostly used as a platform for playing with new Python features since I started tinkering around back in ’05ish. Unfortunately life has been in the way for quite some time, but feel free to take a look at my project for (probably old/bad) ideas on how do do things!

    https://github.com/bdubyapee/apm

  5. JG:

    There’s also a tie to the ASCII “Empire” game which became Civ, and even SimCity in graphical form.

  6. Lion Kimbro:

    Consider the “Candy Box” — it’s a text game, and very simple, with incredible play value.

    It’s an interesting category. I don’t know what to call it. It’s not a text adventure, MUD, rogue-like, or world sim.

Leave a comment