Skunk is a fast and efficient chess bot written in C++ by Jeremy Colegrove. This project was developed for fun and as a learning experience, with a focus on speed and performance. Skunk uses bitboards as the internal data structure for the chess board representation, which allows for efficient move generation and board manipulation. The engine has an Elo rating of around 2400 and features various search optimizations, including Late Move Reductions (LMR), Principal Variation Search (PVS), transposition tables, verified null move pruning, and killer/history heuristic. The development of Skunk took approximately 9 months.
To use Skunk Chess Bot, first clone the repository:
git clone https://github.com/username/Skunk.git
cd Skunk
To build Skunk, make sure you have a C++ compiler and CMake installed. Follow these steps:
-
Create a build directory and navigate to it:
mkdir build cd build
-
Generate the build files with CMake:
cmake ..
-
Compile the project:
make
To run Skunk, execute the binary from the build directory:
./Skunk
Skunk uses the Universal Chess Interface (UCI) protocol for communication. Refer to the UCI commands section for a list of supported commands.
I would like to thank the open-source community and various resources that have helped me develop Skunk. This project would not have been possible without their valuable insights and guidance.
- uci
- Tells the engine to use the UCI protocol.
- Expected response:
id name [EngineName] id author [AuthorName] (optional: engine options) uciok
- isready
- Asks the engine if it's ready to receive commands.
- Expected response:
readyok
- ucinewgame
- Informs the engine to start a new game.
- No response expected.
- position [fen/startpos] [moves]
- Sets the current position on the board.
- Use "startpos" for the standard initial position or provide a FEN string for a specific position.
- Optionally, add a sequence of moves (e.g., "e2e4 e7e5") to reach the desired position.
- go [parameters]
- Tells the engine to start calculating the best move.
- Parameters: depth, movetime
- Expected response:
bestmove [Move]
- quit
- Asks the engine to quit the program.