X-Git-Url: http://git.subgeniuskitty.com/sgk-go/.git/blobdiff_plain/3b3def8dd9728dbd6f85f5c0674ca4fe8695a5c8..HEAD:/README.md diff --git a/README.md b/README.md index 3b94f91..254897d 100644 --- a/README.md +++ b/README.md @@ -1 +1,82 @@ -Placeholder +# 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)](/sgk-go/.git/blob_plain/HEAD:/interface/interface-example.png) + +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 +