棋弈程序(应该称之为引擎)是高度“可移植的”随着越来越多的棋弈程序遵从如Winboard和UCI协议等各种协议,它们不再被限定于一个软件或界面了。用户现在可以把一个棋弈程序(引擎)从一个他们所购买的软件/界面中“输出”到另一个[软件/界面]。

棋弈引擎所走的棋

首先让我们来定义几条术语。当我们谈论起你所购买的一套常规软件时,比方说Chessmaster ,你可能以为整个软件包就是完整的一个整体。实际上,我们可以把这套软件分开成彼此很不相同的两个组成部分来看待。第一部分是我所说的用户界面或者图形用户界面(GUI),而另一部分就是棋弈引擎(Chess engine)。【译注:往往分别简称界面和引擎】 关于用户界面,我指的是与用户有交互操作功能的软件部分。这可以是程序中显示棋盘、让用户走动棋子,以及棋局数据库搜索过滤器或实现ICS客户端在线 功能的任何功能部分,等等。用户界面要与棋弈引擎区分开来,棋弈引擎是指实际决定或计算该走哪步棋的程序部分。

   灵与肉    通过这样把国际象棋软件分开成两个组成部分,现在你可知,一个棋弈引擎有可能在不止一个界面下都能够良好地运行。 思考一下这种情况:你可以把比如Crafty(著名的免费棋弈引擎)“输入”到Winboard,Fritz, Chess assistant等或者其它任何界面中去,令Crafty运行,这个事实暗示了肯定存在某些方法让Crafty与软件之间建立联络。这也暗示了有两个程 序在工作着,“大脑”或者说是引擎部分命令该走哪步棋,同时用户界面(也称作GUI,即图形用户界面)处理棋步显示的工作以及与用户建立互动交流。 所有工作是同时地、无间隙地进行着的,你看上去就象只有一个程序在运行。不过如果你观察任务管理器里的程序运行情况,你就可以清楚看见有两个程序在工 作着。作个粗略比喻,可认为界面就是“肉体”;而棋弈引擎就是“灵魂”,是它在作决定。上述例子中,Crafty充当灵魂,它在任何一个能忠实地反映由 Crafty所决定全部棋步的“肉体”/界面中都能工作得同样的好。 显然,每当提及一个国际象棋软件包的时候,我们必须小心指明我们是在说它的界面还是引擎,特别是当这两者顶着同一个名字时【译注:比如说起Fritz,必要时必须分清是指Fritz界面还是Fritz引擎,还是指整套Fritz软件。后面还有进一步说明】。不是所有的棋弈引擎都能运行在全部用户界面中的。对于能良好运行在某用户界面(Fritz,Chess assistant, Winboard等)的某棋弈引擎,它们两者必须通过共享一种通用的通讯协议或“语言”来进行交流。
 

语言 ”   到目前为止最通行的协议或者说所使用的语言,是Tim Mann所提出的Winboard通讯协议【译注:Tim Mann同时也是Winboard这个工具的主要作者】。现在至少有120种免费的国际象棋棋弈引擎支持这个协议。另一个是Shredder的作者Stefan Meyer-Kahlen和SOS的作者Rudolf Huber所提出的通用国际象棋界面协议(UCI),到写这篇文章的时候,它有大约20种引擎支持。

国际象棋通用界面(UCI)   正得到普及的另一开放性协议是国际象棋通用界面协议(UCI)。第一个支持UCI协议的界面是商业性的Shredder 5,它的作者也是UCI的提出者。最近,其它界面已开始支持它了,包括Chess Assistant 6、 Chess Partner 和 Fritz 7。【译 注:因此自从Fritz 7之后,支持UCI的引擎都能够在Fritz界面下使用--注意又再次提出这两个(甚至该说是三个)概念的区分,一般说的Fritz是指这整套软件; Fritz有它独特的界面和显示、功能选单和操作,这就是Fritz界面;而负责棋步计算的核心,即引擎,在商业上也叫Fritz引擎,但在技术上,它有 别的名字,如Quest。使用过Fritz的人都知道,除了"Fritz"这个引擎外,它还带有别的其它引擎,而且可以添加。这样就很容易理解什么叫引擎、什么叫界面、又什么叫整个(套)会下棋的软件。】

   开放与非开放协议 Winboard和UCI都是开放性协议的例子。意思是协议自由公开,任何程序员都可以(如果愿意)设计使他们的程序适应其标准。这与非公开协议相 反,后者的标准不公开,既包括私有的不打算让别的引擎理解的界面;另一方面也指秘密/版权协议,它只被属于同一家公司的引擎、或付了许可费用而有权使用该 协议的作者所写的引擎理解。Chessbase协议可能就是最出名的一个。【译 注:作为国际象棋数据库的那套chessbase工具,知道的人应该比较多;但说起"chessbase",要注意可能指:1)chessbase协议, 正是本段所述;2)chessbase所出版的那些软件的统一界面或典型界面,以Fritz的最典型;3)名字就叫chessbase的那套国际象棋数据库工具;4)chessbase这间公司,或者它的网站;等等】

出处: Aaron的国际象棋引擎FAQ主页 译者: Michael

国际象棋引擎文章(一)uci协议相关推荐

  1. 国际象棋通用协议(UCI协议)

    目录 前言 一.UCI协议的特点 二.走棋格式 三.界面到引擎 1. uci 2. debug [ on | off ] 3. isready 4. setoption name [ value ] ...

  2. 增加seo好感度,wordpress给文章增加og协议,即meta标签形式如 meta property=”og:

    这个标题是什么意思?什么是og协议.先不说到底是什么意思.可能大家在一些博客上面,有时候一篇文章,你查看源代码的时候,会在里面,发现如"meta property="og:desc ...

  3. 数据引擎-Paxos分布式一致协议

    分布式文件系统采用多分副本保证高可用性,举个例子:三副本,在更新的时候,确保二个副本持续化存储更新后,认为更新事物提交完成.那么如何确保多个副本的更新操作序列,在全部副本中依次顺序执行呢? Paxos ...

  4. 老外写的关于协程的性能文章-主打http协议

    2019独角兽企业重金招聘Python工程师标准>>> https://dzone.com/articles/high-concurrency-http-clients-on-the ...

  5. html5 图片处理 开源,AlloyImage 基于 HTML5 的专业级图像处理开源引擎 - 文章教程...

    AlloyImage(AI)是一个基于html5技术的JS图像处理库,集成了一些方便快捷的图像处理API,您可以将它引用到您的网页中,结合css3等技术,做出一些之前无法做到的优美效果,或者,提供一个 ...

  6. linux国际象棋,国际象棋通用引擎协议

    国际象棋通用引擎协议 2004年9月初稿,2006年2月修订 一.UCI协议的特点 UCI协议,全称是国际象棋通用引擎协议(Universal Chess Interface,直译作通用象棋接口).它 ...

  7. 中国象棋通用引擎协议

    一.概述 中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议.设立中国象棋通用引擎协议的目的有: ...

  8. 中国象棋通用引擎协议 UCCI

    概述 中国象棋通用引擎协议 (Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议. 规范通用引擎协议 UCCI 协议,为 ...

  9. 国际象棋ai下载_国际象棋AI的解剖

    国际象棋ai下载 Chess-playing programs made their grand debut in the 50's. They were unsurprisingly fairly ...

最新文章

  1. vconsole 调试 查看LOG VUE在手机上调试 手机查看h5的日志
  2. Windows server 2008普通用户不能远程登录问题
  3. 第六章练习题和知识面扩充
  4. leetcode231
  5. Membership学习(二)membership入门
  6. Source Insight经典教程
  7. C++ 对引用的理解2
  8. 1个显示器分割2画面_我家房子100㎡,原始设计有2个卫生间,纠结保留1个还是2个...
  9. 蔡崇信完成对布鲁克林篮网和巴克莱中心的全资收购
  10. PDF文件太大,教你一个方法让PDF文件变小
  11. [人物] “在人间播种子,在天上洒甘霖。” 国士无双,袁老千古。
  12. 什么是匈牙利命名法?有什么规则?
  13. 微信app支付和微信网页支付 java
  14. EBS HRMS数据表
  15. JavaScript定时器倒计时60S的使用
  16. 22.11.3打卡 HDU-1069
  17. 查看nvidia显卡GPU信息
  18. Oracle 收缩表空间一例
  19. 师古创今匠心品质,打造红木中式整装
  20. 明月镜片开启招股:预计全年业绩增幅不高,和康耐特相比各有优劣

热门文章

  1. 领航4G,酷派手机制胜之道
  2. 如何下载迅雷(狗狗)屏蔽的资源?
  3. 哪个网盘比较好,想找一个好用又安全的网盘
  4. Excel中输入对号、叉
  5. 仿海报工厂效果的自定义View
  6. 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法
  7. 最少代金券问题之JavaScript解法
  8. 从内核看SO_REUSEPORT的实现(基于5.9.9)
  9. 一篇博客,带你找回登录密码
  10. 卡巴斯基实验室发布其最新虚拟化安全解决方案