Internals for Developers

 

A short overview of the techniques used in some of my engines. I also rated the techniques with regard to playing strength - based on my experience.

 

  Hagrid public 0.7.56 Hagrid private 0.9.36 Snitch 1.0.0 Importance
Boardrepresentation 0x88 no yes no -
Boardrepresentation plain 8x8 no no yes 0
Boardrepresentation bitboard yes very few no +
Boardrepresentation attackboards yes no no 0
Boardrepresentation attacktables no no yes +
Boardrepresentation piece lists yes yes yes ++
Movegen base bitboard, attackboard 0x88, ray casting piece lists, tablebased +
Generated moves pseudo valid pseudo valid valid 0
Movegen undo yes yes no +
Alpha Beta / PVS yes yes yes +++
PN search no experimental no -
Book yes no yes +
Book Learning no no yes 0
EGTBs yes yes yes +
SEE sometimes no no 0
Checks in qsearch no no yes 0
Lazy eval yes yes yes +
Futility pruning yes yes yes +
Special eval based pruning no no yes ++
Hashtable Single (depth) Single (depth) Double (depth, allways) +++
Pawn hash yes (basic) yes (pawn + king) yes (basic) 0
Moveorder killer yes yes yes +
Moveorder history yes yes yes +
Moveorder SEE no no no 0
Moveorder MVV/LVA yes yes yes ++
Moveorder knowledge based no yes (basic) yes +
Fail high reductions yes yes kind of +
QS pruning yes yes yes ++
Null move yes (R=2) yes (R= 3,2) yes (R=3,2) +++
Internal iterative deepening no yes no +
Aspiration search yes (sophisticated) yes (sophisticated) yes ++
Endgame evaluation basic sophisticated basic +
Very sophisticated extensions no yes no 0
ETC no yes no -
Eval piece square yes yes yes +
Eval square control no no yes ++
Eval pawns yes yes (sophisticated) yes ++
Eval king safty yes (basic) yes (psq based) yes (attack based) ++
Eval rook yes yes yes +
Eval bishop yes yes yes +
Eval material yes yes yes ++++
Singular extensions no no no -
nps XP 1700 700kn/s 800kn/s 300kn/s  
Estimated Elo 2250 2300 2350