Changes

Jump to: navigation, search

UCI

3,936 bytes added, 05:36, 9 September 2021
2020 ...
'''UCI''', (Universal Chess Interface)<br/>
an open [https://en.wikipedia.org/wiki/Communication_protocol communication protocol] for chess engines to play [[Games|games]] automatically, that is to communicate with other programs including [[GUI|Graphical User Interfaces]]. UCI was designed and developed by [[Rudolf Huber]] and [[Stefan Meyer-Kahlen]] <ref>[https://web.archive.org/web/20120106031235/http://www.playwitharena.com/?Newsticker:Archive_9 Interview with SOS programmer Rudolf Huber in German language!] by [[Frank Quisinsky]], [[Arena|Arena Chess GUI 3.0]] - Archive 9, 132, May 10, 2005([https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine]</ref> , and released in November 2000 <ref>[https://en.wikipedia.org/wiki/Universal_Chess_Interface Universal Chess Interface From Wikipedia]</ref> . It has, by-in-large, replaced the older [[Chess Engine Communication Protocol]] ([[WinBoard]]/[[XBoard]]).
=Design Philosophy=
* Missing some useful commands/info: inform chess engines the results, no information about after movestogo GUIs will reset clock or not
Excerpt concerning UCI from a [[Robert Hyatt]] interview by [[Frank Quisinsky]] in 2002 <ref>[http://web.archive.org/web/20020925204655fw_/http://www.top-5000playwitharena.nlcom/intdirectory/craftyinterviews/interviews.htm Interview with Arena, Interviews mit Prof. Dr. Robert Hyatt, Tim Mann und Martin Blume] by [[Frank Quisinsky]]for [[ChessBits]], No. 18, May 11, 2002, hosted by ([[Ed Schroder|Ed Schröder]https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine])</ref> :
I simply don't like UCI. It subsumes '''all''' engine control parameters. It tells the engine when to [[Pondering|ponder]], when to [[Search|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 [[Chess Engine Communication Protocol|WinBoard/XBoard]] protocol that has been around for a '''long''' time and which works '''perfectly'''.
==Pro==
* Statelessness. That reduces unsynchronised problems between chess GUIs and engines
* Chess systems (chess GUIs and chess engines) may work much more stablestably* Remove the need of having extra configuration/init files for engines
* Easier for chess engine developers to support: easy to parse, create commands, almost no ambiguous, straight/simple code since it is almost not required automatic algorithms
* Easier for debugging: easy to start a match from the middle of a game (using various opening types); easy to pick up a position from long logs (for debugging purposes)
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.
 
[[Marco Costalba]] replied [[Robert Hyatt]] on a [[Talkchess]] thread <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=58392&hilit=winboard&start=20#p650169 Re: Ugly UCI] by [[Kempelen]], [[CCC]], November 29, 2015 » [[Protocols]]</ref>
 
The protocol is brilliant (and you can clearly realize it was designed by a very good programmer) because allows the code needed to handle it to be:
- Straightforward
- Simple (meaning with the minimal number of 'if' branches and logic)
- General (meaning the same algorithm can handle all the different cases in an uniform fashion).
The aim of the UCI protocol is to make the code simple, that's why I think it was made for programmers by a (great) programmer.
[[Pham Hong Nguyen|Nguyen Pham]] replied [[Harm Geert Muller]] on a [[Talkchess]] thread <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72019&start=36 Re: PGN standard, its improvement and standardization] by [[Pham Hong Nguyen|Nguyen Pham]], [[CCC]], October 14, 2019 » from [[Portable Game Notation]] to [[Protocols]]</ref>
* [[:Category:Linux|Linux UCI Engines]]
<span id="GUI"></span>
=[[GUI|GUIs]]=
* [[Aquarium]]
* [[Arena]]
* [[Kvetka]]
* [[LittleBlitzer]]
* [[Lucas Chess]]
* [[PyChess]]
* [[SCID]]
* [[Shredder#GUI|Shredder GUI]]
* [[Tarrasch]]
 
=[[CLI|CLIs]]=
* [[Cutechess-cli]]
* [[c-chess-cli]]
=Utilities=
* [[CPW-Engine_com]]
* [[Engine Testing]]
* [[Shogi#USI|USI]] - Universal Shogi Interface
* [[Vice#UCI|Vice UCI-Videos]]
* [[WinBoard]]
* [https://www.stmintz.com/ccc/index.php?id=360181 Extension of the UCI protocol] by [[Stefan Meyer-Kahlen]], [[CCC]], April 15, 2004
==2005 ...==
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=2374 How to implement the UCI command "currline"] by [[Josué Forte]], [[Computer Chess Forums|Winboard Forum]], April 24, 2005
* [https://www.stmintz.com/ccc/index.php?id=453616 UCI protocol question] by [[Jon Dart]], [[CCC]], October 04, 2005
* [http://www.talkchess.com/forum/viewtopic.php?t=24866 UCI protocol and SMP] by [[Aart Bik]], [[CCC]], November 13, 2008 » [[Parallel Search]], [[SMP]]
* [http://www.talkchess.com/forum/viewtopic.php?t=42037 About UCI multipv] by [[Fermin Serrano]], [[CCC]], January 17, 2012 » [[Principal Variation#MultiPV|Multi-PV]]
* [http://www.talkchess.com/forum/viewtopic.php?t=42154 good macintosh guy for UCI engine development] by [[Sam Hamilton]], [[CCC]], January 25, 2012 » [[GUI]], [[Macintosh]], [[Mac OS]]
* [https://open-chess.org/viewtopic.php?f=7&t=2053 Remote UCI engines and port forwarding] by itias, [[Computer Chess Forums|OpenChess Forum]], August 01, 2012
* [http://www.open-chess.org/viewtopic.php?f=5&t=2146 Ponder and UCI] by geko, [[Computer Chess Forums|OpenChess Forum]], November 19, 2012 » [[Pondering]]
* [http://www.talkchess.com/forum/viewtopic.php?t=46586 Problem with UCI engines hash in Arena] by Carl Langan, [[CCC]], December 26, 2012 » [[Arena]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=71617 Sending pure comments using UCI protocol] by [[Vivien Clauzon]], [[CCC]], August 21, 2019
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72019&start=36 Re: PGN standard, its improvement and standardization] by [[Pham Hong Nguyen|Nguyen Pham]], [[CCC]], October 14, 2019 » from [[Portable Game Notation]] to [[Protocols]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72140 UCI Win/Draw/Loss reporting] by [[Gian-Carlo Pascutto]], [[CCC]], October 22, 2019» [[Pawn Advantage, Win Percentage, and Elo]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=72686 UCI pondering and time management] by [[Vivien Clauzon]], [[CCC]], December 30, 2019 » [[Pondering]], [[Time Management]]
 
==2020 ...==
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73592 UCI to CECP] by Fulvio, [[CCC]], April 07, 2020 » [[Chess Engine Communication Protocol|CECP]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=73617 UCI Options, clarifation] by Alan Cooper, [[CCC]], April 10, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75218 Remote UCI] by [[Daniel José Queraltó]], [[CCC]], September 26, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75783 UCI wrapper?] by Kurt Lanc, [[CCC]], November 13, 2020
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75992 UCI Gui to remote Linux Engine] by [[Joshua Shriver]], [[CCC]], December 05, 2020 » [[GUI]], [[Linux]]
'''2021'''
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=76344 Uci "go" command without other parameters] by [[Vivien Clauzon]], [[CCC]], January 17, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77088 Missing input in ponder] by [[Fabio Gobbato]], [[CCC]], April 15, 2021 » [[Pondering]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77189 Listening for GUI input when searching] by [[Niels Abildskov]], [[CCC]], April 27, 2021 » [[GUI]], [[Search]], [[Thread]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77432 Reporting errors in UCI] by [[Niels Abildskov]], [[CCC]], June 03, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77650 uci question, receive stop before pondering starts] by [[Vivien Clauzon]], [[CCC]], July 06, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77835 UCI's readyok: A mistake or a misunderstanding] by [[Andrew Grant]], [[CCC]], July 31, 2021
* [http://talkchess.com/forum3/viewtopic.php?f=7&t=77842 Ignoring threads option, is it valid?] by [[CM Canavessi]], [[CCC]], August 01, 2021
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77904 Latest UCI spec?] by [[Martin Bryant]], [[CCC]], August 08, 2021
=External Links=
* [httphttps://www.shredderchess.com/chess-info/features/uci-universal-chess-interface.html The UCI Specification] from [[Shredder|Shredder Chess]]* [http://wbec-ridderkerk.nl/html/UCIProtocol.html UCI protocol] hosted by [[WBEC|WBEC Ridderkerk]]
* [https://en.wikipedia.org/wiki/Universal_Chess_Interface Universal Chess Interface From Wikipedia]
==Interviews==* [http://web.archive.org/web/20020925204655fw_/http://www.playwitharena.com/directory/interviews/interviews.htm Arena, Interviews mit Prof. Dr. Robert Hyatt, Tim Mann und Martin Blume] by [[Frank Quisinsky]] for [[ChessBits]], No. 18, May 2002 ([https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine]) » [[Robert Hyatt]], [[Tim Mann]], [[Martin Blume]] <ref>[https://www.stmintz.com/ccc/index.php?id=245615 3 interviews about engine protocols with T. Mann, R. Hyatt and M. Blume] by [[Frank Quisinsky]], [[CCC]], August 15, 2002</ref>* [https://web.archive.org/web/20120106031235/http://www.playwitharena.com/?Newsticker:Archive_9 Interview with SOS programmer Rudolf Huber in German language!] by [[Frank Quisinsky]], [[Arena|Arena Chess GUI 3.0]] - Archive 9, 132, May 10, 2005([https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine])
==Implementations==
* [http://www.aartbik.com/MISC/uchess.html UCI Engine Support for Android] by [[Aart Bik]]

Navigation menu