Colossus Chess UCI 

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 2008b which is available for download here. It is a Windows executable. I have no plans for a Macintosh or Unix version.

There are a number of changes from the previous version which are listed below. My tests indicate these amount to an improvement of about 25 ELO.

My thanks to Thorsten Czub, Raymond Dale and Paul Ward for advice and assistance.

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!

Several people have asked about a multi-processor and/or a 64-bit version. Personally I don't think it's worth working on a multi-processor version unless Colossus gets strong enough to compete with the best free engines like Spike and Fruit on a single processor. Also as Colossus doesn't use bit-boards there is no real urgency for a 64-bit version either.


Colossal Tournament

As part of my testing regime I play an on-going tournament with all of the Colossus versions to measure it's progress. The games are played at the super bullet speed of 30s + 0.5s.

After 100 rounds (9,100 games) the standings are as follows...

                       1    2    3    4    5    6    7    8    9   10   11   12   13   14       Score     %  ELO
 1. Colossus 2008b     *  51.5 60.5 59.5 72.5 57.5 66.0 70.5 67.5 72.5 82.0 73.5 80.0 88.5 902.0/1300  69.4  347
 2. Colossus 2008a   48.5   *  55.5 58.5 61.5 60.5 59.5 58.5 73.0 72.0 73.0 70.0 87.0 89.0 866.5/1300  66.7  327
 3. Colossus 2007d   39.5 44.5   *  55.0 52.5 62.0 52.5 67.0 71.0 73.0 72.0 71.0 81.0 90.0 831.0/1300  63.9  308
 4. Colossus 2007c   40.5 41.5 45.0   *  50.5 57.5 55.5 56.5 58.0 64.0 65.5 73.5 86.0 82.5 776.5/1300  59.7  279
 5. Colossus 2006f   27.5 38.5 47.5 49.5   *  54.5 53.0 58.5 64.5 61.5 67.0 67.5 76.0 80.5 746.0/1300  57.4  262
 6. Colossus 2007b   42.5 39.5 38.0 42.5 45.5   *  49.5 62.5 72.0 63.0 65.5 61.5 76.0 87.5 745.5/1300  57.3  262
 7. Colossus 2007a   34.0 40.5 47.5 44.5 47.0 50.5   *  57.5 57.5 70.5 65.0 66.0 73.0 87.0 740.5/1300  57.0  260
 8. Colossus 2006e   29.5 41.5 33.0 43.5 41.5 37.5 42.5   *  61.5 61.0 54.0 67.5 71.5 83.0 667.5/1300  51.3  222
 9. Colossus 2006d   32.5 27.0 29.0 42.0 35.5 28.0 42.5 38.5   *  61.0 53.0 56.0 74.0 82.5 601.5/1300  46.3  189
10. Colossus 2006a   27.5 28.0 27.0 36.0 38.5 37.0 29.5 39.0 39.0   *  54.0 48.0 70.5 71.5 545.5/1300  42.0  161
11. Colossus 2006b   18.0 27.0 28.0 34.5 33.0 34.5 35.0 46.0 47.0 46.0   *  52.0 73.5 69.0 543.5/1300  41.8  159
12. Colossus 2006c++ 26.5 30.0 29.0 26.5 32.5 38.5 34.0 32.5 44.0 52.0 48.0   *  64.5 69.0 527.0/1300  40.5  151
13. Colossus 2005b   20.0 13.0 19.0 14.0 24.0 24.0 27.0 28.5 26.0 29.5 26.5 35.5   *  47.5 334.5/1300  25.7   41
14. Colossus 2005a   11.5 11.0 10.0 17.5 19.5 12.5 13.0 17.0 17.5 28.5 31.0 31.0 52.5   *  272.5/1300  21.0    0

Test Gauntlet

Also as part of my testing regime I play a standard gauntlet of 200 rounds against seven opponents (1,400 games) Aristarch 4.50, Fruit 2.1, Glaurung 1.2.1, List 5.12, Pharaon 3.5.1, Ruffian 1.0.5 and Spike 1.2 Turin. The games are played at the super bullet speed of 30s + 0.5s.

The following percentage scores were acheived...

2008b - 56.8%
2008a - 52.6%
2007d - 47.3%
2007c - 45.9%
2007b - 39.9%
2007a - 41.6%


History / Test Results

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