Home * Protocols * UCI

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.

Contra

Excerpt concerning UCI from a Robert Hyatt interview by Frank Quisinsky in 2002 [3] :
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.

Pro

Fabien Letouzey emphasize the ease of implementation in a Quisinsky interview, April 05, 2005 [4] :
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.

See also


Forum Posts

2000 ...

2005 ...

2010 ...

2011
2012
2013
2014

2015 ...

2016
2017

External Links

Implementations

JavaScript


Video Tutorials



References

  1. ^ Interview with SOS programmer Rudolf Huber in German language! by Frank Quisinsky, Arena Chess GUI 3.0 - Archive 9, 132, May 10, 2005
  2. ^ Universal Chess Interface From Wikipedia
  3. ^ Interview with Robert Hyatt by Frank Quisinsky, May 11, 2002, hosted by Ed Schröder
  4. ^ The alternative to Crafty, Interview with Fabien Letouzey by Frank Quisinsky, Arena Chess GUI 3.0 - Archive , Page 7, 96, April 05, 2005
  5. ^ Javascript Universal Chess Interface | Free software downloads at SourceForge.net by Edmund Moshammer
  6. ^ 中国象棋电脑应用规范(五):中国象棋通用引擎协议 Universal Chinese Chess Protocol (UCCI)

Up one Level