protocol
GMCP
The Generic Mud Communication Protocol — structured JSON messages alongside the text, and the out-of-band channel most modern clients build against.
Measured adoption
37 of 886 listed games — 4.2%
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.
| codebase | offered it | identified |
|---|---|---|
| Evennia | 11 | 11 |
| ROM | 4 | 55 |
| CircleMUD | 2 | 47 |
| DikuMUD | 1 | 35 |
| AresMUSH | 0 | 18 |
| CobraMUSH | 0 | 2 |
| CoffeeMUD | 0 | 32 |
| FluffOS | 0 | 28 |
| MUCK | 0 | 24 |
| PennMUSH | 0 | 34 |
| RhostMUSH | 0 | 40 |
| SMAUG | 0 | 20 |
| tbaMUD | 0 | 5 |
| TinyMUSH | 0 | 9 |
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, 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, 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 The Mud Server Data Protocol — the same job as GMCP, done with a compact binary encoding and a discovery mechanism GMCP lacks.
- ATCP GMCP's predecessor. Out-of-band data with a looser payload, largely superseded, and still negotiated by servers that never removed it.
- Mudlet Cross-platform, Lua-scripted, and the client with the most thoroughly documented screen-reader support in this section.