The one issue I'd really like to fix for kgsGtp is how to solve problems when the game is over, and the human and the engine (or for that matter the two engines) disagree over which stones are dead.
GnuGo on NNGS solves this problem by abandoning the game if there is a disagreement. Since GnuGo very rarely makes mistakes in judging life and death at the end of the game, this works well for it, since only once in a while must a human inspect the game record and resign a game that the engine was wrong in. It can still cause trouble though; on KGS, leaving too many rated games without finishing them gets you tagged as an escaper, so it could make people very angry if an engine sits there and won't finish a game, leaving the human with the choice of either accepting a score tha they think is wrong, or leaving the game and getting possibly tagged as an escaper.
But, it seems that the problem is solvable in another way. If you are using non-Japanese rules, then you can always just resume the game and play it out to decide which stones are dead. If there was a genmove alternative, like "genmove_cleanup" or some such, that would not pass until all dead stones were removed from the board, then rated games would work well. Basically, if the human and the computer disagree on which stones are dead, just resume the game and start sending "genmove_cleanup" commands. Once "genmove_cleanup" passes, we know that there are no dead stones left on the board. If the human thinks that there are still dead stones left, then they can resume the game again and try to kill the stones. Eventually, a point will be reached where any reasonable person and engine will agree with each other and end the game.
This seems nice, engines such as gnugo will then very rarely need "genmove_cleanup", but less mature engines can still play rated games, they just annoy the humans sometimes by requiring play until all the dead stones are gone to score correctly.
Does this sound like a reasonable solution? If any engine author is willing to try it, I could add it as a kgsGtp-specific command. Engines that support this command would be able to play rated on KGS, with no issues about cheating. On the other hand, if none of the engine authors are interested, then there's not much point in me adding it.
Let me see if I understand your proposal:
1. Rated games for programs must use non-japanese rules.
2. If the computer and the opponent do not agree on dead stones, you issue 'genmove_cleanup b|w' until both sides pass. A program should understand this to mean "do not pass" unless all dead stones are removed.
3. The game is over at this point and your server scores the game, regardless of the situation.
I assume that if there are STILL dead stones at this point, the game is scored as is. If one side is hurt by this it can only blame itself.
Is that the general idea? It sounds clean and workable to me.
Thanks,
Don
From: "William M. Shubert" wms@igoweb.org
--=-rbTTffFNY1iiJSRvmquM Content-Type: text/plain Content-Transfer-Encoding: quoted-printable
The one issue I'd really like to fix for kgsGtp is how to solve problems when the game is over, and the human and the engine (or for that matter the two engines) disagree over which stones are dead.
GnuGo on NNGS solves this problem by abandoning the game if there is a disagreement. Since GnuGo very rarely makes mistakes in judging life and death at the end of the game, this works well for it, since only once in a while must a human inspect the game record and resign a game that the engine was wrong in. It can still cause trouble though; on KGS, leaving too many rated games without finishing them gets you tagged as an escaper, so it could make people very angry if an engine sits there and won't finish a game, leaving the human with the choice of either accepting a score tha they think is wrong, or leaving the game and getting possibly tagged as an escaper.
But, it seems that the problem is solvable in another way. If you are using non-Japanese rules, then you can always just resume the game and play it out to decide which stones are dead. If there was a genmove alternative, like "genmove_cleanup" or some such, that would not pass until all dead stones were removed from the board, then rated games would work well. Basically, if the human and the computer disagree on which stones are dead, just resume the game and start sending "genmove_cleanup" commands. Once "genmove_cleanup" passes, we know that there are no dead stones left on the board. If the human thinks that there are still dead stones left, then they can resume the game again and try to kill the stones. Eventually, a point will be reached where any reasonable person and engine will agree with each other and end the game.
This seems nice, engines such as gnugo will then very rarely need "genmove_cleanup", but less mature engines can still play rated games, they just annoy the humans sometimes by requiring play until all the dead stones are gone to score correctly.
Does this sound like a reasonable solution? If any engine author is willing to try it, I could add it as a kgsGtp-specific command. Engines that support this command would be able to play rated on KGS, with no issues about cheating. On the other hand, if none of the engine authors are interested, then there's not much point in me adding it. --=20 William M. Shubert wms@igoweb.org
--=-rbTTffFNY1iiJSRvmquM Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part
--=-rbTTffFNY1iiJSRvmquM--
_______________________________________________ gtp mailing list gtp@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/gtp
Bill wrote:
It can still cause trouble though; on KGS, leaving too many rated games without finishing them gets you tagged as an escaper, so it could make people very angry if an engine sits there and won't finish a game, leaving the human with the choice of either accepting a score tha they think is wrong, or leaving the game and getting possibly tagged as an escaper.
Since you can know exactly which games are played by a program (i.e. use kgsGtp), an option would be to exclude such games in the determination of escapers. Also kgsGtp should not accept a new game (at least not rated) against a player which already has an adjourned game against the program. (I don't know whether the same players can have multiple games going on KGS.)
But, it seems that the problem is solvable in another way. If you are using non-Japanese rules, then you can always just resume the game and play it out to decide which stones are dead.
What about games under Japanese rules? Does KGS have a way to resolve disputes between humans?
Does this sound like a reasonable solution? If any engine author is willing to try it, I could add it as a kgsGtp-specific command. Engines that support this command would be able to play rated on KGS, with no issues about cheating. On the other hand, if none of the engine authors are interested, then there's not much point in me adding it.
It's trivial to add to GNU Go, since such move generation already is implemented. In fact, playing out the game until everything except sekis are unconditionally settled is exactly what GNU Go does in its most accurate scoring mode.
Other engines may need a lot more work, at least if they want to do it well. Recognizing a bent four in the corner as dead by eye analysis is a lot simpler than proving it by playing it out since that requires knowledge of how to eliminate ko threats.
/Gunnar
On Thu, 2004-01-01 at 11:44, Gunnar Farnebäck wrote:
But, it seems that the problem is solvable in another way. If you are using non-Japanese rules, then you can always just resume the game and play it out to decide which stones are dead.
What about games under Japanese rules? Does KGS have a way to resolve disputes between humans?
On KGS, the official was to resolve scoring disputes is "get somebody strong to look at the game and give their opinion." I considered doing a "real" japanese scoring resolution system, but it would have been so complex that only rules experts would have been able to figure out how to use it - and rules experts are the people least likely to need it. (Can you imagine a 15k being told, "Now play on, but passing is the only ko threat, any changes to the board will be undone, and all that matters is whether the group in question lives or not"? Ugh!) The good news is, it's amazing how well the "get somebody strong" approach works for humans. For computers, it isn't such a good solution.
Does this sound like a reasonable solution? If any engine author is willing to try it, I could add it as a kgsGtp-specific command. Engines that support this command would be able to play rated on KGS, with no issues about cheating. On the other hand, if none of the engine authors are interested, then there's not much point in me adding it.
It's trivial to add to GNU Go, since such move generation already is implemented. In fact, playing out the game until everything except sekis are unconditionally settled is exactly what GNU Go does in its most accurate scoring mode.
Good to hear that it would be easy! Since it would be easy for gnu go, and Don Dailey thinks it sounds good, I'll try it out. If it gets used, great, if not, then it's not much work anyway.
Other engines may need a lot more work, at least if they want to do it well. Recognizing a bent four in the corner as dead by eye analysis is a lot simpler than proving it by playing it out since that requires knowledge of how to eliminate ko threats.
H'm, not being an engine author, this surprises me, but I guess it makes sense - pattern recognition to find a bent-4 would be easy, but unless you hardcode the moves, it would take a system very good at anlysis of kos to figure out that eliminating all ko threats must be done (and in fact always can be done) before starting the attack. But, if the engine cannot properly play to kill the bent-4, then does it really deserve to claim it as dead stones?
On Thu, 1 Jan 2004, William M. Shubert wrote:
But, it seems that the problem is solvable in another way. If you are using non-Japanese rules, then you can always just resume the game and play it out to decide which stones are dead. If there was a genmove alternative, like "genmove_cleanup" or some such, that would not pass until all dead stones were removed from the board, then rated games would work well. Basically, if the human and the computer disagree on which stones are dead, just resume the game and start sending "genmove_cleanup" commands. Once "genmove_cleanup" passes, we know that there are no dead stones left on the board. If the human thinks that there are still dead stones left, then they can resume the game again and try to kill the stones. Eventually, a point will be reached where any reasonable person and engine will agree with each other and end the game.
Let me start by a "me too" to support this idea. Adding this to GTP seems to be the final step to have completely unattended computer go tournaments.
There is one issue here that might be worth discussing. Logically, genmove_cleanup should switch to modified ko rules when playing under Japanese rules. (IANARL - rules lawyer - but I think the modification is that only passes can be used as ko threats. The problem is with bent four and an unremovable ko threat, as in a seki.)
However, I doubt anyone wants to add special case code for that to their engines, KGS (IIRC) doesn't support disputes for Japanese rules anyway, and computer go tournaments seem to use Chinese rules most of the time anyway.
So while rule set choice is missing in GTP v2, should we assume genmove_cleanup will only be issued for non-Japanese rules?
Arend