[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[computer-go] KGS game-end protocol



This is a long and rambling posting. As I write it, I am confused about some of the issues. So if you cannot follow it, it is my fault, not yours: I have misunderstood something, or explained it badly, or both.

At present, in the Computer Go Tournaments that I run on KGS, the game-end procedure is as follows.

(1.) The game continues until both bots pass on successive turns.
(2.) Each bot makes an assertion about which stones are alive.
(3a.) If they agree, the game is counted by KGS scoring software, and the result automatically goes through to the KGS tournament software.
(3b.) If they disagree, the tournament organiser (which so far has always been myself) decides which groups are alive, counts the score, and presses the big button on his tournEditor program. This overrides any opinions that the bots and the KGS scoring software may have, and is accepted by the KGS tournament software.

Now, this is obviously not ideal. I don't mind the work involved, it is not difficult. But it is possible that some day a position will arise which is difficult to score, and I will get it wrong. I would prefer to avoid this.

William Shubert (wms), who runs KGS, has proposed an alternative scheme. As I understand it, it goes like this:

(1, 2, 3a.) as above.
(3b.) If they disagree, KGS issues a command to each of the, saying, "sorry, you are invited to carry on playing. And now, any stones still on the board after successive passes will be counted as alive." It decides (I don't know how) which one should move next, and tells it.
(4.) The game continues until both bots pass on successive turns.
(5.) The KGS scoring software counts the score assuming that all stones still on the board are alive, and the result automatically goes through to the KGS tournament software.

This does not happen yet, because
(A.) The kgsGtp interface, through which all bots connect to KGS, does not yet support the passing of this command to the bots.
(B.) No bots yet respond appropriately when this command is issued.

Now, (A.) has been addressed. wms has provided me with a version of kgsGtp.jar which _does_ handle the "kgs-genmove_cleanup" command. It is a beta version, and has not yet been tested. I am not making it generally available, because I fear that this might cause confusion. However I will email it to anyone who explicitly requests it and appears to understand why he wants it, and that it is a currently unsupported beta version.

This version of kgsGtp.jar needs testing. Peter McKenzie and "Aloril" have both agreed to help with the testing, connecting their bots to the beta version of the KGS server, to play in a mini-tournament for test purposes. I can also cause GNU Go to take part. Other volunteers will be most welcome.
Note that what is being tested here, as far as wms and I are concerned, is the protocol, and the new version of kgsGtp.jar which should handle it. If Peter and Aloril, and others, want to use the opportunity to also test various versions of their bots, which handle or fail to handle the "kgs-genmove_cleanup" command in various ways, that is fine with us.
A snag with this is that I do not have the power to create a tournament on the beta server, as I do on the main server. wms will have to create the tournament and enter the bots that are to play in it. And he is, I understand, particularly busy at present, as well as being asleep during the hours when us Europeans decide it would be good to have a tournament soon. No doubt we will soon find a way of getting round this (although not until August, I am off to Prague soon).

A more serious problem, in my opinion, is that the bots that enter these tournaments do not support this game-end protocol, or do not support it correctly. And I don't think it is going to be easy to get them to support it. While I have huge respect for the ability of computer Go programmers to accomplish very difficult tasks, I am somewhat sceptical about the ability of some to perform mundane tasks correctly. If you have read my tournament reports at
http://www.weddslist.com/kgs/past/index.html you will understand why I am sceptical.
Now, what will happen if I require support for the game-end protocol, and some bots which enter the next tournament fail to implement it, or fail to do so correctly? As I understand it, here is what will happen if one implements the game-end protocol correctly and the other doesn't:

(1, 2, 3a.) as above.
(3b.) If they disagree, the "kgs-genmove_cleanup" is issued. The well-behaved bot then sets about capturing all its opponent's dead stones, while the old-style bot passes, or fails to respond, or does something unhelpful. Eventually, the game probably gets awarded to the well-behaved bot.

As tournament organiser, I then have two options. I can accept the result and let the well-behaved bot keep its win. This has the advantage that it will act as an incentive to programmers to implement the game-end protocol correctly. But it will also annoy people who have so far failed to implement it correctly, maybe to the extent that they stop taking part.
Alternatively, I can override the result manually, as I do at present. This will be slightly harder than it is now, as I will have to step back through the game to the point where the first two successive passes were made.

This whole issue has already been debated here at length, in a thread titled "Re: [computer-go] Third KGS tournament: game-end protocol". I started by being opposed to making support for the game-end protocol compulsory, wanting to introduce it gradually and voluntarily, or not at all. However I was persuaded by Don Dailey that it was a good thing and its support should be made compulsory (or rather, the rules changed so that bots not supporting it were very likely to lose).

Don then totally confused me with this exchange:

NW> I have been persuaded by posters to this list that I should
NW> eventually require bots playing in KGS computer Go tournaments to NW> support the game-end protocol.

DD> I think there is a misunderstanding here. This should not be a
DD> requirement.

DD> According the rules of Go, a player can pass whenever he wants to.

DD> kgs-genmove_cleanup is just "genmove" with a request attached to it.
DD> The request is, "please try to capture your opponents dead stones."

DD> It is up to the program whether it wants to honor this request,
DD> because it is not illegal to pass.

DD> Therefore the kgs-genmove_protocol command is a request at best, not
DD> an enforcable demand (according to the rules of GO anyway.)

DD> That's why this whole business of having a human step in to clean up
DD> the results is so unatural and ugly (in my opinion.)

Don seems to me, here, to start by saying that support for the game-end protocol should not be a requirement; and to end by wanting to get rid of the human intervention step (which is necessary if the game-end protocol is not supported).

Nick
--
Nick Wedd nick@xxxxxxxxxxxxxxxxx
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/