LittleThought

LittleThought is a free UCI compatible chess engine, and my small tribute to the late Douglas Adams. It does not include a chess GUI, so you will need to use your own or download a free one.

Contact me at nathanthom at gmail dot com.

Downloads

SpeedQuel

Download LittleThought 1.04 32-bit
Includes binary, logo and small opening book.

SpeedQuel

Download LittleThought 1.04 64-bit
Includes binary, logo and small opening book.

LittleThought Features

Key Features
PVS based alpha-beta search with quiescent search
Transposition/refutation 2-probe hash table
Bitboard based move generator and evaluator
Incremental move generator
killer moves, history scoring to improve move ordering
Internal Iterative Deepening (not very effective but doesnt make it worse)
Extensions: check, recapture, null move threat, single reply
Reductions: extended futility, razoring, late move
Pruning: null move, futility
Basic time controls - can dynamically adjust time per move when required
A few very simple interior and leaf node draw recognisers
2-level lazy eval
Pawn eval hash table
Some end game recognisers with special eval (e.g KBNvK)
Very basic opening book (max 10 moves)
Multiprocessor support using simple(ha!) PV Split implementation - quick and dirty speedup for up to 4 CPUs
At this stage a very basic static evaluation (not much smarter than TSCP for example)

Change History

Check out the full list of changes for all previous versions here.

LittleThought v1.04 (07/11/2009)

  • Fixed illegal move bug encountered when playing long games (> 200 moves)
  • Fixed bug with false single reply extensions being triggered
  • Several performance enhancements throughout the code (~15-20% faster)
  • Some endgame evaluation improvements
  • Several improvements to the search reductions
  • Better time management at very fast controls
  • Rename UseBook to OwnBook as per UCI standard
  • Fixed 64-bit compile options so the 64-bit program is significantly faster than the 32-bit one

LittleThought v1.03 (04/01/2008)

  • Rewrote move scoring algorithms
  • Modified reductions/pruning
  • Modified lazy eval settings
  • Some debug logging enhancements
  • Fixed hash write bug
  • Fixed several SMP issues

LittleThought v1.02 07/11/2007

  • Fixed bug in q search
  • Fixed bug in lazy eval
  • Complete redesign of node recognisers and vastly improved specialised endgame knowledge

LittleThought v1.01 25/07/2007

  • Fixed SMP bugs (repetition, check extensions, root ordering)
  • Fixed hash indexing bug and tweaked memory utilisation
  • Fixed bug with mobility eval (was getting used randomly!) and improved it
  • Fixed bug in endgame recogniser
  • Fixed bug in 50 move draw check
  • Prevent LMR of killer moves
  • Added 50-move rule to internal node draw recognition
  • Improved single reply extensions
  • Tweaked extensions/reductions
  • Some performance improvements
  • Lots of eval fine tuning of values
  • Enhanced interior node evaluation

LittleThought v1.00 03/02/2007

Bug fixes include:

  • Fixed eval problem with 50 move rule
  • Fixed bugs in move generator (was searching duplicate moves and skipping some legal moves)
  • Fixed bug in move scoring
  • Fixed bug in handling of "position fen" commands used to analyze games
  • Fixed issue with recogniton of special endgame positions
  • Fixed bugs with rook eval
  • Fixed randomisation bug with book
  • Fixed issue with single reply extensions
  • Fixed UCI move number display
  • Fixed calculation of next ply estimated time
  • Fixed UCI lower/upper bound score output
  • Fixed horrendous hash bug
  • Fixed bug in PVS re-search
  • Fixed go depth command
  • Fixed repetition detector (and improved performance)
  • Fixed storing of mate scores in hash
  • Fixed pawn hashing bug
  • Added EP capture into check evasion move generator!

Improvements made:

  • Added eval cache (UCI param EvalHash default 16MB)
  • Improved pawn + bishop eval
  • Improved recapture extensions
  • Moved more eval into lazy eval section
  • Tweaked null move criteria
  • Added null move verification search
  • More endgame recognisers
  • Added penalties for losing castling rights
  • Added simple candidate passed pawn eval
  • Added connected passed pawns bonus
  • Reduced value of passed rook-pawns
  • Implemented fractional extensions and tweaked extension settings
  • Added passed pawn extensions
  • Tweaks to q search cutoff criteria
  • Improved passed pawn eval with queens
  • Tweaked Knight's piece square table
  • Improved KRvK strategy
  • Reduced underpromotion moves
  • Added knight outpost eval
  • Tweaked futility pruning criteria
  • Improved mobility eval
  • Tweaked LMR settings
  • Tweaked aspiration search
  • Tweaked recapture extensions
  • Added mate distance pruning
  • Special root move ordering
  • Rewrote hash replacement scheme and probing
  • Tweaked check extensions
  • Tweaks to time management
  • LOTS of performance enhancements

Other:

  • Removed 15 sec buffer from time controls used to workaround Polyglot issue with new cygwin dll (can re-enable it via new TimeBuffer parameter)
  • Reduced default pawn hash table to 1024KB and changed UCI parameter from MB to KB
  • Added support for go nodes xxx
  • Added more debug level output (tracelevel=2) to show all root move scores
  • Reduced volume of UCI info at shallow depths
  • Improved EPD file parsing for running test suites