Page 1 of 1

Mud Protocols

Posted: Thu Oct 17, 2013 1:59 pm
by chris
Does anyone have a good pro/con comparison or experience with the variety of mud out of band protocols? I've been considering implementing GMCP, but want to know how the others stack up.

Re: Mud Protocols

Posted: Thu Oct 17, 2013 7:47 pm
by Vadi
GMCP is newest and I think incorporates the best things of them all. Sane data structures, JSON re-use - don't need to build a custom parser that you have to maintain and isn't as efficient as JSON ones (due to how popular they are and thus more fleshed out). I found it quite helpful when MUDs used the same GMCP syntax as well - ie Lithmeria followed IREs suit and porting my mapping script was really easy.

There's also ATCP (completely superseded by GMCP), MSDP (a bit ancient and clunky), ZMP - Zenith Mud Protocol (cool in practice, nobody big actually implemented it though afaik) and Aardwolfs custom 102 (if you want to go back to the 80's).

Re: Mud Protocols

Posted: Wed Nov 06, 2013 10:07 pm
by KaVir
As far as I'm aware, ZMP is the oldest of the protocols, although the first draft only goes back to 2003 (not the 80s!). Technically it's not really out-of-band, as it allows subnegotiation packets to be interleaved with the text stream and requires that they are read in sequence. It also uses NUL characters as separators, which makes it more difficult to implement in languages that use NUL string terminators. It has very little support among muds and clients.

102 and 94 were created for specific muds (Aardwolf and ConQUEST respectively), and neither had any sort of public specification. Both muds have since added support for other protocols (GMCP and MSDP respectively), so 102 and 94 are now obsolete.

MXP can now technically be used out-of-band, but I think CMUD is the only client that supports that option.

ATCP was created by IRE and later opened to the public, there's a specification somewhere but it isn't very clear. Last time I looked, every mud that supported ATCP used it as a fallback, with either MSDP or GMCP as their primary protocol - the only exception was one mud that supported ATCP and ZMP. ATCP is actually the most widely supported protocol, thanks to Mudlet, but only as a backup option ;)

The two most modern and widely-supported "primary" protocols are MSDP and GMCP. MSDP is slightly older, but was still being developed when GMCP came on the scene, so for a while they were developed in parallel.

GMCP was originally going to be a community project, but IRE and Zugg decided to finish it in private. The specification is vague, and each mud seems to implement it slightly differently, which has resulted in several compatibility problems between certain muds and clients. IRE also failed to follow their own specification, introducing some variables that break the JSON data format, and others that can't be sent out-of-band.

MSDP is a simplier protocol, but has a very clear specification. There are also two snippets that add MSDP support (one written by me, which can be added to most muds in about 10-15 minutes), so MSDP tends to be implemented very consistently across muds, and is also used by far more muds than GMCP (although GMCP tends to be used by larger muds, so in terms of player usage I'd speculate that they're probably about equal).

Re: Mud Protocols

Posted: Thu Nov 07, 2013 8:07 am
by Vadi
Great post, thanks for writing it up! I should also add, Mudlet 3.0 coming up is going to add MSDP support - and it also adds support for client-side protocol implementation.