Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / README.md
CommitLineData
c82ca61c
AT
1# Overview #
2
3This repository contains a fork of GNU Go v3.8.
4
5I'm currently reading *Surreal Numbers* by Knuth and hope to continue with *On
6Games and Numbers* by Conway. Applying these numbers to analysis of Go, just as
7Conway did, would provide an engaging example as I learn to exploit my Xeon Phi
8coprocessors. Hence, this fork of GNU Go to fiddle with.
9
10
11# Status #
12
13Successfully builds and executes on FreeBSD 12 and Debian 10.
14
15Additional display modes verified in `st`, `xterm` and on a Tektronix 4107
16terminal.
17
18
19# Modifications #
20
21## ANSI Terminal Support ##
22
23I find myself less distracted when playing from a serial terminal. I also
24rarely finish a game in one session. Thus, my selection of GNU Go as a base
58b5bc4b 25upon which to tinker was in part driven by its `--mode ascii` CLI interface.
c82ca61c
AT
26This allows me to run a game inside `screen`, (re-)attaching to it either from
27a real serial terminal or from a terminal emulator on a modern computer.
28
29When playing in ASCII mode, I found all my mental effort expended simply
30attempting to read the board position. Adding some color cleared the fog. In
31order to maintain compatibility with `screen` and my terminal, this addition of
32color uses only ANSI escape codes to set the background, printing an ASCII
33space character to create a block of color. This mode may be selected via the
58b5bc4b 34`--mode ansi` option. The screenshot below shows ASCII mode on the left and
c82ca61c
AT
35ANSI mode on the right, both boards depicting the same game.
36
37![Screenshot: ASCII mode (left) vs ANSI mode (right)](/sgk-go/.git/blob_plain/HEAD:/interface/interface-example.png)
38
39In support of serial terminals like my Tektronix 4107 which only support
58b5bc4b 40era-appropriate ANSI escape codes, an additional `--mode strictansi` option was
c82ca61c
AT
41created.
42
43
6e524d80
AT
44## Two Player Mode ##
45
46The ANSI mode mentioned above was cloned to create a two-player mode with the
47same terminal-compatible ANSI-color UI. Both players must reside on the same
48computer and have permission to create FIFOs under `/tmp/` with `mknod()`.
49
50The first player to launch Go plays as black and the second player to launch
51plays as white.
52
53All communication in the client is strictly synchronous. Thus, commands to save
54or analyze the game may only occur during your turn. Outside your turn, your
55client will only display the following message, accepting no other input until
56a move is received from your opponent.
57
58 Waiting to receive move from other player...
59
60When a game terminates, each player is provided an opportunity to save an SGF
61file for later analysis. Continuing a multiplayer game from SGF is not
62currently supported.
63
64
c82ca61c
AT
65## Future Plans ##
66
67The GNU Go engine is written in plain old C, all reasonably organized and
68readable. Combined with how inherently parallel most Go analysis appears to
69be, this forms an ideal test case as I bring all the Xeon Phi development tools
70online and learn to write parallel C code which fully exploits them.
71
72
73# Instructions #
74
75The original GNU `README`, including full build instructions, may be found
76under the filename `GNU_README`. On most platforms, to simply build and then
77execute directly from within the build directory, run the following commands.
78
79 ./configure
80 make
5c80a8e7 81 ./interface/gnugo
c82ca61c 82