TTYPE AND MTTS [协议]
客户端如何告诉服务器自己是什么、能做什么——包括在它愿意开口的时候,说出正有人在使用屏幕阅读器。
https://www.mudhalla.net/tintin/protocols/mtts/
实测采用情况
在886个已列出的游戏中,有 0 个被观测到提供了它(0.0%)
/zh-Hans/games?protocol=TTYPE
未算进这里的游戏,并不是没有这个协议的游戏。一个游戏被算进这里,条件是我们观测到它的服务器在一次握手中提供了这个选项;其余的既包括没有向我们提供它的服务器,也包括我们还没有读到过握手的服务器,而我们说不出是哪一种。
按代码库,在我们已识别的游戏中
AresMUSH 18 个中有 0 个提供了它
CircleMUD 47 个中有 0 个提供了它
CobraMUSH 2 个中有 0 个提供了它
CoffeeMUD 32 个中有 0 个提供了它
DikuMUD 35 个中有 0 个提供了它
Evennia 11 个中有 0 个提供了它
FluffOS 28 个中有 0 个提供了它
MUCK 24 个中有 0 个提供了它
PennMUSH 34 个中有 0 个提供了它
RhostMUSH 40 个中有 0 个提供了它
ROM 55 个中有 0 个提供了它
SMAUG 20 个中有 0 个提供了它
tbaMUD 5 个中有 0 个提供了它
TinyMUSH 9 个中有 0 个提供了它
TTYPE 是 telnet 选项 24,出自 RFC 1091:服务器问客户端它是什么终端,客户端作答。 历史上这个答案是 VT100 或 ANSI。
MTTS——Mud Terminal Type Standard——在它之上叠了一层约定。客户端回答三次:它的名字、 它的终端类型,然后是 MTTS
<bitmask>,其中的各个比特位自述它具备哪些能力。256 色、真彩色、 UTF-8、MNES、走带外的 MSP——以及很值得注意的
MTTS_SCREEN_READER。
屏幕阅读器那一位
最后这一项值得停下来说一说,因为在这个圈子的协议栈里,只有这一处把无障碍当作一等的概念。
设置了这一位的客户端,是在告诉服务器有人正在使用屏幕阅读器;注意到这一点的服务器可以随之调整: 不再输出 ASCII
图画,去掉房间描述外面那圈装饰性的制表边框,改变表格的排版方式。 TinTin++ [/reference/clients/tintin] 和
Blightmud [/reference/clients/blightmud] 都会声明它, Mudlet
[/reference/clients/mudlet] 有一个对应的设置项。
至于某个具体的游戏是否真的据此做了什么,那是另一个问题,而且不是本站能实测的问题—— 我们没法去问一台服务器,它会做出什么不一样的处理。
爬虫在这里该尽的本分
爬虫要通过 TTYPE 表明自己的身份,它也应该这么做。我们的爬虫就这么做,并附上一个说明页地址,
好让翻看日志的管理员能弄清是谁一直在连他们的游戏,以及该怎么让我们停下。 一个只回答 ANSI、别的什么都不说的爬虫,是设计上就匿名的,而这没有什么好理由。
我们实测的是什么
与我们协商了 TTYPE 的服务器。要注意,这是少数几个由我们作为被询问一方的选项之一, 所以这里的数字,数的是那些愿意开口来问的服务器。
另见
CHARSET — /zh-Hans/reference/protocols/charset
TinTin++ — /zh-Hans/reference/clients/tintin
Blightmud — /zh-Hans/reference/clients/blightmud