Difference between revisions of "Chess Engine Communication Protocol"
(→Cons) |
(→Pros and Cons) |
||
Line 24: | Line 24: | ||
* It has redundant commands for almost all chess tasks from old-time to now | * It has redundant commands for almost all chess tasks from old-time to now | ||
* Designed to work without the need of having an extra thread for processing those commands | * Designed to work without the need of having an extra thread for processing those commands | ||
+ | * Allow users play directly with chess engines without using chess GUIs | ||
* Allow chess engines act a bit independently such as they can auto-start pondering after a move | * Allow chess engines act a bit independently such as they can auto-start pondering after a move | ||
==Cons== | ==Cons== | ||
* Has a long and complicated list of commands | * Has a long and complicated list of commands | ||
− | * Use many | + | * Use many assumptions about data without keywords requirements. For example, the string "a2a3" is considered as a move, "9 156 1084 48000 Nf3 Nc6 Nc3 Nf6" is considered as a computing output when the first number is the ply, the second number is a score in centipawn unit... |
− | * Since allowing chess engines acting independently chess GUIs may get loss to control engines | + | * Since allowing chess engines acting more independently chess GUIs may get loss to control engines |
* Some popular chess GUIs don't support | * Some popular chess GUIs don't support | ||
− | * | + | * The majority of new chess engines don't support |
=Engines= | =Engines= |
Revision as of 00:08, 19 October 2020
Home * Protocols * Chess Engine Communication Protocol
Chess Engine Communication Protocol (CECP),
also dubbed the XBoard or WinBoard protocol after the eponymous XBoard or WinBoard graphical user interfaces (GUI), is an open communication protocol for chess engines to play games automatically, that is to communicate with other chess playing entities.
Contents
GUI
A GUI supporting the protocol is known as XBoard or WinBoard, being for Unix (Posix) or Windows operating systems, respectively. Many other GUIs support the protocol, which is based on text commands, while requiring the engine to keep the state of the game internally. While the Universal Chess Interface is somewhat more popular today, the Chess Engine Communication Protocol protocol is preferred by some because it allows greater flexibility for the engine (for instance, in pondering).
How it began
Tim Mann in an Interview by Frank Quisinsky, April 2000 [1]:
Originally, xboard and WinBoard were simply graphical user interfaces for GNU Chess, then for GNU Chess and Internet chess servers. Because the GUI and the chess engine are separate programs, several people thought of the idea of connecting their own chess programs in place of GNU Chess, and they began to email me asking how to do it. I think the first person to ask was Shay Bushinsky, in November 1994. Over the years I received so many requests for this information that I was more or less forced into documenting and extending the ad-hoc engine protocol to support them. The document that exists now (chess-engines.html) evolved directly from the original email reply I sent to Shay. Unfortunately, because the protocol was never really designed, but just grew out of documenting the existing communication with GNU Chess, there are still several bugs and deficiencies in it today. It would be nice to make some major revisions, but then of course it would (at best) take a long time for the existing engines to convert over to the new protocol, so both would have to be supported, probably forever.
UML State diagram
WinBoard/XBoard protocol UML state diagram by Alessandro Scotti [2] [3]
Version 2
Harm Geert Muller established a protocol Version 2 in September, 2009 [4], also covering Chess Variants and different board sizes.
Pros and Cons
Those pros and cons compared with UCI
Pros
- Short commands
- It has redundant commands for almost all chess tasks from old-time to now
- Designed to work without the need of having an extra thread for processing those commands
- Allow users play directly with chess engines without using chess GUIs
- Allow chess engines act a bit independently such as they can auto-start pondering after a move
Cons
- Has a long and complicated list of commands
- Use many assumptions about data without keywords requirements. For example, the string "a2a3" is considered as a move, "9 156 1084 48000 Nf3 Nc6 Nc3 Nf6" is considered as a computing output when the first number is the ply, the second number is a score in centipawn unit...
- Since allowing chess engines acting more independently chess GUIs may get loss to control engines
- Some popular chess GUIs don't support
- The majority of new chess engines don't support
Engines
GUIs
Native
Compatible
- Arena
- ChessGUI
- ChessPartner
- ChessX
- Cute Chess
- EBoard
- jose
- PyChess
- SCID
- Scid vs. PC
- Scidb
- Banksia
- Banksia GUI
Utilities
See also
Forum Posts
1990 ...
- xboard datapoint by Paul Vaughan, gnu.chess, January 29, 1991
- xboard v1.2 by Chris Sears, gnu.chess, June 14, 1991
- reading in a position and playing in xboard by Lewis Stiller, gnu.chess, February 20, 1992
- Re: Accessing remote computers with WinBoard by Tim Mann, gnu.chess, November 7, 1993
1995 ...
- XBoard and WinBoard 3.4, patchlevel 1 by Tim Mann, rec.games.board, December 13 1995
- XBoard and WinBoard, version 3.6.0 by Tim Mann, rgc, May 09, 1997
- new autoplayer interface standard by Robert Hyatt, CCC, September 15, 1998
- xboard/winboard interface documentation by Jan Eric Larsson, rgcc, November 27, 1998
- WinBoard and pondering under W98 by Frank Phillips, CCC, July 28, 1999 » Pondering, WinBoard
2000 ...
- Winboard for Dummies by Russell Reagan, rgcc, June 30, 2001
- xboard and WinBoard 4.2.4 released by Tim Mann, gnu.chess, December 10, 2001
- what is the importance of the ping command? by Uri Blass, Winboard Forum, September 24, 2002
- Kiwi for Win98 and input-reading stuff by Alessandro Scotti, CCC, September 29, 2004 » Kiwi, Windows, C++, Thread
2005 ...
- Safe I/O (repeated) by Fabien Letouzey, Winboard Forum, February 11, 2005
- A question about kibitz by Niyaz Khasanov, Winboard Forum, February 18, 2005
- Re: gnuchess/xboard protocol by Hans Eric Sandström, gnu.org, May 19, 2006
- Authors of WinBoard SMP engines, take note! by Harm Geert Muller, CCC, October 11, 2008 » Parallel Search, SMP
- UCI protocol in winboard by Engin Üstün, Winboard Forum, September 24, 2009 » UCI, WinBoard
- Adapter for non-standard chess engine to Winboard by Carey, CCC, October 10, 2009
2010 ...
- XBoard and epd tournament by Vlad Stamate, CCC, January 31, 2010 » Engine Testing
- Aquarium (other GUIs too?) and WB support => I am shocked by Miguel A. Ballicora, CCC, February 27, 2010
2011
- WinBoard protocol driver by Harm Geert Muller, Winboard Forum - Chess Programming Lessons, April 30, 2011
- Starting to use the Winboard Protocol by Reinhard Scharnagl, Winboard Forum, December 11, 2011
2012
- XBoard / WinBoard 4.6.0 released by Harm Geert Muller, CCC, March 11, 2012
- Winboard protocol and fractional increments by Jon Dart, CCC, September 25, 2012 » Time Management
2013
- A few questions about CECP by Martin Sedlak, CCC, January 05, 2013
- WB protocol: describing how a piece moves by Harm Geert Muller, CCC, October 12, 2013
2014
- WB protocol extension: thinking output by Harm Geert Muller, CCC, January 14, 2014
- Handling xboard new game race condition in protover 1 engine by Matthew Lai, CCC, August 12, 2014
- for Chess-variant authors by Harm Geert Muller, CCC, September 17, 2014
- XBoard and chess variants by Evert Glebbeek, CCC, October 28, 2014
- UCCI2WB by Harm Geert Muller, CCC, October 27, 2014
- WB protocol specs by Harm Geert Muller, CCC, December 12, 2014
2015 ...
- xboard softquit by Matthew Lai, CCC, July 26, 2015
- Winboard 2 state diagram by thevinenator, OpenChess Forum, August 26, 2015
- XBoard for Mac: Zippy problems by Steven Edwards, CCC, August 29, 2015 » Mac OS
- Suggestions for XBoard documentation by Steven Edwards, CCC, August 30, 2015
- CECP ('WB protocol') specs by Harm Geert Muller, CCC, December 28, 2015
2016
- Release of XBoard 4.9.0 soon by Harm Geert Muller, CCC, April 07, 2016
- Chess on Android by Pedro Castro, CCC, April 19, 2016 » Chess for Android, DanaSah
- CECP: Chess variants with dice by Harm Geert Muller, CCC, May 22, 2016
- ChessGUI Timer Problem by Dennis Sceviour, CCC, October 24, 2016 » ChessGUI
2017
- Winboard variants online by Erin Dame, CCC, March 22, 2017 » Chess Variants
- Winboard questions by Ed Schroder, CCC, June 26, 2017
- Winboard: Resigning? by Rasmus Althoff, CCC, June 27, 2017
- Loading opening book and tablebases (xboard vs uci) by Pedro Castro, CCC, October 15, 2017 » UCI
2018 ...
- UCI vs Winboard question by Michael Sherwin, CCC, March 05, 2018 » UCI
- Winboard state machine diagram by Harald Lüßen, CCC, April 15, 2019
- Xboard, CECP, how to handle long inits by Srdja Matovic, CCC, July 04, 2019
- Re: PGN standard, its improvement and standardization by Nguyen Pham, CCC, October 14, 2019 » from Portable Game Notation to Protocols
2020 ...
- UCI to CECP by Fulvio, CCC, April 07, 2020 » UCI
- Rolling dice by Harm Geert Muller, CCC, May 27, 2020 » EinStein würfelt nicht!
- Questions about CECP post-nopost (UCI info) by Oliver Brausch, CCC, September 28, 2020
External Links
- Chess Engine Communication Protocol - GNU Project - Free Software Foundation
- Chess Engine Communication Protocol from Wikipedia
- Chess-Engine Communication Protocol by Harm Geert Muller [5]
- Chess Engine Communication Protocol by Tim Mann & Harm Geert Muller
- Chess Engine Communication Protocol - New Specs by Harm Geert Muller [6]
- XBoard News by Harm Geert Muller
- FAQ on Winboard and Chess Engines by Aaron Tay
- Lyapko George's WinBoard related page (outdated) by George Lyapko [9]
- Winboard and Chess Engines FAQ from Ron Murawski's Computer-Chess Wiki
- WinBoard development and bugfixing Forum
References
- ↑ XBoard Project History
- ↑ Winboard/XBoard UML state diagram by Alessandro Scotti
- ↑ Winboard state machine diagram by Harald Lüßen, CCC, April 15, 2019
- ↑ Chess Engine Communication Protocol by Tim Mann & H.G. Muller
- ↑ CECP ('WB protocol') specs by Harm Geert Muller, CCC, December 28, 2015
- ↑ WB protocol specs by Harm Geert Muller, CCC, December 12, 2014
- ↑ Remote Shell from Wikipedia
- ↑ Windows Implementation of RSHD
- ↑ Tool to recreate PGN from winboard.debug? by Sven Schüle, CCC, January 01, 2013