


That is left to the Search.GetQuietScore method to resolve. The evaluation code does not determine if the threatening piece is defended. A bonus is given if a pawn or minor piece threatens to capture a more valuable piece on its next move. I added evaluation of threats in the middlegame to MadChess 3.1 Beta.

I added evaluation of two pawn structure features to MadChess 3.1 Beta. Bullet chess, 2 min / game + 1 sec / move.

Win At Chess position test, 3 seconds per position.GitHub commit (hash) or Subversion source code revision (integer).None of these experiments succeeded except PR 33: Trust Move Capture Victim, which eliminated redundant calls to Position.GetPiece(Square square) in move generation and when playing moves.Įliminating redundant double-playing of a move (to test move legality) during search increased the search speed of MadChess 3.1 Beta and produced a 36 Elo gain in playing strength. In addition to move legality, I experimented with other performance improvements. The calling method (such as Search.GetDynamicScore or Search.GetQuietScore) then either 1) undoes the move (if illegal or futile) and continues to the next pseudo-legal move or 2) searches the resulting position. Now a move is played, move legality and check is tested, and the Board.PlayMove method returns a (bool isLegal, bool deliversCheck) tuple. This consisted of playing a move (to test whether it exposed its own king to check and whether it delivered check on the enemy king), undoing the move, updating the “check” move property, then re-playing the move. Previously, move legality was tested prior to playing a move. I improved the performance of code that determines the legality of pseudo-legal moves.
