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 to be drawn 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.
I simply don't like UCI. It subsumes all engine control parameters. It tells the engine when to ponder, when to search, when to stop, etc. That is contrary to my design and I have no interest in hacking Crafty to support something that is so different from the WinBoard/XBoard protocol that has been around for a long time and which works perfectly.
It removes several critical engine-decisions that are best made by the engine, not the GUI.
The choice of UCI is based on software-design principles that are not easy to explain. It's a programmer's thing really, I don't expect engine users to understand. Let me give you a clue though: think about young WinBoard engines that you have tried; how many handled pondering ... without bugs??? Another clue might be that surely, Stefan Meyer-Kahlen knows a lot about good programming, right? So trust him if not me, UCI is good for programmers because it leads to fewer bugs in the code ...
Fabien wrote a protocol translation program, PolyGlot to allow use of the new protocol on Linux, though this is now supported natively by the powerful Scid vs. PC toolkit. Scid vs. PC itself includes Polyglot code to enable support for Polyglot opening books.
Table of Contents
UCI (Universal Chess Interface) is
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] , and 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 to be drawn 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.Contra
Excerpt concerning UCI from a Robert Hyatt interview by Frank Quisinsky in 2002 [3] :It removes several critical engine-decisions that are best made by the engine, not the GUI.
Pro
Fabien Letouzey emphasize the ease of implementation in a Quisinsky interview, April 05, 2005 [4] :Fabien wrote a protocol translation program, PolyGlot to allow use of the new protocol on Linux, though this is now supported natively by the powerful Scid vs. PC toolkit. Scid vs. PC itself includes Polyglot code to enable support for Polyglot opening books.
Engines
GUIs
Utilities
See also
Forum Posts
2000 ...
2005 ...
2010 ...
- Handling UCI protocol and Stockfish / Glaurung behavior by Pascal Georges, CCC, January 10, 2010 » Stockfish, Glaurung
- UCI extensions for kibitzing by Aaron Becker, CCC, March 05, 2010
- UCI issues by Miguel A. Ballicora, CCC, May 24, 2010
- some UCI protocol issues/questions by Jon Dart, CCC, December 17, 2010
2011- SMP for Android UCI engines by Aart Bik, CCC, April 14, 2011 » Android, SMP
- UCI multipv question by Martin Sedlak, CCC, June 11, 2011 » Multi-PV
- UCI nullmove by Marco Costalba, CCC, August 03, 2011
- UCI Engine Tuning by Steven Atkinson, CCC, August 20, 2011
2012- About UCI multipv by Fermin Serrano, CCC, January 17, 2012 » Multi-PV
- good macintosh guy for UCI engine development by Sam Hamilton, CCC, January 25, 2012 » GUI, Macintosh, Mac OS
- Ponder and UCI by geko, OpenChess Forum, November 19, 2012 » Pondering
- Problem with UCI engines hash in Arena by Carl Langan, CCC, December 26, 2012 » Arena
2013- UCI Interfacing question by epideath, OpenChess Forum, July 05, 2013
- UCI protocol issue by Jon Dart, CCC, July 27, 2013 » Repetitions
- uci ponder protocol by Marco Belli, CCC, August 17, 2013 » Pondering
- UCI variants support by Balint Pfliegel, CCC, December 15, 2013
20142015 ...
- UCI request answers all time..... how to do it? by Luis Babboni, CCC, March 14, 2015
- UCI way to communications. Wich kind of inputs? by Luis Babboni, CCC, March 15, 2015
- UCI extension: nodestime by Marco Costalba, CCC, March 22, 2015
- UCI extension: nps NODE_RATE by Marco Costalba, CCC, March 23, 2015
- ponder engine-gui interaction by Alexandru Mosoi, CCC, June 25, 2015 » Pondering
- Crafty UCI version by Marek Soszynski, July 10, 2015 » Crafty
- Ugly UCI by Fermin Serrano, CCC, November 27, 2015
2016Re: Ugly UCI by Marcel van Kervinck, CCC, November 27, 2015
- stateless UCI by Marco Belli, CCC, February 13, 2016 » Pondering
- Question to UCI engine authors by Harm Geert Muller, CCC, December 01, 2016
2017- UCI protocol: letting the engine know the game result by Folkert van Heusden, CCC, January 19, 2017
- UCI: Console Play Mode? by Matthew Hull, CCC, February 20, 2017
- Novag UCB drivers (Winboard and UCI) by Graham O'Neill, CCC, February 24, 2017 » Novag Universal Electronic Chess Board
- Reporting a draw in UCI by Vince Sempronio, CCC, May 05, 2017 » Draw
- UCI, What command should the engine expect while it's searching by Mahmoud Uthman, CCC, June 09, 2017
- UCI on another thread, programming help ! by Mahmoud Uthman, CCC, June 11, 2017
- UCI error codes? by Rasmus Althoff, CCC, July 21, 2017
- Regarding UCI Pondering by Manik Charan, CCC, September 28, 2017 » Pondering
- UCI pondering or infinite search by Lucas Braesch, CCC, November 10, 2017 » Pondering
- Regarding options ponder flag by Jürgen Précour, CCC, December 06, 2017 » Pondering
2018External Links
Implementations
JavaScript
node-uci Documentation
Video Tutorials
References
Up one Level