Author: Michael Yee
Date: 18:08:58 03/12/05
Given the recent (and recurring) discussion about the virtues of winboard vs uci, I felt the urge to facilitate the next generation of winboard to address some of its lingering issues. Fortunately (or unfortunately :), it was suggested that backwards compatability wasn't a good idea, and it inspired me to think about the problem of engine-gui interaction from scratch. The main design goals were: - engine gets control over all aspects of the game of chess (e.g., draws, resign) - easy for users - easy for engine programmers - easy for gui programmers - (somewhat) extensible After generating some rough ideas, it became clear that UCI already had perfect mechanisms for much of the required functionality. So instead of coming up with an entirely new protocol (thereby introducing unwanted complexity for the programmer), most of the commands and syntax are borrowed directly from UCI. You can view the proposed protocol here: http://web.mit.edu/myee/www/chess/xci1.html Note that the draft is rough and the notation and explanations are not always complete and unambiguous. The key differences from UCI are: (from GUI) - move - level - result - go ... book - go ... drawoffer (from engine) - acceptdraw - offerdraw - resign - info name x description d (sent during initialization) - info name x value y (custom output) - info book - option XCI_Variant (misc) - generalized FEN (from Reinhard) - move format I'd appreciate any feedback and questions... even if the protocol winds up being supported by only one gui and engine (my own future ones)! Michael P.S. Reinhard, I knew about your dll-based protocol in development... The main reason that I'm sticking with text-based standard I/O is that I don't have any experience with dlls and it also seems like something that would be less portable.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.