As I promised on the GNU Go mailing list, I'm writing a GMP/GTP bridge with the original intent to be usable in the Gifu contest.
In the course of the implementation however, I encountered a problem which I don't know exactly how to solve. The regulations of the contest allow only a very restricted use of the Go Modem Protocol, especially with regard to queries (board size, ruleset used, etc). This is no problem for the answering side of the communication channel - if it is not asked, it need not be aswered. But it severely hampers the implementation of the querying side.
I will give an example: Black sends "new game". He knows about his game parameters. White does not know these and tries to acquire them through queries sent to black. Gifu regulations allow (and require) exactly two of them ("what's your color" and "what's the handicap"). The board size, e.g., must not be queried, and is thus implicitly assumed.
Now I can either follow the Gifu regulations and end up with an incomplete bridge, or I can attempt to write a more complete mapping of functionality and will have a program which cannot be used in the contest.
As an aside, GNU Go's GMP implementation, which I intended to use in my program, does way too much on its own (sending many queries to verify parameters). This is all perfectly legal GMP, but it is NOT legal with the 'modified GMP' used in the contest.
Any ideas will be very much appreciated.
Hellwig
On 12-Jul-03 Hellwig Geisse wrote:
[..] In the course of the implementation however, I encountered a problem which I don't know exactly how to solve. The regulations of the contest allow only a very restricted use of the Go Modem Protocol, especially with regard to queries (board size, ruleset used, etc). This is no problem for the answering side of the communication channel - if it is not asked, it need not be aswered. But it severely hampers the implementation of the querying side. [..]
I think I solved this problem: the changes to the gmp.* files are much less drastic than I expected them to be, and the whole hack can be made an option which is selectable at runtime. This however has not been done yet.
Hellwig
I will give an example: Black sends "new game". He knows about his game parameters. White does not know these and tries to acquire them through queries sent to black. Gifu regulations allow (and require) exactly two of them ("what's your color" and "what's the handicap"). The board size, e.g., must not be queried, and is thus implicitly assumed.
Now I can either follow the Gifu regulations and end up with an incomplete bridge, or I can attempt to write a more complete mapping of functionality and will have a program which cannot be used in the contest.
One approach would be to toggle the two behaviors with a command line switch --gifu to the bridge program.
Or allow parameters to be passed to the bridge at the command line and only parameters not explicitly set are negotiated through the gmp.
If you really have to decide between a generally useful program and one useful just for gifu, bear in mind that Arend has written to them they can use CGoban and GNU/Linux. (I have not seen any response to his message.)
Dan