GTP - Go Text Protocol
The Go Text Protocol, GTP, is a text based protocol for
communication with computer go programs. It is a modern alternative to
the Go Modem
Protocol, GMP, and may potentially replace this for use in Go
tournaments in the future. It is also intended, through the use of
auxiliary programs, to make it easier for go programmers to connect to
go servers on the internet and do automatic regression testing.
GTP version 1 has been implemented in GNU Go 3.0.0 but the
protocol lacks a proper specification. Work is going on to create such
a specification for the revised version 2 of GTP.
Discussion about the protocol is taking place on a dedicated
list. Follow the link for subscription information and an online
Working documents for the specification of GTP version 2.
Frequently Asked Questions
Reference engine code
Reference application code
Sample engine code
This is sample code implementing the engine end of the
protocol. Unless otherwise stated, no guarantees are given that the
code correctly implements any particular revision of the protocol.
- The GNU Go 3.0.0 implementation of GTP is split in three C
files: gtp.c, gtp.h, play_gtp.c. The first two contain the generic
parts of the code and are available to other programmers for any
use. The third file contains code specific to the GNU Go engine and
is licensed under the GNU GPL. This
is the reference implementation for version 1 of the protocol.
Written by Gunnar Farnebäck with help from Daniel Bump and others in
the GNU Go development team.
Programs letting a human interact with an engine.
- GoGui is a
Java client compliant with GTP versions 1 and 2. It also
contains a collection of GTP tools for automatic game play,
networking, regression testing and more.
Licensed under the GNU GPL.
Written by Markus Enzenberger.
- gGo is a
Java client compliant with GTP version 1. It is available
free of charge but without source. An older version
was distributed under the GNU GPL.
Written by Peter Strempel.
- Goban is a
client for Mac OS X, compliant with GTP version 1. It is available
free of charge but without source. There is also a version called FreeGoban,
which is distributed under the GNU GPL.
Written by Sente Software.
is a client written in C using GTK libraries for graphics.
Compliant with GTP versions 1 and 2. Licensed under the GNU GPL.
Written by Wayne Myers.
Engine vs. engine applications
Programs to automatically play engines against each other.
- twogtp is a perl script for playing two
engines against each other. This is distributed with GNU Go.
Licensed under the GNU GPL.
Written by Teun Burgers and Daniel Bump.
- 2ptkgo.pl is another perl script
similar to twogtp, but additionally providing a graphical
display. This is also distributed with GNU Go. Running it
requires perltk and ttgo.pm. Licensed under
the GNU GPL.
Written by Don Dailey.
- twogtp.py is a python script for
playing two engines against each other. More feature rich than
twogtp. Licensed under the GNU GPL.
Written by Inge Wallin and other GNU Go developers.
- twogtp.pike is a pike script for playing
two engines against each other. This is also distributed with GNU Go
and is even more feature rich than twogtp.py. Licensed under the
Written by Paul Pogonyshev and Gunnar Farnebäck.
Programs to connect engines to various servers.
- gnugoclient is a program
which can be used to connect go engines to NNGS and compatible
servers. Gnugoclient 3.0 uses version 2 of the protocol and is known
to work with at least GNU Go 3.4 and Brown 1.0. Licensed under the GNU GPL.
Written by Gunnar Farnebäck.
is another program to connect go engines to NNGS or IGS. This
program is written in C and is so far more limited in functionality
than gnugoclient. Written by Tristan Cazenave.
connects GTP version 2 engines to KGS. Written in Java and
distributed without source code. Author is Bill Shubert.
GTP aware engines (i.e. go programs).
- GNU Go has
had GTP support since development version 2.7.95 and full GTP
version 1 support since stable release 3.0.0. GTP version 2 is
supported since development version 3.3.10.
- Aya supports GTP
version 2 since version 5.28, released January 23, 2004.
supports GTP version 2 since the 2004 release.
- Brown is a simple random player
with support for GTP version 2.
- Andrew Balsa has written C++ versions, with GTP version 2
support, of a number of free older programs. Unfortunately the GTP
imlementations are fairly buggy and do not follow the specification
well at all.
Regression test suites
Collections of test problems in GTP format.
- GNU Go
contains a big test suite in the regressions directory. Most of the
tests use the standardized reg_genmove command but some of them
use more specialized private extension commands. Compiled by the
entire GNU Go development team.
Go Test Collection 2.0 is another big test collection compiled by
Martin Müller and Markus Enzenberger. These tests use only the
standardized reg_genmove command.
Test Suite is a comprehensive set of 722 semeai tests by Ricard
Vilà. This suite uses a custom GTP command for solving semeais, see
the README file in the test suite for specification of its semantics.
Regression test tools
Tools to run regression tests and present the results.