协议
MSDP
Mud Server Data Protocol——和 GMCP 干同一件事,用的是一种紧凑的二进制编码,外加一套 GMCP 所没有的发现机制。
实测采用情况
96 在886个已列出的游戏中——10.8%
未算进这里的游戏,并不是没有这个协议的游戏。一个游戏被算进这里,条件是我们观测到它的服务器在一次握手中提供了这个选项;其余的既包括没有向我们提供它的服务器,也包括我们还没有读到过握手的服务器,而我们说不出是哪一种。
| 代码库 | 已提供 | 已识别 |
|---|---|---|
| CoffeeMUD | 16 | 32 |
| Evennia | 11 | 11 |
| CircleMUD | 9 | 47 |
| ROM | 6 | 55 |
| SMAUG | 5 | 20 |
| tbaMUD | 4 | 5 |
| DikuMUD | 3 | 35 |
| AresMUSH | 0 | 18 |
| CobraMUSH | 0 | 2 |
| FluffOS | 0 | 28 |
| MUCK | 0 | 24 |
| PennMUSH | 0 | 34 |
| RhostMUSH | 0 | 40 |
| TinyMUSH | 0 | 9 |
MSDP 是 telnet 选项 69,它解决的问题与 GMCP 相同: 在文本之外发送结构化数据,好让客户端不必从字里行间去抠数字。
差别有两处。MSDP 的编码是二进制且紧凑的——变量和取值用单个控制字节来标记,而不是包进 JSON——
并且 MSDP 定义了一套发现用的对话:客户端可以用 LIST 索取 COMMANDS、REPORTABLE_VARIABLES
等等,从而被告知某个游戏支持些什么。GMCP 没有对等的东西,这就是 GMCP 客户端一般得逐个游戏去配置的原因。
实际上,GMCP 在采用率上赢了,而 MSDP 在那些实现过它的服务器和客户端里留存下来,常常与 GMCP 并存。
我们实测的是什么
一个游戏被算进这里,条件是它的服务器在我们观测到的一次握手中提供了 MSDP。和本节里的每一个数字一样, 那是一次正面的观测,而剩下的部分并不是它的反面——一个没被算进来的游戏,可能没有实现 MSDP, 也可能只是它的握手还没被我们读到过。