LittleThought: Chess Engine
LittleThought is a free UCI compatible chess engine. It does not include a chess GUI, so you will need to use your own (such as Fritz, Chessmaster) or download a free one (such as Arena, Tarrasch). You may also see it from time to time playing on FICS with the LittleThought handle.
It was originally created in 2007 and has evolved over the years to become a grandmaster strength player, with a ELO rating at approximately 2600 (CCRL source). It is also one of the few strong engines capable of playing the Chess960 (or Fischer Random Chess) variant.
Some of the major features:
- PVS based alpha beta search with several tree shaping/pruning routines - e.g. singular extensions, late move reductions, null move pruning.
- A 4-way probe transposition table with other smaller hash tables for caching calculations of pawns, materials, evaluation.
- Rotated Bitboard based fully incremental move generator.
- Advanced time controls, with exceptional performance at extremely fast time controls - perfect for testing with LittleBlitzer.
- Includes a basic opening book generated from massive databases of grandmaster games.
- Implements a YBWC based multithreaded search with support for up to 8 threads, to maximise the latest multi-core computing technologies.
- Supports the Chess960 (Fischer Random Chess) variant.
Downloads
Change History
The change log contains the complete list of LittleThought version changes.
LittleThought v1.052 (22/04/2010)
- Fixed the last Chess960 bug!
LittleThought v1.051 (21/04/2010)
- Fixed several Chess960 bugs
- Fixed display of illegal move error msg
LittleThought v1.05 (20/04/2010)
- Added Chess960 support
- Re-implementation of multithreading, now uses YBWC and can use up to 8 threads
- Extensive retesting of all eval features and removed several misbehaving features
- Improved time management - can handle sub-second games and better able to extend/reduce time on searches
- Added divide command
- Fixed problem with using opening book
- Fixed crash with extremely long games
- Fixed a time control initialisation bug when switching between modes without restarting
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