- Bitboard board representation
- Magic Bitboards
- Legal move generation
- Precalculated attack tables
- Storing moves in a 16 bit word
- Copy/make moving
- Simple evaluation (material and piece-square tables, MVV-LVA)
- Principal Variation Search
- Move ordering
- Time management
- UCI
Prerequisites:
- A C++ compiler
- Access to
make
command
-
Clone the repo to your PC
-
Run the command
make
in the root directory
You can specify the compiler with the flag
CXX
and the executable name withEXE
. By default they areg++
andEleanor
respectively.
- Run the executable
There are some commands that you can use the engine with.
position
: Set the current position of the board with FEN.position [FEN]
orposition startpos
can be used.ucinewgame
resets the position and game statequit
terminates the programgo
is the command that asks what is the best move in the current position (search), but we have to give it some parameters:wtime
btime
winc
binc
The first letter tells the color of player wtime sets the remaining time of the white player and winc sets the increments for the white player. It's important that these parameters are given in milliseconds!stop
stops the current searchbench
tests the search speed of the engine on a set of positions
Also, the engine can be connected to any GUI software that has UCI support.
Maksim Korzh's chess engine in C series
Stockfish discord helping community
The project is still in progress and developed constantly. Contributions are highly appreciated.