Technical Specifications

  • UCI protocol. See UCI Feature Support.
  • Alpha / beta negamax search algorithm
  • Principal Variation Search (PVS)
  • MultiPV (display multiple moves, their scores, and their principal variation)
  • Aspiration windows (gradually expanded from narrow to infinite window)
  • Hash / transposition table
  • Futility pruning
  • Null move pruning
  • Late Move Reductions (LMR)
  • Quiet search (quiescence search) resolves all checks and captures
  • 8 x 8 “mailbox” board layout
    • Packed into int[64]
    • Destination square pre-calculated for every combination of start square and direction
  • On my PC, moves generated at rate of
    • 11 million positions per second (counting moves from starting position)
    • 1 million positions per second (searching middlegame positions)
  • Move prioritization by
    • Hash move
    • Captures by most valuable victim, least valuable attacker (MVV / LVA)
    • Pawn promotion
    • Killer moves
    • History heuristic
  • Static evaluation tapered between middlegame and endgame scores
  • Static evaluation by
    • Material
      • Piece value
      • Trades (when behind trade pawns, when ahead trade pieces)
    • Piece location (good and bad squares)
    • Pawns
      • Passed
      • Passed and escorted by king
      • Passed and free
      • Passed and unstoppable
    • Separate non-linear mobility for knights, bishops, rooks, and queens
    • King safety
      • Missing pawn shield
      • Near a semi-open file
      • Near squares attacked by enemy pieces
      • Non-linearly scaled
    • Knight outpost
    • Bishop pair
    • Rook and queen on 7th rank and enemy king on 8th (its 1st rank)
  • Strength calibration by
    • Positional knowledge (static evaluation parameters listed above)
    • Max Nodes Per Second (search speed)
    • Move Error (randomly select best or sub-optimal move from MultiPV search)
    • Blunder Error (same as above but more serious error)
    • Blunder Percent (chance per move of blundering)
  • C# programming language
  • Compiled as a self-contained application using .NET Core.
  • Binary executables provided only for Windows. You may compile source code for Linux and Mac OS if you wish.
  • Single threaded (does not use additional processors on multi-CPU PCs)
  • Clean code

    • Procedural code structure
    • Extensively commented
    • Complies with JetBrains ReSharper rules

Comments are closed.