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