-rw-r--r-- 553 AUTHORS
-rw-r--r-- 1710 CMakeLists.txt
-rw-r--r-- 35147 COPYING
-rw-r--r-- 307265 ChangeLog
-rw-r--r-- 8891 GNU_README
-rw-r--r-- 5193 INSTALL
-rw-r--r-- 1911 Makefile.am
-rw-r--r-- 20850 Makefile.in
-rw-r--r-- 2314 NEWS
-rw-r--r-- 481 OSX
-rw-r--r-- 2373 README.md
-rw-r--r-- 1453 THANKS
-rw-r--r-- 9842 TODO
-rw-r--r-- 5422 WINDOWS
-rw-r--r-- 32543 aclocal.m4
-rw-r--r-- 3495 config.h.cmake
-rw-r--r-- 4220 config.h.in
-rw-r--r-- 2048 config.vcin
-rwxr-xr-x 218941 configure
-rw-r--r-- 16389 configure.in
-rwxr-xr-x 12121 depcomp
drwxr-xr-x - doc
drwxr-xr-x - engine
-rw-r--r-- 6108 gnugo.dsw
-rwxr-xr-x 5598 install-sh
drwxr-xr-x - interface
-rwxr-xr-x 2355 makevcdist.pl
-rwxr-xr-x 8861 missing
-rwxr-xr-x 726 mkinstalldirs
drwxr-xr-x - patterns
drwxr-xr-x - regression
drwxr-xr-x - sgf
-rw-r--r-- 10 stamp-h.in
drwxr-xr-x - utils

Overview

This repository contains a fork of GNU Go v3.8.

I’m currently reading Surreal Numbers by Knuth and hope to continue with On Games and Numbers by Conway. Applying these numbers to analysis of Go, just as Conway did, would provide an engaging example as I learn to exploit my Xeon Phi coprocessors. Hence, this fork of GNU Go to fiddle with.

Status

Successfully builds and executes on FreeBSD 12 and Debian 10.

Additional display modes verified in st, xterm and on a Tektronix 4107 terminal.

Modifications

ANSI Terminal Support

I find myself less distracted when playing from a serial terminal. I also rarely finish a game in one session. Thus, my selection of GNU Go as a base upon which to tinker was in part driven by its --mode ascii CLI interface. This allows me to run a game inside screen, (re-)attaching to it either from a real serial terminal or from a terminal emulator on a modern computer.

When playing in ASCII mode, I found all my mental effort expended simply attempting to read the board position. Adding some color cleared the fog. In order to maintain compatibility with screen and my terminal, this addition of color uses only ANSI escape codes to set the background, printing an ASCII space character to create a block of color. This mode may be selected via the --mode ansi option. The screenshot below shows ASCII mode on the left and ANSI mode on the right, both boards depicting the same game.

Screenshot: ASCII mode (left) vs ANSI mode (right)

In support of serial terminals like my Tektronix 4107 which only support era-appropriate ANSI escape codes, an additional --mode strictansi option was created.

Two Player Mode

The ANSI mode mentioned above was cloned to create a two-player mode with the same terminal-compatible ANSI-color UI. Both players must reside on the same computer and have permission to create FIFOs under /tmp/ with mknod().

The first player to launch Go plays as black and the second player to launch plays as white.

All communication in the client is strictly synchronous. Thus, commands to save or analyze the game may only occur during your turn. Outside your turn, your client will only display the following message, accepting no other input until a move is received from your opponent.

Waiting to receive move from other player...

When a game terminates, each player is provided an opportunity to save an SGF file for later analysis. Continuing a multiplayer game from SGF is not currently supported.

Future Plans

The GNU Go engine is written in plain old C, all reasonably organized and readable. Combined with how inherently parallel most Go analysis appears to be, this forms an ideal test case as I bring all the Xeon Phi development tools online and learn to write parallel C code which fully exploits them.

Instructions

The original GNU README, including full build instructions, may be found under the filename GNU_README. On most platforms, to simply build and then execute directly from within the build directory, run the following commands.

./configure
make
./interface/gnugo