A UCI chess engine written in CPP.
Play against it here.
- 16 bit move [wiki]
- 80 byte state (I.e. pieces on board, castling rights, EP rights, and hash)
- Make/unmake move through stack [wiki]
- Make move clones state, then pushes modified state to stack
- Unmake simply pops from stack
- Custom move generation
- Moves for sliding pieces are generated in a piecewise manner from a series of expanding rings.
- Negamax [wiki]
- Alpha-Beta Pruning [wiki]
- Iterative Deepening [wiki]
- Quiescence Search [wiki]
- PVS [wiki]
- Move Ordering
- Transposition Table [wiki]
- Material Point Value [wiki]
- Piece-Square Tables [wiki]
- Pawn Structure
- Doubled pawns
- Passed pawns
- Tapered by game phase [wiki]
Navigate to root folder of project, then run the following to build engine.
mkdir build &&\
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DIGNORE_TEST=true &&\
cmake --build build
The executable can then be found in chess_engine/build/engine/
.
# PLAYER | : | RATING | POINTS | PLAYED | (%) |
---|---|---|---|---|---|
1 Sunbird v1.2.4 | : | 520.3 | 666.0 | 1107 | 60 |
2 Sunbird v1.2.3 | : | 448.1 | 1242.5 | 2387 | 52 |
3 Sunbird v1.2.2 | : | 384.1 | 577.5 | 1254 | 46 |
4 Sunbird v1.2.1 | : | 302.2 | 127.0 | 205 | 62 |
5 Sunbird v1.2.0 | : | 265.2 | 117.0 | 205 | 57 |
6 Sunbird v1.1.2 | : | 238.0 | 109.5 | 205 | 53 |
7 Sunbird v1.1.1 | : | 221.8 | 105.0 | 205 | 51 |
8 Sunbird v1.1.0 | : | 216.4 | 103.5 | 205 | 50 |
9 Sunbird v1.0.6 | : | 146.0 | 83.5 | 201 | 42 |
10 Sunbird v1.0.5 | : | 44.1 | 57.5 | 200 | 29 |
11 Sunbird v1.0.4 | : | 13.6 | 50.5 | 200 | 25 |
12 Sunbird v1.0.0 | : | 0.0 | 47.5 | 200 | 24 |