《国际象棋译文苑》文摘
国际象棋引擎协议历史
Aaron Tay
今天,我们知道有不同协议,并且知道可以把引擎切换在不同界面下运行。我们最主要面对的有三种协议:开放性的
Winboard/Xboard协议、新兴的
UCI协议、以及具有版权的
Chessbase协议。近几年支持前两者协议的引擎层出不穷,几乎每个月都会冒出四、五种新的引擎,但以前可不是这样的。以前,特别是
Winboard/Xboard协议出现之前,每种棋弈引擎都只说自己的“方言”,只能运行在自己的界面下。程序设计者既要写作引擎,又要写作界面。没有人认真想过把这两部分分工操作,因为他们设计引擎时就没想过把它设计成可移植的。这种情况持续到了
Winboard/Xboard协议出现。 有趣的是,“
Winboard协议”的发展与其说是周密计划的,不如说是偶然性动机所致。根据其作者
Tim Mann透露,当时的
Xboard【译注:这个工具最早是在UNIX系统下的,后来改写出Windows系统的版本,所以分称Xboard和Winborad。因为对普通人来说Windows系统远比UNIX系统熟悉流行得多,所以后来主要指Winboard】也是只作为一种共享引擎
(GNUchess)而写的界面,没有真正考虑过也让别的引擎在上面运行。但与众不同的是,当时这个共享引擎和
Xboard本身是写成分离式的,可以被视作是两个程序。没多久,程序设计者忽然发现,有可能把他们所写的引擎导入到
Winboard/Xborad下运行,而且这样做有其好处,他们开始咨询作者
Tim Mann该如何做。那时是在
1993年
9月。
Xboard/Winboard的兴起 程序设计者为什么想到这样做?原因可能有:
1、当时
Winboard得到
ICS【译注:即网上国际象棋服务器,也就是提供在网上下棋的站点】的支持,这样意味着引擎如果能运行在
Winboard上,就能自动运行在网上,显然对测试作品很有利。今天能连上网的软件很多了,但当年使用
Xborad几乎是仅有的和简易的让引擎在网上下棋的方法;
2、如果大家都运行在同一界面,那么组织在同一台电脑上引擎之间的比拼就轻而易举了;
3、这样,引擎作者可集中精力于设计写作引擎部分,而不必费心去写作界面部分,
Winboard自会帮你处理。 于是,人们发现了一个协议通用所带来的威力!
Winboard协议诞生了。
Crafty可能是第一个支持
Winboard的免费引擎,到
2000年
6月前大约有
50种免费引擎支持
Winboard,这个数字到写作本文时的
2002年底,加速上升到
160个。 和任何标准一样,越多的引擎支持这个标准,这个标准就越得到广泛应用。另外有不少个人设立网站和论坛,组织各种免费引擎在
Winboard上比拼,排出名次,计算等级分;还有热心的爱好者,修改他人的免费引擎作品,为它们创作开局库。于是,即使是业余程序员,只要他贯彻
Winboard标准,也有机会得到有经验用户的技术指导,帮助他们测试自己的作品。所以免费的
Winboard引擎如雨后春笋般涌现。
商业性软件进入 由于
Winboard的成功,到了
2000年
2月,很多商业性的国际象棋软件比如
Chess Assistant、
Chess Partner等开始支持
Winboard协议。
2001年,一直着眼于大众市场的
Chessmaster8000也开始支持
Winboard引擎,这堪称
Winboard历史上的一个里程碑,因为
Chessmaster产品所拥有的数百万用户因此也认识到
Winboard引擎了。 但是,另一商业性国际象棋软件巨头
Chessbase在支持
Winboard引擎方面,却出现了麻烦。
Chessbase协议 有鉴于
Xboard/Winboard的蒸蒸曰上,作为销售
Fritz这样的顶级软件的
Chessbase(公司
),也看到让其它引擎运行在他们自己的界面上这种做法。
1998年
6月,
Fritz5支持运行
Junior5、
HIRACS和
NIMZO,于是他们手中握有这些最好的引擎。可是,他们提出的协议叫
Chessbase协议,是有版权的。因此
Chessbase协议不象
Xboard/winboard协议那样是公开的,并非向所有棋弈引擎开放。能运行于
Fritz中的引擎只限于他们采纳的少数。 但到了
1998年
12月,
Fritz5.32有了改革,它也允许
Winboard引擎通过适配的方式运行在其
Chessbase类的界面。当时业届对此一遍欢呼,认为是前进了一大步,因为这样意味着
Winboard引擎有机会直接与那些顶级的商业引擎一比身手了,不必象以前那样还要通过转换工具和信号连线。 可是,
Chessbase类的界面在支持
Winboard协议方面,却出现了问题。
问题 那时让一个引擎运行在
Chessbase界面有两种办法。一是向
Chessbase的技术人员提交你的作品源代码,由他们修改代码以制造出一个运行于
Chessbase协议之下的本地引擎,这个叫本地版本
(native version)。
Crafty就是这样做的,它本身就是个源代码公开的作品。另一办法,是多数人采纳的使用
Winboard适配器
(winboard adaptor)的办法。 可惜不到一个月时间,采用第二种办法的人们就发现了其中存在严重缺陷。技术细节很复杂很不好说,总之大意是:
Chessbase的界面向引擎传递信息的具体做法很特别,导致引擎“很不适应”,最严重的后果是导致使用适配器的引擎丢失了所有之前存放在哈希表中的信息,因此引擎的棋力被削弱。还有其它缺陷,但前面这个是最突出的。
Chessbase(公司
)直到推出了
Fritz6,都还拒绝修改适配器,而不管希望能公平竞赛的引擎作者和测试者的抱怨呼声。 这个问题争论了几年,甚至连
Chessbase也有代表说其实要纠正并不难,但还是没有人知道
Chessbase为什么不去纠正。有人认为他们这样做是蓄意削弱其它免费引擎的棋力,但
【作者指出】更被认为的原因是,他们觉得没必要专门去做——挂接免费引擎只是为了多些选择而已,没有想人们拿来作引擎对战。会使用适配器的只限于很少数人,而如果是“核心级”的电脑国际象棋软件迷,自然会购买他们的商业软件或引擎。总之,没有必要专门去修改。
【译注:潜台词就是,既然有我Chessbase那些更强的顶级引擎了,其它的或好或差关系不大】 但到了后来,连这样的争论也没变得意义了。
2002年
1月,
Chessbase没作任何解释就从它们的主页上撤下了原先供下载的
Winboard适配器,同时有传闻
Chessbase将转向支持新兴的协议
UCI,结果到
2002年
2月成为现实。关于
UCI协议后面才说。
Winboard协议继续发展 有趣的是,它用在其它多数商业界面中却没多少问题。
2000年
9月,甚至出现销售商业性
Winboard引擎如
Gandalf的举动。这件事意义重大,因为这是第一次出现只是引擎部分需要购买,而界面是免费的情况
【译注:引擎买下来后,找个Winboard工具就可以运行了,而Winboard工具一直就是免费随便用的】[原注:从技术角度说,第一个商业性的
Winboard引擎还不是
Gandalf而是
1999年的
Nimzo2000b,不过后者是作为套装软件的一部分,而不象前者是单独出售
]。顾客理论上只需要付购买引擎的钱而不需要一次又一次买同样的界面,因此支出少了。相反,比方说,顾客假如购买
Fritz6和
Junior6,他们为买同样的界面付两次钱。
[原注:
Chessbase也试过以低一些的价格销售引擎包的做法,但为期很短。对于他们第一线的商品,没有迹象会这样做
] 接下来几年,对这个上了年纪的协议曾有过改进的尝试,但由于兼容性等原因,进展较慢。值到
2000年
12月,支持
Winboard协议第二版
(Winboard protocol II)的
Winboard4.2.0发布。
【译注:到译此文时为止,最新的是Winboard4.2.6】 Winboard协议第二版应棋弈引擎设计者要求增加一些命令。而到目前为止,关于
Winboard协议第三版的情况尚在讨论之中,拟加入一些新功能比如第二时限设置等。
UCI协议的挑战 2000年
11月
28曰,一种新的免费性、开放性通讯协议公布,名字叫
UCI。
UCI协议象
Winboard协议一样免费采用,无需许可费用。可是当时
Winboard协议有
Winboard工具这个免费界面,
UCI协议却没有支持
UCI的免费界面。当时唯一支持
UCI协议的只有商业性的
Shredder5。
UCI是一种新的协议,它不追求支持旧的引擎。它建立的原则和
Winboard协议完全不同。关于这两者的优劣,我将另文说明。
UCI有一大好处是,理论上从兼容
Winboard协议转到兼容
UCI协议并不难。事实上,有些程序作者在其同一个作品中同时支持这两种协议。 不过由于前面所讲,由于缺乏免费的支持
UCI的界面,所以
UCI引擎还很少,特别是相比
Winboard引擎的为数众多。尤其是业余的程序设计者,大抵不想就为测试自己的业余作品就去购买商业性的
UCI界面;反之由于
UCI引擎这么少,没有人愿意去写作
UCI界面。这真是一个经典的先有鸡还是先有蛋的问题。 事情来到了
2002年
7月发生变化了,
Chessbase(公司
)开始掌握顶级软件
Shredder的销售。首先,他们同时发布
Shredder6的原先
UCI版本和
Chessbase版本,即两个版本。更重要的,他们宣布给自己的
Fritz7打上补丁之后将支持
UCI(估计
Chessbase以后的产品都支持了
),同时在他们的网站把
Winboard适配器撤下。 这一举动大大促进了
UCI的普及,要知道在资深棋手和玩家心目中,
Fritz和
Chessbase的其它系列产品知名度恐怕是最高的。他们的竞争对手比如
Lokasoft/Rebel也赶紧支持
UCI。 引擎作者们也被鼓舞起来支持
UCI,尤其是发现在
Fritz7中,
UCI引擎不会象使用适配器的
Winboard引擎那样棋力被严重削弱
(但我们还不敢说它就运行得完美无暇!
)。引擎作者们终于有简单办法让他们的作品在不被削弱棋力的情况下,跟这些世界最强的商业性引擎,
Fritz、
Junior、
Hiarcs、
Shredder等进行对战测试了。引擎支持
UCI的好处如此之大,以致当有人在
2002年
4月推出一个免费的使
Winboard引擎适配到
UCI的转换软件,许多测试者发现通过这样适配,比起直接使用原来的
Winboard适配,引擎的战绩更好! 然后,作者
Marin Blume写作出一个界面叫
Arena,它是第一个同时支持
UCI和
Winboard协议的免费界面。由于上述种种因素,越来越多作者和用户重视支持
UCI。既有免费的
Arena支持,也有商业性的界面支持。
2002年
3月,
Chess Partner也开始支持
UCI。在引擎方面,支持
UCI的引擎也逐步增多,已达到
35种
(其中
5种是商业性的
) Winboard和UCI协议的未来 从功能上说,
UCI引擎更好用,因为你很容易为所有
UCI引擎作统一的设置,比如哈希表、残局库路径等;
UCI协议中也制定了允许你就在界面里改变设置
【译注:使用过 Winboard引擎的都知道,改变引擎设置只好以文本方式在引擎附带的设置文件中输入更改,显得很原始】,还有制定了能显示哈希表信息,以及还提出要求加入其它一些功能比如显示多重主变化路线等。 但另一方面,有些程序设计者又指出
UCI协议不够整洁,编程较难,灵活性不够等。可能这些都是习惯问题。 从用户角度来看,现在
UCI不但有商业性而且还有免费的界面了,所以
Winboard协议在这方面不再有优势。另就
Winboard协议在
Chessbase界面的不好表现来说,
UCI更有着一点优势。 但是,我仍然不希望
Winboard协议就此凋谢。我曾预测过,随着
UCI引擎的增多,不意味着已存在的
Winboard 引擎的丢弃,新引擎会同时支持两种协议。这个预测到
2002年底看来还是对的:大约
30个支持
UCI的引擎中,只有
5个不支持
Winboard协议
【译注:此处从上下文的逻辑意义和现实情况看,原文出现意思相反了的笔误】。大多数的情况是,已存在的
Winboard引擎改动加入对
UCI的支持,而新出的引擎则同时支持两种协议。 出处:
Aaron's Winboard and Chess Engines FAQ 译者:
michael 类型:略有删节