[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [computer-go] KGS game-end protocol
At KGS in rated games against humans bots using any other rule set than
Japanese use this protocol (I might have gotten some detail wrong, but I
think essential idea is this):
def play_game():
pass_count = 0
while pass_count<2:
genmove
dead_list_player1 = final_status_list dead
if dead_list_player1==dead_list_player2:
#players agree, use dead stone list given by them
return score_position(dead_list_player1)
pass_count = 0
while pass_count<2:
kgs-genmove_cleanup
#no dead stones should be on board anymore
return score_position([])
I propose that this same protocol to be used in computer-computer
tournaments (and maybe in rated games between bots also?).
1) If your bot wants to play rated games against humans at KGS using any
other rule set than Japanese, it will need this protocol anyway.
2) Simple to implement. You might argue that removing dead stones is not
simple for more complex endgame situations and you are right. Any
protocol that would need to resolve disputes about dead stones will
require to remove at least some dead stones anyway so no real difference
here.
3) At least 3 bots already implement it: GnuGo 3.6>=, SimpleBot and
IdiotBot. GnuGo implementation of course has been hardest to do and most
important of these. For SimpleBot/IdiotBot it was easy to implement.
4) No need to keep state at client side: just use a bit different move
generation routine (in case of SimpleBot/IdiotBot same routine with
different argument).
5) Automatically always gives unambiguous and clear result without human
intervention.
Counterarguments:
1) It will sometimes look silly. With good and/or well behaved programs
cleanup phase is not needed because they agree on dead stone status so
no silliness here. In those cases where there is disagreement it will
look as silly as it does with human-bot disagreeing and then continuing
to bitter end with lots of silly moves. Do we really care about
silliness of cleanup phase in those cases that much? I mean this
silliness only happens when either one or both of programs has already
been silly on what it lists as dead.
2) Bot might try to run other program out of time by playing lots of
nonsense moves. In this case you must ban IdiotBot from participating.
It will do those nonsense moves during actual play before any dead stone
disagreement protocol would take place so any dead stone disagreement
protocol would be irrelevant anyway ;-)
Programs not supporting kgs-genmove_cleanup:
Send them gemove commands. As consequence they might occasionally lose
game against some program that has faulty dead stone detection routine.
I suspect that this won't happen too often.
If some program deliberately disagrees on dead stones, then I think
author of that program should be ridiculed publicly ;-)
Programs not supporting final_status_list:
Listing by opponent program is automatically assumed to be correct.
If neither program supports this command, then we just assume all stones
are alive.
--
Aloril <aloril@xxxxxxxxxxxxxxxxx>
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/