Mudlet A cross-platform, open source, and super fast MUD client with scripting in Lua

GMCP tutorial

October 22nd, 2011

For anyone interested in learning GMCP, I’ve written a tutorial – take a look!



  • Feb 23rd, 2013: added a note mentioning that isPrompt() only works on MUDs that support GA

Posted in Uncategorized

9 Responses

  1. Zesstra

    BTW: is there even any decent GMCP specification? (So, not the forum discussion on

  2. Vadi

    Heh, not really no. To implement it is similar to ATCP, except you get/send encoded JSON data.

  3. Zesstra

    Yeah, but I don’t really see the point implementing something which is not even defined. At least not after I briefly glanced over the discussion and some web resources. Should I implement Ironrealms or Aardwolfs variant?
    BTW: IRE’s Comm.Channel.Start and Comm.Channel.End is a bad joke, right?

  4. Vadi

    Mudlet supports either variant. They’re the same, just how they handle the data part is different – which doesn’t matter as the games themselves are different anyway, so people only play either.

    Heh, yeah, that thing is dumb (sticking something from out of band into the band…) and doesn’t work with Mudlet either, nor do we have plans to ‘make’ it work. It’s purely an implementation detail of their Nexus java client and how did that get into the protocol, I’m not sure. Oh well!

  5. Zesstra

    I will give it some thought, but this “very subject to change” does not motivate me too much at the moment…

    So, that means, the modules and their versions – with exception of Core? – are always completely individual for a specific MUD (Module Char V1 from IRE vs. Char V1 from Aardwolf)? Confusing (at least without information in the spec), I would have preferred to distinguish the module name in that case.

  6. Vadi

    It hasn’t changed in practice since inception. Yeah, how the game does it’s data is different between them – compare and

    The point of this is for the players though, and the players love it. It makes their lives so much easier, and the more data is accessible, the better.

  7. Zesstra

    Mhmmm. Is there any minimal agreement for the Core module or any others which should be respected by all implementors?

  8. Vadim P.

    There isn’t, no. Both IRE and Aardwolf seem to implement current and max stats though as they’re updated, stuff that’s in the room, and channels talk. IRE also tells you stuff in your inventory.

  9. Zesstra

    Ok… For example, I would actually like if the server responds with the list of enabled modules to the clients requested modules. Just because the server may not support all requested modules in the the requested version and then the client gets to know which are actually active.
    So, I guess, I would just define that like this then.