I have released Brown 1.0, a simple go program. This is a random go
player implementing GTP version 2. It can be downloaded (as source
code) from
http://www.lysator.liu.se/~gunnar/gtp/brown-1.0.tar.gz
This program is of potential interest to the following groups:
* People who want to see an implementation of the engine end of GTP
version 2 which strictly follows the specification but is much
smaller than the one in GNU Go. (Mainly because it does not have any
private extensions.)
* People who want to see a reasonably simple implementation of the go
board logic.
* People who want to test their GTP applications with an engine which
strictly follows the GTP version 2 specification but tends to make
uncommon choices where the specification leaves details open.
(Default board size 6x6, default komi -3.14, starts with a couple of
random stones on the board.)
Below is appended the README for the program.
Boston, March 28, 2004
Gunnar Farnebäck
-------------------------------------------
This is Brown, a simple go program.
Version:
1.0, released March 28 2004.
Main features:
* Plays randomly, but avoids filling small eyes.
* Portable, written in pure ISO C (conforms to the c89 standard).
* Talks the Go Text Protocol (GTP) version 2 on stdin/stdout.
* Small code base.
Secondary features:
* Follows the GTP version 2 specification strictly but makes uncommon
choices where the specification leaves details open.
* Always correctly scores its own finished games. (Assuming simple ko
rule and three passes to end the game.)
Author:
Gunnar Farnebäck
gunnar(a)lysator.liu.se
Installation:
Compile the three files brown.c, gtp.c, and interface.c together into
a binary. An example for gcc is included in the Makefile.
Running:
Start the program and enter GTP commands. For a smoother interface,
use a GTP aware GUI. More information about the protocol and available
software can be found at http://www.lysator.liu.se/~gunnar/gtp.
Algorithm:
All empty vertices are considered, except
1) suicide moves and illegal ko captures (simple ko rule),
2) vertices which would be suicide for the opponent, unless playing
there captures at least one opponent stone.
The move is randomly chosen from this list of vertices. It passes if
the list is empty.
Files:
README - This file
brown.c - Go board logic and move generation
brown.h - Header file
gtp.c - GTP support code, imported from GNU Go
gtp.h - GTP header file, imported from GNU Go
interface.c - GTP interface code and main() function
License:
The MIT/X11 license. See the source code files for details.
Copyright:
The files gtp.c and gtp.h are taken from GNU Go and are copyright the
Free Software Foundation. The remaining files are copyright Gunnar
Farnebäck and are independent from GNU Go. Any similarities between
those files and code from GNU Go are due to constraints on the code
structure imposed by using gtp.c/gtp.h and the fact that corresponding
code in GNU Go was written by the same person.
Gunnar Farnebäck wrote:
> In order to get some testing of GTP implementations, and to some
> extent because it's interesting in itself, I have started a Random Go
> Challenge. For current standings and information about how to
>
> http://www.lysator.liu.se/~gunnar/gtp/random_go_challenge.html
a very nice idea, though probably not a good benchmark for Go programs.
The simple algorithm MaxAvgLib which tries to maximize the average number of
liberties outperforms all other programs.
I am wondering if you plan to make the source for your server available.
It might be interesting to extend it for games between programs or even as a
server for computer Go tournaments.
For easier connection I extended the tool gtpserver, which is part of GoGui
(only in the development CVS so far) for doing outgoing connections, you
can run it like this:
gtpserver -remote sellafield.lysator.liu.se -port 9697 \
-user name_and_password \
"gnugo --quiet --mode gtp --chinese-rules"
also, there is a new tool gtpadapter, which can do protocol translation for
programs that use GTP version 1 and emulate the free handicap commands with
play commands (this is not 100% compliant to the standard, but works well)
- Markus
In order to get some testing of GTP implementations, and to some
extent because it's interesting in itself, I have started a Random Go
Challenge. For current standings and information about how to
participate, see
http://www.lysator.liu.se/~gunnar/gtp/random_go_challenge.html
The software driving the challenge has only been marginally tested so
far and there will probably be some initial problems. But please try
to connect your programs and see what breaks and I'll try to fix it.
/Gunnar