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