Add a README
This commit is contained in:
parent
182bf81126
commit
dae5179947
1 changed files with 113 additions and 0 deletions
113
README.md
Normal file
113
README.md
Normal file
|
@ -0,0 +1,113 @@
|
|||
ChessFriend
|
||||
===========
|
||||
|
||||
A chess engine written in Rust.
|
||||
|
||||
The project is divided into crates for major components of the engine. These
|
||||
crates are collected in a Cargo workspace. All crates have the `chessfriend_`
|
||||
naming prefix. The directory structure omits this prefix, and I also frequently
|
||||
do when referring to them.
|
||||
|
||||
|
||||
|
||||
## Engine Crates
|
||||
|
||||
The engine is divided into several crates, each providing vital types and
|
||||
functionality.
|
||||
|
||||
|
||||
|
||||
### `core`
|
||||
|
||||
A collection of types for representing core concepts in a chess game and the
|
||||
engine. Types like `Color` (player or piece color), `Shape` (the shape of a
|
||||
piece: knight, etc), `Piece` (a piece of a particular color and shape), and
|
||||
`Score` (for scoring a board position) live here.
|
||||
|
||||
|
||||
|
||||
### `bitboard`
|
||||
|
||||
Implements an efficient BitBoard type. Bitboards use a 64-bit bit field to mark a
|
||||
square on a board as occupied or free.
|
||||
|
||||
|
||||
|
||||
### `board`
|
||||
|
||||
Implements a `Board` type that represents a moment-in-time board position. FEN
|
||||
parsing and production lives here.
|
||||
|
||||
|
||||
|
||||
### `moves`
|
||||
|
||||
The `Move` type lives here, along with routines for encoding moves in efficient
|
||||
forms, parsing moves from algebraic notation, and recording moves in a game
|
||||
context. Additionally, the move generators for each shape of piece are here.
|
||||
|
||||
|
||||
|
||||
### `position`
|
||||
|
||||
Exports the `Position` type, representing a board position within the context of
|
||||
a game. As such, it also provides a move list, and methods to make and unmake
|
||||
moves.
|
||||
|
||||
|
||||
|
||||
## Support Crates
|
||||
|
||||
These crates are for debugging and testing.
|
||||
|
||||
|
||||
|
||||
### `explorer`
|
||||
|
||||
This crate implements a small command-line application for "exploring" board
|
||||
positions. I meant for this program to be a debugging utility so that I could
|
||||
examine bitboards and other board structures live. It has grown over time to
|
||||
also support more aspects of interacting with the engine. So you can also use it
|
||||
to play a game!
|
||||
|
||||
|
||||
|
||||
### `perft`
|
||||
|
||||
A small Perft utility that executes perft to a given depth from some starting
|
||||
position.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Building
|
||||
|
||||
Build the engine in the usual Rusty way.
|
||||
|
||||
```sh
|
||||
$ cargo build
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
Test in the usual Rusty way.
|
||||
|
||||
```sh
|
||||
$ cargo test
|
||||
```
|
||||
|
||||
The engine has a fairly comprehensive unit test suite, as well as a decent pile
|
||||
of integration tests.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Authors
|
||||
|
||||
This engine is built entirely by me, Eryn Wells.
|
Loading…
Add table
Add a link
Reference in a new issue