Sunfish 国际象棋引擎
Sunfish 是一个用 Python 编写的极简国际象棋引擎,核心代码仅 111 行,支持 UCI 协议,适合学习引擎原理与实验。
爱鲜报评分
0.0
0 人评分
3.3k
星数
否
中文
Python
主语言
是
活跃
24
贡献者
人工分析
EDITORIAL推荐理由
代码极简且可读性高,是理解国际象棋引擎搜索与评估的绝佳教材。支持 UCI 协议,可接入多种 GUI 和比赛工具。社区活跃,衍生项目丰富,适合二次开发与算法实验。
适用场景
- 学习国际象棋引擎原理
- AI 搜索算法实验
- 评估函数研究
- 接入 UCI GUI 对弈
- 嵌入式或极简环境部署
优点
- 代码量极少,易于阅读和修改
- 支持标准 UCI 协议,兼容主流 GUI
- 提供 NNUE 版本,棋力更强
- 有丰富的衍生项目和社区支持
- 可使用 PyPy 显著提升搜索速度
缺点
- 不支持 50 步和棋规则
- 纯 Python 性能有限,依赖 PyPy 优化
- 评估函数简单,棋力有限
- 文档主要为英文
上手难度
入门
Sunfish 国际象棋引擎
Sunfish 是一个用 Python 编写的极简国际象棋引擎,核心代码仅 111 行(去除注释和空白后 126 行)。它实现了完整的国际象棋规则(除 50 步和棋规则外),并支持标准 UCI 协议,可以轻松接入各种图形界面和比赛工具。
核心特点
- 极简代码:整个引擎压缩后仅约 3KB,适合学习和实验。
- UCI 支持:可通过
sunfish-uci命令与 Arena、Cute Chess、PyChess 等 GUI 对弈。 - NNUE 版本:提供基于神经网络的 NNUE 版本,棋力比经典版高约 200 Elo,且整个引擎仅 4096 字节。
- 高效搜索:使用 MTD-bi(NegaC*)搜索算法和分段平方表评估函数。
快速开始
安装后直接在终端运行:
pip install sunfish
sunfish
或从仓库检出运行:
python sunfish.py
使用 UCI 工具
将引擎指向 sunfish-uci 或 ./sunfish.py 即可。例如使用 fastchess 进行命令行对弈:
fastchess -engine cmd=sunfish-uci name=sunfish \
-engine cmd=<other> name=other \
-each proto=uci tc=30+1 -rounds 10 -games 2
性能优化
Sunfish 会自动检测并使用 PyPy3(如果已安装),PyPy 下的搜索速度约为 CPython 的 2.7 倍,可提升约 100 Elo。
测试
项目使用 pytest 进行测试:
python3.12 -m pytest
衍生项目
Sunfish 拥有丰富的衍生版本,包括 MicroPython 版、Rust 移植版、Go 移植版、JavaScript 版等,适合不同平台和语言的学习者参考。
评论
- 暂无评论,来写第一条吧。