1 个不稳定版本
0.1.0 | 2021年9月22日 |
---|
#1954 在 游戏开发
每月 24 次下载
用于 blunders
390KB
8K SLoC
Blunders 引擎
Blunders 引擎是 Blunders 象棋引擎应用程序的核心库。
特性
- 棋盘位置/棋盘状态的位图和邮箱表示。
- 合法走法生成器。
- UCI 通信设施。
- 双层共享置换表,使用互斥锁或原子操作进行同步。
- 基于 Alpha-Beta 剪枝的 Minimax 搜索,迭代加深搜索,静态搜索。
- 统一的错误类型。
- 增量 Zobrist 哈希。
- 手工评估。
- 简单的时间管理策略。
基本用法
Blunders 引擎可以通过手动组合原始组件或使用 Engine
API 来使用。
使用具有 10 兆字节容量的置换表搜索起始位置到 4 层深度
use blunders_engine::{search, Position, TranspositionTable};
let tt = TranspositionTable::with_mb(10);
let position = Position::start_position();
let ply = 4;
let search_results = search::search(position, ply, &tt);
println!("best move: {}, nodes/sec: {}", search_results.best_move, search_results.nps());
assert_eq!(search_results.depth, ply);
使用引擎 API 做同样的事情
use blunders_engine::{EngineBuilder, Position, Mode};
let ply = 4;
let mut engine = EngineBuilder::new()
.position(Position::start_position())
.transpositions_mb(10)
.build();
let search_results = engine.search_sync(Mode::depth(ply, None));
println!("best move: {}, nodes/sec: {}", search_results.best_move, search_results.nps());
assert_eq!(search_results.depth, ply);
依赖项
~375KB