Fifty-first KGS Computer Go Tournament

Sunday September 20th 2009

These results also appear on an official KGS page which links to the records of all the games.


format15-round Swiss
board size9×9
time4½ minutes plus 25/20s


The first round started at 16:00 UTC.

Result table


MoGoBot1 was not MoGo, but a new program called MoGoTW, which uses some code from MoGo. It has many contributors, and was entered and operated by Olivier Teytaud.

Aloril entered FuegoAl and GnuGoAl, unofficial versions of Fuego and GNU Go. He also entered his usual collection of weaker bots, and allowed me to remove IdiotBot if it would make the numbers even.

When no "official" version of a program is entered, I welcome and encourage volunteers such as Aloril to enter unofficial versions, on the understanding that if an official version appears, I will remove the unofficial one. More volunteers would be better, there is a limit to the processor power that Aloril can use. The source code of some strong programs is available via these links: Fuego, GNU Go, MoGo.


In round 1, ManyFaces2 did not join its game against Orego until it had only 45 seconds left on its clock. It still won. SGF

EricaBot vs Rango
After move 12.

EricaBot and Rango played in very different styles, as seen to the right. EricaBot (White) eventually won this game. SGF

MoGoBot1 resigned its game against FuegoAl, in a totally lost position, when FuegoAl was in severe time trouble, with 13 seconds left for 18 moves. An unscrupulous human might have played on here in the hope of winning on time. SGF

In round 2, EricaBot obtained a clearly won game against GnuGoAl. But the status of two stones was disputed. The stones belonged to EricaBot and were clearly dead, but EricaBot did not know how to say so, so the server marked them as alive on its behalf. EricaBot then did not know how to handle the resolution phase, timed out, and lost the game. SGF
       It would be better if, when only one player submits a list of dead stones, the server would believe that player. That way, EricaBot would have won this game, as it deserved. If a player does not know how to submit a list of dead stones, it is likely that it won't know how to handle the resolution either.

Orego vs housebot
After consecutive passes.

The Orego-housebot game got stuck in the position shown to the left. I don't know what state it had got into, but neither player moved, and neither timed out. Housebot had crashed, so I am surprised that this did not cause it to time out. SGF
       Anyway, I needed to assign a result to the game. There is an unresolved ko at the top edge. But even assuming it loses the ko, White (Orego) has 38 points on the board, and wins with komi. So I assigned the win to Orego.
       The way the KGS server works, if I assign a result, it is shown as a "forfeit" by the loser. The "forfeit" label on KGS usually indicates that the forfeiting player is a habitual escaper. But in bot games it merely indicates that some human intervention has occurred, and is not a criticism.

In round 6, EricaBot timed out on move 9, against FuegoAl.

In round 7, Zen9 lost its first game points, to MoGoBot1, by 1½ points. SGF

FuegoAl vs housebot
Move 105.

In round 8, EricaBot timed out on move 4, against WeakBot50k.

Housebot's programmer, Jason House, told me that it was losing its games as black becasue it believed that the komi was half a point, not 7½. This was evident in its round 10 game against FuegoAl. Housebot played very peacefully, building a wall across th board which solidly secured 41 points, while Fuego happily accepted the other 40. SGF
       After the dame were filled, housebot played pointless moves inside FuegoAl's territory. FuegoAl, which had five seconds of main time left, thought for a few seconds about each of these moves before passing. Because of an undocumented feature of the KGS server, it did not lose any time by doing this: if a player thinks for less than 15 seconds and then passes, no time is deducted. I doubt FuegoAl was programmed to take advantage of this, I think it was just lucky here.
       However, when housebot played the move shown to the right, FuegoAl responded, at the point marked a. This of course is a disaster – though it took housebot 25 of its remaining 30 seconds to work out how to respond. On having all its stones captured, FuegoAl immediately resigned.
       My guess is that FuegoAl wanted to win the ko, and played at a as a ko threat. Or maybe it just had too little time to do anything sensible.

Meanwhile, EricaBot again ran out of time in a won position against SimpleBot, just as it had done in round 2 against GnuGoAl, when unable to handle a resumption where no resumption was necessary anyway.

MoGoBot1 vs Zen9
Complete game.

In round 11, Zen (Black) lost its second game, to MoGoBot1 again, by resigning in the position shown to the left. It seems early to resign – it must have read that it can't kill the upper right white group, which, with komi and the solid 25-point white group in the lower left, must be enough for a white win. SGF

Meanwhile, EricaBot obtained a won finished game against GnuGoAl, and successfully managed part of the clean-up phase. GnuGoAl did not cooperate by removing EricaBot's dead stones, and they eventually reached a position where EricaBot had nothing it could do but fill one of its many one-point eyes. But rather than fill an eye or pass, it timed out. SGF

MoGoBot1 vs FuegoAl
After consecutive passes.

In round 13, MoGoBot1 and FuegoAl both passed in the position shown to the right. This was correct: there is nothing White (MoGoBot1) can do here to stop Black from killing the white group at the bottom. The players then disagreed about the status of the white group. In the resumption, Black (with 13 seconds for nine moves) passed, so the white group was scored as alive, giving the game to White. SGF
       MoGoBot1's operator, Olivier Teytaud, generously tried to concede the game, because the position shown "should" be scored as a win to Black (FuegoAl). I refused to allow this. The game had gone through a resolution phase, in which both players had passed, so I believe it was correct for the game to be counted as a White win. I am reluctant to reassign a result that has been achieved "normally", with no misbehavour, bot crash, or server error. There are plenty of other games (including several resumption-phase time-outs by EricaBot, in this tournament) where the player who "should" have won did not, because of poor play in the resumption phase.
       I am not totally sure I am right about this. I may be persuaded to act differently in future. Suppose I directed an event for children, in which the players both counted a dead white group as alive, and reported the game to me as a win for White. Then White's mother pointed out to me that the group should be dead, and tried to resign on her child's behalf. I don't think I would allow this. I will be interested to hear what people think. But I do applaud Dr. Teytaud's generous offer.
       I have tried to re-score the tournament to see what happens if FuegoAl is recorded as beating MoGoBot1 in round 13. My calculations (which may have mistakes) still give MoGoBot1 as the winner, with 12 wins and 124 SOS, and Zen9 second with 12 wins and 123 SOS.

MoGoBot1 vs Zen9
After move 34 - Black to play.

In round 14, Zen9 was again Black against MoGoBot1. A semeai developed on the upper edge, as shown in the diagram to the left. The black group has four liberties and the white group has three, and it is Black's move, so it looks as if Black will win with a liberty to spare. But it is urgent for Black to play at h5 otherwise it will lose three stones and the semeai. It can afford to take time off from fighting the semeai to do this. However Zen9 as Black played at b, allowing White to play at a, capturing the three stones and winning the semeai, the game, and the tournament. SGF

FuegoAl vs ManyFaces2
Move 59.

The round 15 game betwen FuegoAl and ManyFaces2 involved two difficult semeais. In the diagram to the right, neither White group is definitely alive, and ManyFaces2 as Black could have won the game if it had been able to kill either of them. I am not strong enough to assess its chances with either – but FuegoAl eventually saved both, and the game. SGF

In its game with EricaBot, SimpleBot started, as it usually did in this event, with a move on the 1-line. EricaBot failed to respond, and timed out without playing a stone.
      Despite its various accidents with time-handling and with resumptions, EricaBot scored seven wins from 15 games in this event, including a win against ManyFaces2 and a won final position against GnuGoAl. I think that if Shih-Chieh Huang can improve its time-handling and arrange for it to play correctly in resumptions, it will be among the strongest programs.

Processor numbers, power, etc.

Erica, running 8 cores, each of 2.27 GHz, Windows 7.0
Fuego, running on Aloril's Linux-based laptop, 2GiB RAM, Intel Celeron M CPU 530 @ 1.73GHz
GNU Go, running on Aloril's Linux-based laptop, 2GiB RAM, Intel Celeron M CPU 530 @ 1.73GHz
with 2 search threads, running on Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz.
Many Faces of Go, running on a 32-core Xeon 3.2GHz: 4 nodes, 8 cores per node, connected by a 40Gbps network
not MoGo, but MoGoTW (which has some code in common with MoGo) running on R900 16-cores Intel(R) Xeon(R) CPU X7350 @ 2.93GHz
running on 2 x 3 GHz Dual-Core Intel Xeon
runing on three cores of i7 920 @ 2.67GHz.
running on a Macbook Pro, 2.4 GHz Intel Core 2 Duo, 2 GB RAM.
running on one processor of a 4GiB RAM, AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, shared with WeakBot50k
running on one processor of a 4GiB RAM, AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, shared with SimpleBot
Zen, running on a Mac Pro 8 core, Xeon 2.26GHz.