Aardwolf MUD Blog

Aardwolf MUD General News and Updates.

Location: Home / MUD Clients Category Archive

Aardwolf MUD Client is now live.

July 14, 2008 Author: Lasher Category: MUD Clients 5 Comments →

Enough has been written about the client already, so this is just an announcement that it is finally live.

Check out the screenshot below, hard to believe it is even a mud:

Screenshot of the Aardwolf client.

The following links give all the necessary info on the client:

Aardwolf client download page

List of available plugins

Aardwolf client screenshots

Client help and FAQ

Comments, bug reports, etc welcome…

Using telnet negotiation to control MUD / Client Interaction.

July 10, 2008 Author: Lasher Category: MUD Clients, MUD News, Technical 9 Comments →

If you have been following this blog, you already know that we have been working on a custom version of Mushclient for Aardwolf with plugins pre-installed. As the work on the first version comes to a close, it has been a great learning experience on both sides - several improvements to both the MUD and the client itself were made as a result of this project.

One of the problems we consistently faced was how to handle configuration. If the MUD needs a player to have specific options on for a plugin to work, we have to make sure they’re actively in the game and at a prompt to send the commands to activate them. The alternative is relying on players to manage numerous tag and config settings themselves. This is not practical for new users.

To try to solve this, we experimented with various tags but it was never quite right. Nick suggested we look into the possibility of telnet negotiation and after some research we settled on using telnet code 102.

The first phase was to make the mud accept telnet 102 codes because most clients can send them. The general structure of a telnet sequence of this type is: IAC,SB,102,data,data,…,IAC,SE. To send these in Mushclient you do:

SendPkt (string.char (255, 250, 102, 5, 1, 255, 240)

To send the same in zmud:

#sendprompt %char(255)%char(250)%char(102)%char(5)%char(1)

This tells the MUD to do something, as if you had entered a command. However, the point of this is that it happens at a level of communication lower than anything to do with commands, timeouts in the game or player state. It works completely independently of where your character is at.

The particular sequence above turns on channel tags. This would work if you were afk or in note mode. If you were at a login prompt (no character loaded yet), it would remember those flags and attach them to your character when you logged in. The only time this wouldn’t work is if you were link dead as there is no socket to receive the options. As the mushclient plugins initialize themselves on connection, this is not an issue.

For enabling plugins and making sure the player has the right tags on in the mud this is extremely helpful. Any client that can send the above codes can use these sequences. The list so far is provided below. To use any of these, send IAC,SB,102,option,1 or 2 (on or off), IAC,SE:

Option Description
1 Statmon
2 Bigmap + Coordinates tags
3 Help tags
4 Map tags
5 Channel tags
6 Tell tags (see ‘help telltags’ in game)
7 Spellup tags (see ‘help spelltags’ in game)
8 Skillgains tags
9 Say tags
11 Score tags
12 Room names in mapper
14 Exits in mapper
15 Editor tags
16 Equip tags
17 Inventory tags
50 Quiet all tags (tags quiet on/off)
51 Turn autotick on/off
52 Turn prompts on/off
53 Turn output paging on/off (remembers pagesize)

So, this solved the problem of the client being able to affect player settings in the mud without needing to care if they’re at a prompt to receive the commands. As a bonus, it also cuts out a lot of “spam” the player would see as output from regular commands sent to turn tags on for each plugin.

What it did not solve is the problem of how can the client know for sure whether you’re active, in note mode, during a login sequence or otherwise paused and unable to receive game commands. By default, clients would be able to send these sequences but not receive them - the client would eat them as telnet sequences not negotiated.

Nick decided this whole setup had enough value to other muds to be worth implementing in the client itself, and did so somewhat extensively. Plugins can listen to telnet 102 sequences and even “wake” and do something on receiving one. You can see his own post about how this was integrated into Mushclient by reading the Mushclient 4.31 release notes.

Having the client capable of receiving these telnet negotiation sequences means that the same can happen in reverse - Aardwolf can send status back to the client without the client having to trigger on anything.

For example, the tick timer in use in the custom Mushclient plugin is always in sync - it receives a telnet message on every tick regardless of the player being in note mode etc. For controlling plugins such as spellups, whenever you go from note mode to active mode to afk to sleeping, the client knows about it.

The telnet sequences being sent from the mud to the client, once type 102 negotiation has been completed, are:

Option Description
100,1 At login screen, no player yet
100,2 Player at MOTD or other login sequence
100,3 Player fully active and able to receive MUD commands
100,4 Player AFK
100,5 Player in note mode
100,6 Player in Building/Edit mode
100,7 Player at paged output prompt

Whenever the player switches from one of these states to the other, the codes are sent. These are easily extendable. For example, it probably makes sense to have a 100,8 which means “Sleeping/Resting”, although this information is already available in statmon.

The only other notification being sent from the mud to client via this mechanism at the time of writing is 101,1 which means “the mud just ticked”.

Unfortunately, for this half of the project, most clients won’t be able to make use of the messages unless the clients themselves are changed to negotiate receiving telnet 102 sequences then make the data available to their scripting engine. CMUD can accept arbitary telnet SB sequences (see comments), but is the only one I’m aware of other than Mushclient. If you know of others, please post in the comments.

The ‘102′ protocol has the potential to be extremely useful for many things between the client and the MUD server. As there is no fixed protocol after the 102, MUD owners could provide many messages available for consumption by players of their games interested in creating their own scripts.

This whole thing may not go any further than Aardwolf <–> Mushclient, or could become a new standard widely used. Either way, it is cool to have been part of creating something new like this and even if nobody else adopts it, we’ll get a lot of value out of it. More to follow…

Mushclient Project Update - bigmap

July 01, 2008 Author: Lasher Category: MUD Clients 6 Comments →

Small post, but this is worth sharing. Nick Gammon has written a ‘bigmap’ plugin to go with the default Mushclient install for Aardwolf. Others have done similar in other clients, but keep in mind this will be available in a single download and install to completely new players to the MUD.

Combined with the stat window and small map window - this puts it light years ahead of the standard interface for new players whether that is the java client, fmud, telnet or even a mainstream mud client that hasn’t been configured or had plugins added yet.

The video itself is rough, but gets across the idea. The link below is a short movie file showing movement between a few areas and Mesolar with the bigmap plugin on. Notice that it shows the continent name at the top, coordinates at the bottom and minimizes itself when you leave a continent. If you cross the border between one continent and another, the screen is updated with the correct continent bigmap.

Aardwolf Bigmap Movie

Development continues on additional plugins. Move updates to follow..

Why Mushclient for the custom client work?

June 25, 2008 Author: Lasher Category: MUD Clients 10 Comments →

The choice of MUD client for this project was always going to be a question and, sure enough, a few people have asked “Why Mushclient?” vs other clients. Usually, it is a cmud/zmud user asking the question so I’ll focus on that, but it really applies to any other client.

We have reached a point where many players feel like they need add-ons in their client to enjoy Aardwolf fully. I can see the need for this and tend to agree. If we accept that these things are needed to fully enjoy the game, then the game should provide them. As a free MUD (let’s leave the debate on that phrase for another post), it makes no sense for us to tell players “Sure it’s free, but to really play you need to buy a $25 client”. Existing MUD players understand this, a new player won’t.

The end result of all this effort should be that a player generally does not feel the need to program the client themselves or buy a different client to enjoy the features that Aardwolf has. They may add a few helper aliases and triggers, but that’s about it.

Cmud users tell me that the scripting capabilities in that client go further than Mushclient. I don’t know Cmud well enough to comment on that one way or the other, but for the sake of this post let’s assume it is true. That is perfectly ok - if a more technically inclined player wants to buy Zmud/Cmud for enhanced scripting of their own, I would never attempt to discourage that. It is a fine product that has done many things to bring MUDs forward in general over the years.

By the time someone knows enough to care about any perceived improvement in scripting engine of one MUD client over another, they don’t need my help creating their capture windows and triggers anyway. They are not the target audience for this project.

This project is aimed at a player new to MUDs wanting to enjoy the game and providing a nice client to help them with that. They might be persuaded to download and install a client, they’re probably not going to be persuaded to download a client, download some separate plugins, figure out how to install the plugins and experiment with the best configuration options to check for playing Aardwolf. These folks are the target of this project.

With that being said, every plugin being developed will be driven by new tags added to the mud itself. Those tags are fully visible and available to script developers for other clients. Users (or developers) of other clients are welcome to submit equivalent plugins to be downloadable from Aardwolf.com. There is no proprietary or undocumented protocol being used to favor one client over another.

Even with Mushclient (and other clients), there have been some excellent plugins created by people over the years. Other players start to use them then rely on them. However, the original authors then move on. Later, when something changes in the game, the scripts don’t work anymore and the people using them don’t know how to fix it.

V3 going live broke a lot of scripts people were using and really made this problem clear. The Mushclient plugins being released here will be officially “supported” by the MUD itself and if game output changes, they will be updated.

So why Mush over the other free clients? At the start the main reason was because we already have a lot of people using it, some plugins were already out there as a starting point and it was “good enough”. It is very actively maintained and even if that were to end, the source code is available. When I asked Nick about the possibility of creating a single-install for Aardwolf with plugins already enabled and he turned around and sent me the NSI installer script, it was a no brainer.

We’ve exchanged several emails since then and a few enhancements in the client itself to make this project simpler have already been added to mushclient and are in version 4.29, which is already released. Maybe you can get that kind of turnaround and help with other clients, maybe not, I see no good reason to look around.

MUSHclient also runs on Linux platforms, under the Wine system. This lets players who are using Ubuntu, Red Hat, and other flavors of Linux also enjoy MUSHclient, and the plugins released here.

The only goal in all of this is to make Aardwolf easier to play for people new to MUDs. Not to try to declare one client better than another or to make other plugin writers irrelevant. Once people start to rely on something to enjoy the game, wherever possible the game should support that and make it available to everyone.

Aardwolf custom Mushclient Development

June 23, 2008 Author: Lasher Category: MUD Clients 38 Comments →

Many of our players have come up with some great ideas to get new users to Aardwolf. However, there is no point going all out on getting completely new users to the website when they don’t know how to play when they get there. We have always struggled with being a large and complex game that can be difficult to learn, particularly for people who haven’t played a MUD before.

The Aylorian Academy was a first step towards making it easier to learn how to play Aardwolf, and the addition of the Flash Mud Client to the site is an improvement over the Java Client for folks who want to quickly try out the game.

The problem still remains of what they do afterwards? Installing a MUD client with no aliases, triggers, etc is only marginally better than no client at all. Configuring a client for the first time can be complex. A person that has never played a MUD before is not going to invest the time and energy when they’re so used to other games that just do it all for them.

After discussing some ideas with Nick Gammon, the author of Mushclient, we have created a custom version of Mushclient that, when installed, will:

  1. Install a number of Aardwolf specific plug-ins with it.
  2. Run a script that will determine the user’s desktop size then open various extra windows based on their screen real-estate. The font style and size are also set automatically.

The script has been tested on every resolution my laptop supports (12 different settings between 800*600 to 1920*1200) and works fine. The main point of this was originally to auto-configure and install some plugins for Aardwolf, but I made some code changes to improve the plugins while I was in there. The stats andmap windows are shown below and you can check out the example screenshot for the full layout.

Aardwolf Mushclient stats capture window

Example map capture image.

For users of other clients, these are all tag driven and can be developed using basic triggers, depending on what your client supports. For existing Mushclient users the plugins will be made available individually.

Other than the auto-install, the cool part about the stats window is that it automatically updates everytime you see a prompt or battleprompt. No prompt configuration is needed for this, just an additional config toggle. Notice also that the map window includes the room name and exits.

For packaging up Mushclient itself, Nick kindly provided the NSI script he uses to package up Mushclient for release. A weekago I’d never so much as written a line of code in Mush or used NSI, so working on this has been fun.

It is not quite ready for release yet, it still needs some tidying up. There is also a lot of registry hacking in the NSI script, some of which can come out based on some recent changes Nick made to Mushclient itself.

Having a single download / install that gives new players what they need to get started with Aardwolf is a good step forward, particularly as the development of a custom client it as the end of a very long “todo” list.

I was going to include a section on “Why Mushclient?” here but the post is long enough already, so that can wait for a follow up post.

As you can see, the fact that there hasn’t been a reboot / announcement note of changes on the main MUD for a few days rarely means “nothing is happening”.

The base download will include map capture, stat capture and a spellup plugin. A channel capture plugin will be included but off by default. Speedwalking will be built into the MUD itself with a ‘runto’ command. Appreciate your comments on this. What else do you find essential to play Aardwolf?