|
Technical InformationChess programming is a time-consuming and complicated thing to do. As chess programmers mostly don't have the time to program a chess GUI of their own, people invented the 'engine-concept': separating the engine and the GUI (the 'GUI' = 'Graphical User Interface') into two modules. The engine programmer can then concentrate on programming the algorithms of chess, not the algorithms of displaying the board, the pieces and so on. Engine and GUI communicate via protocols.
The first GUI was WinBoard, programmed by Tim Mann. It was initially intended as an interface for GNUchess and adopted to that text based program. This resulted in a relatively complicated protocol for the communication of GUI and engine. But some day it gained a lot of popularity by amateur programmers. Now there are over 250 chess engines and some of them play with great playing strength. A new protocol was invented by Rudolf Huber (the author of the Arena partner engine "SOS") and Stefan Meyer-Kahlen (the author of the chess engine "Shredder"): The UCI protocol. It simplifies programming for both the engine and the GUI programmer. Some features are missing though, e.g. the engine cannot resign a game or offer a draw. Chess engines are normally console mode programs, if you start them directly. If started by a GUI, the console window is invisible. Chess engines work the following way: All chess programs use the so called tree search to find the best move. It e.g. executes at first a white move, then a black move etc. As this can't go on for ever, the search will be terminated at a certain ply and the resulting position is evaluated. The values of the end positions are compared and the best move is selected. |