mu*index
阅读方式
纯文本
主题

协议

MSDP

Mud Server Data Protocol——和 GMCP 干同一件事,用的是一种紧凑的二进制编码,外加一套 GMCP 所没有的发现机制。

https://www.mudhalla.net/tintin/protocols/msdp/

实测采用情况

96 在886个已列出的游戏中——10.8%

未算进这里的游戏,并不是没有这个协议的游戏。一个游戏被算进这里,条件是我们观测到它的服务器在一次握手中提供了这个选项;其余的既包括没有向我们提供它的服务器,也包括我们还没有读到过握手的服务器,而我们说不出是哪一种。

在一次握手中被观测到提供 MSDP 的游戏,按我们识别出的其运行代码库分组。
代码库 已提供 已识别
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 索取 COMMANDSREPORTABLE_VARIABLES 等等,从而被告知某个游戏支持些什么。GMCP 没有对等的东西,这就是 GMCP 客户端一般得逐个游戏去配置的原因。

实际上,GMCP 在采用率上赢了,而 MSDP 在那些实现过它的服务器和客户端里留存下来,常常与 GMCP 并存。

我们实测的是什么

一个游戏被算进这里,条件是它的服务器在我们观测到的一次握手中提供了 MSDP。和本节里的每一个数字一样, 那是一次正面的观测,而剩下的部分并不是它的反面——一个没被算进来的游戏,可能没有实现 MSDP, 也可能只是它的握手还没被我们读到过。

另见

  • GMCP Generic Mud Communication Protocol——与文本并行的结构化 JSON 消息,也是当下多数客户端所面向的带外通道。
  • TinTin++ 一个有自己脚本语言的终端客户端,在每一个平台上都能跑,手机也不例外,并且有一个成文的屏幕阅读器模式。
  • Blightmud 一个用 Rust 写的现代终端客户端,有 Lua 脚本、内置的文本转语音,以及一个会向服务器自报的屏幕阅读器模式。