Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/JeremyMColegrove/skunk_chess_bot

A blazing fast chess move analyzer
https://github.com/JeremyMColegrove/skunk_chess_bot

Last synced: about 2 months ago
JSON representation

A blazing fast chess move analyzer

Awesome Lists containing this project

README

        

Skunk Chess Bot
===============

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.

Table of Contents
-----------------

1. [Getting Started](#getting-started)
2. [Building Skunk](#building-skunk)
3. [Running Skunk](#running-skunk)
4. [Acknowledgements](#acknowledgements)

Getting Started
---------------

To use Skunk Chess Bot, first clone the repository:

```bash
git clone https://github.com/username/Skunk.git
cd Skunk
```

Building Skunk
--------------

To build Skunk, make sure you have a C++ compiler and CMake installed. Follow these steps:

1. Create a build directory and navigate to it:

```bash
mkdir build
cd build
```

2. Generate the build files with CMake:

```bash
cmake ..
```

3. Compile the project:

```bash
make
```

Running Skunk
-------------

To run Skunk, execute the binary from the build directory:

```bash
./Skunk
```

Skunk uses the Universal Chess Interface (UCI) protocol for communication. Refer to the [UCI commands section](https://github.com/username/Skunk#universal-chess-interface-uci-commands) for a list of supported commands.

Acknowledgements
----------------

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.

Universal Chess Interface (UCI) Commands
========================================



  1. uci

    • Tells the engine to use the UCI protocol.

    • Expected response:

      id name [EngineName]
      id author [AuthorName]
      (optional: engine options)
      uciok





  2. isready

    • Asks the engine if it's ready to receive commands.

    • Expected response: readyok




  3. ucinewgame

    • Informs the engine to start a new game.

    • No response expected.




  4. 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.




  5. go [parameters]

    • Tells the engine to start calculating the best move.

    • Parameters: depth, movetime

    • Expected response: bestmove [Move]




  6. quit

    • Asks the engine to quit the program.