Gomill is a suite of tools, and a Python library, for use in developing and testing Go-playing programs. It is based around the Go Text Protocol (GTP) and the Smart Game Format (SGF).

The principal tool is the ringmaster, which plays programs against each other and keeps track of the results.

Ringmaster features include:

  • testing multiple pairings in one run
  • playing multiple games in parallel
  • displaying live results
  • engine configuration by command line options or GTP commands
  • a protocol for including per-move engine diagnostics in SGF output
  • automatically tuning engine parameters based on game results (experimental)

Ringmaster example

Create a file called demo.ctl, with the following contents:

competition_type = 'playoff'

board_size = 9
komi = 7.5

players = {
    'gnugo-l1' : Player('gnugo --mode=gtp --level=1'),
    'gnugo-l2' : Player('gnugo --mode=gtp --level=2'),

matchups = [
    Matchup('gnugo-l1', 'gnugo-l2',

(If you don’t have gnugo installed, change the Player definitions to use a command line for whatever GTP engine you have available.)

Then run

$ ringmaster demo.ctl

The ringmaster will run five games between the two players, showing a summary of the results on screen, and then exit.

(If the ringmaster is not already installed, see Installation for instructions.)

The final display should be something like this:

gnugo-l1 v gnugo-l2 (5/5 games)
board size: 9   komi: 7.5
           wins              black        white      avg cpu
gnugo-l1      2 40.00%       1 33.33%     1 50.00%      1.05
gnugo-l2      3 60.00%       1 50.00%     2 66.67%      1.12
                             2 40.00%     3 60.00%

= Results =
game 0_0: gnugo-l2 beat gnugo-l1 W+21.5
game 0_1: gnugo-l2 beat gnugo-l1 B+9.5
game 0_2: gnugo-l2 beat gnugo-l1 W+14.5
game 0_3: gnugo-l1 beat gnugo-l2 W+7.5
game 0_4: gnugo-l1 beat gnugo-l2 B+2.5

The ringmaster will create several files named like in the same directory as demo.ctl, including a demo.sgf directory containing game records.

The Python library

Gomill also provides a Python library for working with GTP and SGF, though as of Gomill 0.8.2 only part of the API is stable. See The Gomill library for details.

The example scripts

Some example scripts are also included in the Gomill distribution, as illustrations of the library interface and in some cases as tools useful in themselves.