In 2004 I started work on a completely new version of Colossus Chess
conforming to the new UCI (Universal Chess Interface) protocol. It was written
in the new Microsoft C# programming language. Later that year, after much
encouragement (nagging?) from two old Colossus fans (Thorsten Czub and Raymond
Dale - thanks really guys!) I released privately to them the first new version
of Colossus (2005a) for about 15 years! After some testing they quickly
identified a number of problems and encouraged me to work particularly on the
positional evaluation. This was improved somewhat (but still had some major king
safety issues) and a new 2005b version was released to them in late 2005.
In April 2006 I had another major development spurt which included converting
the program to normal C (about a 25% speed increase). This, coupled with
Thorsten publishing some tournament games of Colossus 2005b which led to much
interest from other old Colossus fans, finally persuaded me to release a new
version to the general public.
The latest version is Colossus 2024b which is available from my OneDrive here.
It is a 64-bit Windows executable which should run on any modern PC as it does not use any extended instruction sets like AVX.
I have no plans for a Macintosh, Unix or Android version.
Many older versions of Colossus can be downloaded from my OneDrive archive.
This is a bug fix release from version 2024a.
My tests indicate an improvement of about 10 ELO.
Apologies in advance for any outstanding bugs! If you have any problems,
questions, comments, suggestions, games etc please email me here.
Also apologies if I am slow (or non-existent) in responding, it just seems
impossible to keep up sometimes!
Next steps may include NNUE and a whole bunch of other things... but I have no idea how long that will take!
Some tools which I have used to help develop Colossus are available here.
History / Test Results
- Supports lazy SMP
- Time control improvements
- Minor efficiency improvements
{below games played at 60s+1s using CuteChess-CLI}
v Colossus 2021b +11.9 ELO (+/-9.0 after 2774 games)
2021b
- Supports Chess960/FRC
- 'Ponder' now works again
- Time control improvements
- Tranposition table enhancement
- Evaluation function improvements (knowledge and efficiency)
{below games played at 60s+1s using CuteChess-CLI}
v Colossus 2021a +60.4 ELO (+/-9.1 after 2824 games)
v Fruit 2.1 +117.0 ELO (+/-11.4 after 3088 games)
v Prodeo 3.1 -8.5 ELO (+/-10.1 after 3185 games)
2021a
- 64-bit compilation
- Bitboards
- SYZYGY endgame tablebases
- Simplified evaluation function
- Quiescence search tightened
- Transposition table buckets
- Counter-move history
- Major rewrite of much of remaining code!
{below games played at 60s+1s using CuteChess-CLI}
v Colossus 2008b +132.7 ELO (+/-13.4 after 2316 games)
v Fruit 2.1 +80.2 ELO (+/-17.7 after 1199 games)
v Prodeo 3.1 -49.1 ELO (+/-13.5 after 1810 games)
2008b
- Less aggressive use of time when no Fischer bonus
- Corrected default IID reduction message to say 2 not 3
- Tidied/commented various sections
- Clears EGTB cache in Newgame for determinancy
- Simplified some commands
- Sets castling statuses to false before doing symmetry tests and static eval
- TWM extensions not done so deep
- EGTB checks castling statuses
- Changed EGTB throttling again
- King safety term improved
- 'Root' routines count 1 node
- Null move mate clause removed
- QS delta ups best value
- LMR tuned
v Colossus 2008a +461/-384/=203 +27 ELO
v Delfi 5.1 +457/-332/=249 +43 ELO
v Fruit 2.1 +308/-348/=352 -14 ELO
v Ruffian 1.0.5 +520/-304/=336 +66 ELO
2008a
- Upgraded to VS2008 compiler
- Improved evaluation symmetry tests
- Saves pv in QS if in debug mode
- 'Clear Hash' command now clears everything
- Fixed bug in 'static evaluation' option
- Frees EGTB cache on exit and warns on malloc failures
- Added/modified/tidied various engine parameters
- Added some more data corruption testing code
- Only plays 'only move' immediately if in tourney mode
- Minor optimisations and tidy up
- Altered info messages slightly
- Calls ClearKillers() in NewGame() for determinism
- Only stops after six consistent mate scores if in tourney mode
- Only stops after maximum iteration depth if in tourney mode
- Made "go infinite" command really infinite
- Fixed two bugs in evaluation
- Added PP blocked specifically by king or knight bonus
- Endgame K advancement bonus
- Swap material if ahead
- Improved EGTB throttle
- Tidied IID code
- Tidied null move code
- Uses time more aggressively
v Colossus 2007d +506/-370/=422 +38 ELO
v Delfi 5.1 +335/-297/=190 +15 ELO
v Fruit 2.1 +317/-582/=245 -84 ELO
v Ruffian 1.0.5 +519/-378/=313 +42 ELO
2007d
- Fixed upper/lower bound failure messages
- Increased maximum iteration depth
- Only uses minimum iteration depth in timed modes
- Fixed failsoft bug in futility
- Cannot fail high/low after a mate score
- Increased quiescence search pruning margin
- Evaluation granularity reduction removed
- Doesn't do losing captures deep in quiescence search
- Underpromotions put back in quiescence search
- EGTB throttle better
- Part of evaluation re-written
- Doesn't do r=2 adaptive null when down to one piece
- Quick DBR's removed
v Aristarch 4.50 +467/-283/=250 +66 ELO
v Delfi 5.1 +337/-377/=286 -14 ELO
v Fruit 2.1 +271/-487/=242 -79 ELO
v Ruffian 1.0.5 +350/-364/=286 -5 ELO
v SOS 5.1 +431/-300/=269 +47 ELO
2007c
- Only does passed pawn extensions in the endgame
- Added candidate passed pawns
-
Improved hash table efficiency, fixed a bug, tuned replacement scheme and
got rid of overflow
- Fixed slight fail soft discrepency in mate distance pruning and enhanced slightly
- Tidied null move code
- Doesn't do under-promotions in qs
- Added futility pruning
- Doesn't do null move research
- Endgames don't do nulls at 'low' [<=iterationDepth/4] plies
- Added evaluation symmetry test code
- Fixed a couple of bugs in evaluation symmetry!
- Ensured pawn hash table initialised at least once
v Aristarch 4.50 +427/-335/=238 +33 ELO
v Fruit 2.1 +225/-532/=243 -112 ELO
v Ruffian 1.0.5 +302/-383/=315 -29 ELO
v SOS 5.1 +379/-352/=269 +9 ELO
2007b
- Fixed minor bug in 'Quick draw by repetition test'
- Fixed bug in null move (using wrong sides variables for single piece r=2 decision)
- Changed tt code to try to avoid instabilities
- Fixed bug in setoption static evaluation initialisation
v AnMon 5.60 +122/-103/=65 +22 ELO
v Aristarch 4.50 +402/-349/=249 +18 ELO
v Colossus 2007a +330/-279/=391 +17 ELO
v Colossus 2007a +270/-292/=438 -7 ELO
v Colossus 2006f +345/-275/=380 +25 ELO
v Crafty 19.19 +364/-183/=171 +89 ELO
v Fruit 2.1 +43/-145/=68 -146 ELO
v Fruit 2.1 +199/-575/=226 -139 ELO
v Ruffian 1.0.5 +272/-425/=303 -54 ELO
v SOS 5.1 +61/-53/=36 +18 ELO
v SOS 5.1 +398/-356/=246 +14 ELO
2007a
- Fixed slight bug in passed pawn extension code
-
Fixed issue whereby Colossus would generate loads of output whilst
pondering on a mating position repeating at the maximum iteration depth
(requested by tournament directors)
- Changed compiler gaining about a 5% increase in speed
v AnMon 5.60 +141/-136/=89 +4 ELO
v Aristarch 4.50 +396/-333/=271 +23 ELO
v Colossus 2006f +107/-84/=148 +23 ELO
v Crafty 19.19 +222/-100/=94 +104 ELO
v Fruit 2.1 +56/-150/=58 -129 ELO
v Ruffian 1.0.5 +263/-429/=308 -60 ELO
v SOS 5.1 +376/-383/=241 -2 ELO
2006f
- Re-structured quiescence search
- Various minor speed optimisations / general tidy-up
- Root window widened slightly
- Recapture extensions allowed at all node types
- No extensions given at or above 2*iteration depth
- Maximum search depth array sizes increased to 80 ply
- Fixed minor bug in mvv/lva ordering
- Fixed bug in LMR
- Doesn't LMR 'threatening' moves
- Doesn't LMR 'mate in 1' threats
- Adjusted piece values slightly
- Various positional scoring improvements
- Fixed bug whereby game data structures not properly initialised until 'position' command received
- Added Perft command
- Improved various debugging facilities
- Adaptive null move
- Added .INI file
v AnMon 5.60 +75/-84/=53 -14 ELO
v Colossus 2006d +91/-55/=58 +61 ELO
v Colossus 2006e +128/-88/=121 +41 ELO
v Crafty 19.19 +96/-47/=49 +90 ELO
v Fruit 2.1 +59/-164/=77 -126 ELO
v Pharaon 3.3 +57/-42/=27 +41 ELO
v SOS 5.1 +109/-114/=63 -6 ELO
v Spike 1.1 +42/-88/=45 -93 ELO
v Ufim 7.01 +74/-60/=46 +27 ELO
2006e
- Implemented 'go nodes' and 'go movetime' commands
- Fixed bug in transposition table regarding en-passent squares
- Don't count en-passent capturable pawns as runners
- Fixed slight bug if maximum possible search depth reached
- Fixed another bug with the en-passent square when probing endgame tablebases
- Fixed minor bug regarding en-passent captures in quiescence search
- Slight improvement in move generation speed
- Fixed bug in king safety scoring
- Added more patterns to mate recognition code
- Clears transposition table if FEN string different from last FEN string
- Changed format of log file slightly
- Fixed slight bug in passed pawn extension code
- Fixed slight bug in transposition table code in quiescence search
- Changed 'print tree' to new format
- Fixed slight bug in reporting PV when line ends in endgame tablebase position
- Doesn't clear transposition table (when told to by GUI) if already clear
- Fixed minor bug with minimum iteration depth searches
- Optimised engine messages again
- Minimum iteration depth set to 4 ply
- Null-move now 'reversible'
- Don't probe endgame tablebase until >= 3rd ply
- Throttle endgame tablebases
- Tidied search extension code
- Reduce pawn promotion lines in low material endings
- Added en-prise extensions in low material endings
- Slight issue fix in one of 'known draws'
- Endgame king-pawn closeness bonus added
- Increased value of rook behind passed pawn and added penalty for enemy rook behind passed pawn
- Tightened passed pawn on 7th/moving out of check extensions
- Use LMR even at PV nodes
- Null move uses R=2 when only one piece left (rather than R=3)
v AnMon 5.60 +121/-126/=71 -5 ELO
v Colossus 2006d +75/-53/=72 +38 ELO
v Crafty 19.19 +139/-96/=61 +50 ELO
v Fruit 2.1 +51/-138/=41 -138 ELO
v Nejmet 3.07 +92/-24/=41 +161 ELO
v Pharaon 3.3 +100/-105/=65 -6 ELO
v Spike 1.1 +29/-68/=34 -106 ELO
v Ufim 7.01 +69/-57/=36 +25 ELO
2006d
- Fixed bug in pawn runner code
- Fixed bug with lazy evaluation causing incorrect upper/lower limits to be added to transposition table
- Fixed bug in fail soft
- Improved time control check efficiency
- Tuned messages at very early plies
- Fixed slight bug in endgame tablebase mate distance calculation
- Doesn't stop iterating when mate score found until repeated for 6 iterations
- Doesn't clear transposition table when given a FEN string
- Sleep minimised in main loop
- Fixed bug with pawn promotions when generating moves out of check
- Improved scoring when a side is a minor piece up but has no pawns
- More passed pawn moves extended
- Doubled pawns penalised more
- Improved endgame tablebase access
- Added KB v KB (bishops of same colour) to known draws
- Added K-in-corner v KB+pawns-on-rook-file (bishop of 'wrong' colour) to known draws
- Rook on 7th scoring improved
- Does not generate log file unless flag file (ColossusLog.flg) present in same directory
-
Fixed bug in en-passent capture generation at root after FEN string setup
v AnMon 5.60 +32/-36/=18 -16 ELO
v Colossus 2006c++ +122/-70/=136 +55 ELO
v Comet B68 +32/-7/=17 +166 ELO
v Crafty 19.19 +46/-33/=33 +40 ELO
v Fruit 2.1 +14/-46/=20 -147 ELO
v Nejmet 3.07 +30/-11/=19 +113 ELO
v Pharaon 3.3 +26/-35/=17 -40 ELO
v Spike 1.1 +42/-116/=42 -134 ELO
v Ufim 7.01 +28/-19/=29 +41 ELO
2006c++
- Another bug fix in ponder mode causing program to hang
2006c+
- Bug fix in ponder mode causing program to hang
2006c
- Improved time control especially with Fischer clocks
- Improved initialisation efficiency
- Passed pawns scored higher in endgame
- Minor bug in processing position command
- Increased maximum game record size from 500 to 1000 moves
-
Doesn't stop iterating as soon as a mate score is found - now needs 2 successive iterations
with same mate score
- Fixed actual initial hash size to match default size given in initial UCI declarations
- Fixed bug in parsing ep-square from FEN string
- Fixed bug handling ep-square in egtb
- Improved egtb efficiency
- Fail low/high windows tuned to fail-soft value
- Implemented egtb cache size command
- Implemented Debug command
- Fixed a bug processing position command moves
- Fixed a bug in transposition table handling of mate scores
- Slight null-move enhancement
- Store only-one-move flag in transposition table
- Store threatened-with-mate flag in transposition table
- Fixed bug in 'stop' code causing duff values to be put into transposition table which could later be retrieved and taken as valid!
- Minor optimisations
- Rook mobility adjusted slightly
- Passed pawn runners added for king and pawn endings
- Added Ponder declaration to initial UCI declarations for Polyglot
v AnMon 5.60 +37/-59/=20 -66 ELO
v Colossus 2006b +21/-17/=38 +18 ELO
v Comet B68 +55/-16/=19 +161 ELO
v Crafty 19.19 +37/-32/=27 +18 ELO
v Fruit 2.1 +16/-72/=18 -204 ELO
v Nejmet 3.07 +44/-19/=23 +103 ELO
v Pharaon 3.3 +53/-94/=43 -76 ELO
v Spike 1.1 +24/-130/=42 -210 ELO
v Tao 5.6 +42/-41/=21 +3 ELO
v Ufim 7.01 +29/-30/=19 -4 ELO
2006b
- Fixed move generation bug
- Fixed endgame bug
- Added Late Move Pruning
- Modified engine messages to keep Arena GUI happy
v Comet B68 +32/-12/=10 +135 ELO
v Crafty 19.19 +30/-32/=20 -8 ELO
v Nejmet 3.07 +42/-29/=23 +48 ELO
2006a
- First public release
- Various bug fixes
- Improved positional scoring
- Endgame tablebase support
- Various speed improvements (including converting to C from C#)
- Better recognition of certain mate conditions
v Comet B68 +38/-23/=17 +67 ELO
v Crafty 19.19 +37/-55/=26 -53 ELO
v Nejmet 3.07 +34/-29/=11 +23 ELO
2005b
- Improved positional scoring
v Colossus 2005a +26/-15/=9 +77 ELO
v Comet B68 +36/-23/=13 +63 ELO
v Crafty 19.19 +24/-44/=16 -84 ELO
2005a
- First private release to Thorsten Czub and Raymond Dale
|