The Go Modem Protocol – Discussion

The Go Modem Protocol is the closest thing we have to a protocol for two computer go programs to communicate with each other. It is widely implemented and used. Originally designed for use over a serial cable, it can and is used across a network connection as well. The information here is from a discussion on the computer go mailing list during January, 2001.

Francois Grieu (fgrieu@micronet.fr) says:

Unfortunately we have at least two different sources floating around (not counting CGFCOM.DLL). One comes with the definition of the standard by David Fotland, the other is by William Shubert and is in goDummy-1.0.4, available at http://www.igoweb.org/~wms/comp/cgoban/index.html or nearly equivalently the development version of GnuGo http://www.lysator.liu.se/~gunnar/gnugo/devel.html [obsolete link removed]

And we have 3 nearly identical sources for the standard, plus a subset

  1. Old:
    ftp://ftp.nuri.net/Go/programs/protocol.Z (no longer exists?)

  2. David Fotland's
    http://www.smart-games.com/modemprotocol (no longer exists?)
    Differs from 1 only by the corrected value of two constants
    # define QUERYSTRING 0x200 # define QUERYMULTI 0x20f

  3. New:
    <http://www.britgo.org/tech/gmp.html>
    Differs from 1 only by formatting and comments indicating that
    – QUERYSTRING should be changed as in 2 (no comment for QUERYMULTI)
    – the format of Query is 1EEEEEEEEE not 1EEEEEEE Changes in 3 come from a post on this list by Joe Author who wrote
    in addition that, even after fix 2, the sample code given only answers queries for extended commands 0 and 15, although the protocol definition is explicit that any such query should be answered including (negatively) for unknown extended commands.

  4. Subset: Tournament Communication Protocol
    http://www.etl.go.jp/etl/suiron/~tazima/cgf99/CGF99_CFP.html#a (no longer exists?)

Among the thing I do not get in the protocol: should there be a 4 second timeout and retry? David Fotland's code seems to do it, but I could not find that in William Shubert's code.

Hiroshi Yamashita (yss@bd.mbn.or.jp) contributes that:

HCGF web page has moved here.
http://www.hiroshima-pu.ac.jp/~sasaki/cgf/

And some communication files are

cgfcom.dll: A library of communication functions with help.
http://www.hiroshima-pu.ac.jp/~sasaki/cgf/files/cgfcom.zip

cgfgo.exe: Communication proxy program. Programs with no communication function use this proxy program in the tournament.
http://www.hiroshima-pu.ac.jp/~sasaki/cgf/files/cgftest.zip

cgfgnugo.exe: A demo program (GnuGo) with communication functions.
http://www.hiroshima-pu.ac.jp/~sasaki/cgf/files/cgfgnu02.zip

Interface to IGS for GTP-supporting clients

See gtpclient, by Tristan Cazenave.