A UCI chess engine written in C++. GUI is developed using GTK4.
Coding blog: What, when, why I wrote what I wrote
@SohamChessBot is on LiChess: Watch or Challenge
- Board representation
- Array of 64 pieces
- Search
- Minimax with α-β pruning
- Quiescence search
- Iterative deepening
- Mate distance pruning
- Null move pruning
- Late move reduction
- Check extension
- Repetition draw detection using transposition table
- Move ordering
- Capture, en passant, promotion moves are ordered first
- Evaluation
- Piece-square tables
- Material
- Mop-up evaluation
- Perft
- Time management
- Time per move
- Time per game
- Infinite
- UCI protocol
- GUI
- Premoves
- Flip board
- Promotion
- Open in LiChess
- Move navigation
- FEN board setup
None as of now.
I wanted to learn more about chess engines and how they work. I also wanted to learn more about C++.
I read a lot of articles and watched a few videos on chess programming. I used Chess Programming Wiki as a reference time and again. I also spent a lot of time reading the source code of Stockfish.
Linux:
make
./main # for UCI engine
./gui # for GUI chess application
Haven't thought of yet.