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

协议

TTYPE and MTTS

客户端如何告诉服务器自己是什么、能做什么——包括在它愿意开口的时候,说出正有人在使用屏幕阅读器。

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

实测采用情况

0 在886个已列出的游戏中——0.0%

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

在一次握手中被观测到提供 TTYPE and MTTS 的游戏,按我们识别出的其运行代码库分组。
代码库 已提供 已识别
AresMUSH 0 18
CircleMUD 0 47
CobraMUSH 0 2
CoffeeMUD 0 32
DikuMUD 0 35
Evennia 0 11
FluffOS 0 28
MUCK 0 24
PennMUSH 0 34
RhostMUSH 0 40
ROM 0 55
SMAUG 0 20
tbaMUD 0 5
TinyMUSH 0 9

TTYPE 是 telnet 选项 24,出自 RFC 1091:服务器问客户端它是什么终端,客户端作答。 历史上这个答案是 VT100ANSI

MTTS——Mud Terminal Type Standard——在它之上叠了一层约定。客户端回答三次:它的名字、 它的终端类型,然后是 MTTS <bitmask>,其中的各个比特位自述它具备哪些能力。256 色、真彩色、 UTF-8、MNES、走带外的 MSP——以及很值得注意的 MTTS_SCREEN_READER

屏幕阅读器那一位

最后这一项值得停下来说一说,因为在这个圈子的协议栈里,只有这一处把无障碍当作一等的概念。

设置了这一位的客户端,是在告诉服务器有人正在使用屏幕阅读器;注意到这一点的服务器可以随之调整: 不再输出 ASCII 图画,去掉房间描述外面那圈装饰性的制表边框,改变表格的排版方式。 TinTin++Blightmud 都会声明它, Mudlet 有一个对应的设置项。

至于某个具体的游戏是否真的据此做了什么,那是另一个问题,而且不是本站能实测的问题—— 我们没法去问一台服务器,它会做出什么不一样的处理。

爬虫在这里该尽的本分

爬虫要通过 TTYPE 表明自己的身份,它也应该这么做。我们的爬虫就这么做,并附上一个说明页地址, 好让翻看日志的管理员能弄清是谁一直在连他们的游戏,以及该怎么让我们停下。 一个只回答 ANSI、别的什么都不说的爬虫,是设计上就匿名的,而这没有什么好理由。

我们实测的是什么

与我们协商了 TTYPE 的服务器。要注意,这是少数几个由我们作为被询问一方的选项之一, 所以这里的数字,数的是那些愿意开口来问的服务器。

另见

  • CHARSET RFC 2066 里用来商定编码的 telnet 选项。一个游戏中带重音符号的名字能完好走完全程,靠的就是它;而它缺席时,一些细微的故障也由此而来。
  • TinTin++ 一个有自己脚本语言的终端客户端,在每一个平台上都能跑,手机也不例外,并且有一个成文的屏幕阅读器模式。
  • Blightmud 一个用 Rust 写的现代终端客户端,有 Lua 脚本、内置的文本转语音,以及一个会向服务器自报的屏幕阅读器模式。