Skip to content

Eubos v2.10

Compare
Choose a tag to compare
@cjbolt cjbolt released this 18 Mar 21:41
· 958 commits to master since this release

Features

  • Null Move Pruning added to the search, based on the implementation fromm the Chess Programming Wiki Engine
  • Added support for the 'move overhead' UCI configuration option, this is used for Eubos on Lichess
  • Added statistics collection for more advanced Lazy Evaluation tuning
  • Mate Distance Pruning

Tuning / Optimisation / Tweaks

  • Staged move generation implemented for the hash move at non-root and extended search nodes
  • Extracted a specific function for the search at the root node
  • Now tracks whether the Principal continuation has been fully searched and flags this using a boolean
  • Tweaked the lazy evaluation threshold, to produce more evaluation cut-offs
  • Use an auto-flushing stream for the UCI protocol output (send direction) to the chess GUI. This reduces time forfeits on Lichess.

Fixes

  • Bug fix for en passant hash moves, the en passant flag in the move integer was not getting set from the board state when retrieving from the hash table.

Quality

Potential Improvements

  • I would like to more fully utilise the staged move generation. For example it isn't too much work to include promotions as a special case in the move generation.
  • I would also like to refactor the staged move generation to use a loop rather than duplicating code in the search functions
  • The search node functions need to be optimised, I have some ideas about passing alpha and beta in an array, to help breaking down some function sizes and possibly better utilising hotspot compilation.