Studying Chess Engines

PROTOCOL

UCI, (Universal Chess Interface)

  • an open communication protocol for chess engines to play games automatically, that is to communicate with other programs including Graphical User Interfaces. UCI was designed and developed by Rudolf Huber and Stefan Meyer-Kahlen [1] , released in November 2000 [2] . It has, by-in-large, replaced the older Chess Engine Communication Protocol (WinBoard/XBoard).
  • Design Philosophy: The UCI capable GUI is not only View and Controller of a chess MVC, but also keeps the Model with its internal game states. It is also an “arbiter” instance to decide about the outcome of the game, for instance in declaring a game as draw after a threefold repetition has occurred – the UCI GUI may choose and play moves from an opening book and endgame tablebase.
  • Critique:While the UCI design makes it simple for engine programmers to integrate a “stateless” chess engine, it was also disputed by various chess programmers, since it subsumes engine control parameters and delegates possibly game decisive stuff to the GUI.

CuckooChess,
an advanced free open source chess program under the GNU General Public License written in Java by Peter Österlund. CuckooChess provides an own GUI, and optionally supports the UCI protocol for the use with external GUIs such as Arena. An Android port is available, where its GUI is also base of Peter Österlund’s Stockfish port dubbed DroidFish [1] .

DroidFish,
a standalone UCI compliant chess application for Android platforms by Peter Österlund. It incorporates the GUI and opening book code derived from CuckooChess by Peter Österlund, the CuckooChess Java chess engine, and the Stockfish chess engine by Tord Romstad, Marco Costalba and Joona Kiiski. The port of Stockfish didn’t involve changing the Stockfish source code, but finding a compatible STL implementation for Android, and compiling the source code with the correct combination of compiler flags as a library which is accessed using JNI [1] . Further, since version 1.4, DroidChess supports Gaviota Tablebases and includes the probing code by Miguel A. Ballicora [2], and since version 1.55, Syzygy Bases [3].

Peter Österlund further ported Stockfish to the Android platform, called DroidFish, with GUI and opening book code, derived from CuckooChess

Texel: In March 2012, Peter Österlund announced and published his new engine Texel. Texel 1.00 was functionally equivalent to an unreleased version of CuckooChess. The main difference is that Texel is written in C++11 instead of Java [5].

Stockfish,
an UCI compatible open source chess engine developed by Tord Romstad, Marco Costalba, Joona Kiiski, and Gary Linscott [1] . Marco forked the project from version 2.1 of Tord’s strong engine Glaurung, first announced by Marco in November 8, 2008 [2], and in early 2009 Joona’s Smaug, a further Glaurung 2.2 derivative, was incorporated [3]. Starting out among the top twenty engines, Stockfish has quickly climbed in strength.

Portfish,
a .Net port of Stockfish in C# by Balint Pfliegel, functionally equivalent with Stockfish

Chess for Android, written by Aart Bik, is a standalone chess application for Android. The application is available for free at the Android Market [1] or as direct download [2] and consists of a chess engine (a Java version derived from the UCI engineBikJump that is written in C++) and a GUI. The application accepts moves through the touchscreen, the trackball, or through the keyboard (e2e4 pushes the king pawn, e1g1 castles king side, etc.). An optional “move coach” highlights valid user moves during input and last played engine move.

Full game navigation buttons enable users to correct mistakes or analyze games. Games import and export as FEN/PGN to and from the clipboard, load and save as file, are set up through a position editor, or import as application/x-chess-pgn MIME type on startup. A draw by stalemate, insufficient material, the fifty move rule, or threefold repetition is recognized. The engine plays at various levels (including random, against itself in auto-play, or free-play, where the game can be used as a “magnetic chessboard”). The user can play either side and, independently, view the board from the perspective of white or black.

The application also supports the Universal Chess Interface (UCI) and Chess Engine Communication Protocol (often simply called WinBoard or XBoard protocol), which allows users to play against more powerful third party engines or even play tournaments between engines. Engine setup features pondering, infinite analysis, hash tables, multiple threads, endgame tablebases (Nalimov , Gaviota, Scorpio, Robbobases), and opening test suites. Chess for Android recognizes all ChessBasecompatible engines that are installed on the same device.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s