PZChessBot is a basic negamax engine.
Author: Kevin Lu
v.4.0 What's Changed
PZChessBot v4.0 is now here! Featuring a fully self-trained NNUE, bootstrapped from a random network.
The network file is provided in case you want it, but is not necessary to run the program. It will work as a standalone executable.
+158 +/- 8 Elo to v3.0 @ STC (8 + 0.08)
+134 +/- 12 Elo to v3.0 @ LTC (60 + 0.6)
What's Changed
Use TT eval (when available) instead of static eval by @kevlu8 in #69
Change move selection to use a lazy method by @kevlu8 in #70
Add razoring by @kevlu8 in #71
Only probe tt once at beginning by @kevlu8 in #72
Only do NMP when static eval is high enough by @kevlu8 in #73
Add SPSA values by @kevlu8 in #74
Do not reset TT on position command by @kevlu8 in #75
Better ordering by @kevlu8 in #76
Add LMP by @kevlu8 in #77
Add Singular Extensions by @kevlu8 in #78
Use improving flag to lower RFP margin by @kevlu8 in #79
Add history pruning by @kevlu8 in #80
Add negative extensions by @kevlu8 in #81
Add QSearch futility pruning by @kevlu8 in #82
Reduce pv nodes less by @kevlu8 in #83
Reduce more if tentry is a capture by @kevlu8 in #84
fix killer move handling by @kevlu8 in #85
Add horizontal mirroring by @kevlu8 in #86
Add is_pseudolegal function by @wdotmathree in #87
Switch bucketing system by @kevlu8 in #88
skip low depth nodes with bad see by @kevlu8 in #89
Do not clear corrhist on search by @kevlu8 in #90
Add pretty output by @kevlu8 in #91
Raise the depth of the entire node when SE is done by @kevlu8 in #92
Only allow tt cutoffs in PV and fix TT handling by @kevlu8 in #103
Add MultiPV support by @kevlu8 in #104
Completely overhaul PVS system by @kevlu8 in #106
Change < to <= in razoring by @kevlu8 in #105
Do not do eval correction when ttEval is mate by @kevlu8 in #107
Return average of eval and beta in RFP by @kevlu8 in #110
Add TT to qsearch by @kevlu8 in #111
Use TT eval when available in QS by @kevlu8 in #112
Reduce cutnodes more by @kevlu8 in #113
Use a dynamic PVS SEE margin by @kevlu8 in #115
Adjust NMP R-value based on depth by @kevlu8 in #116
Allow razoring to depth 8 by @kevlu8 in #118
Add corrhist based on a non-pawn position hash by @wdotmathree in #119
Do shallower NMP when far exceeding beta by @kevlu8 in #120
Only do LMR at depth over 2 by @kevlu8 in #121
Don't do LMR on early moves by @kevlu8 in #122
Add captures only movegen for quiescence by @wdotmathree in #123
Use lazy move picking for QS by @kevlu8 in #124
Test adding finny-like tables by @kevlu8 in #125
Only store upper 32 bits of hash by @kevlu8 in #126
Simplify out reset logic by @kevlu8 in #127
Fail firm when failing high by @kevlu8 in #128
Change time management by @kevlu8 in #129
Add complexity time management by @kevlu8 in #130
Disallow NMP at low depth by @kevlu8 in #131
Test adding TT prefetching by @kevlu8 in #132
Do not do complexity TM for captures, promotions, and in check by @kevlu8 in #133
Reduce less on killer moves by @kevlu8 in #134
Do more reduction in LMR by @kevlu8 in #135
Do less LMR on rootnode by @kevlu8 in #137
Do not allow entering QS when TT move is available by @kevlu8 in #136
Do more NMP when improving by @kevlu8 in #138
Do not allow NMP in singular searches by @kevlu8 in #139
Improve makefile and add LTO by @kevlu8 in #140
Fix ucinewgame behavior by @kevlu8 in #141
Reduce history magnitudes for each search by @kevlu8 in #142
Add soft node time management by @kevlu8 in #143
Fix node counting by @kevlu8 in #144
Attempt to fix mate score handling by @kevlu8 in #145
Don't store new move in TT in allnodes by @kevlu8 in #146
Do not update corrhist on mates by @kevlu8 in #147
Only do IIR on PV and Cutnodes by @kevlu8 in #148
Raise SE margin by @kevlu8 in #149
Use ttDepth - 3 in SE by @kevlu8 in #150
Break out of moveloop directly by @kevlu8 in #151
Change history update formula by @kevlu8 in #152
Do more LMR in nonPV nodes by @kevlu8 in #153
Fix illegal move issue (disallow pruning when no best move) by @kevlu8 in #154
Add TTPV flag and do more LMR in TTPV nodes by @kevlu8 in #155
Add 1-ply conthist for move ordering only by @kevlu8 in #156
Clean up square control by @wdotmathree in #159
Use conthist for history pruning by @kevlu8 in #158
2-ply conthist by @kevlu8 in #157
Remove counter-move history by @kevlu8 in #160
Remove __search function by @kevlu8 in #162
PzChessBot 2.0 vs other engines:
Emerald 0.3.0 | 2/2 | +2 | 2 Partii |
Ironfang 1.0 | 2/2 | +2 | 2 Partii |
Fridolin 4.00 JA | 2/2 | +2 | 2 Partii |
Freda 1.1 | 2/2 | +2 | 2 Partii |
Libra-chess 1.0.1 | 2/2 | +2 | 2 Partii |
Kraken 2025-06-16 | 1.5/2 | +1 | 2 Partii |
Maelstrom 2.1.0 | 1.5/2 | +1 | 2 Partii |
Lunar 0.2.1 | 1/2 | +0 | 2 Partii |
Halogen 13 | 0.5/2 | -1 | 2 Partii |
Zangdar 4.04 JA | 0.5/2 | -1 | 2 Partii |
Celeris 1.0 | 0/2 | -2 | 2 Partii |
Fire 10 | 0/2 | -2 | 2 Partii |
Stormphrax 7.0.0 | 0/2 | -2 | 2 Partii |
Zangdar 4.04 | 0/2 | -2 | 2 Partii |
Aku 2025.6.12 JA | 0/2 | -2 | 2 Partii |
PlentyChess 6.0.5 JA | 0/2 | -2 | 2 Partii |
Fire 9.3 JA | 0/2 | -2 | 2 Partii |
Comments
Post a Comment