Viewing results

Reports

The competition report file (code.report) file is a plain text description of the competition results. This is similar to the live report that is displayed while the competition is running. It also includes descriptions of the players, and the contents of the competition’s description setting. For example:

playoff: example

Testing GNU Go level 1 vs level 2, 2010-10-14

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.23
gnugo-l2      3 60.00%       1 50.00%     2 66.67%      1.39
                             2 40.00%     3 60.00%

player gnugo-l1: GNU Go:3.8
player gnugo-l2: GNU Go:3.8

Any jigos are counted as half a win for each player. If any games have been lost by forfeit, a count will be shown for each player. If any games have unknown results (because they could not be scored, or reached the move_limit), a count will be shown for each matchup. Void games are not shown in these reports.

If there is more than one matchup between the same pair of players, use the matchup name setting to distinguish them.

The player descriptions at the end of the report are obtained using the GTP name and version commands, or using gomill-describe_engine if the engine provides it.

The report file is written automatically at the end of each run. The report command line action forces it to be rewritten; this can be useful if you have changed descriptive text in the control file, or if a run stopped ungracefully.

The show command line action prints the same report to standard output.

It’s safe to run show or report on a competition which is currently being run.

Game records

The ringmaster writes an SGF record of each game it plays to the code.games/ directory (which it will create if necessary). This can be disabled with the record_games setting.

The filename is based on the game’s id (which includes the matchup id).

(You might also see game records in a code.void/ directory; these are games which were abandoned due to software failure; see Void games.)

The ringmaster supports a protocol for engines to provide text to be placed in the comment section for individual moves: see gomill-explain_last_move.

The game record includes a description of the players in the root node comment [1]. If an engine implements gomill-describe_engine, its output is included.

[1]The root node comment is used rather than the game comment because (in my experience) SGF viewers tend to make it easier to see information there.

CPU time

The reports and game records show the CPU time taken by the players, when available.

If an engine implements the gomill-cpu_time command, its output is used. Otherwise, the ringmaster uses the CPU time of the engine process that it created, as returned by the wait4() system call (user plus system time); unfortunately, this may not be meaningful, if the engine’s work isn’t all done directly in that process.

Querying the results

It’s possible to write Python scripts to process competition results, interpreting a competition’s state file.

As of Gomill 0.5, this library interface is not definitely stable, but the find_forfeits.py example script and the docstrings of the last few methods in the playoffs module show how it can be used.