I enjoy games. I also enjoy “enhancing” my game experience by customizing. The only thing that really holds me back from over-enhancing is memory consumption and overall efficiency. I found out that MUDs are not only enjoyable, but highly customizable based on the client one uses. Since they are pure text environments, it means there is a lot of flexibility when it comes to “extra” resources.

In particular, I am quite fond of Underworld Dreams. It probably has to do with it being my first real online game (aside from Quake 3 Arena), where I learned to type, and the meeting of a few friends. Now, one can play MUDs with any old telnet client. However, one will get paging issues, scroll spam, no shortcut to typing, and general frustration. Luckily there exists specialized clients for MUDing which are telnet clients on steroids. TinTin++ (and its Windows port WinTin++) is my favorite; although, zMud and gMud are both really popular among others.

WinTin++ has one major short-coming and that is that it runs on Windows. There is no shell access in Windows and this limits the amount of insane scripting that is possible. TinTin++ on the other hand works in Linux and has full system access which allows the executing of any external applications. This makes TinTin++ much more exciting. That said, the syntax between the two clients is the same minus some feature restrictions. This means that scripts are portable across platforms. And for the really ambitious, WinTin++ can be copied to external devices after installation so that MUDing from work is convenient.

After installing *Tin++ and running it, you are left with a blank, black screen. Sessions must be started each time in order to make outbound connections. For Underworld Dreams, one could enter session {UD} {} {3000} every time or add it to a default script. Since scripting is the whole point of the article (minus the introduction to MUDs), let us begin. Assuming we will be adding lots of enhancements, we will add in some structure to begin with. Particularly, we will wrap our default script in a default class which allows for better cascading. The result of this is, we define a default group that has all of our default settings in it. Then we will later override some of these with character specific needs. We will also enable logging all input and output to a plain text file. Here is an example:

#CLASS {cl_default} {kill}
#CLASS {cl_default} {open}

#SESSION {UD} {} {3000}

#CONFIG log plain
#FORMAT {time} {%T}
#FORMAT {logfile} {logs/ud_%Y%M%D.txt} {$time $time $time};
#LOG append $logfile;

#read {config/default/actions.tin}
#read {config/default/aliases.tin}

#class {cl_default} {close}

The class functions serve to clear out all remnants from a previous session, open a new one, and add everything to it before closing. The session command connects to the Underworld Dreams (affectionately known as UD) server. The read commands will be additional commands and functions that are injected into our default class. Aliases are essentially shortcuts and actions are automated tasks based on certain input. The log portion enables logging as plain text, formats the file name, and stores them in a “log” directory in the same location as the *Tin++ executeable.

Before launching *Tin++, create the “log” and “config” directories. Then place the above script into the config directory. I call mine “ud.tin” to signify that I am connecting to UD and that it is a *Tin++ script. Now it is time to launch. At the scary blank, black screen enter #read config/ud.tin and enjoy. In future posts, I will flesh out some more scripts I use including the aliases.tin and actions.tin mentioned above.

For more MUD options, visit The MUD Connector. They have server listings, forums, links to clients, and more.

Next: Part 2, Aliases