Mud Protocols

Post Reply
User avatar
chris
Posts: 493
Joined: Fri Jun 17, 2011 5:39 am

Mud Protocols

Post 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.

User avatar
Vadi
Posts: 4854
Joined: Sat Mar 14, 2009 3:13 pm

Re: Mud Protocols

Post 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).

User avatar
KaVir
Posts: 86
Joined: Mon Feb 08, 2010 8:38 pm
Contact:

Re: Mud Protocols

Post 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).

User avatar
Vadi
Posts: 4854
Joined: Sat Mar 14, 2009 3:13 pm

Re: Mud Protocols

Post 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.

Post Reply