杰哥瞎扯淡之歪评mudlet
之前在写hc-lua的时候接触了下mudlet,对这个新兴客户端也有了一定的了解(爬了几遍客户wiki,还爬了代码找bug……)怎么说呢,在我正经用过的客户端里(zmud,musclient,kildclient,mudlet)里,mudlet差不多是最特殊的一个。
作为一个北侠曾经第三,现在第四的客户端,TOP里唯一一个现代化GUI客户端,mudlet还是很的挺……特殊的。
下面是我的歪评。
对了,我个人是忠诚的mush粉,还写过一个同样跨系统的不成熟客户端,对客户端的认识和里面可以认为和mudlet是绝对对立的两个极端。
所以如果你觉得我的观点优势偏颇,不用怀疑,这一定是我的问题,是对mudlet取得巨大成功的赤裸裸的嫉妒。
沙发
板凳 首先,我要为我在Q群里曾经的不严谨言论进行道歉。
我曾经说mudlet是一个生错时代的客户端。
但实际深入使用后,发现我这个言论偏差的离谱。
mudlet不是生错时代不生错时代的问题。
他的问题是他是不是一个客户端,或者怎么定义客户端的问题。
其他的客户端大多是出于mud的需求,提供更多的辅助功能,逐渐完善。
马莱不一样,马莱给我的感觉是,作者做了一个基于QT的字符向显示控制台,由于QT的强大,用lua扩展了一套定制界面的语法。最后,发现mud正好适合这个场景,所以勉强屈尊做个mud客户端吧……
所以,如果你喜欢自己有一个高度定制化,漂漂亮亮的客户端,用简单的学习就能作出一套界面的话,选mudlet肯定没错。
但如果你只是想做一个辅助机器人,让自己更省力的话,个人觉得可以多考虑几个客户端,不必死守一棵树。
真心的说,马莱完全可以开放接口,不局限于mud领域,说不定能有更高的客户评价。
痛失沙发
痛失地板
痛失地下室 本帖最后由 jarlyyn 于 2024-6-13 03:09 PM 编辑
接口和文档质量
Mudlet有中规中居的wiki作为文档。
但是,我要开始吹Mush了,和mush的文档质量还是有不小的差距的。
我的客户端抄mush接口时。基本只要打开文档都实现了就行,各种corner case都列的十分清楚。
mudlet的wiki很全,但是很多细节不足,需要试验和爬代码才能确定。
可以说文档有80分,但对比mush可以说95分的文档,还是有进步空间。
而接口的话,就尽显qt界面框架的本色了。
界面方面还是很全的,但mud的基本应用方面,感觉就是在搭好界面结构后,发现一个用途补一个。
比如perm和tempTrigger哪一个系列,比如调整触发优先级需要用界面手动拖……
比如各种echo,比如cecho居然是个lua脚本,连转义也没做……
从嫉妒的角度评价,有点孟买的感觉,界面接口是CBD,mud编程接口是贫民区,混在一起的复杂观感。
特别是那个GetTextFomrat(相当于mush的getstyleinfo)函数,就是把mud解析为QT渲染对象,然后从qt渲染对象取样式。
以至于有中文丢失加粗的问题,我只能理解为因为渲染实现丢失元数据……
事件系统
事件系统是mudlet的一个特色。
怎么说呢。
从Mud客户端的角度,这个完全应该脚本里自建,在客户端里实现有点不伦不类。
但是,从QT界面脚手架的角度看,可以理解。毕竟是界面驱动,不是脚本引擎驱动……
事件系统引擎的实现也透射出这个问题。
我想了3天3页,都没想通,作为一个mud客户端,都有事件系统了,为什么没有line事件,就是接受到mud客户端输出的事件?
真就是写界面头等大事,写mud脚本3等公民啊……
但不管怎么说,事件系统是一个很标准的基础架构,mudlet的实现也没有什么侵入性,没有副作用。
所以尽管会由所不足,但还是一个纯加分项,只不过是加5分,10分,100分的区别。
触发系统
怎么说呢,看得出Mudlet的触发系统是花了很多心思的。
但总给我一个屡出祁山的诸葛丞相的感觉。
设计的过于复杂,以至于缺乏实用性。
试图在GUI上解决大部分问题,但实际还是不如代码处理。
给我一种实现了一般的PLC或者低代码平台的感觉。
但总体来说,虽然触发系统的漕点比事件系统还多,以及没法通过代码调整触发优先级的硬伤。
但过于复杂也能只使用最简单的那部分逻辑,所以也算没什么大的缺陷。
但是mudlet的在GUI写代码实在是糟糕的体验,既没法用专业的ide或者语法插件,也没法很好的进行代码管理,以至于我都是在vscode里写lua再复制进取。
还很容易丢代码,切换代码快后ctrl+z的撤销也不好用。
总体我使用下来观感较差。
Mudlet之所以特殊可能还有个原因是合作编写的开源项目吧。
所以加进来的东西质量会层次不齐吧 别名&计时器
这两个功能,在写机器人时,并不(应该)是重点依赖的功能,一般也就是提供事件或者调用函数,所以虽然和触发有一样的缺点,但不明显。
所以,算中等吧。