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 2007d 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 20 ELO. I'm very pleased that this is the first version to get within 100 ELO of Fruit 2.1 in a test match.

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 and I don't have a 64-bit processor there is no real urgency for that 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 200 rounds (9,000 games) the standings are as follows...

                                1     2     3     4     5     6     7     8     9    10      Score     %  ELO
  1. Colossus 2007d             *  102.0 111.0 116.5 117.0 127.5 132.5 138.0 150.5 149.51144.5/1800  63.6  192
  2. Colossus 2007c           98.0    *  112.0 111.5 109.0 118.0 138.5 141.5 131.5 134.51094.5/1800  60.8  174
  3. Colossus 2007a           89.0  88.0    *   97.5 103.0 124.5 123.5 139.5 138.5 139.51043.0/1800  57.9  154
  4. Colossus 2007b           83.5  88.5 102.5    *  109.0 109.0 128.5 135.0 133.0 142.51031.5/1800  57.3  149
  5. Colossus 2006f           83.0  91.0  97.0  91.0    *  111.0 125.5 131.0 131.5 132.5 993.5/1800  55.2  136
  6. Colossus 2006e           72.5  82.0  75.5  91.0  89.0    *  110.5 116.0 125.5 131.0 893.0/1800  49.6  100
  7. Colossus 2006d           67.5  61.5  76.5  71.5  74.5  89.5    *  120.0 113.5 125.5 800.0/1800  44.4   67
  8. Colossus 2006b           62.0  58.5  60.5  65.0  69.0  84.0  80.0    *  104.0 114.0 697.0/1800  38.7   29
  9. Colossus 2006c++         49.5  68.5  61.5  67.0  68.5  74.5  86.5  96.0    *  110.5 682.5/1800  37.9   24
 10. Colossus 2006a           50.5  65.5  60.5  57.5  67.5  69.0  74.5  86.0  89.5    *  620.5/1800  34.5    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...

2007d - 47.2%
2007c - 46.4%
2007b - 42.3%
2007a - 43.4%


History / Test Results

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