I mentioned a couple of times in other blog entries about a client I'm working on. I've been developing a general (as opposed to specialized for a particular server or codebase) client for Windows. It's a long way from being ready to share, but you all can see a screenshot below. I plan to include a lot of "typical" features, including simple things like remembering your favorite servers, sending your login information automatically, and scripting (including macros / aliases). I won't bore you with a feature list, but I will talk a little about a couple of "features" which I think will differentiate this client from many others already available.
The first is a "modern" user interface, and by that I mean one that's very simplified by default, minimizing the number of user concepts while providing something "nice to look at". I'm doing this by hiding most of the "non-essential" functionality behind some buttons, and keeping the overall UI very clean. Through preferences, users will be able to change the color scheme, the application's background image, and the color, opacity and image behind each text window (in the screenshot below, you can see only one text window, the semi-transparent black rectangle). I'm aiming for simple to avoid intimidating new users, but powerful enough to satisfy long-time MUD gamers.
The second big feature is a modular user interface, where different types of text go to different areas of the screen. Many have told me that they don't like playing text games because it's too hard to keep up with all the text, or because it hurts their eyes or makes them feel a little sick. When I play text games, I notice that a lot of the text is redundant, and some blocks are less important than others. To answer this problem, I've added a framework for defining additional text windows so that incoming text can be categorized and segregated.
The command prompt is the epitome of redundancy - for every message received, the prompt scrolls in again, even if the information hasn't changed. It makes sense for MUDs to send the prompt constantly because it usually contains very important, often-changing information, but when clients blindly append it to a generic outbox box, it accounts for a lot of vertical scrolling. My client permits users to describe the prompt as a regular expression, and then displays only the latest prompt in a reserved area right next to the command input box. I think this reduces scrolling, cleans-up the output in general, and moves the most important information as close as possible to the command input area.
As I mentioned, some messages are less important than others. While an important part of the MUDing expreience, chat often feels like a distraction when other events in a player's vicinity prompt him to take action, like the arrival of a goblin or another player loading an RPG. When these messages become intermingled, sorting the important from the less-important amongst all the scrolling can be challenging. A user of my client may define chat via a regular expression to send those messages to a separate window, where they'll distract less when life gets complicated. Users might even want to simplify a little, by using replacement expressions to replace something like "Golden Hierophant Glenn, Novice Tunneler of the 18th moon of Adrus III" with just plain "Glenn".
Really, any number of windows may be defined via regular expressions. Maybe a user wants to send (typically verbose) help information to a separate window, for example, where it won't scroll due to incoming text while he reads it. Or maybe updates about the weather and passage of time ("The sun is rising.") might go to a corner of the screen where they won't cause any trouble.
Granted, though well suited to text, regular expressions have their limitations. For one, they're not very accessible - your average MUD gamer doesn't know what a regular expression is, and it's not easily taught to the level required for this application. To work around this, I'm saving UI settings (where the windows are, which regular expressions are associated them) in a single file which may be shared. So for example, I could post on my website a file to play Achaea, which anyone may then download and "import" into the client to start playing with all the windows pre-configured. Their own personal settings would still apply the look and feel on top of this layout - text color scheme, application background, and the background/transparency for text windows. Secondly, regular expressions fit plain text well, but they aren't a solution for out-of-band information. For example, regular expressions alone won't be enough to build an automapper or status effect duration indicators, since the necessary information for those doesn't come as part of the plain text typically displayed to players. I am, however, planning to add status bars, since the command prompt usually includes that info. That aside, it's this reliance on regular expressions that make my client a "general" client despite its customizability. Hopefully, though, some custom client developers be inspired enough by my work to include the multiple-window and clean UI features I'm delivering here in their own designs.
The command prompt is the epitome of redundancy - for every message received, the prompt scrolls in again, even if the information hasn't changed. It makes sense for MUDs to send the prompt constantly because it usually contains very important, often-changing information, but when clients blindly append it to a generic outbox box, it accounts for a lot of vertical scrolling. My client permits users to describe the prompt as a regular expression, and then displays only the latest prompt in a reserved area right next to the command input box. I think this reduces scrolling, cleans-up the output in general, and moves the most important information as close as possible to the command input area.
As I mentioned, some messages are less important than others. While an important part of the MUDing expreience, chat often feels like a distraction when other events in a player's vicinity prompt him to take action, like the arrival of a goblin or another player loading an RPG. When these messages become intermingled, sorting the important from the less-important amongst all the scrolling can be challenging. A user of my client may define chat via a regular expression to send those messages to a separate window, where they'll distract less when life gets complicated. Users might even want to simplify a little, by using replacement expressions to replace something like "Golden Hierophant Glenn, Novice Tunneler of the 18th moon of Adrus III" with just plain "Glenn".
Really, any number of windows may be defined via regular expressions. Maybe a user wants to send (typically verbose) help information to a separate window, for example, where it won't scroll due to incoming text while he reads it. Or maybe updates about the weather and passage of time ("The sun is rising.") might go to a corner of the screen where they won't cause any trouble.
Granted, though well suited to text, regular expressions have their limitations. For one, they're not very accessible - your average MUD gamer doesn't know what a regular expression is, and it's not easily taught to the level required for this application. To work around this, I'm saving UI settings (where the windows are, which regular expressions are associated them) in a single file which may be shared. So for example, I could post on my website a file to play Achaea, which anyone may then download and "import" into the client to start playing with all the windows pre-configured. Their own personal settings would still apply the look and feel on top of this layout - text color scheme, application background, and the background/transparency for text windows. Secondly, regular expressions fit plain text well, but they aren't a solution for out-of-band information. For example, regular expressions alone won't be enough to build an automapper or status effect duration indicators, since the necessary information for those doesn't come as part of the plain text typically displayed to players. I am, however, planning to add status bars, since the command prompt usually includes that info. That aside, it's this reliance on regular expressions that make my client a "general" client despite its customizability. Hopefully, though, some custom client developers be inspired enough by my work to include the multiple-window and clean UI features I'm delivering here in their own designs.

I understand the decision to go with regular expressions in order to have a more general client that's usable by a wide variety of muds; there are relatively few muds using out-of-band data.
ReplyDeleteOn the other hand, there are already many quite usable 'general' clients, and I'd wager that if you really want to make a solid contribution to the client landscape you would be short-changing yourself not to add out-of-band protocols like MSDP and/or ATCP2/GMP.
Do you have any plans to make your client available for us non-Windows users? I don't know how easy it is to port, but it looks nice from the screenshot and writeup and I'd love to try it on my ubuntu system...
ReplyDeleteSorry Graham, I don't. I'm getting a lot of benefit (both user interface and backend stuff) from leveraging the WPF and .NET platforms, both of which are only available on Windows systems. Bringing MUD Man over to Linux of Mac would be a huge deal, and I'm struggling just to get a Windows version finished. Sorry!
ReplyDeleteYou might be right about that, George. It's possible I could come back and add that later, but it's definitely near the bottom of my to-do list.