1 个不稳定版本

0.1.0 2021年9月22日

#1954游戏开发

每月 24 次下载
用于 blunders

GPL-3.0-only

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