中国象棋计算机博弈发展史研究报告
系统梳理中国象棋计算机博弈从 1980 年代到 2026 年的技术演进、代表引擎与社区生态。 第六章 象棋旋风与倚天象棋:两强争霸(2005–2008) → 第十一章 南奥象棋:从象棋世家到跨时代的传承
第六章 象棋旋风与倚天象棋:两强争霸(2005–2008)
6.1 象棋旋风的诞生(2005)
象棋旋风(Xiangqi Cyclone / Tornado)由中国程序员陈朝营开发。象棋旋风是中国象棋引擎历史上最具影响力的商业引擎之一。
象棋旋风(Xiangqi Cyclone)官方网站——陈朝营开发的最具影响力的商业引擎之一,后推出NNUE版Cyclone-nn
开发背景:
陈朝营在2005年前后开始开发象棋旋风。他并非学术界人士,而是一名拥有强大的编程能力和象棋理论知识的个人开发者。象棋旋风的最初版本使用了开源引擎ElephantEye的部分代码,但很快陈朝营就完全重写了核心代码。
象棋旋风的早期版本在2005-2006年期间在棋中论坛等社区开始流传。由于其表现出色(在当时的硬件上能够达到较深的搜索深度),迅速吸引了象棋软件爱好者的关注。
版本历史:
象棋旋风经历了多个重要的版本迭代:
- 初版(2005):基于ElephantEye代码,使用基本的Alpha-Beta搜索
- 旋风V2(2006):完全重写代码,引入先进的PVS搜索,棋力大幅提升
- 旋风V3(2007):引入多线程和并行搜索,开始在比赛中斩获佳绩
- 旋风V4(2008):进一步优化评估函数和剪枝算法,达到当时行业的顶尖水平
6.2 象棋旋风的技术架构
象棋旋风的成功主要归功于其出色的搜索算法实现。其主要技术特点包括:
1. PVS搜索:
旋风实现了完整的PVS搜索。PVS的核心思想是在零窗口(null-window)下搜索非主变分支,从而以更小的搜索量获得相同的搜索保证。PVS与Alpha-Beta相比,在棋力相当的情况下可以节省约10-20%的搜索时间。
2. 高效的置换表(Transposition Table)实现:
象棋旋风实现了基于哈希的置换表,具有以下优化:
- 使用Zobrist哈希算法生成局面哈希值
- 哈希表采用分层存储策略(Exact/Alpha/Beta三类节点)
- 使用深度优先的替换策略(当新条目的搜索深度大于已有条目时替换)
- 哈希表容量可配置(典型值为64MB到256MB)
3. 空着裁剪(Null Move Pruning):
位置兵力和战术威胁主要来自"走一步有价值的棋"。空着裁剪的基本假设是:如果你在假定"让对方连续走两步"的情况下仍然无法获得优势,那么该搜索分支不值得深入探索。
旋风对空着裁剪的应用非常激进,在某些局面下可以跳过高达50%的搜索分支。这种激进的裁剪带来了搜索深度的显著提升,但也在某些特殊局面下导致了评估失误。
4. 历史启发与杀手着法:
旋风实现了历史启发(History Heuristic)和杀手着法(Killer Move)两种着法排序技术。历史启发通过记录每个著法在不同局面的历史成功率来指导搜索排序,杀手着法则记录在同一搜索深度中造成剪枝的最有效着法。这两种技术的配合使用显著提高了搜索树的剪枝效率。
5. 迭代加深:
旋风放弃了固定深度搜索,完全采用迭代加深策略。迭代加深的好处包括:
- 时间可控:可以在任何时刻返回当前最优着法
- 置换表预热:浅层搜索的结果(如PV、评估值)可以被深层搜索利用
- 搜索稳定性:迭代加深比固定深度搜索更稳定,不会出现"浅层认为好,深层认为差"的剧烈波动
6. 评估函数:
旋风的评估函数以手工调优的特征为核心,包括:
- 子力优势(Material Advantage):基于位置价值的加权和
- 棋子活动性(Mobility):每个棋子可走位置数量的加权和
- 将帅安全性(King Safety):将帅周围的控制范围和保护程度
- 兵种结构(Pawn Structure):兵(卒)的阵型、过河兵价值
- 控制区域(Area Control):中路的控制程度、河界控制、九宫控制
6.3 倚天象棋(Intella)的崛起
倚天象棋(Intella)由陈朝营和韦馀涛联合开发。倚天象棋是象棋旋风的重要竞争者,在中国象棋引擎发展史上与旋风形成了"两强争霸"的局面。
倚天象棋的技术特点:
倚天象棋采用了与旋风类似但有所不同的技术路线:
-
搜索算法:倚天象棋同样使用PVS搜索,但剪枝策略略保守,倾向于更完整的搜索和更稳定的评估。
-
评估函数:倚天象棋的评估函数在设计上强调"局面理解"的能力,在子力交换、局面平衡、战术组合等方面的评估比旋风更加精细。
-
开局库:倚天象棋的开局库由团队手工整理和维护,质量在同时代引擎中属于顶尖水平。倚天团队与多位职业棋手合作,确保开局库覆盖所有主流开局变例。
-
多线程支持:倚天象棋支持双核和四核多线程搜索,在SMP(对称多处理)系统上具有良好的扩展性。
2006年国家体育总局的测试事件:
2006年,国家体育总局棋牌运动管理中心对中国象棋软件进行了一次内部的棋力测试。测试使用了水平较高的专业棋手与引擎对弈。倚天象棋在这次测试中表现突出,获得了"达到国家大师水平"的评价。这次测试事件被中国象棋软件社区广泛报道,显著提升了倚天象棋的品牌知名度和市场认可度。
6.4 旋风与倚天之间的竞争与技术交流
象棋旋风与倚天象棋的竞争关系非常特殊。由于两者的主要开发者(陈朝营和韦馀涛)之间有着密切的个人关系,旋风与倚天之间的关系既有竞争也有合作。
技术交流:
陈朝营和韦馀涛之间有过技术讨论和相互参考。在一些技术细节上,两者相互影响(如对某些特殊局面的处理方式)。但这种技术交流是不公开的,社区只能从引擎的实战表现推断两者之间的关系。
市场竞争:
在市场层面,旋风与倚天之间存在着激烈的竞争。两者分别在不同年份的ICGA和CCMC赛事中交替获得冠军,形成了"两强争霸"的局面。这种竞争不仅体现在赛场成绩上,也体现在商业销售、用户口碑和社区影响力上。
竞争的影响:
旋风与倚天之间的良性竞争对中国象棋引擎的发展起到了重要的推动作用:
- 双方都在持续优化算法和评估函数,以获得竞争优势
- 竞争催生了更深入的技术研究和更多的创新
- 用户和社区对比较测试、棋谱分析的兴趣增加,促进了对引擎技术的讨论
6.5 旋风在ICGA和CCMC中的表现
象棋旋风在2008年ICGA北京赛事中获得银牌。此后,陈朝营继续开发象棋旋风(Cyclone),该引擎进入了NNUE时代后改称Cyclone-nn。
在当时,旋风与倚天之间的实力对比成为社区讨论的热点。但最值得注意的是,旋风与倚天的竞争推动了整个中国象棋引擎生态的发展。因为竞争的存在,两个引擎都在持续进步,各自代表了当时中国象棋引擎的最高水平。
ICGA 2008年的比赛在北京举行,这是ICGA首次在中国大陆举办赛事。象棋旋风作为中国大陆本土引擎在比赛中获得银牌,虽然输给了倚天象棋,但在比赛中展现出了出色的中局战术能力和较高的搜索深度。旋风在某几个关键对局中,通过精确的战术组合击败了强劲对手。
6.6 2005-2008 黄金一代引擎综合对比
2005年至2008年是中国象棋引擎发展的黄金时期,多个划时代的引擎集中涌现。以下是从多个维度对这代引擎的综合对比分析:
| 对比维度 | 象棋奇兵 (XQMASTER) | 梦入神机 (MRSJ) | 棋天大圣 (NEUChess) | 象棋旋风 (Cyclone) | 倚天象棋 (Intella) |
|---|---|---|---|---|---|
| 首发年份 | 2005 | 2004 | 2004-2005 | 2005 | 2007 |
| 开发者 | 赵明阳 | 涂志强(中山大学) | 王骄(东北大学) | 陈朝营 | 陈朝营+韦馀涛 |
| 开发背景 | 个人/商业 | 学术研究(研究生) | 学术研究(教授) | 个人/商业 | 商业团队 |
| 搜索算法 | PVS(主变搜索) | 高级Alpha-Beta | PVS+多层次剪枝 | PVS+空着裁剪+LMR | PVS+高级剪枝 |
| 评估函数 | 手工特征+位置表 | 手工调优 | 手工特征(6类因子) | 深度手工调优 | 精密手工调优 |
| 并行支持 | 否(单核) | 否(单核) | 试验性并行(YBW) | 是(双核) | 是(多核) |
| 协议支持 | 自研协议 | 自研 | 自研 | UCCI | UCCI |
| 开放程度 | 闭源商业 | 闭源 | 闭源(论文公开) | 闭源商业 | 闭源商业 |
| ICGA最高成绩 | 金牌(2005) | 铜牌(2004) | 金牌(2006,2007) | 银牌(2008) | 金牌(2008) |
| CCMC成绩 | — | — | 金牌(2006,2007) | 金牌(2007) | — |
| 历史地位 | 首个中国ICGA金牌 | 早期开源先驱 | 首个大陆ICGA金牌 | 最长寿商业引擎 | 短命但最强 |
| 主要优点 | 评估精准,战术敏锐 | 架构简洁,思路清晰 | 学术规范,文档完善 | 算法先进,持续进化 | 棋力巅峰,短时无敌 |
| 主要缺点 | 无并行,协议封闭 | 棋力有限,维护停滞 | 并行效率低,商业化弱 | 界面简陋,商业限制 | 开发周期短,已停产 |
| 对后世影响 | 打破台湾垄断 | 启发学术路线 | 论文传承,教育价值 | UCCI推广,连接时代 | 极致优化的范例 |
| 巅峰棋力(估计ELO) | ~2350 | ~2100 | ~2450 | ~2600 | ~2650 |
| 相当于人类水平 | 国家大师 | 地方大师 | 国家大师 | 强大师-特级大师 | 特级大师 |
注:2005-2008年是中国象棋引擎从「能下棋」到「超越人类」的关键转变期。其中,象棋奇兵开创了中国引擎夺取ICGA金牌的先河,棋天大圣将学术研究方法引入引擎开发,象棋旋风与倚天的竞争将引擎棋力推向了人类特级大师的水平。倚天象棋在2008年ICGA的金牌标志着这一黄金时代的顶峰——此后,中国象棋引擎正式进入了全面超越人类棋手的商业化时代。
第七章 棋中论坛:引擎社区的心脏
7.1 棋中论坛的创建与早期发展
棋中论坛(qqzze.com)是中国象棋引擎社区最重要的交流平台之一。它的成立时间大约在2000年代初期,当时的互联网论坛正处于黄金时代。
棋中论坛的创建者已不可考,但论坛能够发展壮大,凝聚了众多中国象棋引擎开发者和爱好者的贡献。论坛的域名qqzze.com来源于"棋中"(棋在中间、棋在其中)的拼音组合。
论坛版块的设置:
棋中论坛设置了一系列针对中国象棋引擎社区需求的版块:
- 引擎发布区:开发和发布象棋引擎版本的专区,开发者可以在这里发布自己的引擎版本和更新日志。
- 技术交流区:讨论引擎开发技术(搜索算法、评估函数、UCCI协议等)的版块,是技术含量的核心区域。
- 开局库研究区:专注于开局库制作和研究的区域,社区成员在这里分享和讨论开局库。
- 棋谱赏析区:发布和讨论高水平棋谱的区域,包括人机对局和大师对局。
- 兵河五四讨论区:针对兵河五四引擎管理工具的专门讨论区。
- 在线对弈讨论区:讨论弈天等在线平台对局和策略的区域。
- 软件评测区:不同引擎、开局库的性能比较和评测。
7.2 论坛的文化与贡献
棋中论坛对中国象棋引擎社区的影响是深远的,具体体现在以下方面:
1. 知识传播的枢纽:
棋中论坛是中国象棋引擎技术知识传播的核心渠道。许多引擎开发者在论坛上分享他们的技术经验,包括:
- 搜索算法的实现细节和优化技巧
- 评估函数的调优经验
- 开局库的制作方法
- 多线程/分布式搜索的实现策略
这些帖子虽然没有学术论文的严谨性,但它们的实践性往往更强,对于其他开发者(特别是自学者)的参考价值极高。
2. 社区测试的场所:
棋中论坛是社区测试和评价引擎的主要场所。用户会:
- 发布不同引擎的对局测试结果
- 比较不同设置下的引擎表现
- 讨论特定版本引擎的优缺点
- 分享引擎在特定局面下的分析结果
这些测试报告和讨论为引擎开发者提供了宝贵的反馈数据,也帮助用户选择最适合自己需求的引擎。
3. 商业引擎的发布和分发渠道:
在商业引擎发展的黄金时代(2005-2015),棋中论坛是引擎作者发布商业版本和与用户互动的最重要渠道。引擎作者在这里:
- 发布新版本的预览版和正式版
- 收集用户的BUG报告和反馈
- 发布官方更新和补丁
- 进行版本管理和公告
4. 引擎与用户之间的桥梁:
棋中论坛在引擎开发者与用户之间扮演着桥梁角色。在论坛上:
- 用户可以提问和寻求帮助
- 开发者可以了解用户的需求和问题
- 第三方爱好者可以制作开局库、界面配置等辅助资源
7.3 关键人物与社区贡献者
棋中论坛上涌现了大量对中国象棋引擎社区有重要贡献的人物:
引擎开发者:
- 陈朝营(象棋旋风作者):经常在论坛上发布旋风的新版本和更新日志
- 蒋志敏和张闽(象棋名手作者):通过论坛发布名手的版本和测试结果
- 李国来(佳佳象棋作者):在论坛上讨论佳佳的技术细节
开局库制作者:
- “龙江”:制作了著名的"龙江库"系列开局库
- "倚天"相关开局库制作者:为倚天象棋制作了高质量的开局库
技术分享者:
- 多位在论坛上发表长篇技术教程的社区成员,他们的帖子涵盖了从基础编程到高级算法优化的广泛内容
测试和评测者:
- 定期在论坛上发布引擎测试报告的社区成员,他们的测试为引擎性能评估提供了参考
7.4 棋中论坛的衰落与技术社区的转型
随着移动互联网的兴起和社交媒体的普及,传统论坛在2010年代后期逐渐衰落。棋中论坛的用户活跃度在2015年后显著下降,原因包括:
- 社交媒体的冲击:微信、QQ群等即时通信工具取代了论坛作为日常讨论渠道
- 搜索引擎优化不足:论坛的UI/UX未能跟上移动互联网时代的要求
- 商业引擎的退出:随着商业引擎市场的萎缩,论坛上的核心内容(引擎发布和评测)减少
- GitHub的崛起:引擎开发者的协作从论坛转移到了GitHub,技术交流也随之迁移
棋中论坛的衰落标志着中国象棋引擎社区形态的一次重要转型。从传统的"论坛中心"模式转向了"GitHub+QQ/微信群"的分布式模式。这一转型在2020年代随着皮卡鱼等开源项目的兴起而加速。
第八章 ElephantEye与黄晨的开源贡献(2005–2020)
8.1 ElephantEye(象眼)的开源架构
ElephantEye(中文名"象眼")由黄晨开发,是中国象棋开源引擎中最重要的项目之一。黄晨也是xqbase.com网站的维护者、UCCI协议的设计者、XQF棋谱格式标准的推动者。
ElephantEye的开发历程:
黄晨从2000年左右开始开发ElephantEye。作为中国象棋引擎的技术探索者和社区建设者,黄晨选择将ElephantEye以LGPL许可证发布。这意味着:
- 任何人可以自由使用、修改和分发ElephantEye的源代码
- 如果修改后的代码作为库(Library)使用,可以有更宽松的要求
- 如果作为独立程序分发,需要配套提供源代码或允许反向工程
ElephantEye的开发目标不是"超越商业引擎",而是"提供一个学习和研究的平台"。黄晨在xqbase.com上撰写了大量的技术文档,介绍ElephantEye的实现细节。这些文档是中国象棋引擎编程的"圣经级"参考资料。
8.2 ElephantEye的技术体系
ElephantEye的代码结构清晰,模块化程度高。其主要模块包括:
1. 局面表示(Position Representation):
采用基于位棋盘(Bitboard)的表示方法,每个棋子类型使用一个64位整数(位棋盘中的前90位表示9×10棋盘的90个交叉点)。
位棋盘表示法的核心优势在于着法生成速度快。通过预计算和位运算,引擎可以在极短时间内生成所有合法着法。例如,车的走法可以通过预计算的"可达性表"(经程范围表)结合棋盘状态来生成。
2. 着法生成器(Move Generator):
黄晨为ElephantEye设计了高效的着法生成器,着重优化了以下方面:
- 针对中国象棋棋子特点优化了着法生成速度(特别是马和象的绊脚限制)
- 使用预计算表减少运行时计算量
- 分离了吃子着法和不吃子着法(SEE需要使用吃子着法序列)
3. 置换表(Transposition Table):
ElephantEye实现了标准的Zobrist哈希置换表,其大小为可配置(通常2^20到2^24个条目)。
置换表条目存储的信息包括:
- 哈希值(用于验证)
- 搜索深度(该结果的搜索深度)
- 节点类型(精确值/Alpha上限/Beta下限)
- 最佳走法(用于着法排序)
- 评估值
4. 评估函数(Evaluation Function):
ElephantEye的评估函数在开源引擎中具有代表性:
- 子力价值评估:每种棋子基于位置和阶段(开局/中局/残局)的加权分值
- 位置价值评估:每个棋子在棋盘上每个位置的得分(保存在预计算的位置价值表中)
- 棋子活动性评估:基于棋子的机动性和控制区域
- 将帅安全性评估:红帅和黑将的保护状态
- 兵种结构评估:兵(卒)的配置、过河兵价值
- 棋子协调性评估:车马炮之间的配合、士象的防御完整性
5. UCCI协议实现:
ElephantEye包含了完整的UCCI协议支持,使其可以与任何支持UCCI的GUI配合使用。ElephantEye对UCCI协议的支持覆盖了所有核心指令和选项。
6. LEGAGE模拟器:
ElephantEye的代码中包含了LEAGUE模拟器——这是一个自动对局测试工具,可以在不同设定下运行大量对局。LEAGUE的存在使得开发者可以在提交代码更改前进行充分的测试验证。
7. XQFTOOLS(象棋棋谱工具):
黄晨还开发了XQFTOOLS套件,用于在XQF(中国象棋棋谱格式)和PGN(通用棋谱格式)之间进行转换。
8.3 ElephantEye的棋力评估
根据黄晨自己的评估以及其他引擎测试者的报告,ElephantEye的棋力大致相当于人类业余3段至4段水平(约2000-2200 ELO)。这个棋力在2005-2008年间属于中等水平,远低于同期的商业引擎(旋风、倚天等)。
但是,ElephantEye的开源属性使其具有超越棋力本身的价值。它是中国象棋引擎初学者的最佳学习资源,吸引了无数开发者在它的基础上进行研究和二次开发。多个后续引擎(如BitStronger、部分早期版本的旋风)都参考了ElephantEye的代码或设计。
8.4 黄晨的教学文档
除了引擎本身,黄晨在xqbase.com上发表的一系列教学文档同样是宝贵的知识资源。这些文档包括:
-
《中国象棋程序设计探索》系列:从零开始介绍如何开发一个中国象棋程序,涵盖局面表示、搜索算法、评估函数、UCCI协议等主题。
-
《UCCI协议规范》:UCCI协议的完整技术文档,是所有UCCI协议实现者的必备参考。
-
《中国象棋程序中的Hash技术》:详细介绍了Zobrist哈希和置换表在中国象棋程序中的实现。
-
《中国象棋程序中的走法生成》:详细介绍了中国象棋各种棋子的走法生成算法和优化策略。
这些文档在格式上简明易懂,配有大量示例代码,是中国象棋编程领域最优质的中文教学资源之一。
8.5 ElephantEye的历史意义
ElephantEye的历史意义可以概括为:
-
开源之锚:ElephantEye的开源为中国象棋引擎社区提供了一个稳定的代码参照。在绝大多数引擎闭源的背景下,ElephantEye是唯一可自由研究、修改和分发的完整引擎。
-
人才培育:无数中国象棋引擎开发者通过学习ElephantEye的源代码迈入了引擎开发的门槛。
-
标准制定:黄晨在ElephantEye中实现的UCCI协议和XQF工具促进了中国象棋引擎的标准化。
-
知识传承:黄晨撰写的教学文档系统性地记录了中国象棋引擎开发的核心知识,这些知识通过互联网的传播效应惠及了数以千计的开发者。
-
跨领域影响:ElephantEye的影响不仅限于中国象棋领域,它还被移植到国际象棋变体(如通过Fairy-Stockfish适配),展示了其架构的扩展性。
第九章 兵河五四界面与引擎管理工具
9.1 兵河五四的诞生
兵河五四(BingHe 54)是中国象棋软件领域最重要的界面和管理工具之一。它由社区开发者"五四"(网名)创建,最初目的是为象棋引擎提供一个统一的、功能丰富的管理平台。
兵河五四(BingHe 54)——中国象棋软件领域最重要的引擎管理GUI工具,由社区开发者"五四"创建
兵河五四的名字来源于对"引擎"(Engine)的谐音演绎,既体现了工具的功能定位,又具有中国象棋特色。兵河五四的出现填补了UCCI协议普及后中国象棋引擎管理工具的市场空白。
9.2 兵河五四的核心功能
兵河五四的核心功能包括:
多引擎管理: 兵河五四支持同时加载多个UCCI/UCI协议引擎。用户可以在不同引擎之间自由切换,这在对比测试和比赛准备中极为有用。兵河五四还支持:
- 同时运行多个引擎实例
- 引擎参数的独立设置和保存
- 引擎性能的实时监控
自动对局系统: 兵河五四内置了完整的自动批量对局系统,支持:
- 循环赛和淘汰赛编排
- 时间控制设置(包干、加秒、限时等)
- 开局库管理
- 自动保存棋谱和统计结果
- ELO等级分计算
- 对局过程的实时显示和回放
云库集成: 兵河五四是中国象棋云库的主要客户端之一。通过兵河五四,用户可以直接查询云库中的开局库和残局库数据,也可以使用云库的自动学习功能。
连线功能: 兵河五四支持连线到多个在线对弈平台(如弈天、QQ象棋、天天象棋等),用户可以结合引擎分析进行人机配合。
自定义选项: 兵河五四提供了丰富的自定义选项,包括:
- 引擎路径和启动参数设置
- 开局库加载和编辑
- 棋谱格式配置
- 界面外观设置
- 热键绑定
9.3 兵河五四对中国象棋软件生态的影响
兵河五四对中国象棋软件生态的影响是多方面的:
-
降低了引擎使用的门槛:用户不需要手动敲击命令行来调用引擎,通过兵河五四的图形界面即可完成引擎管理和调用。
-
标准化了引擎测试方法:兵河五四的自动对局系统提供了一套标准化的测试方法论,使得不同用户的测试结果具有可比性。
-
促进了引擎之间的交流:兵河五四支持在同一平台上管理多个引擎,使得用户可以直观地比较不同引擎的表现。
-
文档和社区的贡献:兵河五四的文档和使用教程在社区中广泛传播,形成了关于其使用的知识体系。
9.4 同时代的其他界面工具
与兵河五四同时代的重要界面工具:
- 象棋巫师(ElephantBoard):黄晨开发的著名界面,内置象眼引擎,支持UCCI协议,拥有友好的用户界面和良好的用户体验。
象棋巫师(ElephantBoard)——黄晨开发的中国象棋界面,内置象眼引擎,是很多爱好者接触UCCI引擎的入门工具
-
倚天界面:原为倚天象棋的配套界面,后来支持多引擎。倚天界面在2000年代后期拥有较高的市场占有率。
-
旋风界面:象棋旋风的配套界面,与旋风引擎紧密整合,在优化和兼容性方面具有优势。
这些界面工具与引擎共同构成了完整的中国象棋软件生态,使得用户无需了解底层协议即可使用高级引擎功能。
9.5 中国象棋GUI界面工具对比
中国象棋引擎的界面工具(GUI)经历了从引擎内置界面到独立通用界面的发展。以下对比主流的界面工具:
| 对比维度 | 兵河五四 (Binghe54) | 象棋巫师 (ElephantBoard) | 旋风界面 (CycloneGUI) | 弈天客户端 | 棋路 (Qilu) |
|---|---|---|---|---|---|
| 开发者 | OkDodo(范德军) | 黄晨 | 陈朝营 | 弈天团队 | 棋路团队 |
| 首发年份 | 2005 | 2005 | 2005 | ~2000 | 2010s |
| 核心定位 | 引擎管理/联机对战 | 教学/娱乐/入门 | 旋风专用界面 | 在线对战平台 | 移动端分析 |
| 引擎支持 | ★★★★★ 多引擎UCCI | ★★★★ UCCI引擎 | ★★ 仅旋风 | ★★★ 外部引擎 | ★★ 有限 |
| 连线功能 | ★★★★★ 全平台连线 | ★ 无 | ★ 无 | ★ 无 | ★ 无 |
| 开局库管理 | ★★★★★ 深度管理 | ★★ 基础 | ★★★ 旋风专用 | ★ 无 | ★ 无 |
| 棋谱分析 | ★★★★★ 完整工具链 | ★★★★ 基础分析 | ★★★ 基础 | ★★ 复盘 | ★★★★ 云分析 |
| 残局训练 | ★★ 有限 | ★★★★ 残局库查询 | ★ 无 | ★ 无 | ★★★★ 闯关模式 |
| 界面美观 | ★★★ 实用风格 | ★★★★★ 精美 | ★★ 简陋 | ★★ 经典 | ★★★★★ 现代 |
| 学习曲线 | ★★★★★ 陡峭(专业) | ★★★ 平缓 | ★★★ 中等 | ★★ 简单 | ★★★ 中等 |
| 目标用户 | 引擎发烧友/比赛者 | 教学/入门者 | 旋风用户 | 在线对弈者 | 移动端爱好者 |
| 平台 | Windows | Windows | Windows | Windows | iOS/Android |
| 是否开源 | 部分开源(旧版) | 开源(GPLv3) | 闭源 | 闭源 | 闭源 |
| 当前状态 | 已停止更新 | 已停止更新 | 仍更新(与引擎捆绑) | 仍运营 | 仍运营 |
| 主要优点 | 功能最全,引擎管理最强 | 美观,易用,教学好 | 与旋风深度集成 | 在线对战生态 | 移动端体验好 |
| 主要缺点 | 已停更,Win10+兼容差 | 已停更,无连线 | 仅支持旋风 | 界面旧,功能少 | 引擎管理弱 |
注:兵河五四作为历史上功能最完善的引擎管理工具,虽然已经在2010年代停止更新,但其设计理念(界面与引擎分离、多引擎管理、连线对战)深刻影响了后来的所有象棋软件。象棋巫师则在教育和入门领域发挥了不可替代的作用——很多中国象棋爱好者是通过象棋巫师第一次接触到UCCI引擎的。随着移动互联网的普及,PC端GUI工具整体上已经让位于移动端App,但对于引擎开发者和重度用户来说,兵河五四至今仍未被完全替代。
第十章 象棋名手与佳佳象棋(2009–2015)
10.1 象棋名手的崛起
象棋名手(CChess Master)由蒋志敏和张闽团队开发,是中国象棋商业引擎的巅峰之作。名手在2009-2015年期间成为中国象棋引擎市场的领导者。
象棋名手(CChess Master)主界面——CCMC五连冠的王者引擎,传统手工评估时代的巅峰之作
象棋名手最初版本发布于2009年左右。它的早期版本在CCMC中国机器博弈锦标赛中获得冠军,之后名手不断改进,逐渐形成了在棋力、稳定性和易用性上的综合优势。
象棋名手的技术特点:
1. PVS搜索: 名手实现了高度优化的PVS搜索,其搜索效率在同时代引擎中处于领先水平。名手的PVS实现特别注重了:
- 高效的着法排序策略
- 精确的窗口管理
- 剪枝与安全的平衡
2. 多线程并行搜索: 名手是早期支持多线程并行搜索的引擎之一。在双核和四核机器上,名手的并行搜索效率可达70%以上。这种并行能力在硬件快速发展的2000年代末期具有很大的性能优势。
3. 分布式计算支持: 名手支持将搜索任务分布到多台计算机上。虽然这种分布式计算在实际应用中的使用范围有限(需要多台计算机之间的高速网络连接),但它展示了名手在可扩展性方面的前瞻性设计。
4. 深度手工评估函数: 名手的评估函数被认为是手工评估时代的巅峰之作。它的评估函数包括数百个精细调优的位置特征,针对不同的局面类型设计了多套评估参数。名手的评估函数具有以下特点:
- 精细化的子力协同评估
- 深层次的战术威胁检测
- 专门处理空头炮、窝心马、多子归边等典型战术模式的规则
象棋名手的比赛成绩:
象棋名手在中国机器博弈锦标赛(CCMC)中取得了令人瞩目的成绩:
- 2009年:冠军(深圳)
- 2011年:冠军
- 2012年:冠军
- 2013年:冠军
- 2014年:冠军
名手在CCMC中的连冠纪录充分显示了其棋力的稳定性和领先性。
象棋名手——引擎正在分析局面,显示搜索深度和评估分数
象棋名手——残局局面分析,名手内置的残局知识库使其残局处理能力尤为突出
10.2 象棋名手的技术架构详解
象棋名手的技术架构代表了传统Alpha-Beta引擎的最高水平。其核心设计决策包括:
(一)并行搜索架构
象棋名手采用了比同时代引擎更激进的并行搜索策略。传统的并行搜索方案(如Young Brothers Wait、ABDADA等)在核心间的负载均衡和通信开销上存在局限。名手采用的是"分裂搜索"(Split Search)的改进版本——当搜索到达一定深度后,将搜索树的不同分支分配给不同核心并行探索。
名手的并行效率在4-8核心机器上可以达到约70-80%,这在同时代引擎中处于领先水平。
(二)分布式计算的实现
象棋名手支持将搜索任务分发到多台计算机上。具体的实现方式是通过网络协议将搜索任务分配给分布式计算节点,节点完成子任务后汇总结果。这种架构在当时极为前卫——大多数引擎只支持单机多核,而名手已经能够利用整个网络中的计算资源。
分布式计算的工作流程:
- 主节点(Master)运行引擎的控制逻辑和评估函数
- 各工作节点(Worker)运行搜索计算任务
- 主节点将搜索任务(一系列着法)分配给工作节点
- 工作节点完成任务后将结果返回主节点
- 主节点汇总结果,执行进一步的分析
(三)评估函数的精细化
名手的评估函数被认为是手工评估时代的巅峰之作。它包括:
- 数百个手工调整的位置特征
- 针对不同局面类型的多套评估参数
- 精细化的子力协同评估
- 深层次的战术威胁检测
- 专门处理空头炮、窝心马、多子归边等典型战术模式的规则
(四)开局库与残局库的社区生态
象棋名手的开局库主要由社区中的高水平棋手维护。这些棋手通过棋中论坛等平台协同工作:
- 定期发布新的开局库版本
- 根据最新大师对局和引擎测试结果更新权值
- 针对不同引擎特点定制开局库
- 通过社区测试验证开局库的有效性
10.3 佳佳象棋与GGzero
佳佳象棋(Jiangui / Jiajia)由李国来开发。佳佳象棋在传统Alpha-Beta引擎达到巅峰的同时,也积极探索了强化学习(Reinforcement Learning)在中国象棋中的应用。
传统版本的佳佳象棋:
佳佳象棋的传统版本基于Alpha-Beta搜索和手工评估函数。它在2010年代初期达到了与名手、旋风相当的棋力水平。佳佳象棋在评估函数的设计上有自己的特色,特别是对防守局面的评估较为准确。
GGzero项目:
GGzero是佳佳象棋团队开发的基于强化学习的中国象棋引擎,直接受到DeepMind AlphaZero的启发。GGzero使用深度神经网络(CNN)代替手工评估函数,通过自我对弈(Self-Play)来学习。
GGzero的技术特点包括:
- 蒙特卡洛树搜索(MCTS):取代传统的Alpha-Beta搜索
- 深度神经网络:使用卷积神经网络(CNN)同时预测棋步的概率和局面的评估值
- 自我对弈学习:通过与自己的过往版本对弈来持续改进
- 计算需求:训练过程需要大量的GPU算力(通常是多个高端GPU运行数周)
GGzero的出现标志着中国象棋引擎"神经网络+强化学习"技术的探索尝试。虽然GGzero的训练过程受到计算资源限制,棋力没有超越当时的顶级Alpha-Beta引擎,但它展示了中国象棋引擎发展的新方向。
10.4 小虫象棋(BugChess)
小虫象棋(BugChess)由刘宗元团队开发,是中国象棋商业引擎重要的一支力量。小虫象棋在2013年第17届计算机奥林匹亚中获得了金牌,是中国象棋商业引擎中的重要力量。在中国象棋软件市场中,它的市场份额和市场认可度极高。
技术特点:
-
高效的Alpha-Beta搜索实现:小虫象棋的搜索算法虽然没有本质性创新,但其工程实现极为扎实。代码经过了大量手工优化,在同等硬件上表现出色。
-
多线程并行搜索:小虫象棋很早就支持多核心并行搜索,在双核和四核机器上具有很好的扩展性。
-
大规模开局库:小虫象棋与社区开局库维护者合作,提供覆盖面极广的开局库。其开局库涵盖了几乎所有主流开局分支,并针对不同棋力水平的用户提供了多个版本。
-
残局库支持:支持Nalimov风格的残局库,在残局阶段可以精确走棋。
-
多平台兼容:小虫象棋支持Windows、Android、iOS等多个平台。其Android版本在移动端象棋软件中具有很高的市场占有率。
商业模式与市场策略:
小虫象棋的商业策略与旋风、名手有所不同:
- 定价相对较低,面向更广泛的用户群
- 支持多种支付方式和授权模式
- 提供免费试用版本
- 持续更新维护,用户支持响应快
用户群体:
小虫象棋的用户群体覆盖面极广:
- 象棋培训机构使用小虫作为教学辅助工具
- 职业棋手使用小虫进行赛前准备和局面分析
- 业余爱好者使用小虫进行日常训练和对弈
- 在线对弈平台的用户使用小虫进行人机配合
小虫象棋虽然没有旋风、名手那样的"冠军光环",但凭借其稳定性、易用性和广泛的平台支持,在中国象棋软件市场中占据了不可忽视的位置。
10.5 2009-2015 引擎多维对比
2009年至2015年是中国象棋引擎商业化的成熟期,各引擎在技术路线、商业模式和市场定位上呈现出差异化发展。以下从多个维度进行系统性对比:
| 对比维度 | 象棋名手 | 象棋旋风 (后期) | 佳佳象棋 (Jiajia) | 小虫象棋 (BugChess) | 南奥象棋 (Nanao) |
|---|---|---|---|---|---|
| 活跃时期 | 2009-2016 | 2005-至今 | 2009-2016 | 2010-至今 | 2012-至今 |
| 开发者 | 蒋志敏+张闽 | 陈朝营 | 李国来 | 刘宗元团队 | 郑明政→南奥团队 |
| 开发组织 | 个人团队 | 个人 | 个人 | 集团团队 | 小团队 |
| 核心技术栈 | PVS+并行+分布式 | PVS+空着裁剪+LMR | GGzero(MCTS+NN)→传统 | PVS+数据驱动 | PVS+手工+数据驱动 |
| 评估方法 | 深度手工(100+特征) | 手工+数据校正 | 手工→NN(后期) | 手工+数据驱动 | 手工+渐进优化 |
| 并行策略 | 多线程+分布式集群 | 多线程(SMP) | 多线程 | 多线程 | 多线程 |
| 协议 | UCI | UCCI | UCI(后期) | UCI | UCCI |
| 许可证 | 闭源商业 | 闭源商业 | 闭源商业 | 闭源商业 | 闭源商业 |
| ICGA成绩 | — | 银牌(2008) | — | 金牌(2013) | — |
| CCMC成绩 | 5次冠军(2009-2014) | 2次冠军(2007,2010) | — | — | — |
| 平台支持 | Windows | Windows/Linux | Windows | Win/Mac/Android/iOS | Windows |
| 定价策略 | 中高端授权 | 中端授权 | 免费→收费 | 低端走量 | 中端授权 |
| 目标用户 | 职业/半职业棋手 | 核心爱好者 | 研究人员/爱好者 | 大众用户/教学 | 爱好者/库作者 |
| 主要优点 | 棋力顶尖,分布式强 | 持续进化,算法好 | 早期MCTS探索 | 跨平台,定价低 | 开局库强,稳定 |
| 主要缺点 | 价格高,售后有限 | 界面差,文档少 | 棋力波动,更新慢 | 棋力上限较低 | 推广有限,知名度低 |
| 历史贡献 | CCMC五连冠 | 最长商业化运营 | AI+象棋结合试验 | 移动端先驱 | 台湾传承 |
| 巅峰棋力(ELO) | ~2850 | ~2780 | ~2550 | ~2500 | ~2600 |
| 显著技术创新 | 分布式搜索架构 | LMR剪枝优化 | 蒙特卡洛树搜索 | Android移植 | 开局库自动化 |
注:此期间象棋名手凭借CCMC五连冠确立了商业引擎第一的地位,但其不参与ICGA等国际赛事也反映了一部分国内商业引擎的策略选择——在国内市场获取商业回报优先于国际学术竞赛。佳佳象棋的GGzero尝试是MCTS技术在中国象棋中的首次系统应用,虽然棋力未达到PVS引擎的水平,但为后来的NNUE时代做了技术铺垫。小虫象棋的成功则证明了跨平台支持和合理定价在扩大用户基础方面的重要性。
第十一章 南奥象棋:从象棋世家到跨时代的传承
11.1 南奥象棋的前身:象棋世家的诞生
南奥象棋(Nanao Chess / sachess)是中国象棋引擎领域一支有着深厚历史传承的重要力量。它的前身是象棋世家(Xiangqi Shijia / “Chess Family”),由台湾开发者郑明政(网名"Poor")于1990年代中期创建。
象棋世家的起源(1995年):
郑明政是台湾的一名小学教师。1995年11月,他利用业余时间开始编写一个名为"zmz"的中国象棋客户端程序,用于在ICCS(国际中国象棋系统)上在线对弈。这个程序最初只是一个简单的象棋界面,但随着郑明政不断添加功能,逐渐演变为一个完整的中国象棋引擎。
2000年,这个软件被正式命名为象棋世家,命名者施金山(Shi Jinshan)赋予了它这个富有文化气息的名字。随后,一个正式的开发团队组建起来:
- 郑明政(Poor):引擎核心开发者,负责搜索算法和评估函数 (使用Visual Basic 6.0 (sp5) 程式语言开发)
- 吴衍奇 :引擎测试和优化
- 唐世彦(Tang Shiyan):引擎测试
- 施金山(Shi Jinshan):开局库采集
- 黄恒山(Huang Hengshan):首席测试员
2000年代初期,象棋世家在台湾和香港地区销售,是中国象棋商业软件市场中的重要品牌之一。象棋世家也是最早通过互联网进行跨境远程开发合作的中国象棋棋软, 象棋世家V4是郑明政,小叶(中国大陆广州)开发的最后一个主要版本。V5则是 郑明政负责引擎(c++源码, 算法继承于自有的VB算法), Oldwu(中国大陆上海)负责界面和中国大陆市场销售的一个主要版本, 此后,由于团队内部的分歧,原团队分裂,出现了由 Oldwu 维护的V6-V9系列版本。
象棋世家在ICGA的成就:
2010年,象棋世家(以Shiga名称参赛)在第15届ICGA计算机奥林匹亚(日本金泽)中获得中国象棋项目金牌。这是象棋世家系列引擎在国际赛事中的最高荣誉。
11.2 南奥象棋的品牌重塑与技术架构
2009年以后, 象棋世家界面作者Oldwu,经过多年对引擎技术的钻研,以南奥象棋(sachess)的名称发布新引擎。引擎的可执行文件名为sachess.exe,因此也常被称为"Sachess"。
技术架构:
南奥象棋是一个基于传统手工评估(HCE, Hand-Crafted Evaluation)的引擎,使用经典的Alpha-Beta搜索架构:
-
搜索算法:PVS(主变搜索)配合迭代加深、空着裁剪(Null Move Pruning)、历史启发剪枝(History Pruning)、渴望窗口(Aspiration Windows)等技术。
-
静态搜索(Quiescence Search):用于缓解地平线效应(Horizon Effect),在搜索到设定深度后继续搜索吃子着法和关键着法。
-
置换表:基于Zobrist哈希的置换表,缓存已搜索局面的结果。
-
着法排序:采用多层排序策略——置换表最佳着法优先,其次是吃子着法(按MVV/LVA原则,即最价值的目标/最低价值的攻击者排序),然后是杀手着法(Killer Moves),最后是历史启发着法(History Heuristic)。
-
搜索扩展:将军扩展(Check Extension)、回吃扩展(Recapture Extension)、将杀威胁扩展(Mate-threat Extension)等技术。
-
局面表示:使用位行位列(bit-rank/bit-file)技术进行高效的着法生成。
-
评估函数:传统手工评估,包含子力价值、位置价值、棋子活动性、将帅安全性等多个维度。南奥象棋的评估函数在手工评估时代经过了精细调优。
开局库:
南奥象棋的开局库基于数千局大师级对局构建,包括全国象棋比赛、象甲联赛、个人赛、弈天华山等高水平对局数据。开局库支持云开局库和云残局库的在线查询。
多核支持:
南奥象棋推出了多个版本以支持不同的硬件配置:
- 双核版(免费发布):针对双核CPU优化
- 四核至尊版v1.5:针对四核CPU优化
- 32位版和64位版同时提供
界面功能:
南奥象棋的配套GUI具有以下功能:
- Office 2003风格界面
- 任意局面的分析模式
- 支持XML格式的棋谱记录
- 兼容XQF、CBL、PGN、MXQ、CHE等多种棋谱格式
- 开局库管理和编辑
- 引擎配置管理
11.3 南奥象棋的比赛成绩
南奥象棋在中国机器博弈锦标赛和亚洲人工智能象棋邀请赛等赛事中取得了以下成绩:
| 年份 | 赛事 | 成绩 |
|---|---|---|
| 2017 | 第11届中国计算机博弈锦标赛(重庆) | 亚军 |
| 2017-10 | 第2届楚河汉界杯亚洲象棋人工智能对决邀请赛(荥阳) | 季军 |
| 2019 | 第3届楚河汉界象棋人工智能对决赛 | 参赛 |
2017年第11届中国计算机博弈锦标赛:
在重庆举办的第11届中国计算机博弈锦标赛中,南奥象棋获得亚军,这是南奥象棋在中国大陆赛事中取得的最佳成绩之一。比赛中,南奥象棋展现了出色的中局战术能力和稳定的残局处理水平。
2017年第2届楚河汉界杯:
在河南荥阳举办的楚河汉界杯亚洲象棋人工智能对决邀请赛中,南奥象棋与象棋旋风、象棋天启、Alpha猫等强劲对手同台竞技。比赛使用统一的36核超级计算,开局库被禁用且强制8步出库。
南奥象棋在预赛前三轮中连续战平象棋旋风、象棋天启和Alpha猫,展示了稳定的竞技状态。最终获得季军(第三名)和5000元奖金。冠军为象棋旋风,亚军为象棋名手。
棋力评估:
根据社区测试数据,南奥象棋免费版的棋力大约为2890 ELO(在Kaka的引擎等级分排行榜上),相当于象棋名手3.26的水平,远超人类特级大师,但明显落后于现代NNUE引擎(皮卡鱼约4005 ELO)。
在社区引擎等级分排行中,南奥象棋位于第16位左右(共约26个测试引擎),属于第二梯队传统引擎的水平。
11.4 南奥象棋的授权模式与社区影响
南奥象棋的授权模式经历了从商业到免费的变化:
- 南奥象棋双核版:免费发布,适合低端电脑使用
- 四核至尊版:可能为付费版本
南奥象棋的源代码从未公开。虽然没有明确的开源许可证,但双核版的免费发布使大量中国象棋爱好者能够接触到商业级别的引擎分析能力。
11.5 南奥象棋的历史意义
南奥象棋在中国象棋引擎发展史上的地位:
-
商业转免费的先行者:南奥象棋免费双核版的发布模式,是商业引擎向免费模式转型的早期尝试之一。
-
传统HCE时代的标杆:在NNUE普及之前,南奥象棋的评估函数调优水平代表了传统手工评估引擎的高水准。
-
社区记忆的载体:南奥象棋的流传版本和比赛记录,承载了中国象棋引擎社区对2000-2010年代引擎发展历程的记忆。
最新已知版本为南奥象棋1.6版(约2017-2019年)。此后,南奥象棋的更新似乎已经停止,但其在社区中的影响力和在低端电脑上的实用性仍然存在。