How to install and set up multiple chess engines on XBoard
XBoard is an open source graphical chess interface that was made to be compatible with the X window system and that can accept mouse moves, support countless chess engines and even allow the playing of chess variations. It can also serve as a front-end for local game analysis, net server based games, or even email chess (auto-parsing of received mail moves and auto-sending of mail when the move is done). This piece of software has been around for ages, but it has only recently added support for modern chess engines features such as the utilization of hash tables and end game databases, as well as taking advantage of multi-core processors that power every system nowadays. This added new interest and value to the software, making it once again “Linux's default chess tool”. Most distributions should have the “xboard” package available in their default repositories, so installing it should be pretty straightforward.
XBoard Chess Engines
A chess engine is basically a piece of software that is capable of analyzing chess board positions and making decisions based on its settings and abilities. There are literally countless “free-software” chess engines that were built to support the XBoard chess engine communication protocol and thankfully, most of them are available free of charge. Some examples that you may find in your default repositories are GNU Chess, Crafty, Fruit and FairyMax. You can also download more UCI chess engines and their opening books from their respective official websites or other online sources.
By pressing and “Engine” button on the top panel of the application and holding it you can choose the “Load New 1st Engine” option from the menu. This will open up a dialog showing all the installed engines that the software has already located (binaries+books). Choose an engine and then start a new game by pressing “Ctrl+N” and the chosen engine should start running. You may also change the engine settings by navigating “Engine/Engine Settings”. Note that not all chess engines offer the same setting options on this menu, while others (GNU Chess, Crafty) don't offer adjustable settings at all.
Note that almost every engine offers different executables for Linux and Windows, and thus you should always download the source and compile it yourself. This way, you may add a new engine through the “Engine/Load New Engine” menu and choosing the directory and binary file. If you have administrator rights, you may also place the engine under “/usr/games” and XBoard should automatically detect it. The latest XBoard version (4.8) works much better on this part compared to older ones that required the user to manually update the engines list.
Setting Tips and Factors for Consideration
If you're interested in putting two chess engines play against each other, you should consider some factors that can significantly change the results of a game. The “pondering” factor for example should be set to zero in order to disallow an engine to “think” while it is not its turn yet. This can only be overridden in the case that you decide to dedicate one CPU core for each engine's pondering (allowing the other one to utilize at least another core).
Another point for consideration is the opening and ending books utilization. If you want two engines to play each other on a fair basis, you should disable the use of books and let them analyze and decide based purely on their abilities. Time management is also a very important case. Some engines will rush to play a move without any regard to the total game time. Users should check the time management and set it accordingly. Finally, you should note that chess engines, no matter their “smartness” are CPU dependent. This basically means that the same engine will boast a different ELO score when running on different CPUs and not all of them can take full advantage of multi-core processors unfortunately.