README.txt
These instructions explain the settings and usage for the Dragon by Komodo chess engine. This is an improvement on the versions of Komodo that won the 2019 World Computer Chess Championship (WCCC), the 2019 World Software Chess Championship, the 2017 TCEC Blitz Championship, the 2018 World Blitz Computer Championship, and the 2018 World Rapid Chess Championship. Komodo, the predecessor to Dragon, has played many matches on chess.com of four to six games giving substantial handicaps (usually two pawns or something comparable) to strong Grandmasters, including two ranked as World number two in Blitz at the time of their matches (Hikaru Nakamura and Maxime Vachier-LaGrave), without ever losing a match (and only drawing one) at less than knight odds, at time limits ranging from 10 minutes to 45 minutes plus increments.
Note: the most important settings for best strength are Threads and Hash described below.
Note: Dragon is a chess engine. It can be used in any chess GUI that uses UCI (Universal Chess Interface) chess engines. You will find instructions for installing it in the HOW TO RUN section below.
Dragon is a huge improvement over all previous Komodo versions, in both standard and MCTS modes, achieved by incorporating the new “NNUE” technology originally developed for the game of shogi. Dragon supports multi-core computers and endgame tablebases. Komodo, the Dragon predecessor, has won many highly respected engine tournaments multiple times, such as TCEC, CCT, the World Computer Chess Championship, the World Blitz and the World Rapid championships. In both standard and MCTS modes, Dragon is about 200 elo stronger than Komodo 14 on one thread and about 170 elo stronger on four threads, based on direct matches at the CCRL blitz time control of 2’ + 1”. Compared to Komodo 14.1 the gains are roughly just ten elo less. We believe that Dragon is the strongest Monte-Carlo engine for most personal computers without high speed GPUs, and is among the top three CPU-based engines. We believe Dragon MCTS can benefit from as many as 64 threads and that it benefits from using many threads as much as standard engines do. While the MCTS version is not yet competitive with normal Dragon in strength, the gap is now only around seventy elo points, and we believe that it is now stronger than the normal version if both are using MultiPV. It defeated Stockfish 12 by more than a hundred game margin in a 3600 game test match when both were set to MultiPV = 4, so we believe that it is the world’s strongest CPU-based engine when analyzing more than three lines at once. Its playing style and move choices are more like Alpha-Zero than like normal engines, meaning that it is generally less materialistic than normal Komodo, in the style of the spectacular World Champion Mikhail Tal. In general, the MCTS moves are more human-like and more tricky for humans to meet than normal Komodo, because Dragon MCTS does not assume that its opponent will always play the move that Komodo would play. Komodo MCTS is the only engine ever to win a public Rapid (not blitz) game giving knight odds to a grandmaster. We now recommend using Komodo or Dragon in MCTS mode for most purposes other than engine vs engine games and perhaps assistance in correspondence games. For game reviews, as a sparring partner, or for preparing openings for over the board play, MCTS is in general the better option, especially when MultiPV is used.
In addition to improved playing strength, Komodo 14 and Dragon introduce 7 new “Personalities” (aside from the normal default personality), intended to simulate the play of various types of human players better than the default personality does. They can be used in either normal or MCTS mode, and can be combined with the skill levels (although the skill levels work only in normal mode). Since Personalities are not available in NNUE mode, Dragon will switch to the regular Komodo evaluation when any Personality other than Default is used. While in general the personalities will weaken play by about one level against other computers, some of them may perform better against specific human opponents. One of them, “Human”, is designed to play more like a human grandmaster on a high level or like an amateur taught by a grandmaster on lower levels, so it may well perform better against most humans than the default engine on the same level. Komodo 14 and Dragon also have “Auto Skill”, which when used with the Skill levels will cause the level to go up or down based on the course of the game, so that you will have chances to save the game if you fall behind, while Komodo will put up stronger resistance if it falls behind. Komodo 14 also makes the “Dynamism” option work for MCTS mode. Note that with Dragon the Skill levels will use the Dragon (NNUE)technology while keeping the strength near what the same levels (below 25) were with Komodo 14, while the Personalities will use regular Komodo eval.
One totally new feature with Komodo 14 and Dragon is the Armageddon option, which allows the user to instruct Komodo to treat draws as losses for White (or for Black). Armageddon is popular for tiebreaks, and is usually combined with some other advantage for White, usually extra time, to offset the draw odds. Komodo will do its best to avoid draws for the must-win side.
Dragon is an improved version of the program that defeated World Champion Candidate and U.S. Champion Hikaru Nakamura by 2.5 to 1.5 despite giving him rook for knight, f2 pawn, f7 pawn, and four move handicaps in two hour games. Dragon includes an AVX2 compile giving extra speed and elo points for most computers made since 2013, Intel or AMD.
Key features of Dragon:
- Evaluation when NNUE is off developed by a Grandmaster
- NNUE evaluation trained on Komodo Chess games and evals
- Syzygy endgame tablebase support, now supports up to 7 Pieces
- AVX2 support for more speed
- Improved Monte Carlo Tree Search gives a new chess perspective
- Greater search depth
- Personality: this lets you set Komodo’s playing style
- Auto Skill: Adjusts Skill level based on which side is winning.
- Returns from search in MCTS mode if there is no legal move
- Armageddon mode
What's new in Dragon:
- New optional Monte Carlo Tree Search
- Added Skill setting
- New Book Moves option to limit the number of book moves
- Special compile for BMI2 machines
- Huge initial speed increase on machines with many cores and large Hash Table sizes
- Better NUMA awareness and thread pinning with NUMA Offset
- Now able to use up to 128 Threads in Monte Carlo Mode
- Added 7 piece Syzygy Support
- Improved Contempt
- Improved MCTS Search
- Improved Time Management
- Improved Syzygy with MCTS
- Improved Null Move
- Improved MP scheme
- Improved King Safety
- Improved History
- Improved Extensions
- Improved Quiescence Search
We predict based on testing vs SF11 that the MCTS version of Dragon on four threads will earn a CCRL blitz rating around 3570 and that the normal version will earn around 3650.
If you have Windows
The executables for Windows are in the /Windows subdirectory in the zip file you received. The zip file will be in this format:
dragon-xxxxxx.zip
Where the xxxxxx part will vary. Inside the zip file’s /Windows subdirectory you will find two versions:
dragon-64bit.exe (64 bit for most machines)
dragon-64bit-avx2.exe (64 bit for computers supporting AVX2)
We recommend using the 64 bit AVX2 version as long as your hardware and version of Windows supports it. If your machine does not support the BMI2 instructions, but is 64 bit, use the 64 bit version. Please copy the files from the zip file to a directory on your local hard drive. We recommend making one directory to keep all your komodo files in one place (such as c:engines), so they are easier to find and add to your chess programs.
Note: Some antivirus programs may prevent extracting executable files from zip files. You may need to make an exception for the Dragon zip files.
After downloading you will find instructions of how to install Dragon in popular GUIs in the section below HOW TO RUN.
If you have Linux
The binary for Linux is in the /Linux subdirectory in the zip file you received:
dragon-linux
dragon-linux-avx2
The version ending in avx2 is for newer Intel CPUS like haswell that can run the AVX2 instruction set. The non-AVX2 version is optimized for recent (2015+) machines but should still run on older machines that support 64 bits. You should use the AVX2 version if it will run on your machines, because it is faster and so stronger.
The program must have execute permissions to run. You can set permissions with this command in a terminal window:
$ chmod +x dragon-linux
or
$ chmod +x dragon-linux-avx2
If you get a message like this:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found
Please update your linux libraries using this command:
sudo apt-get upgrade libstdc++6
If this does not fix the issue use these commands:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get upgrade libstdc++6
If you have Mac OS X
Dragon requires macOS version 10.7 or higher. The binaries for Mac OS X are in the /OSX subdirectory in the zip file you received. Please copy these from the zip file to a suitable directory on your computer.
dragon-osx
dragon-avx2-osx
The file must have execute permissions to run. If you have trouble getting your chess GUI to load Dragon, run this command (run from the same directory as the Komodo OS X executable):
$ chmod +x draogon-osx
Substitute dragon-avx2-osx if your machine is newer.
If it will still not work in your GUI, then try this:
$ xattr -dr com.apple.quarantine dragon-osx
Some suggested free GUIs for OSX are:
Scid vs Mac: https://sourceforge.net/projects/scidvspc/
And a good commercial GUI is HIARCS Chess Explorer: http://www.hiarcs.com/mac-chess-explorer.html
Android Versions
Due to variations in hardware and OS versions, an Android version is not included in the package, but Komodo 13 can be bought via this link to the Google Play Store:
The Google Play Store automatically detects and installs the appropriate version for your hardware and Android version. Due to licensing, the Android version must be installed by Google Play Store, then you must open the App once to register it. Look for a Komodo 14 App coming soon.
HOW TO RUN
Dragon is a chess engine. It calculates moves but does not include a ‘chessboard’ display. The komodochess.com web site recommends a few 'chessboard' programs (aka Chess GUIs) which can be used with Dragon, some of them are open source and of very high quality. You will find instructions for installing Dragon in many of the most popular GUIs in Windows here:
If you do not already own a good UCI-compliant GUI (such as Fritz, Chessbase, Hiarcs Chess Explorer or the Shredder GUI), a good free one for Windows is Arena (http://www.playwitharena.de/), version 3.0. For OSX, CHessx and Hiarcs Chess Explorer are popular.
Important: For best play it is very important to set the Threads value to match your system. Dragon's settings can be changed from the GUI. We will explain the non-standard settings below. See setHash.txt for additional information on setting the hash size based on your specific machine and time control.
The most important settings to adjust for your computer are Threads and Hash. They are described below.
Hash
This defines the maximum amount of memory to use for the transposition table - a major factor in the performance of modern chess programs. The default is set to 256 (in megabytes) which is probably enough for rapid use but should be set higher for longer think times or four or more cores. It is usually safe, but may not be optimum, to use half of your available memory for Hash, but smaller Hash size will improve performance slightly in fast play. See the document setHash.txt for more specific information on how this should be set for ultimate performance. All 64 bit versions allow up to 65536 megabytes (64 GB) to be allocated, assuming your system has that much. Please note Komodo/Dragon’s Hash changed in version 13.2.5. It is now multiples of 2 like 128, 256, 1024, 2048… read the file setHash.txt for a procedure to set an optimal hash based on your machine’s speed, number of threads and time control.
Threads
For best performance it is very important to correctly set the Threads value. The default is 1. You should usually set Threads to the number of "real" cores on your machine, except as noted below. Consult your computer manufacturer to determine how many cpu cores your machine has (not to be confused with the number of cpu threads your machine has). We recommend running Dragon with Hyperthreading turned off on your computer, although this is debatable and may depend on your hardware; it is pretty clear that Hyperthreading should be off on machines with many cores, but for machines with no more than four or perhaps six cores it’s unclear. You can often find the hyperthreading option in one of the boot up BIOS settings. The maximum number of threads you can set is 128.
If you do run with Hyperthreading on (the default on most machines), there is some evidence that running with six threads may be optimum for a four core machine with eight threads. For example, on an i7 with hyperthreading, you typically have 4 "real" cores and 4 hyper-threaded or virtual cores. While the operating system may report 8 cores on this machine, there are only 4 cores and so you set Threads to 4 if Hyperthreading is off or to 6 if it is on. We have run some matches which confirm (subject to statistical error) that 6 Threads does score the best on such a machine with Hyperthreading on. On systems with many cores (say 16 or more), it is probably best not to use more than the number of “real” cores even with Hyperthreading on, except that if you have a Threadripper it does appear to benefit from using almost all of the threads, for example 63 threads on 32 cores.
Note some GUIs, including ChessBase, change the default to the number of cores reported by the operating system, so you might need to change the default value in such cases. If you find your computer to be sluggish or unresponsive when running Dragon, decrease the Threads value by 1. This will free up a thread for use by the operating system, GUI and other programs.
Table Memory
This parameter determines how much memory, in megabytes, Dragon will allocate to various internal tables such as the pawn structure hash table, evaluation cache and others. These are used by Dragon’s regular evaluation to prevent doing duplicate work. If you allocate too much or too little memory it can negatively impact your performance (the speed of the program). The default value of 64 is probably close to optimal for fast play on most machines since 2013 but you may want to experiment with raising this value if you have a high performance machine with many cores. For slower games (or analysis) and/or for machines with many cores, higher values are appropriate. We have raised the upper limit in Komodo 9.2 and higher to 1024 megabytes since this may be appropriate for TCEC or similar use with many cores and long time limits. We used 512 in our recent tournament victories. Table Memory will have less of an effect in NNUE mode (with Use Regular Eval set to false).
Use LMR
LMR (Late Move Reductions) is a search technique that is designed to aggressively reduce certain moves in the search tree, so greater overall depth can be obtained. However this can sometimes miss important moves. LMR can be turned "on" or "off". In general Dragon will play much stronger with LMR turned "on", but one might want to experiment with turning it off to try a much shallower, but more thorough, search in some positions. With LMR "on" you can make further adjustments using the parameter Reduction described below.
Null Move Pruning
Like LMR, this is also a technique to aggressively prune moves from the search tree. Dragon plays much stronger with Null Move Pruning turned ON, but occasionally things can be missed, especially very deep threats and zugzwang positions. This option allows you to experiment in the case that you have a difficult position which cannot be resolved and want to see if a much shallower, but more thorough, search would help.
Overhead ms
This is designed to compensate for slow user interfaces or slow internet connections, where a fraction of a second can be lost in the processing and transferring of information back and forth from the engine to the interface or interface to a chess server. The value is in milliseconds (1/1000th of a second) and acts as a safety margin. This should probably be left alone unless you see the program starting to forfeit games due to exhausting its time. If you see such time forfeits, increase this value. The default is 50. For internet play where lag is an issue a value of 100 is a good first try, but may have to go higher if you see time losses. For games with fairly long time controls, 75 is a good value for general use just to be safe since the lost time will not be noticeable at these levels.
Contempt (Komodo 9.2 and higher)
A positive Contempt is used by the computer’s evaluation to discourage (or encourage if negative) piece trades, blocked pawn structures, and repetition draws early in the game. Contempt has been redefined with version 11.3 and higher; the default value is now 4 which should help against weaker opponents. Against near-equal opponents, set Contempt to 0 for best results. Against a human opponent, Contempt should be at least 40 even if he is the World Champion. Suggested values include 60 against grandmasters, 75 against International masters, 100 against masters, and 150 against strong amateurs. A good rule of thumb is to subtract the opponent's Elo rating from 3450 (estimated Rapid rating of Komodo 14 on a quad core machine) and divide by 12. Higher Contempt values are especially appropriate when Komodo is giving a handicap. For handicap play, a good rule of thumb is to set Contempt for half the value of the initial position based on a one minute search in infinite analysis mode from the human’s point of view.
For example, if giving knight odds, if an initial one minute analysis search shows Komodo as down by 3.5 pawns, set Contempt to 175, which is 175 centipawns, or half the human advantage. Contempt works with the next option “White Contempt”. In analysis mode, Komodo internally sets Contempt to zero unless “White Contempt” is turned on. Note that Contempt also works now in MCTS mode. Note that the very nature of MCTS makes it act as if a moderate value of Contempt was set, so positive settings of Contempt are reduced by 16 (not to below zero) automatically to compensate.
White Contempt
The “White Contempt” setting forces Dragon always to use the Contempt value described above from White’s point of view, instead of from whatever side Dragon is searching or analyzing, and also uses Contempt in infinite or analysis mode. If you are playing tournaments with multiple games, this should be turned off since “White Contempt” “locks” Contempt to one color instead of for the side Dragon is currently searching. “White Contempt” is most useful in analyzing positions. A positive value will discourage Dragon playing as White from accepting a draw or trading pieces. A negative Contempt value will encourage Dragon playing as White to trade pieces and seek a draw. For Black, a reversed sign should be used (so a negative value like -10 will discourage Black from exchanging pieces, and a positive value like 10 will encourage Black to seek a draw).
White Contempt” also prevents Dragon from automatically setting Contempt to zero when running infinite analysis. This helps make analysis consistent when switching sides and exploring various lines and lets you include a non-zero Contempt in your analysis. Note when playing against the computer, if you wish to use a non-zero Contempt, either turn off “White Contempt” so that Contempt will apply to the Computer’s side, or you can use the above description to set an appropriate Contempt for the specific side that Dragon is playing. Please note if “White Contempt” is off, in infinite search or analysis mode, Dragon will always use a value of 0 for Contempt.
Note that Contempt modifies the reported scores. On average a setting of 10 will increase the score for that side by ten centipawns (0.1 in most GUIs) in the opening, much less in the endgame. Contempt is turned off in Infinite analysis unless “White Contempt” (described below) is used. Note that Contempt has no effect in MCTS mode.
Contempt does work in Armageddon mode, but the value set is adjusted by a constant appropriate for the mode setting. The default value is what we believe to be generally appropriate for Armageddon mode against another strong engine.
NNUE_SCALE
This parameter allows you to scale up or scale down the NNUE evaluation. The default is 65. NNUE_Scale lets you adjust for external networks which are tuned to a different evaluation range.
WeightFile
Dragon uses a neural network for its evaluation. In the future, Komodo Chess may make new neural networks available for Dragon. These can be specified by setting WeightsFile to the path of the network. Please keep in mind networks from other programs are not likely to work in Dragon, since they are different. After loading an external network, if you wish to return to using the internal network just set Weights file to nothing.
Use Regular Eval
When Use Regular Eval is set to true (or checked), Dragon uses Komodo’s traditional evaluation instead of its NNUE evaluation. The default is false which gives the strongest play.
Time Usage
This provides the ability to manipulate Dragon’s time control heuristics, to make it allocate time more quickly or less quickly. The default is 0 which is what we believe is the ideal setting but remains to be tested at longer time controls. You can make it play faster (use less time) by using a negative number or you can make it allocate time more aggressively by setting it to a positive value. The range of values is between -90 and +90. It's very unlikely extreme values will play well, so we suggest experimenting with relatively modest changes to the default. The ideal value may depend on the time limit. A slightly more negative value may be optimum for online play where lag is an issue, and is also suggested for play against humans. A value of -90 (meaning that it will try to use 90% less time than it normally would use on each move) is quite appropriate for human games, since even with using just 10% of the opponent’s time Dragon will be vastly stronger than any human player.
Tablebase (Syzygy) support
Dragon supports Ronald de Man's 'Syzygy' endgame tablebases. Endgame tablebases can be used to provide absolute knowledge about chess positions in which only a few pieces are left on the board (at the time of this writing, the Syzygy bases support up to 7-man positions, including the kings). Adding Syzygy to your computer and Dragon can increase the playing strength. Syzygy now works in both standard and MCTS mode. Note in MCTS mode, once the root position is found in a tablebase, MCTS will stop probing, but limit its search to only the game preserving moves (for example it will only look at winning moves for MCTS). This is done to ensure the proper game result, but to also allow MCTS to analyze which moves have best winning chances against inaccurate play.
The Syzygy tablebases are "Distance to Zero" (DTZ) tablebases. This means that they report, in addition to a definitive win/draw/loss (WDL) score, the distance to the zeroing of the 50-move draw clock. Unlike other endgame tablebases which report Distance to Mate (DTM), the Syzygy bases won't always report the fastest win from a particular endgame position, but you can be confident that the WDL score (and moves) provided by a tablebase probe are accurate.
How to get the Syzygy tablebases: at the moment, the best way to get the required files is via the file-sharing service BitTorrent (on OSX, Transmission is a good client, on Windows and Linux, Vuze). The necessary .torrent files can be found at http://oics.olympuschess.com/tracker/index.php. You should get at least the 3-4-5-man set (approx. 2 GB). The 6-man set is an additional approx. 138 GB large and will take a while to download. Komodo 12.3 and higher now support 7 piece Syzygy. See the notes below n them. The 3-4-5-man set is also available for direct download from:
http://chess.cygnitec.com/tablebases/syzygy/
Installing the Syzygy tablebases: create a folder on your computer's hard drive and place the fully-downloaded .rtbw (WDL files) and .rtbz (DTZ files) in it. If you have an SSD drive, we recommend that you place the WDL files in a folder on that drive, especially if you are using the 6-man bases.
Understanding the Syzygy tablebase output: if the number of pieces on the board is less than or equal to the 'Syzygy Probe Limit' [see below] or the number of pieces supported by your installation of the Syzygy bases, whichever is less, Komodo/Dragon will report a score which can be interpreted as a win, draw or loss.
A score of +/- #1000 indicates a tablebase win or loss for a root tablebase position, that is, for a 6-man position with 6-man tablebases installed. For tablebase wins or losses which are determined during search, for instance for a 6-man position with 5-man tablebases installed, Komodo will return +/- 250.00 respectively. Komodo will attempt to resolve these scores to actual mate scores, although this may take a long time.
Finally, a score of 0.00 or +/- 0.02 indicates a draw (+/- 0.02 is a draw which would be a win/loss if the 50-move rule were not in effect).
Syzygy tablebase options: Dragon has a number of UCI options to control its use of the tablebases.
Use Syzygy: when on (default), Dragon will try to use the Syzygy tablebases specified in the 'SyzygyPath' option (see below). When off, Dragon will not attempt to load the bases.
SyzygyPath: this defines an absolute path on your computer to the tablebase files. On Windows, multiple paths can be separated with a semicolon (;) character. On OSX and Linux, multiple paths should be separated with the colon (:) character.
For instance:
on Windows
"C:/Tablebases/Syzygy"
"C:/Tablebases/Syzygy;D:/SyzygyWDL"
on OSX and Linux
"/home/me/syzygy"
"/home/me/syzygy:/media/ssd/wdl"
Syzygy Probe Depth: this determines the depth at which tablebases will be probed during search (note that the root position will always be probed. If 'Use Syzygy' is enabled and the number of pieces on the board is less than or equal to the 'Syzygy Probe Limit' [see below] or the number of pieces supported by your installation of the Syzygy bases, whichever is less). A higher number means that Komodo will wait longer to begin probing the tablebases for any particular search. The default depth is 2 half-plies.
Syzygy Probe Limit: this determines how many pieces need to be on the board before Komodo begins probing (even at the root). By default, this is set to 6 (the current upper limit of the Syzygy tablebases). Of course, if you have only the 3-4-5-man set, Komodo will only begin probing the bases when a 5-man position arises. Note 6 piece use can take up both a lot of drive storage,and RAM during the search.
Syzygy 50 Move Rule: when on (default), Komodo will respect the 50-move rule in its tablebase evaluation (a won position which requires more than 50 moves without a pawn move or capture to win will be scored as a draw). When off, Komodo will ignore the 50-move rule in its evaluation (the same position would receive a winning score).
Smart Syzygy: When this is checked/on, Dragon will always check Syzygy TBs for (Syzygy Probe Limit - 1) pieces and under at all depths in the main search. Otherwise, it will only consult Syzygy when the Probe Depth and Probe Limit conditions are met. This feature is designed to allow Syzygy access from slower hard drives
For instance, set Syzygy Probe Limit to 6 (the default if you have the 6-man tablebase files), Probe Depth to 10 and enable Smart Syzygy. At search depth 10 and higher, Dragon will use Syzygy for 6-piece (and 7 piece if you have them and Syzygy Probe Limit is set to 7) positions. At lower search depths, it will only consult Syzygy when there are 5 pieces or fewer on the board. You can adjust Probe Depth to see what gives you the best results. Note that the 5-piece Syzygy tablebases used during search take up about 0.5 GB, which the operating system will cache in memory for fast access. The 6-piece and 7-piece tablebase access will generally cause slowdowns when using standard hard drives. Defaults are set for common laptops with standard hard drives or where overheating of SSDs can be a problem that slows access. The defaults are Syzygy Probe Limit = 6, Smart Syzygy = true and Syzygy Probe Depth = 8. This is a good starting point for a machine with an older and slower hard drive. On desktop machines with lots of memory and a fast SSD, you can set Smart Syzygy = false and Syzygy Probe Depth = 2 for better performance. We recommend a fast SSD for 6 or 7 piece Syzygy tablebases.
A NOTE ABOUT 7-piece SYZYGY
The entire 7-piece Syzygy set is about 14 terabytes (or 14000 GB). Few computers have enough storage space currently to hold all of that. Also, many internet service providers impose monthly download limits, or charge more if you exceed those limits. But you can probably get some benefit from 7 piece Syzygy. You can instead choose to download a subset of the 7 piece. The two most common 7 piece endings are KRPPvKRP and KPPPvKPP, which total 32 GB and about 3 GB respectively. You can get 7 piece Syzygy files here:
http://tablebase.lichess.ovh/tables/standard/.
If you have additional space on a fast SSD, the file Syzygy7.pdf included in your Dragon download files lists the top 48 most common 7 piece endgames. You can select which files seem most important based on your available storage space.
Selectivity
You can adjust how aggressively Dragon prunes using the "Selectivity" parameter. Higher values will encourage Dragon to prune more at low search depths, leading to a deeper overall search at an increasing risk of missing some moves. The default in Dragon is 150. A setting of 250 will set selectivity to the maximum. Note in MCTS mode, Selectivity is internally set to an optimized value.
Reduction
This controls how deeply Dragon reduces its searches. Higher "Reduction" values will cause Dragon to reduce parts of the tree more, increasing overall search depth but possibly missing some good lines. The default is -35. Note in MCTS mode, Reduction is internally set to an optimized value. Please note that Reduction changes now have a bigger effect on how much Dragon reduces compared with pre-Komodo 13.1 versions.
King Safety
This controls how highly Dragon scores king safety. The higher the value, the greater the effects of attacks on the king in Dragon evaluation. The default is 83 in Dragon. Note in MCTS mode, King Safety is internally set to an optimized value. Note also that in Dragon this parameter will have only a minimal effect unless “use normal eval” is chosen.
Persistent Hash
This is useful for long analysis. It allows you to save the current Hash Table to your hard drive, then reload it later. First, set a name for the file in the "Hash File Name" option. Most GUIs will require you to close the dialog box with an OK to “set” the name. You should then stop the search/analysis, return to the UCI parameters then, then click the "Save Hash to File" button. To later reload the saved information, first make sure the "Hash File Name" is for the file you want, then click "Load Hash from File". Once it loads, you may continue analysis. You must make sure the current hash filename is the same as what was used when you saved the file. Note that hash files can be very large and can take a lot of time to save and load, so make sure you have enough disk space to use them.
Personality
Komodo 13.3 introduced engine Personalties. These modify how Komodo plays to reflect the styles in each Personality name. The Default Personality is regular Komodo. Note that Personalities other than Default will internally set Contempt and other parameters to reflect that playing style. When in a non-default Personality, Dragon uses the traditional evaluation and not the NNUE evaluation
The Personalities are:
Default: This is the default and strongest personality. You have full control over Contempt settings. Most of the other personalities will play roughly one skill level weaker than Default.
Aggressive: The Aggressive personality will attack relentlessly with no concern for their own safety. They prefer active pieces, and are biased toward playing with the Queen.
Defensive: The Defensive personality emphasizes king safety and a solid position above all else.
Active: The Active personality tends toward open positions and well-placed pieces.
Positional: The Positional personality tends toward solid play, maneuvering, and more closed positions.
Endgame: The Endgame personality prefers playing through to the end to win by promoting a pawn.
Beginner: The Beginner personality doesn't understand the fundamentals of chess, especially endgame principles, and is mostly looking to check and capture. But please note that it will drop in strength between one and two levels, so you still have to set the skill level appropriately if you hope to win!
Human: The Human personality is optimized to play like and to beat strong human players, playing aggressively, avoiding pointless simplification and repetition, aiming for open positions, and emphasizing static advantages. If you are a fairly strong player and want the experience of playing against a simulation of an even stronger human player than yourself, we suggest using this mode and finding a skill level at which you can score 25% or so at your preferred rate of play.
Note that the Personalities are intended to be used together with the skill levels below 25, or with MCTS mode, but not with both. Note also that if you want to set Contempt to a different value than that specified by the non-default Personality, you need to select the White Contempt UCI option and set the value with the proper sign (flipping the sign if the engine is Black).
Minimal Reporting
This feature allows you to reduce the data Dragon outputs for the first X ply of a search. The default value of 0 does not suppress any program output. Value of 1 or more will suppress outputting the current move Dragon is searching. Higher numbers will suppress more output. For example, with a value of 8 Dragon will not print move sequences or scores for the first 8 ply. This can save on communication overhead with the GUI and is useful when Dragon is running over a network connection or is playing at fast time controls. The default value is 0, meaning all data is reported and nothing is suppressed.
Dynamism
Introduced in Komodo 9.4, Dynamism lets you control how important Komodo/Dragon thinks the dynamic part of the evaluation is. The default value is 122. Values under 122 reduce the dynamic evaluation, while values above 122 increase the dynamic evaluation. Lower values will make Komodo/Dragon play more conservatively, while with higher values it will play riskier moves. More static parts of the evaluation like material and pawn structure are not changed by Dynamism. Although the parameter can be set from 0 to 400, single-digit values will cause bizarre play. A value around 80 will in general produce more realistic evaluations than the default 122, although it will weaken play by 20 to 30 Elo points. Higher values seem to help in problem sets but not in practical play. Starting with version 13.3, the Dynamism UCI option now works in both normal and MCTS mode.
Variety
Variety lets you have Dragon play different lines from its default. A value of zero turns off Variety. With the setting at zero, Dragon will always play the best move it can find. A number from 1-100 allows Dragon to find different moves in some positions. The higher the number, the greater the variety of moves will be, but the weaker it will play. Higher values should lower elo, although we could not detect any elo loss (tiny gain actually) after many thousands of ultra-fast games with a setting of 5 or 10. Perhaps it was a bit lucky; but it seems that the weakening is not more than one elo per five points set, probably less. Note that when still in Opening Book (described below), the book determines what moves will be played.
Note that running Dragon on more than one thread automatically produces variety, even at the same depth, but the Variety option works even on one thread, and will increase variety on multi-threads.
Skill
You can use Skill to make Dragon weaker, to better match your playing strength. The default setting of 25 makes Dragon run at full strength. When Skill is set below 25, Dragon limits its search depth and modifies its evaluation for weaker play. Dragon should move almost instantly on all levels below 25, and the strength of its play should be independent of hardware speed (except at level 25), but thread count does affect strength on all levels. The lower the Skill setting, the weaker Dragon becomes. Dragon will drop about 125 elo for each point drop in Skill below 23 (24 to 23 drop is perhaps 200, 25 to 24 depends on time limit). Our intention is that for quick games (10 min, or 5 min + 5 sec increment) even a virtual beginner (say Elo 250) should be fairly matched with level 1, while the World Champion should have a tough time with level 23 (est. 3000 at 5’ + 5”). (Level + 1) * 125 would be a good estimate based on chess.com games. At level 24 we estimate that the World Champion would need a time limit like 15’ + 10” to be competitive. If the human is treating the games like serious tournament games (say 90 min + 30 sec) then the corresponding elo values would be a few hundred lower. Skill also limits Dragon’s use of the opening book. Levels 1 and 2 will not use the opening book. Level 3 will only use the book for one move. Each level above this will use one more move for each side of the opening book. Note that this refers only to “own book”, so any outside opening book should be turned off for this book depth feature to work properly. Also note that “Threads” are assumed to be set to 1 (for all levels below 25). If you set Threads for a higher value, it will play stronger than its intended level by something like 20 elo for two threads, 40 elo for four, 60 elo for 8, and 80 elo for 16 threads, although the precise amount depends on the level in question. So if you have a quad core machine with 8 threads, and you find that (for example) level 10 is too easy for you but level 11 is too difficult, you could try level 10 with Threads set to 4 or even 7 or 8 to get an intermediate level. Note that Skill does not work properly with MCTS.
Auto Skill
Auto Skill has Dragon automatically adjust its internal Skill level as you play against it. It is a fun feature. Once you set your approximate Skill level, with Auto Skill on, it adjusts Skill based on the evaluation of the game position, giving you better chances of winning if you fall behind. If you are winning, Auto Skill will raise its level. If you are losing, it lowers the level. It is biased to increase your winning chances. On average it will shoot for a level 1-2 lower than you. Auto Skill can lower the Skill level up to 5 points, and raise it up to 3 points from your current Skill setting while you play.
Armageddon
Dragon can play Armageddon, where one side must win (so any repetition draw 50-move rule draw, stalemate or exchanging down to K vs K, KB vs K or KN vs K is an immediate loss for the side that must win). Settings are Off, White Must Win and Black Must Win. Note most GUIs do not yet support Armageddon, and will incorrectly report the game over as a draw. But it should still work. Dragon will automatically modify the Contempt value set so as to optimize its chances to win when Armageddon is on, seeking to complicate if it must win or to simplify if it needs only a draw to win. In human Armageddon chess, White usually gets five minutes for the game vs. four minutes for Black. With Dragon playing both sides, the time odds need to be larger for balanced chances. Tests on one thread on a modern computer suggest that half a second per move for White vs. a quarter second per move for Black produce about even results when White Must Win is set for both sides and enforced.
Monte Carlo Tree Search and MCTS Explore
Komodo 12 - 14 and Dragon add a form of Monte Carlo Tree Search (MCTS). This is similar to what is used in programs like AlphaZero Chess. MCTS is different from traditional chess engine search techniques in that the search is guided by win probabilities instead of a traditional alpha-beta search and evaluation. The result is a more human-like way of playing, since humans, like MCTS, are normally concerned with what move will give them the best chance to win (or draw if in inferior position) against an imperfect opponent, not what move is best against perfect play, which is what alpha-beta search tries to do. MCTS often gives very different move choices than normal Komodo/Dragon, especially when used with Threads set to more than just 1. The Komodo/Dragon system is a hybrid. You turn on MCTS by checking “Use MCTS” in the UCI parameters of your chess GUI.
Monte Carlo Tree search requires extra memory, so might not be suitable for machines with very little memory. Once the Monte Carlo move tree is full, the search will simply complete, even if the allocated time has not been reached. This will happen when the number of MC nodes exceeds the current limit (a little above 8 million nodes with default settings). On a single core this is enough to search for over 2 hours, less when more cores are used. If you wish to analyze for long periods of time on a many core machine, you can increase the size of the Monte Carlo tree in memory by raising the MCTS Hash value. A rough estimate on current (2019) processors is each core can expand about 30 Monte Carlo nodes a second, but can vary a lot when the tree has many draws or mates and climb higher to perhaps 100. Each node is 40 bytes. So if you wanted to analyze with say 8 cores for 5 hours, you should set MCTS Hash to 100 x 40 x 8 x 3600 x 5 (secs in an hour)/ 1000000 or about 576 megs. The sum of MCTS Hash plus regular Hash should not exceed the maximum value you have found to work well for regular Hash in normal mode.
In MCTS, search is controlled by the rate of exploration (searching a wider tree and adding more variations) and exploitation (extending existing lines to see deeper). You can adjust this with the MCTS Explore parameter which has a default of 35.
Note that MCTS is not like a traditional search where depth is increasing and reported as a new iteration is completed. Instead, best move choices are updated once every two seconds, so it can appear some depths are skipped over. Since most GUIs want to see a depth output, Dragon estimates the depth based on MCTS nodes searched.
One nice feature about MCTS is that Multi-PV is essentially “free”. With use_MCTS off, when Dragon performs a non-MCTS search, each additional MultiPV move takes additional time. But in MCTS mode, the move tree is saved as winning probabilities for all root moves. One note: since MCTS does not increment depth ply by ply, depth commands are not so useful. The displayed depth is an estimate based on the current tree number of nodes. MCTS should be used with timed play and not fixed depth. Also note MCTS takes some time to build a useful tree, and will not play well (for a 3400 rated engine) at time limits averaging less than two seconds per move on one thread, or one second per move on four threads.
In versions of Komodo earlier than 13.02, MCTS mode did not use more than 12 threads. This limit has now been raised all the way to 128, although we don’t recommend setting it beyond 64.
Note that the eval is displayed in the traditional centipawn format, but it is really a win probability converted to a centipawn score. This is done so that GUIs which expect a traditional score will work properly.
Note that many of the UCI options, such as Reduction, Selectivity, King Safety, won’t do anything in MCTS mode, because MCTS search doesn’t use the values you see there. The “Ponder” option does work properly.
In MCTS search, once a shallow root search shows a score > 7.00 pawns or less than -7.00 pawns, Dragon will switch to non-MCTS search to “mop up” the rest of the game, since such high score are almost certainly lost or won.
Note to testers: We recommend that the MCTS option not be tested at any time limit faster than one minute plus 0.6 seconds or the equivalent. MCTS mode needs some time to produce a tree with enough depth to play well. We encourage tests on four or more threads, as we believe Dragon MCTS makes good use of multiple threads.
NUMA Offset and NUMA Support (Windows only)
Dragon has NUMA support for Windows. Note, the Linux and OSX versions automatically support NUMA without the need for any special settings. Most users will find the default setting for Windows just fine, but for power users and users with big machines, here goes:
In Windows, if 8 or fewer Threads are specified, Dragon lets the operating system set the Threads it uses for optimal placement.
Since the operating system knows about all system processes, it has more information to decide on Thread placement so no special NUMA placement is done with 8 or less threads. With more than 8 Threads, Dragon will use the setting of NUMA Offset to control which NUMA nodes it first uses. A NUMA Offset of -1 tells Dragon to let the operating system decide which NUMA nodes Dragon runs on, but this limits Dragon to 64 Threads. Note if you want to use more than 64 Threads, you should not set NUMA Offset to -1. A NUMA Offset = 0 will make Dragon start using Threads first on NUMA Node 0, then progress to NUMA Node 1 and so on until it reaches the number of Threads specified. A NUMA Offset of 1 will make Dragon start on NUMA Node 1 and progress from there.
Why would you need NUMA Offset? It lets you control where Dragon is run. For example you could have one copy of Dragon run on NUMA node 0, and another run on NUMA Node 1 without each program robbing resources from each other. This is especially useful if you want the engines to Ponder without robbing resources from the other engine
We recommend the default NUMA Offset of 0 unless you have some special circumstances.
Opening Books
Dragon can use Polyglot opening books. When playing with a book, Dragon will move instantly if it finds a legal move leading to a position in the book. We have a free book with lots of variety on our site on this page:
Just click the download link next to " Komodo Polyglot book" near the bottom of the page. You can find more Polyglot opening books on the internet
Dragon’s default book name is komodo.bin, which is what the free book above is named. So after downloading it, open the ZIP file and copy the komodo.bin book to the same directory you put the your komodo executable in. Also, make sure the OwnBook UCI option is checked, and that "Book File" is also set to komodo.bin. The option “Best Book Line” when set will make Dragon always play the best scoring book move, or randomly select between two or more book moves with the same score. When off, it will tend to play the best scoring move more often, but still give the weaker moves some play for more variety. Komodo 9.4 and up better handle opening books modified using the free scid program (https://sourceforge.net/projects/scid/files/). Note many GUIs also have the ability to have opening books. If they are in use, they have priority over Komodo’s book.
You can limit how many book moves Dragon uses by changing the Book Moves parameter. The numbers are in “half moves”. So if you want Dragon to only use its opening book for 3 moves for white and three for black, set this number to 6. Note that Skill levels below 25 will limit the number of opening book moves used. See the Skill section above for more details.
Naming Notes
Some other chess programs use Dragon in the name. These include Dragon by Bruno Lucas (https://www.chessprogramming.org/Dragon_FR), Dragon by Yuri Shpeer (https://www.chessprogramming.org/Dragon_RU), and Dragon (chess assistant) (https://www.chessprogramming.org/Dragon_(Chess_Assistant)). This document is only for Dragon by Komodo Chess.
Credits
Authors: Larry Kaufman, Don Dailey and Mark Lefler, Dmitry Pervov, Dietrich Kappe.
In the past, one person could write one of the best chess engines in the world, but those days are gone. It takes a strong team of creative and hard working people now.
We wish to thank Jeremy Bernstein for his fine work in adding Syzygy tablebase support to Komodo/Dragon, now including 7 man, for his work on the Mac and Android versions, for his help with copy protection, and for improvements to MP search. Dietrich Kappe has done an amazing job training the nets used by Dragon; Also another big thanks to all the people who have offered to test and run matches with Komodo and Dragon. Thanks to Piotr Kasinski for use of the Syzygy7.pdf. And thanks to Dmitry Pervov for his work making Dragon faster and writing original code for the NNUE implementation.
Finally, special thanks to our partner chess.com for making machines available to us for testing, for help with improved compiling, for the new website design, for the contributions of chess.com personnel (especially Dmitry Pervov), and for the handicap matches with Grandmasters.
WARNING: Komodo Chess and this readme file are (C) 2020 by Mark Lefler and Larry Kaufman.
FBI Warning
The unauthorized reproduction or distribution of a copyrighted work is illegal. Criminal copyright infringement, including infringement without monetary gain, is investigated by the FBI and is punishable by fines and federal imprisonment.