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