Legend of the Tomb of Fate


Legend of the Tomb of Fate is an old-school BBS door-style dungeon crawler. Almost all of the game’s content (enemies, weapons, armor, items, elemental affinities and, of course, names) is procedurally generated—randomly determined as the game progresses. There’s a nearly inexhaustible supply of RPG goodness, all in <90k of Python code. This game was created for the TIGSource Procedural Generation Compo.

See the README file in the distribution for more detailed information on how to play the game.


The Legend of the Tomb of Fate is written in Python. Here’s the initial release of the source code (created for the TIGSource Procedural Content competition). Mac and Linux users should download the source code. Windows users can download an executable (update: color now supported in Windows! Thanks, python ctypes!).

Note for Mac Users: You’ll need to manually launch the game from the Terminal. Here’s how to do it.

  • Open Terminal.app (in /Applications/Utilities)
  • In the window, type cd then hit space.
  • Drag the Legend of the Tomb of Fate folder onto the Terminal window, then hit return.
  • In the window, type python LegendoftheTombofFate.py
  • If you get an error, you may need to upgrade the version of Python on your computer. (This will be true for users of OS X 10.4 (Tiger) and older.) To download a new version, go here.

Sorry about the hassle. A more robust executable for Mac (and color for Windows) is forthcoming.


Magical spells and attacks aren’t implemented yet. The framework is there (in skill.py if you’re interested), but I didn’t have time to implement the interface. That means that the “Magic” stat is basically useless at this point.

There are certain settings that I’m calling “policy” settings, such as the number of experience points it takes to level up, the amount of currency you find on average in the dungeon, size of the party’s inventory, and so forth. Right now those are hard-coded (in policy.py) but eventually I’d like these to be randomly generated as well.

Of course, the interface needs a lot of work. I’m happy with the BBS door-ish aesthetics, but even that can be spruced up a bit.


The source text that was used to generate creature names (with a Markov Chain algorithm) was extracted from the Wikipedia list of fictional creatures and spliced with monster names from NetHack, Wizardry and Skies of Arcadia.

The source text used to generate relic names was borrowed from Leonard Richardson’s Knapsack Problem.

The typeface used in the intro screen is Philip Menke’s “Fraktur” design for FIGlet.

The game and its mechanics obviously owe a lot to Wizardry, Legend of the Red Dragon and (of course!) Etrian Odyssey.


IntroductionElementsAt the general store