[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Single Comment
Fergus:
| I would like to start with integrating Game Courier with a game engine.
If I understand you correctly, you would want this engine to run on the
same computer that acts as server for GC.
WinBoard engines would typically allow what you want: you could sent them a
list of (linefeed-separated) moves, after sending it the commands
new
variant
setboard
force
g1f3
d7d5
(where the variant and setboard commands are optional, and can be omitted
if you play normal Chess or start from the default array of the given
varant, respectively). The 'force' tells it that you are just going to
feed it moves for both sides, and don't want it to play any moves by
itself.
If you send an illegal move, i.e. something that does have valid move
syntax of two concatenated squares, but is illegal according to the rules
of the game in the current position, you will receive the answer
Illegal move:
where the offending input line is echoed back, so that you can determine
where it goes wrong. If even the syntax is invalid, so that it is not
recognized as a move, the complaint will be
Error (unknown command):
Engines do not prompt for moves, so if the move was OK you will receive no
echo. If you want to make sure the engine has processed everything you sent
it, before proceeding, you can send it 'ping ', where is any
number. The engine will then answer 'pong ' when it is done
processing, echoing the number back to you.
WinBoard protocol does not define a way for the engine to transmit a
position to the GUI, but a command making them do so can of course be
added without detroying their WB compatibility. In fact all my own engines
respond to the non-WB command 'p' by printing an ASCII board, for
debugging purposes when I run them from the command line, rather than in a
GUI.
If you want the engines to provide a move, you would start the same way
(sending variant name, position and moves) for loading the position, and
then send
time
go
to tell the engine how much time it has left on the clock, and that it
should think up a move. You might have to give it a 'level' command at
the beginning of the game to tell it how many moves it has to do in the
given time.
This sounds pretty close to what you want.