Tuesday, August 03, 2010

MUSHclient maps

For years the client of choice for connecting to MUDs was Zuggsoft's zMUD since it had robust scripting and a great mapper.

For those unfamiliar with MUDs, scripting is where you write short programs which either automate repeated actions -- for instance, you type one command to repeatedly craft some item -- or react to things going on in the world around you -- for instance, if you get attacked, you automatically heal to the extent you can. This might seem silly -- having a program play the game for you? But the games are made with this in mind. Combat is a zillion times more complex and fast-paced than in games that don't do this sort of thing, with lots of afflictions and combinations of afflictions, and merely having a "system" to cure is only a part of combat. Besides, people sell systems, so you don't have to be a programmer to compete, and while being a good programmer can be a benefit, it's not as important as being a good tactician, being very cool under pressure, and especially, being really good at isolating the important information from a screen of fast-scrolling text.

zMUD used to be a good choice for this, but as systems have had to get far more complex, it's showing its limitations. It's too slow to keep up with the thousands of "triggers" (lines that the system has to watch for), and it gets prone to crashing when systems get too complex. It's not just that it has training wheels welded on so you can't get them out of your way when you don't need them, like a Mac. It's more like Microsoft Access, where all the decisions made to make it really easy to get started and do easy jobs, also cause huge problems which, in the end, take you far more work to work around than it would have been to just do the job in a program that doesn't try so hard to "help" you.

And Zugg hasn't maintained it for years, so it doesn't even work in modern versions of Windows. He's pushing everyone over to his new program, cMUD, which is basically a rewrite of zMUD. Good idea (even if he mostly did it so he could charge everyone who had a lifetime license for zMUD again), but he didn't really make much improvements because he's trapped between backwards compatability issues and fixing the extensability problems. Plus he just did a bad job, so cMUD's actually less stable than zMUD under complex systems.

For some MUDs, zMUD is still pre-eminent because it can handle what they need. IRE MUDs are far more complex, though, and Lusternia the most complex and tactically rich of any of them. I think it's fair to say it puts the most strain on a client of any MUD in existence.

However, zMUD still has the best mapper anywhere. It presents a map of the world in visual form and with some very rich scripting control that lets you do much more than simply walk to anywhere automatically, but also have your travel be shaped by the lay of the land, and react to things as you travel, and organize your map, and use it for special modes of transport, and let it help you do things like patrol or harvest.

With zMUD dying and cMUD failing as its heir apparent, a new contender was needed, and at least in the Lusternia world, the winner appears to be MUSHclient. Formerly shareware, now freeware, MUSHclient is built a lot more streamlined and efficiently. The creator, Nick Gammon, did not succumb to the temptation to focus on being able to make very easy scripts very easily, in a way that made hard ones impossible to manage, like zMUD did. Instead, MUSHclient is built on a solid foundation of extensible script languages that are far more robust and flexible, but at the cost of making it hard to get started. You can just make an alias that turns into three commands, but you can't just add some simple conditional logic to it; that requires switching to an actual script, and it gets rather trickier. Quite easy once you learn it, but you have to learn it.

But MUSHclient doesn't have a mapper. So for several years, I have stuck to zMUD, despite the instability. I've developed quite a lot of cool stuff in zMUD, and my curing system has some great functionality, but it's also incomplete -- I never kept up with adding all the new triggers, afflictions, and skills to it -- and it's getting to where I can't add more stuff to it without slowing it down too much and making it too likely it'll crash on me mid-combat (meaning I come back dead). It would sure be nice to grab someone else's curing and just tweak it, instead of having to develop it all myself, too. And gain the stuff I never added, like illusion protection, and all those missing skills. But I'd have to lose the things I've done, and the mapper without which I couldn't live.

But now MUSHclient is getting a mapper. Nick's developing one as a plugin, which should make it nicely able to handle different MUDs without having to overburden you with the code required for all the MUDs you're not playing. As of this writing, it's missing a lot of necessary functionality, like support for special exits, marking rooms as unsafe or costly to enter, and the ability to overcome problems when moving and keep walking. But it looks like it might well get that functionality in a fairly reasonable amount of time.

The mapper also has two huge advantages. zMUD's mapper is based on the idea that all you can work from is the text that goes by, and that text is usually meant to be human-readable (and sometimes is deliberately obfuscated to make "systems" harder to make). But in recent years some new protocols have emerged to make a "sub-carrier" of information in machine-readable form that percolates under the text. It carries such vitals as your character's current health and location, explicitly for making systems easier to build and far more able to reflect information accurately. One of them, ATCP, was pioneered by IRE and is particularly suitable for working with its games, though it's being adopted by other games now too. By using ATCP, the MUSHclient mapper can be far better at knowing what room you're in, where it is, and what it looks like. zMUD relying on text on the screen had a jillion ways it could get mixed up about your location, and you could keep making more triggers to try to correct for those, but you could never get them all.

And the IRE games are now exporting full copies of their maps in XML format. The MUSHclient can import these maps. So on your first day you can already have a complete map of the world; no need to explore every location before you can simply walk through your city. Though there is a problem: that complete map export isn't really 100% complete, as it won't have private residences, or your notes about what rooms cost or what rooms aren't safe, or your special exits or notes. So Nick's thinking about ways to make it so you can use the new export to import and update your map without losing your own stuff.

Once these issues are addressed a bit more, it might be perfectly possible for me to move over to MUSHclient and learn how to code for it. The key point is, I need enough functionality to get through day-to-day things at a minimal level before I can move over, so once it reaches that critical threshold, I can start developing the more advanced stuff for it. (I can even sell some of it.) It's daunting to think of how much I've developed for zMUD, rewriting it all, and in a language I don't really know yet. But it's also exciting to think of doing it better the second time. And being back in the mainstream of supported software so I can download new updates to curing and be a viable combatant without having to pour hours into coding.

No comments: