国际象棋引擎文章(一)uci协议
棋弈程序(应该称之为引擎)是高度“可移植的”随着越来越多的棋弈程序遵从如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协议相关推荐
- 国际象棋通用协议(UCI协议)
目录 前言 一.UCI协议的特点 二.走棋格式 三.界面到引擎 1. uci 2. debug [ on | off ] 3. isready 4. setoption name [ value ] ...
- 增加seo好感度,wordpress给文章增加og协议,即meta标签形式如 meta property=”og:
这个标题是什么意思?什么是og协议.先不说到底是什么意思.可能大家在一些博客上面,有时候一篇文章,你查看源代码的时候,会在里面,发现如"meta property="og:desc ...
- 数据引擎-Paxos分布式一致协议
分布式文件系统采用多分副本保证高可用性,举个例子:三副本,在更新的时候,确保二个副本持续化存储更新后,认为更新事物提交完成.那么如何确保多个副本的更新操作序列,在全部副本中依次顺序执行呢? Paxos ...
- 老外写的关于协程的性能文章-主打http协议
2019独角兽企业重金招聘Python工程师标准>>> https://dzone.com/articles/high-concurrency-http-clients-on-the ...
- html5 图片处理 开源,AlloyImage 基于 HTML5 的专业级图像处理开源引擎 - 文章教程...
AlloyImage(AI)是一个基于html5技术的JS图像处理库,集成了一些方便快捷的图像处理API,您可以将它引用到您的网页中,结合css3等技术,做出一些之前无法做到的优美效果,或者,提供一个 ...
- linux国际象棋,国际象棋通用引擎协议
国际象棋通用引擎协议 2004年9月初稿,2006年2月修订 一.UCI协议的特点 UCI协议,全称是国际象棋通用引擎协议(Universal Chess Interface,直译作通用象棋接口).它 ...
- 中国象棋通用引擎协议
一.概述 中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议.设立中国象棋通用引擎协议的目的有: ...
- 中国象棋通用引擎协议 UCCI
概述 中国象棋通用引擎协议 (Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议. 规范通用引擎协议 UCCI 协议,为 ...
- 国际象棋ai下载_国际象棋AI的解剖
国际象棋ai下载 Chess-playing programs made their grand debut in the 50's. They were unsurprisingly fairly ...
最新文章
- vconsole 调试 查看LOG VUE在手机上调试 手机查看h5的日志
- Windows server 2008普通用户不能远程登录问题
- 第六章练习题和知识面扩充
- leetcode231
- Membership学习(二)membership入门
- Source Insight经典教程
- C++ 对引用的理解2
- 1个显示器分割2画面_我家房子100㎡,原始设计有2个卫生间,纠结保留1个还是2个...
- 蔡崇信完成对布鲁克林篮网和巴克莱中心的全资收购
- PDF文件太大,教你一个方法让PDF文件变小
- [人物] “在人间播种子,在天上洒甘霖。” 国士无双,袁老千古。
- 什么是匈牙利命名法?有什么规则?
- 微信app支付和微信网页支付 java
- EBS HRMS数据表
- JavaScript定时器倒计时60S的使用
- 22.11.3打卡 HDU-1069
- 查看nvidia显卡GPU信息
- Oracle 收缩表空间一例
- 师古创今匠心品质,打造红木中式整装
- 明月镜片开启招股:预计全年业绩增幅不高,和康耐特相比各有优劣