4 个版本
0.1.3 | 2023 年 10 月 3 日 |
---|---|
0.1.2 | 2023 年 6 月 18 日 |
0.1.1 | 2023 年 6 月 18 日 |
0.1.0 | 2023 年 6 月 18 日 |
#640 在 游戏开发
21 每月下载次数
140KB
3.5K SLoC
Chess-Lib
开发
初始化
使用以下命令启用 git 预提交钩子: chmod +x .githooks/pre-commit && git config --local core.hooksPath
测试
要运行所有测试,请使用 cargo test
。这将也会运行更昂贵的测试。在开发过程中,您可以使用 cargo test --no-default-features
来运行仅包含快速测试。
代码生成
生成魔法条目: cargo run --release chess generate > /tmp/magics_entries.rs && mv /tmp/magics_entries.rs src/engine/chess/magics_entries.rs
调试
性能分析
为了初步了解,我们可以在 Linux 上使用 cargo-flamegraph
创建 flamegraph,通过以下命令运行: cargo build --release && flamegraph -o my_flamegraph.svg -- target/release/chess-lib chess perft --fen "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -" --depth 5
对于性能分析,我们可以在Linux上使用perf
。运行perft命令并使用perf record进行性能分析,直到退出:cargo build --release && perf record -F99 --call-graph dwarf target/release/chess-lib chess perft --fen "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -" --depth 5
这将输出一个名为perf.data
的文件。
要查看性能分析结果,请使用perf report
,要查看特定的数据文件,可以使用perf report -i <path-to-perf-data-file>
。
或者,要比较报告,可以使用perf diff <path-to-base-line-perf-data-file> <path-to-new-perf-data-file>
Stockfish & Perft
Stockfish
下载 Stockfish 并使用以下命令编译它:make -j build ARCH=x86-64-modern
。然后运行 ./stockfish
您可以使用例如 position fen rnbqkbnr/1ppppppp/p7/8/8/7P/PPPPPPP1/RNBQKBNR w KQkq - 0 1
输入一个特定的FEN。
您也可以通过输入 d
来可视化它。
然后,要运行具有特定深度(例如3)的perft,请输入 go perft 3
Perft
运行例如 `cargo run --release chess perft --fen "rnbqkbnr/1ppppppp/p7/8/8/7P/PPPPPPP1/RNBQKBNR w KQkq - 0 1" --depth 3
调试
首先编译一个发布版本,执行 cargo build --release
有一个调试脚本可以通过以下命令运行:python perft.py <path-to-stockfish-executable> <path-to-rechess-engine-executable> "<fen>" <depth>
发布
要发布新的crate版本,您需要执行以下操作
- 更新
Cargo.toml
中的版本号,包括version
和documentation
- 运行
cargo test
以确保所有测试通过 - 通过运行
cargo doc --no-deps --open
来检查生成的文档。 - 提交 Git 修改
- 运行
cargo publish --dry-run
来确保在发布前没有警告或错误。 - 通过运行
cargo package --list
来检查生成的 .crate 文件。 - 运行
cargo publish
将 crate 发布到 crates.io。
依赖项
~3.5–5MB
~92K SLoC