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
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
