GNU Go resignation support

GNU Go 3.6 may resign games under certain conditions. This may cause problems with clients which are not aware of the feature. This page explains under which conditions GNU Go may resign, why it may cause problems with clients, and in what ways those problems can be solved or worked around.

When does GNU Go resign?

GNU Go 3.6 will resign under the following conditions which must all be satisfied:

Which modes support resignation?

GNU Go can primarily be run in three different modes. There are additional modes which are mostly of interest to developers but none of those support resignation anyway and will not be discussed further. The three main modes are:

Why can resignation in GTP mode cause problems?

The first version of GTP, implemented in GNU Go 3.0, did not have a resign option. This was added in GTP version 2, used by GNU Go 3.4 and later. However, GNU Go 3.4 never resigned so some clients using GTP have not added resign support yet. These clients may become confused when GNU Go resigns and possibly crash or hang indefinitely.

How can these problems be avoided?

You have at least the following four options:

List of GTP clients with resignation support

These clients are known to have full support for resignation.

List of GTP clients with resignation problems

These clients are known to get into trouble if GNU Go resigns.

List of GMP clients

These clients cannot support resignation at all and consequently don't have any problems with resignation.

Feedback

If you know of any client for which resignation is working or is not working, but is not included in the lists above, please inform us at gnugo@gnu.org. Include version number of the client if possible.

I'm an author of a GTP client and want to support resignation. What do I need to do?

The GTP command genmove can return either a vertex on the board, the string "pass" or the string "resign". Make sure to handle all these cases appropriately. This is documented in the the GTP version 2 specification draft.

If your client is using GTP version 1 you need to first switch to GTP version 2. The details of this are explained in a message to the GTP mailing list.