2018-10-02 18:42:22 (edited by Musashi 2018-11-23 00:28:38)

Welcome to my MUD client comparison. In my six years of mudding experience, I've used CMUD, Mudlet, MUSHclient, TF and VipMud. Out of those five, I'd like to present the three I found the most accessible.

Purpose of this article

This article is intended to give you an overview over VipMud, TF and MUSHclient, with advantages and disadvantages. It'll also include some programming examples, just so you get a feel for the used languages - however they won't be essential.
This article will NOT advertise one client or the other - it's not meant to. All I'll give you is recommendations based on what the clients are especially good at. Everyone has their own preference - let's accept that and just enjoy facts. As I use Windows 7, the article will only refer to that OS.


VipMud is said to be the most accessible client for Windows. It gets developed by GMA Games, a company well known for developing solid, accessible software. Does it live up to its promise, though?

VipMud - Setup

Setup of VipMud is simple enough - you download the current or older version of VipMud from gmagames.com
and then run the installer. Warning: VipMud gets placed in the Program files (x86) folder in the older version - a folder which has restricted rights since Windows 7. More about that later.

Advantages of VipMud

Now that VipMud is installed, you can run it. As long as you have Jaws, it'll be 100 % accessible. I've heard people grumbling about the fact that NVDA doesn't support the older version of VipMud, I never had problems with it, though. Then again, I primarily use a braille display, so maybe things are different for voice users.
VipMud's design is very intuitive - navigation, the menus, setting up new worlds - all that can be done using up/down, left/right arrow keys and the tab key. There are also hot keys to access certain menu parts and you can define hot keys of your own, though they're very restricted compared to TF. It's all doable if you take a while studying the help file.
Also, there are many features blind people will enjoy - like the option to speak triggered lines in a different voice, have different voices for different windows, no voice at all for a certain window, etc.
It's also possible to gag for voice only, braille only or both. The most basic alias, trigger, key and variable stuff is easy to understand if you take said time to read the helpfile.
Many blind people said they also enjoyed that you have a split screen display with input/output windows, can scrol through output comfortably with up/down arrow keys and don't get sent to bottom line when new text arrives, a problem you have in MUSHclient and TF without additional plugins/scripts.

Disadvantages of VipMud

Now to the disadvantages.
First, there's the matter of VipMud not being freeware. I know some people get really sensitive when this subject gets touched, but please listen first and judge then. While ca 30 dollar isn't THAT much for pay once, play forever, I'd expect a software that costs money at least to be capable of doing as much as the software that doesn't. Yes, VipMud's layout is nice, but nothing I cannot acomplish in other clients as well, with a little coding (or the right plugins). Of course the developers deserve money for making a consistent design. But especially in MÂDs, a consistent design isn't enough.
VipMud doesn't support certain protocols, especially regarding compression, which can lead to trouble with small, private MUDs which don't have a great data structure.
Regardless, The more troubling aspect is VipMud's scripting language. While it's easy to get the hang of, it's also... not very powerful, to put it politely.
An example I can offer is when I tried to built an alias which performed a check for opponent defences: A trigger should assign a value to a variable, which the alias then retrieved and decided to perform a matching action. It did not work until I made the alias wait two seconds before checking the variable. The client needed two seconds to assign a simple integer value (so a number) to a variable. As comparison, C++ needs 4.9 seconds to build a rather large console program and create an executable file for it (.exe). In fast-paced MUDs like "Avalon - the legend lives", pausing the entire game for two seconds at each attack is inacceptable. And that's what VipMud does when waiting: It pauses the entire program.
The help file on inbuilt functions (functions starting with %) is a mess, too. It's often vague, the syttax never gets explained, and why the results of an inbuilt function are always UPPERCASE and need to get turned back lowercase with %proper() first is beyond me, too.
More complex functions, aka with inbuilt functions, are really clunky and inefficient - mainly because VipMud does not offer regular expressions, so more complex search patterns. This makes the function tasks I need to perform all the more complex.
And last, but certainly not least, the error messages and traceback of VipMund is really unhelpful and not really context sensitive.

Coding example VipMud: Rearranging a tell

Lets assume there was a player calle "Druid Qwertz, the spammy tree" who lived up to his name and spammed us a lot. Now, we'd want to at least shorten his tells somewhat.
Instead of Druid Qwertz, the spammy tree tells you, "Hi!" we'd want to receive: Qwertz: Hi!
To do this, we'd need a trigger which substitutes above line with the shorter text. Luckily there's a function (#sub) which does exactly that. However, retrieving the necessary data is kinda difficult...

#TRIG {*, * tells you, "*"} {#var namelist {%replace(%1," ","|")}; #sub {%proper(%pop(%reverse(@namelist))): %3}}

Woah. What's all this about? Well, the trigger matches every line of the pattern wildcard1, wildcard2 tells you, "wildcard3".
The asterix (*) stands for some unknown text that can vary from trigger match to trigger match. That way not only Druid Qwertz, the spammy tree gets the shortening treatment, but Knigt Zuiop, the equally spammy heap of metal, too.
But what's that mess after that? Our first asterix matches Druid Qwertz, and assigns the system variable %1 the value Druid Qwertz. To retrieve the actual name (Qwertz) we need to first convert this into a list (by replacing the space with a vertical bar), then reverse the list, get the now first value, and as it's (see above) now QWERTZ (all uppercase) we need to turn it back to Qwertz (capital letter at start, then all lowercase) using %proper(). The rest just gets the actual text Qwertz told us and substitues the original text with the result we now got.
(Yes, setting this up took me some days).


Let's move on, though. TF, or officially TinyFugue, is a Unix/Linux-themed client. Other than VipMud, TF doesn't offer a GUI (Graphic User Interface), but it's a console/shell program. Hence, there's only one window.

TF - setup

As TF was intended for Unix/Linux, you need to make some adjustments to make it fit the needs of a Windows user.
If you don't like compiling stuff, you can
download a precompiled Windows version here. Otherwise, you can
get the official version of TF here. However, you must first compile it using Cygwin, then.
Note: The Druware Installer will attempt to put TF in the Program Files (x86) folder again. Prevent this or follow the steps a bit further below.

Advantages of TF

TF is completely free and entirely open source. That means you can reprogram every single aspect of TF, add and remove features as you please. It also works with Jaws and NVDA. It offers more features than VipMud, for example triggers with glob or Regex matching, which are more powerful search patterns than VipMud's. What I really loved was the possibility to assign a combination of keystrokes to action performing. for example assigning something like control+e, s, j for the action scythejab <target> was enitrely possible. This made the variety of hot keys you could use HUGE.

Disadvantages of TF

However, it requires a ton of work to set up TF properly. The Linux/Unix definition means TF uses LF (linefeed, \n) as line terminator. Windows uses CR-LF (carriage return, line feed, \r\n). You need to either have an editor that can interpret and set LF line terminators like Notepad++, or adjust the line terminator variable. Getting the hang of TF, it's limited screen mode, paging, etc. etc. will be very time consuming.
This tutorial helped me, but it's rather outdated.
If you have no experience with linux/unix like commands, or don't have the patience to get the hang of it, then do yourself a favour and stay away from TF. It doesn't look like it's getting developed farther, anyway. (Neither does VipMud, for that matter).

Coding example TF: log with current date

Here's an example I wrote.

/def currentlogger = /eval /log ~tf-dir/logs/${world_name] $(/expr ftime\(\"\%Y-\%m-\%d\", time\(\)\)).log
/def -hCONNECT = /eval /currentlogger 
/def hDISCONNECT = /eval /log off

The first line defines a macro named currentlogger that logs everything to a file in the folder tf-dir and it's subfolder logs, naming the file after the current world name and the current date, like: Avalon 2018-09-30. The \ is an excape character to prevent the following character from getting interpreted by the compiler.
The second definition creates a hook. Upon connect, the currentlogger macro gets automatically executed.
The third one is a hook, too, and automatically stops logging upon disconnect.
You see, it's quite powerful. But extremely hard to get the hang of, and the help file system is huge, so it'll take weeks or months to master that client.


Now the last of the three. MUSHclient combines aspects of TF and VipMud. It's for Windows, has a GUI, but also a Shell/Console like input/output window.
It's also the only of the three clients which comes with a powerful scripting language: Lua.

MUSHclient - setup

You can download the installer here.
Then, run the installer - careful, it tries to put the files in Program files (x86) again, or unzip the zip file somewhere if you didn't choose the installer. Where you unzip doesn't matter.
Now, you'd probably want MUSHReader, Output_functions and more. If you plan to play MUSHclient for a certain game - Alter Aeone, Materia Magica etc., some of them offer ready to go packages. For others, I'll soon try to make a not world specific bundle of files ready. If you know what you're doing, you can easily fetch all files you need by googling. That's what I did. just remember, dlls in root folder, lua scripts in lua folders, xml in worlds/plugins folder.

Advantages of MUSHclient

While MUSHclient isn't innately accessible, it can get made accessible with various plugins.
The greatest advantage is that it still gets developed, every day, and new functionality and plugins get added. You have special needs? Go talk to the developers. I found both Nick Gammon and Fiendish were very helpful.
Then, there's Lua - a very powerful scripting language. It comes with the MUSHclient bundle, so it's immediately included, no fiddling with PATH variables etc. required. However you can include JScript, Perl, VBScript, Python and Lua-JIT if you feel like it.
Its speed and performance is much higer than VipMuds, making functions like the one I described before entirely possible. And as for waiting some time: MUSHclient doesn't have to pause the entire client because it does that on another thread - those who have some programming experience will know the term. For the others, imagine the main program as a rope, and MUSHclient, or rather Lua, is able to attach thinner strings or threads to that rope in which some stuff gets executed and which only join the main rope again after that execution is done, or after a certain amount of time, or when a certain line is received.
Thanks to the plugins, you can add functionality you could never manage on your own without problems - in fact, others can write you an entire game setup by simply distributing xml files.
The helpfiles aren't accessible, but a plugin makes it possible to read them in the output, too. Even those who miss VipMuds split screen - there's, surprise, a plugin for that.
You need to invest some time exploring the menus, though, just as with VipMud.

Disadvantages of MUSHclient

Please keep in mind MUSHclient is, per se, not accessible. You need to install plugins to make it accessible. Some, like the SAPI text-to-speech plugin, are already preinstalled and just need to get included. Others need to get downloaded.
Setting MUSHclient up requires patience, less than for TF, but more than for VipMud. It's very powerful once you got it to work, and you can ask the developers for more functionality, but it'll take time nonetheless.
And it's entirely possible some functionality simply does not exist yet - then you gotta speak up, and wait for it.

Coding example MUSHclient: Who calls where?

You'd go to the menu, game, configure, triggers, add.
As match, you'd enter:

^(?P<player>.*) (call|calls) to (?P<channel>.*), \"(?P<text>.*)\"$

In send you'd enter: %player @ %channel: %text
In send to select Output.
Then check the following boxes: omit from output, omit from log, regular expression, match on same line, keep evaluating. then OK.
What does this do?
Well, whenever someone calls something on a channel now, you don't see text like: Lleu calls to Mercinae, "Musashi does a poor job!" Instead you'd see: Lleu @ Mercinae: Musashi does a poor job!
Also works for yourself, thanks to the (call|calls) which means call or calls we included.
This is one of the most trivial of regex (regular expression) uses, but MUSHclient really offers a lot regarding this - including named wildcards instead of numbered ones (although you can still use numbered wildcards, too).

Oh no! My computer placed the program in Program files (x86)!

Don't worry! Just copy the entire program (so the MUSHclient/TF/Druware or VipMud directory) somewhere else and paste it, or if you're familiar with the CMD, do the following:
Execute CMD with administrator rights. UAC pops up - confirm that you want to execute it that way.

cd ../..
cd "Program files (x86)"
icacls target_directory /grant your_user_name:(F) /T

This does the following:

  • Moves out of the winews directory the CMD starts in in admin mode,

  • moves into Program files (x86),

  • changes permissions for target_directory and all subdirectories and files to full. (At least for the specified user name)


If you can't script or aren't allowed to use scripting in a world, if you can put up with paying or the demo timer and if you don't want setup hastle I recommend VipMud. Otherwise I'd recommend MUSHclient. TF is only an option if you're super techy and want ultimate control over your client.
I hope this article was helpful and not too dry - I focused more on information than joking around. Sorry. Funnier posts to come!

Programmers shouldn't call errors exceptions. They're way too regular.

Thumbs up +7