1 个不稳定版本
0.1.0 | 2021年9月22日 |
---|
#1457 in 游戏开发
410KB
8K SLoC
Blunders
通用国际象棋接口 (UCI) 国际象棋引擎。
Blunders 目前仍在开发中。
当前功能
- 可停止的 Negamax,带 alpha-beta 剪枝、静态搜索和迭代加深搜索
- 共享置换表
- 走法排序
- 位图位置表示
- 增量 Zobrist 哈希
- 响应式 UCI 兼容 I/O
- FEN 字符串解析
构建和运行 Blunders
Blunders 主要支持 64 位 Windows 10 和 Linux,MacOS 仅通过 CI 进行测试。以下命令在两个平台上都应能工作。
通过 Cargo
通过 rustup 安装最新的稳定 Rust 编译器和 cargo。下载或克隆 Blunders 仓库,并导航到根目录。
仅构建,运行以下命令:cargo build --release
构建和运行,运行以下命令:cargo run --release
Blunders 可执行文件默认位置为 blunders/target/release/blunders
。
使用 Blunders
Blunders 是一个 UCI 兼容的国际象棋引擎,最简单的方式是从国际象棋 GUI 或 CLI 程序中使用它,而不是直接运行。Blunders 在开发过程中使用了国际象棋 GUI Cute Chess,并且已知在其中表现良好。
要直接使用 Blunders,请查看 UCI 规范以找到如何在与 Blunders 交互时的完整说明。最终 Blunders 将获得一组非标准命令,以便直接使用。
Blunders 运行时设置
Hash x
:一个整数大小以兆字节x
设置引擎的哈希表大小Clear Hash
:一个按钮命令,告诉引擎清除其哈希表,实际上忘记了其搜索历史Ponder bool
:告诉引擎是否允许 pondering。允许此设置意味着引擎可能允许在对手回合时进行搜索Threads x
:一个整数x
告诉引擎它可以使用的最大线程数。这最好设置为您的计算机 CPU 支持的线程数Debug bool
:告诉引擎打印调试或额外信息字符串
通过UCI示例直接使用
更改默认设置,然后退出
blunders/target/release>./blunders
setoption name Hash value 20
setoption name Ponder value false
setoption name Threads value 4
setoption name Debug value true
setoption name Clear Hash
quit
blunders/target/release>
搜索起始位置到深度3以获取信息和bestmove输出,然后退出
blunders/target/release>./blunders
position startpos
go depth 3
info depth 3 score cp +10 time 6 nodes 10000 nps 1666666 pv d2d4 d7d5 c2c4
bestmove d2d4
quit
blunders/target/release>
测试失误
测试通过cargo
进行。可以运行几个命令来测试所有crate。请注意,存在额外的调试断言,因此在调试和发布模式下进行测试可能是有益的。
运行相对较快的测试:cargo test --all
或cargo test --all --release
运行所有测试:cargo test --all -- --include-ignored
或cargo test --all --release -- --include-ignored
基准测试失误
Blunders有一些简单的基准测试,可以使用cargo bench --all
运行。
1.0的检查清单
- 开发稳定的引擎API
- 支持单线程和多线程搜索
- 阻塞和非阻塞
search
- 为WASM编译
- 为无GUI的游戏添加Blunders非UCI命令
- 清理
blunders-engine
的库文档 - 编写用户入门指南
许可证
本项目根据GNU GPL v3.0许可。
Copyright (C) 2021 Paulo Lemus
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
依赖项
~375KB