#chess-engine #chess #engine #uci #checkmate

app blunders

UCI 国际象棋引擎应用程序

1 个不稳定版本

0.1.0 2021年9月22日

#1457 in 游戏开发

GPL-3.0-only

410KB
8K SLoC

Blunders

Windows CI Ubuntu CI MacOS CI

通用国际象棋接口 (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 --allcargo test --all --release
运行所有测试:cargo test --all -- --include-ignoredcargo 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