Jakob256 / PurplePanda

Chess Engine
2 stars 0 forks source link
chess-engine

PurplePanda Chess Engine

Have fun exploring the code or playing the engine (UCI).

My goal is to truely understand what it takes to create a 2000 Elo chess engine, and learn a bunch while creating it.

Playing/Compiling it yourself

Compiling "UCI_wrapper.cpp" will give you the latest PurplePanda version.

g++ UCI_wrapper.cpp -o PurplePanda.exe -march=native -O3

Alternatively, find the executables under "Releases". You will have to copy the two provided dll files also to the same location as the engine.

Versions

Version Date Score against

previous version

CCRL rating Changes
17 20 Jun 2024 60% (+70 Elo) - move representation changed to a single 32-bit number
- quiescence search increased from usually 2 ply to always 4 ply
- moveordering additionally uses PST
- moves to leaf nodes have to be the top ranked move after moveordering
- middlegame PST is updated before the search to reflect mobility for rooks and bishops
16 12 Apr 2024 56% (+42 Elo) 1595 - tempo bonus
15 29 Mar 2024 62% (+85 Elo) - tapered evaluation
- tuning of Piece-Square Tables for middle- and endgame based on Texel's tuning method on games from lichess.org
14 20 Jan 2024 58% (+56 Elo) 1460 - improved move ordering; used at every depth
- more aggressive pruning at frontier nodes
- 3men Distance-To-Mate tablebase used by interior node recognizer
13 4 Sep 2023 61% (+78 Elo) - beta-cutoffs at frontier nodes
- tuning of a search parameter
12 8 Aug 2023 58% (+56 Elo) 1389 - improved move generator: finding attacked squares/ pinned pieces
- sorting moves incorporated into the move generation; active at depth ≤ 5
11 20 Jul 2023 63% (+92 Elo) - true iterative deepening: hash lookup for previous best moves at depth ≤ 5
- iterative hash updates
- no pseudo-legal moves generated at high depths
- bug test introduced with perft
10 22 Aug 2022 72% (+164 Elo) 1236 - simple Piece-Square Tables for middle- and endgame
- PST evaluations are updated iteratively
- set PST before the search
- incomplete UCI support