Skip to content

colding10/Kingfish

Repository files navigation

Kingfish

A C++ UCI-speaking chess engine. Kingfish is rated at ~2000 ELO on lichess.org.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Usage
  3. Roadmap
  4. License

About The Project

Kingfish is a UCI chess engine built in C++. It was written from scratch, however it was inspired by Stockfish and Sunfish, two very popular chess engines. The engine was roughly estimated via the chess.com Stockfish ELO estimator to about 2000 ELO. Additionally, on lichess.org, it's rating is about 2000 ELO.

I created a lichess account! Play Kingfish here: https://lichess.org/@/KingfishBot.

The engine supports most but not all of the common UCI commands. It is tailored to work with Cute Chess, an application for playing UCI chess engines.

The engine plays a very capable and competitive game of chess. It blunders once in a while however, and there are a few kinks to be worked out.

Usage

Kingfish is a software program designed for playing chess on a computer. However, it lacks a graphical user interface (GUI) which is necessary to visually display a chessboard and to facilitate the input of moves. Third-party developers have created separate GUIs that can be found online. To use Kingfish with a particular GUI, consult the documentation provided with that GUI for instructions on integrating the two applications.

Kingfish speaks UCI, a protocol for chess engines. See engine-interface.txt for a description of the UCI protocol.

Roadmap

  • Convert program (GUI) into CLI
  • Implement basic engine interfaces (UCI)
  • Play test games and debug
  • Improve engine
    • Add bitboards
    • Bitwise storage of moves and pieces
    • Avoid copying positions
    • Threading
  • Implement all engine interfaces (UCI)

See the open issues for a full list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Kingfish is free and distributed under the GNU General Public License version 3 (GPL v3). Essentially, this means you are free to do almost exactly what you want with the program, including distributing it among your friends, making it available for download from your website, selling it (either by itself or as part of some bigger software package), or using it as the starting point for a software project of your own.

The only real limitation is that whenever you distribute Kingfish in some way, you MUST always include the license and the full source code (or a pointer to where the source code can be found) to generate the exact binary you are distributing. If you make any changes to the source code, these changes must also be made available under GPL v3.

Project Link: https://github.com/colding10/Kingfish