mu*index
reading
theme
GMCP  [protocol]
The Generic Mud Communication Protocol — structured JSON messages alongside the
text, and the out-of-band channel most modern clients build against.
https://www.mudhalla.net/tintin/protocols/gmcp/

Measured adoption
  37 of 886 listed games were observed offering it (4.2%)
  /games?protocol=GMCP

  The games not counted here are not games without the protocol. A game is
  counted when we observed its server offering the option in a handshake; the
  rest are servers that did not offer it to us and servers whose handshake we
  have not read, and we cannot tell you which.

  By codebase, of the games we identified
    Evennia              11 of 11 offered it
    ROM                  4 of 55 offered it
    CircleMUD            2 of 47 offered it
    DikuMUD              1 of 35 offered it
    AresMUSH             0 of 18 offered it
    CobraMUSH            0 of 2 offered it
    CoffeeMUD            0 of 32 offered it
    FluffOS              0 of 28 offered it
    MUCK                 0 of 24 offered it
    PennMUSH             0 of 34 offered it
    RhostMUSH            0 of 40 offered it
    SMAUG                0 of 20 offered it
    tbaMUD               0 of 5 offered it
    TinyMUSH             0 of 9 offered it

GMCP is telnet option 201. Once negotiated, the server can send structured data
out of band: a package name and a JSON payload, arriving in the same stream as
the text but not part of it.

Char.Vitals { "hp": 412, "maxhp": 500 } is the canonical example. A client can
drive a health bar from that without scraping the prose for numbers, which is
the entire point — a status display built on pattern-matching the text breaks
the day a game changes its prompt, and one built on GMCP does not.

The package namespace is conventional rather than standardised. Char, Room, Comm
and Client are widely used; beyond that, games invent what they need, and a
client generally has to be told what a given game sends.

WHY IT DISPLACED ATCP

GMCP is the successor to ATCP [/reference/protocols/atcp], which did the same
job with a looser payload format. JSON was the improvement, and the migration
was largely complete by the mid-2010s. A game supporting both is not unusual; a
new game supporting only ATCP would be.

WHAT WE MEASURE

A game counts here when its server offered GMCP in a handshake we observed. That
is a different claim from a game's MSSP saying GMCP 1, which is what most
protocol tables in this hobby are built on, and the two disagree regularly.

One measurement note from our own history: for a period we could not see GMCP on
servers that also negotiated MCCP [/reference/protocols/mccp], because our
telnet library negotiated compression without inflating the stream and
everything after the compression marker was noise to us. At least one server in
our survey turned out to speak GMCP all along. If a figure on this page looks
low for a family you know well, that class of defect is the first thing to
suspect — in us, not in them.

See also
  MSDP — /reference/protocols/msdp
  ATCP — /reference/protocols/atcp
  Mudlet — /reference/clients/mudlet