GMCP [protocol]
Het Generic Mud Communication Protocol — gestructureerde JSON-berichten naast de
tekst, en het out-of-bandkanaal waar de meeste moderne clients tegenaan bouwen.
https://www.mudhalla.net/tintin/protocols/gmcp/
Gemeten adoptie
37 van 886 vermelde spellen hebben we het zien aanbieden (4.2%)
/nl/games?protocol=GMCP
De spellen die hier niet meetellen zijn geen spellen zonder het protocol. Een
spel telt mee wanneer we zijn server de optie in een handshake hebben zien
aanbieden; de rest zijn servers die het ons niet aangeboden hebben en servers
waarvan we de handshake niet gelezen hebben, en welke van beide het is kunnen
we niet zeggen.
Naar codebase, van de spellen die we hebben vastgesteld
Evennia 11 van 11 boden het aan
ROM 4 van 55 boden het aan
CircleMUD 2 van 47 boden het aan
DikuMUD 1 van 35 boden het aan
AresMUSH 0 van 18 boden het aan
CobraMUSH 0 van 2 boden het aan
CoffeeMUD 0 van 32 boden het aan
FluffOS 0 van 28 boden het aan
MUCK 0 van 24 boden het aan
PennMUSH 0 van 34 boden het aan
RhostMUSH 0 van 40 boden het aan
SMAUG 0 van 20 boden het aan
tbaMUD 0 van 5 boden het aan
TinyMUSH 0 van 9 boden het aan
GMCP is telnet-optie 201. Zodra erover onderhandeld is, kan de server
gestructureerde gegevens out of band sturen: een pakketnaam en een JSON-payload,
die in dezelfde stroom aankomen als de tekst maar er geen deel van uitmaken.
Char.Vitals { "hp": 412, "maxhp": 500 } is het klassieke voorbeeld. Een client
kan daar een levensbalk mee aansturen zonder het proza af te struinen op
getallen, en dat is precies de bedoeling — een statusweergave die op
patroonherkenning in de tekst gebouwd is, breekt op de dag dat een spel zijn
prompt verandert, en een die op GMCP gebouwd is niet.
De naamruimte van de pakketten berust op gewoonte en niet op een standaard.
Char, Room, Comm en Client zijn breed in gebruik; daarbuiten verzinnen spellen
wat ze nodig hebben, en een client moet meestal verteld worden wat een bepaald
spel stuurt.
WAAROM HET ATCP VERDRONGEN HEEFT
GMCP is de opvolger van ATCP [/reference/protocols/atcp], dat hetzelfde werk
deed met een losser payloadformaat. JSON was de verbetering, en halverwege de
jaren 2010 was de overstap grotendeels voltooid. Een spel dat allebei
ondersteunt is niet ongewoon; een nieuw spel dat alleen ATCP ondersteunt zou dat
wel zijn.
WAT WE METEN
Een spel telt hier mee wanneer zijn server GMCP aanbood in een handshake die we
waargenomen hebben. Dat is een andere bewering dan dat de MSSP van een spel GMCP
1 zegt, waar de meeste protocoltabellen in deze hobby op gebouwd zijn, en die
twee wijken geregeld van elkaar af.
Eén kanttekening bij de meting, uit onze eigen geschiedenis: een tijdlang konden
we GMCP niet zien op servers die ook over MCCP [/reference/protocols/mccp]
onderhandelden, doordat onze telnet-bibliotheek over compressie onderhandelde
zonder de stroom uit te pakken, en alles na het compressiemarkeerpunt was voor
ons ruis. Van minstens één server in ons onderzoek bleek dat hij al die tijd
GMCP sprak. Als een cijfer op deze pagina laag lijkt voor een familie die je
goed kent, is dat soort defect het eerste om te verdenken — bij ons, niet bij
hen.
Zie ook
MSDP — /nl/reference/protocols/msdp
ATCP — /nl/reference/protocols/atcp
Mudlet — /nl/reference/clients/mudlet