Open RCHowell opened 3 years ago
In practice, I've changed a few names for clarity
Komi -> SetKomi
BoardSize -> SetBoardSize
KnownCommand -> IsKnownCommand
Here is an example game where I used the above definitions with some serializing/deserializing to have the engine play itself.
id:1 name:"GNU Go"
id:2 version:"3.8"
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . . + . . 7
6 . . . . . X . . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . + . . . + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . . + . . 7
6 . . . . . X . . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . . + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . . + . . 7
6 . . . . . X . . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . . O . . 7
6 . . . . . X . . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . . O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . . O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . . . . . . 8
7 . . + . X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . O . . . . 8
7 . . + . X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . . O . . . . 8
7 . . + X X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . + X X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . O . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O . . 7
6 . . . . . X X . . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O . . 7
6 . . . . . X X O . 6
5 . . . . + . . . . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O . . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . . O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . . X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . . . . . . . 4
3 . . O . . X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . . . . . . . 4
3 . . O X . X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . O . . . . . 4
3 . . O X . X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . . . . + . . X . 5
4 . . . O . . . . . 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . O . . + . . X . 5
4 . . . O . . . . . 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . O . . + X . X . 5
4 . . . O . . . . . 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . O . . + X . X O 5
4 . . . O . . . . . 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O . 6
5 . O . . + X . X O 5
4 . . . O . . . . X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . . O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X . X O 5
4 . . . O . . . . X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X . X O 5
4 . . . O . . . . X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X . X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X O X . . . 2 WHITE (O) has captured 0 stones
1 . . . O . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X . X . . . 2 WHITE (O) has captured 0 stones
1 . . . O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X . X . . . 2 WHITE (O) has captured 0 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O X 4
3 . . O X X X + . . 3
2 . . O X . X . X . 2 WHITE (O) has captured 0 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . . . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . X . . . X X O O 6
5 . O . . + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . X . . . X X O O 6
5 . O O . + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . X . . . X X O O 6
5 . O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . . X X X O O O . 7
6 . X O . . X X O O 6
5 . O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . X X X X O O O . 7
6 . X O . . X X O O 6
5 . O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 . X X X X O O O . 7
6 O X O . . X X O O 6
5 . O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O . . X X O O 6
5 . O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . . . . . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O . . X X O O 6
5 O O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . . . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O . . X X O O 6
5 O O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O . . X X O O 6
5 O O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O . . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O O . . O . 4
3 . . O X X X + . O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O O . . O . 4
3 . . O X X X + X O 3
2 . . O X . X . X . 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O O . . O . 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O O . X O . 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X + X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . . . . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . . O . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O . 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . . X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . . O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X . O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O . . . 9
8 . . X O O . . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O . . . 9
8 . . X O O O . . . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O . . . 9
8 . . X O O O . X . 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O . . . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O . X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O O X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O . X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O O X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O X X O O 4
3 . . O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O O X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O X X O O 4
3 . O O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O O X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O X X O O 4
3 . O O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
=
A B C D E F G H J
9 . . X X X O O X . 9
8 . . X O O O . X O 8
7 X X X X X O O O . 7
6 O X O X . X X O O 6
5 O O O X X X X X O 5
4 . . O O O X X O O 4
3 . O O X X X + X O 3
2 . . O X . X . X O 2 WHITE (O) has captured 1 stones
1 . . O O X . X O O 1 BLACK (X) has captured 1 stones
A B C D E F G H J
= B+2.0
Stopping Engine
I'm starting a project which requires communicating with Go engines such as GnuGo and Katago. Engines communicate with a protocol called "Go Text Protocol". I'd prefer to use something more structured, so I've written protobuf definitions for a Go engine server and types. From here, it's easy to wrap the engines with a simple gRPC -> GTP translator.