Brass Lantern
the adventure game web site


Linux Text Adventure Interpreters

by Stephen Granade

Table of Contents
• Introduction
  • Unix TADS
  • Glk TADS
• Inform/Z Machine
  • XZip
  • Unix Frotz
• Hugo
  • Console Hugo
  • X Hugo
  • wxWindows Hugo
• Glulx
• Alan


The world of text adventure interpreters can be a confusing one, especially if you're running Linux. Get this tar-gzipped file, edit that makefile, compile those source files. And that's not even addressing the question of which interpreters you should get.

Hence this guide. I'm going to try to lead you through the steps required to get all the major text adventure interpreters running under Linux. I'm going to assume that you know what the different interpreters are for, and why you want them. In addition, I'll pretend that you have some knowledge of the Interactive Fiction Archive, the major repository for all things related to interactive fiction. If you don't, or would like a refresher course on the GMD archive, take some time and skim through my guide to the IF Archive.

Writing instructions for a process like compiling interpreters is akin to trying to nail jelly to an air mattress. If you have problems with any of these instructions, or if they seem to be outdated, let me know and I'll update them.

Before I get to the heart of the article, I'm going to spend a few minutes talking about tar-gzip archives and makefiles. If you feel comfortable with these concepts, feel free to skip to the next page.

Most files for Linux come as tar-gzipped archives. They're analagous to zip archives under Windows, or Stuffit archives under MacOS. tar stands for "tape archive", and is the format used to back files up to a tape drive. You can recognize tar files by their .tar extension. However, this archive format can be used to back up to single files as well as to tape drives, and the Unix world has gotten used to using them for all-purpose archiving. tar files aren't really compressed much, so most tar files are then run through a compression library called zlib, a process known as gzipping after the name of the program used. The result is a tar-gzip file. Tar-gzipped archives usually have the extension .tar.z, .tar.Z, .tar.gz, or .tgz. To unpack a tar-gzip file, use the command

tar -xzf <filename>

where <filename> is the name of the file you want to unpack. (Note that you shouldn't put < and > around the filename; those are just there to indicate that you have to replace that part of the command with the appropriate filename.) The -xzf part of the command are flags: x stands for eXtract, z tells tar to run the archive through gzip before untarring it, and f tells tar that you're going to give it a Filename instead of using a tape drive.

In many cases, you won't be able to download a precompiled version of the interpreter you want. Instead you'll have to compile source code. Most source code packages involve the use of a makefile. A makefile, usually called Makefile or makefile, defines a set of rules for compiling a program. To invoke it and begin compilation, type make. When you're done compiling, if you want to save the source code but get rid of all of the files that were created during compile, type make clean. Note that this will delete whatever program you just compiled, so be sure to move the program to a new directory before doing a make clean. Otherwise, after you've compiled the program and moved it to its permanent home, you can delete the directory with the source code.

Unfortunately, life isn't usually kind enough to let you just type make and have everything work. You will in all likelihood need to edit the makefile. With any luck this will just involve commenting or uncommenting lines. A comment in a makefile is any line which begins with a #. Commented lines are ignored when make is run. For example:

#LIBDIR = /usr/lib  # This line's commented out
LIBDIR = /lib       # This line isn't

The LIBDIR = /usr/lib line will be ignored during the make. To uncomment a line, remove the # from the beginning of a line. To comment out a line, stick a # at the beginning of the line.

Next | 1 | 2 | 3 | 4 | 5 | 6

About Us | Contact Us | Technical Info | History
Copyright © 1997-2010, Stephen Granade.