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.
Current Status
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.
Mailing List
Discussion about the protocol is taking place on a dedicated mailing list. Follow the link for subscription information and an online archive.
Working Documents
Working documents for the specification of GTP version 2.
New GTP Version 2 Specification Draft, by Gunnar Farnebäck
Revision 2, October 12, 2002
HTML
Postscript
PDF
LaTeX source
Diff of LaTeX source from draft 1 to draft 2
GTP Goals, version 4, by Bill Shubert
Old documents.
Frequently Asked Questions
FAQ
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.
User interfaces
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.
Goben 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 GNU GPL. Written by Paul Pogonyshev and Gunnar Farnebäck.
Server clients
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.
gtpclient.c 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.
kgsGtp connects GTP version 2 engines to KGS. Written in Java and distributed without source code. Author is Bill Shubert.
Engines
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.
Indigo 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.
wallyplus
amigoplus
badukiplus
randyplus
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.
Computer 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.
Semeai 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.
regress.pike is a regression script used by GNU Go.