Changes

Jump to: navigation, search

UCI

2,931 bytes added, 08:52, 30 April 2021
no edit summary
==Pro==
* Statelessness. That reduces unsynchronised problems between chess GUIs and engines
* Easy Chess systems (chess GUIs and chess engines) may work more stably* 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 ; easy to pick up a position from long logs (for debugging purposepurposes)* Most of Almost all new and/or strong chess engines support UCI* Almost all chess GUIs support
[[Fabien Letouzey]] emphasize the ease of implementation in a [[Frank Quisinsky|Quisinsky]] interview, April 05, 2005 <ref>[http://www.playwitharena.com/?Newsticker:Archive_7 The alternative to Crafty, Interview with Fabien Letouzey] by [[Frank Quisinsky]], [[Arena|Arena Chess GUI 3.0]] - Archive , Page 7, 96, April 05, 2005</ref> :
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>
UCI's statelessness is surely not a bad idea. Your example did not prove that (it is a bad idea) but just point out a flawed detail on UCI design.
A stateless protocol means a chess GUI must provide enough information each time an engine starts thinking. In your example, it cannot send enough information about the timer since the protocol does not mention it. It is not a big deal since programmers can solve that issue easily by adding some assumes. Of course, it is better one day we can fix those flawed details in the protocol (version 2?).
 
I have written engines with both protocols (UCI, WB) and now support them all in my own chess GUI. Thus I have my own ideas about the strong points of each. Both are so good and can do so well their jobs. The stateless idea is the central point of UCI, which makes it a bit more suitable for modern computers and programming - that is why recently it becomes very popular.
=Engines=
* [[:Category:UCI|UCI Engines]]
* [[:Category:Linux UCI|Linux UCI Engines]]
<span id="GUI"></span>
=[[GUI|GUIs]]=
* [[Aquarium]]
* [[Arena]]
* [[Banksia]]
* [[Banksia GUI]]
* [[Chess Assistant]]
* [[ChessBase (Database)]]
* [[Shredder#GUI|Shredder GUI]]
* [[Tarrasch]]
 =[[CLI|CLIs]]=* [[BanksiaCutechess-cli]]* [[Banksia GUIc-chess-cli]]
=Utilities=
* [[CPW-Engine_com]]
* [[Engine Testing]]
* [[USI]] - Universal Shogi Interface
* [[Vice#UCI|Vice UCI-Videos]]
* [[WinBoard]]
* [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]]
'''2013'''
* [http://www.open-chess.org/viewtopic.php?f=5&t=2221 UCI Programming] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], January 15, 2013
* [http://www.open-chess.org/viewtopic.php?f=5&t=2245 UCI protocol not working] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], January 27, 2013
* [http://www.open-chess.org/viewtopic.php?f=5&t=2357 UCI Interfacing question] by epideath, [[Computer Chess Forums|OpenChess Forum]], July 05, 2013
* [http://www.talkchess.com/forum/viewtopic.php?t=48768 UCI protocol issue] by [[Jon Dart]], [[CCC]], July 27, 2013 » [[Repetitions]]
'''2019'''
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=69746 UCI question] by [[Ed Schroder|Ed Schröder]], [[CCC]], January 28, 2019
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=71050 Ambiguous: UCI and option Clear Hash] by [[Pham Hong Nguyen|Nguyen Hong Pham]], [[CCC]], June 20, 2019
* [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]]
=External Links=

Navigation menu