中国象棋通用引擎协议
中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议。
基本信息
- 中文名
中国象棋通用引擎协议
- 外文名
Universal Chinese Chess Protocol
- 类型
通讯协议
- 时间
2004年
引擎协议 - 简介
中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议。
设立协议目的
(1) 使一个“可视化象棋软件”可以使用不同的“核心智能部件”,这些核心智能部件称为“引擎”,凡是遵循UCCI的引擎,都可以被该可视化象棋软件(也称为“界面”)所调用;
(2) 针对所有遵循UCCI的引擎,都可以开发不同的界面,使其具有不同的功能。
这样,“可视化象棋软件”和“核心智能部件”实现了分离,使得一部分程序设计师能专注于前者(界面)的开发,而另一部分程序设计师能专注于后者(引擎)的开发,让中国象棋软件的设计工作系统化、分工化,提高软件设计效率。
UCCI是模仿国际象棋的UCI协议来制定的。UCCI协议是开放式的协议,并且具有UCI协议的所有特点。
设立协议意义
该协议由业余研究电脑象棋程序的复旦大学研究生黄晨首倡于2004年,经过推广目前支持UCCI协议的公开发表的引擎已经增加到17个(截至2006年11月底),为中国象棋的信息化铺平了道路。
国际象棋引擎协议历史
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月。
着法和棋盘的表示
界面告诉引擎哪些着法是禁手(banmoves指令),或者引擎回答界面应该走哪个着法(bestmove反馈),这样的着法都用4个字符(简化的ICCS格式,参阅《中国象棋电脑应用规范(二):着法表示》一文)表示,即ICCS格式去掉中间的横线,并改成小写,例如h2e2。
界面用position指令把局面告诉引擎时,应该使用FEN串(写法参阅《中国象棋电脑应用规范(三):FEN文件格式》一文)。但是对局中会遇到循环局面,引擎也必须考虑其对策,因此FEN串并不能完全反映局面信息,必须使用FEN串(当前局面前第一个不吃子的局面)和后续着法相结合的方法表示局面。例如,开局以后走了以下4步:
1. 炮二平五 | 炮8平5 | 2. 炮五进四 | 士4进5 |
如果把这4步棋涉及的5个局面都告诉引擎,那么指令依次是: