Author: Dan Newman
Date: 02:28:01 09/16/98
Go up one level in this thread
On September 15, 1998 at 10:57:31, Robert Hyatt wrote: Posted by Robert Hyatt on September 15, 1998 at 10:57:31: <snip> Great. I'm glad you've started this. I think what we need is a set of commands that is 1) simple, 2) clear, and 3) complete. (I hope these aren't mutually exclusive.) One thing I would suggest is that all commands between engine and interface be of the form <command-name> <parameters>. Then moves sent to the engine would look like "move Nf3" instead of the current xboard/winboard "g1f3". The reasons for this move command format are 1) consistency with the other commands and 2) it makes it easier on the engine to distinguish moves from un-implemented commands--especially important if we go to SAN representation. > > Questions remaining: > > 1. should the interface program be "smart" and understand the rules of > chess and take care of 50 move draws, draws by repetition, and so forth, > or should we make the engines handle this themselves. I vote for the > latter, since an engine should handle this as part of the game, and it > will tend to keep the interface program simpler. The engines should be able to understand these things themselves. However, I don't see why an interface program couldn't be smart--just that it shouldn't be a requirement. One reason I can think of for having a "smart" interface is so it can act as an arbiter when a program makes a claim that the game is over or that the opponent made an illegal move, etc. Currently if you send winboard/xboard a "1-0" (for instance) whether white has won or not, winboard/xboard immediately terminates the game, sends the result command to both engines, and records the game (if you have that set up) to a PGN file with the result as "1-0". This is of course no problem if both engines are functioning correctly. But it does allow "cheating" of sorts: imagine you run a 500 game match (1 sec/move) between two programs and one of them emits the occasional erroneous "1-0" or "0-1" in its favor... > 2. move format? I vote for SAN. Easier to read, is more standard, is > the PGN standard, etc. I slightly favor the non-SAN xboard representation of moves because that representation is much easier to encode and decode--but if the consensus favors SAN, I have no real objection. > > 3. should the engine be able to communicate with the interface program > for any reason? IE might the interface program have a window open for > each program and let the programs send "analysis" to it for display in the > appropriate window? Or should we "keep it simple, stupid" and not worry > about this? What about having a core set of commands that all engines/interfaces must implement along with a (perhaps large) set of non-essential commands? For instance we could have commands to send analysis or other messages to an interface window, but the interface need not implement these commands and can just ignore them. I've often thought it would be nice to have commands that would cause the interface (xboard/winboard or whatever) create special engine-specific menus, dialog boxes, etc. These, again, could just be ignored by an interface. If the interface implements these commands, it could send back some sort of confirmation that a menu or dialog was created. The menu commands might look something like this: menu <menu name> additem <menu name> <item name> <command string> displaymenu <menu name> deletemenu <menu name> (The command string would be sent to the engine whenever the menu item is selected.) Finally, how about a "comment" command so that an engine can send junk to the interface to be recorded in a debug log file (much as winboard has) without any worries of accidentally sending a valid command (and freeing the interface code from having to figure out that the junk is just junk). -Dan.
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.