| @menu |
| * Documentation:: Getting Documentation |
| * CGoban:: Running GNU Go with CGoban |
| * Other Clients:: Other Clients |
| * Ascii:: The Ascii Interface |
| * Emacs:: GNU Go mode in Emacs |
| * GMP and GTP:: The Go Modem Protocol and Go Text Protocol |
| * Tournaments:: Computer Tournaments |
| * SGF Support:: The Smart Game Format |
| * Invoking GNU Go:: Command line options |
| @end menu |
| |
| @node Documentation |
| |
| @section Getting Documentation |
| |
| You can obtain a printed copy of the manual by running @command{make |
| gnugo.pdf} in the @file{doc/}directory, then printing the resulting file. The |
| manual contains a great deal of information about the algorithms of GNU Go. |
| |
| On platforms supporting info documentation, you can usually |
| install the manual by executing `make install' (running as |
| root) from the @file{doc/} directory. This will create a file |
| called @file{gnugo.info} (and a few others) and copy them into |
| a system directory such as @file{/usr/local/share/info}. You |
| may then add them to your info directory tree with the command |
| @command{install-info --info-file=[path to gnugo.info] --info-dir=[path to dir]}. |
| The info documentation can be read conveniently from within Emacs by executing |
| the command @command{Control-h i}. |
| |
| Documentation in @file{doc/} consists of a man page @file{gnugo.6}, the |
| info files @file{gnugo.info}, @file{gnugo.info-1}, ... and the |
| Texinfo files from which the info files are built. The Texinfo |
| documentation contains this User's Guide and extensive information |
| about the algorithms of GNU Go, for developers. |
| |
| If you want a typeset copy of the Texinfo documentation, you can |
| @command{make gnugo.dvi}, @command{make gnugo.ps}, or @command{make |
| gnugo.pdf} in the @file{doc/} directory. (@command{make gnugo.pdf} only |
| works after you have converted all .eps-files in the doc/ directory to |
| .pdf files, e.g. with the utility epstopdf.) |
| |
| You can make an HTML version with the command @command{makeinfo --html |
| gnugo.texi}. If you have @command{texi2html}, better HTML documentation |
| may be obtained by @command{make gnugo.html} in the @file{doc/} |
| directory. |
| |
| User documentation can be obtained by running @command{gnugo --help} |
| or @command{man gnugo} from any terminal, or from the Texinfo |
| documentation. |
| |
| Documentation for developers is in the Texinfo documentation, and in comments |
| throughout the source. Contact us at @email{gnugo@@gnu.org} if you are |
| interested in helping to develop this program. |
| |
| @node CGoban |
| @section Running GNU Go via CGoban |
| @cindex CGoban |
| |
| There are two different programs called CGoban, both written by |
| William Shubert. In this documentation, CGoban means CGoban 1.x, |
| the older program. You should get a copy with version number 1.12 |
| or higher. |
| |
| CGoban is an extremely nice way to run GNU Go. CGoban provides a |
| beautiful graphic user interface under X Window System. |
| |
| Start CGoban. When the CGoban Control panel comes up, select ``Go |
| Modem''. You will get the Go Modem Protocol Setup. Choose one (or |
| both) of the players to be ``Program,'' and fill out the box with the |
| path to @file{gnugo}. After clicking OK, you get the Game Setup |
| window. Choose ``Rules Set'' to be Japanese (otherwise handicaps |
| won't work). Set the board size and handicap if you want. |
| |
| If you want to play with a komi, you should bear in mind that |
| the GMP does not have any provision for communicating the komi. |
| Because of this misfeature, unless you set the komi at the command |
| line GNU Go will have to guess it. It assumes the komi is 5.5 for |
| even games, 0.5 for handicap games. If this is not what you want, |
| you can specify the komi at the command line with the |
| @option{--komi} option, in the Go Modem Protocol Setup window. |
| You have to set the komi again in the Game Setup window, which |
| comes up next. |
| |
| Click OK and you are ready to go. |
| |
| In the Go Modem Protocol Setup window, when you specify the path to |
| GNU Go, you can give it command line options, such as @option{--quiet} to |
| suppress most messages. Since the Go Modem Protocol preempts standard |
| I/O other messages are sent to stderr, even if they are not error |
| messages. These will appear in the terminal from which you started |
| CGoban. |
| |
| @node Other Clients |
| @section Other Clients |
| @cindex jago |
| @cindex quarry |
| @cindex qGo |
| |
| In addition to CGoban (@pxref{CGoban}) there are a number of |
| other good clients that are capable of running GNU Go. Here |
| are the ones that we are aware of that are Free Software. This |
| list is part of a larger list of free Go programs that is maintained |
| at @url{http://www.gnu.org/software/gnugo/free_go_software.html}. |
| |
| @itemize @bullet |
| @item Quarry (@url{http://home.gna.org/quarry/}) is a GPL'd |
| client that supports GTP. Works under GNU/Linux and requires |
| GTK+ 2.x and librsvg 2.5. Supports GNU Go as well as other |
| engines. Can play not only Go, but also a few other board |
| games. |
| @item qGo (@url{http://sourceforge.net/projects/qgo/}) is a |
| full featured Client for playing on the servers, SGF viewing/editing, |
| and GNU Go client written in C++ for GNU/Linux, Windows and Mac OS X. |
| Can play One Color Go. Licensed GPL and QPL. |
| @item ccGo (@url{http://ccdw.org/~cjj/prog/ccgo/}) is a GPL'd client |
| written in C++ capable of playing with GNU Go, or on IGS. |
| @item RubyGo (@url{http://rubygo.rubyforge.org/}) is a GPL'd |
| client by J.-F. Menon for IGS written in the scripting language Ruby. |
| RubyGo is capable of playing with GNU Go using the GTP. |
| @item Dingoui (@url{http://dingoui.sourceforge.net/}) is a free |
| GMP client written in GTK+ which can run GNU Go. |
| @item Jago (@url{http://www.rene-grothmann.de/jago/}) |
| is a GPL'd Java client which works for both Microsoft Windows |
| and X Window System. |
| @item Sente Software's FreeGoban |
| (@url{http://www.sente.ch/software/goban/freegoban.html}) is a |
| well-liked user interface for GNU Go (and potentially other |
| programs) distributed under the GPL. |
| @item Mac GNU Go (@url{http://www1.u-netsurf.ne.jp/~future/HTML/macgnugo.html}) is a front end for GNU Go 3.2 with both |
| English and Japanese versions. License is GPL. |
| @item Quickiego (@url{http://www.geocities.com/secretmojo/QuickieGo/}) |
| is a Mac interface to GNU Go 2.6. |
| @item Gogui (@url{http://sourceforge.net/projects/gogui/}) from |
| Markus Enzenberger is a Java workbench that allows you to play |
| with a gtp (@url{http://www.lysator.liu.se/~gunnar/gtp}) |
| engine such as GNU Go. Licence is GPL. Gogui does not |
| support gmp or play on servers but is potentially very useful for programmers |
| working on GNU Go or other engines. |
| @end itemize |
| |
| @node Ascii |
| @section Ascii Interface |
| @cindex ascii interface |
| |
| Even if you do not have any client program, you can play with GNU Go |
| using its default Ascii interface. Simply type @command{gnugo} |
| at the command line, and GNU Go will draw a board. Typing |
| @command{help} will give a list of options. At the end of the |
| game, pass twice, and GNU Go will prompt you through the |
| counting. You and GNU Go must agree on the dead groups---you |
| can toggle the status of groups to be removed, and when you |
| are done, GNU Go will report the score. |
| |
| You can save the game at any point using the @command{save @var{filename}} |
| command. You can reload the game from the resulting SGF file with |
| the command @command{gnugo -l @var{filename} --mode ascii}. Reloading |
| games is not supported when playing with CGoban. However you can |
| use CGoban to save a file, then reload it in ascii mode. |
| |
| You may play games with a time limit against GNU Go in |
| ascii mode. For this, the Canadian time control system |
| is used. (See @uref{http://en.wikipedia.org/wiki/Byoyomi} |
| and @uref{http://senseis.xmp.net/?CanadianByoyomi}.) |
| That is, you have a main time to be followed by byo-yomi |
| periods. After the main time is exhausted you have a certain |
| number of moves to be made in a certain number of seconds. |
| (@pxref{Invoking GNU Go}) |
| |
| @node Emacs |
| @section GNU Go mode in Emacs |
| @cindex emacs mode |
| |
| You can run GNU Go from Emacs. This has the advantage |
| that you place the stones using the cursor arrow keys |
| or with the mouse, and you can have a nice graphical display of the board |
| within emacs. |
| |
| You will need the file @file{interface/gnugo.el}. There is |
| a version of this distributed with GNU Go but it only |
| works with Emacs 21. Most Emacsen are Emacs 22 however. |
| Therefore you should get the latest version of |
| gnugo.el by Thien-Thi Nguyen, which you can find at |
| @uref{http://www.gnuvola.org/software/j/gnugo/} or |
| @uref{http://www.emacswiki.org/emacs/gnugo.el}. |
| |
| You will also need some xpm files for the graphical |
| display. You can either use those distributed by |
| Thien-Thi Nguyen (at the first URL above) or those |
| distributed with GNU Go, either the file |
| @file{interface/gnugo-xpms.el} or (for high resolution |
| displays) @file{interface/gnugo-big-xpms.el}. |
| |
| Load the file @file{interface/gnugo.el} and |
| @file{interface/gnugo-xpms.el}. You may do this using the |
| Emacs @command{M-x load-file} command. |
| |
| When you start a game with @command{M-x gnugo}, |
| you will first see an ascii board. However typing `i' |
| toggles a graphical board display which is very nice. |
| This is a pleasant way to play GNU Go. You may get |
| help by typing @command{C-x m}. |
| |
| @node GMP and GTP |
| @section The Go Modem Protocol and Go Text Protocol |
| @cindex GMP |
| @cindex GTP |
| @cindex The Go Modem Protocol and Go Text Protocol |
| |
| @paragraphindent 3 |
| The Go Modem Protocol (GMP) was developed by Bruce Wilcox with input from |
| David Fotland, Anders Kierulf and others, according to the history in |
| @url{http://www.britgo.org/tech/gmp.html}. |
| |
| Any Go program @emph{should} support this protocol since it is a |
| standard. Since CGoban supports this protocol, the user interface for |
| any Go program can be done entirely through CGoban. The programmer can |
| concentrate on the real issues without worrying about drawing stones, |
| resizing the board and other distracting issues. |
| |
| GNU Go 3.0 introduced a new protocol, the Go Text Protocol |
| (@pxref{GTP}) which we hope can serve the functions currently |
| used by the GMP. The GTP is becoming increasingly adopted by |
| other programs as a method of interprocess communication, |
| both by computer programs and by clients. Still the GMP is |
| widely used in tournaments. |
| |
| @node Tournaments |
| |
| @section Computer Go Tournaments |
| |
| Computer Tournaments currently use the Go Modem Protocol. |
| The current method followed in such tournaments is to connect |
| the serial ports of the two computers by a ``null modem'' cable. |
| If you are running GNU/Linux it is convenient to use CGoban. |
| If your program is black, set it up in the Go Modem Protocol |
| Setup window as usual. For White, select ``Device'' and set |
| the device to @file{/dev/cua0} if your serial port is COM1 |
| and @file{/dev/cua1} if the port is COM2. |
| |
| @node SGF Support |
| @section Smart Game Format |
| @cindex SGF (Smart Game Format) |
| @cindex Smart Game Format |
| |
| The Smart Game Format (SGF), is the standard format for storing Go games. |
| GNU Go supports both reading and writing SGF files. The SGF specification |
| (FF[4]) is at: |
| @url{http://www.red-bean.com/sgf/} |
| |
| @node Invoking GNU Go |
| @section Invoking GNU Go: Command line options |
| @cindex command line options |
| @cindex invoking GNU Go |
| |
| @subsection Some basic options |
| @itemize |
| @item @option{--help}, @option{-h} |
| @quotation |
| Print a help message describing the options. This will also |
| tell you the defaults of various parameters, most importantly |
| the level and cache size. The default values of these |
| parameters can be set before compiling by @command{configure}. |
| If you forget the defaults you can find out using @option{--help}. |
| @end quotation |
| @item @option{--boardsize @var{size}} |
| @quotation |
| Set the board size |
| @end quotation |
| @item @option{--komi @var{num}} |
| @quotation |
| Set the komi |
| @end quotation |
| @item @option{--level @var{level}} |
| @cindex level of play |
| @quotation |
| GNU Go can play with different strengths and speeds. Level 10 |
| is the default. Decreasing the level will make GNU Go faster |
| but less accurate in its reading. |
| @end quotation |
| @item @option{--quiet}, @option{--silent} |
| @quotation |
| Don't print copyright and other messages. Messages specifically |
| requested by other command line options, such as @option{--trace}, |
| are not supressed. |
| @end quotation |
| @item @option{-l}, @option{--infile @var{filename}} |
| @quotation |
| Load the named SGF file. GNU Go will generate a move for |
| the player who is about to move. If you want to override this |
| and generate a move for the other player you may add the |
| option @option{--color @var{<color>}} where @var{<color>} is |
| @code{black} or @code{white}. |
| @end quotation |
| @item @option{-L}, @option{--until @var{move}} |
| @quotation |
| Stop loading just before the indicated move is played. @var{move} can |
| be either the move number or location. |
| @end quotation |
| @item @option{-o}, @option{--outfile @var{filename}} |
| @quotation |
| Write sgf output to file |
| @end quotation |
| @item @option{-O}, @option{--output-flags @var{flags}} |
| @quotation |
| Add useful information to the sgf file. Flags can be 'd', 'v' or |
| both (i.e. 'dv'). If 'd' is specified, dead and critical dragons |
| are marked in the sgf file. If 'v' is specified, move valuations |
| around the board are indicated. |
| @end quotation |
| @item @option{--mode @var{mode}} |
| @quotation |
| Force the playing mode ('ascii', 'emacs,' 'gmp' or 'gtp'). The default is |
| ASCII, but if no terminal is detected GMP (Go Modem Protocol) will be |
| assumed. In practice this is usually what you want, so you may never |
| need this option. |
| @end quotation |
| @item @option{--resign-allowed} |
| @quotation |
| GNU Go will resign games if this option is enabled. This is the default unless |
| you build the engine with the configure option |
| @option{--disable-resignation-allowed}. Unfortunately |
| the Go Modem Protocol has no provision for passing a resignation, |
| so this option has no effect in GMP mode. |
| @end quotation |
| @item @option{--never-resign} |
| @quotation |
| GNU Go will not resign games. |
| @end quotation |
| @item @option{--resign-allowed} |
| @quotation |
| GNU Go will resign lost games. This is the default. |
| @end quotation |
| @end itemize |
| |
| @subsection Monte Carlo Options |
| |
| GNU Go can play Monte Carlo Go on a 9x9 board. (Not |
| available for larger boards.) It makes quite a strong |
| engine. Here are the command line options. |
| |
| @itemize |
| @item @option{--monte-carlo} |
| @quotation |
| Use Monte Carlo move generation (9x9 or smaller). |
| @end quotation |
| @item @option{--mc-games-per-level <number>} |
| @quotation |
| Number of Monte Carlo simulations per level. Default 8000. |
| Thus at level 10, GNU Go simulates 80,000 games in order |
| to generate a move. |
| @end quotation |
| @item @option{--mc-list-patterns} |
| @quotation |
| list names of builtin Monte Carlo patterns |
| @end quotation |
| @item @option{--mc-patterns <name>} |
| @quotation |
| Choose a built in Monte Carlo pattern database. The |
| argument can be @file{mc_mogo_classic}, @file{mc_montegnu_classic} |
| or @file{mc_uniform}. |
| @end quotation |
| @item @option{--mc-load-patterns <filename>} |
| @quotation |
| read Monte Carlo patterns from file |
| @end quotation |
| @end itemize |
| |
| @subsection Other general options |
| @itemize |
| @item @option{-M}, @option{--cache-size @var{megs}} |
| @quotation |
| @cindex cache-size |
| @cindex cache |
| Memory in megabytes used for caching of read results. The default size |
| is 8 unless you configure gnugo with the command @command{configure |
| --enable-cache-size=@var{size}} before compiling to make @var{size} the |
| default (@pxref{Installation}). GNU Go stores results of its reading |
| calculations in a hash table (@pxref{Hashing}). If the hash table is |
| filled, it is emptied and the reading continues, but some reading may |
| have to be repeated that was done earlier, so a larger cache size will |
| make GNU Go run faster, provided the cache is not so large that swapping |
| occurs. Swapping may be detected on GNU/Linux machines using the program |
| @command{top}. However, if you have ample memory or if performance seems |
| to be a problem you may want to increase the size of the cache using |
| this option. |
| @end quotation |
| @item @option{--chinese-rules} |
| @quotation |
| Use Chinese rules. This means that the Chinese or Area Counting is |
| followed. It may affect the score of the game by one point in even |
| games, more if there is a handicap (since in Chinese Counting the |
| handicap stones count for Black) or if either player passes during the |
| game. |
| @end quotation |
| @item @option{--japanese-rules} |
| @quotation |
| Use Japanese Rules. This is the default unless you specify |
| @option{--enable-chinese-rules} as a configure option. |
| @end quotation |
| @item @option{--play-out-aftermath} |
| @item @option{--capture-all-dead} |
| @quotation |
| These options cause GNU Go to play out moves that are usually left |
| unplayed after the end of the game. Such moves lose points under |
| Japanese rules but not Chinese rules. With |
| @option{--play-out-aftermath}, GNU Go may play inside its |
| territory in order to reach a position where it considers every |
| group demonstrably alive or dead. The option |
| @option{--capture-all-dead} causes GNU Go to play inside its own |
| territory to remove dead stones. |
| @end quotation |
| @item @option{--forbid-suicide} |
| @quotation |
| Do not allow suicide moves (playing a stone so that it ends up without |
| liberties and is therefore immediately removed). This is the default. |
| @end quotation |
| @item @option{--allow-suicide} |
| @quotation |
| Allow suicide moves, except single-stone suicide. The latter would not |
| change the board at all and pass should be used instead. |
| @end quotation |
| @item @option{--allow-all-suicide} |
| @quotation |
| Allow suicide moves, including single-stone suicide. This is only |
| interesting in exceptional cases. Normally the |
| @option{--allow-suicide} option should be used instead. |
| @end quotation |
| @item @option{--simple-ko} |
| @quotation |
| Do not allow an immediate recapture of a ko so that the previous |
| position is recreated. Repetition of earlier positions than that are |
| allowed. This is default. |
| @end quotation |
| @item @option{--no-ko} |
| @quotation |
| Allow all kinds of board repetition. |
| @end quotation |
| @item @option{--positional-superko} |
| @quotation |
| Forbid repetition of any earlier board position. This only applies to |
| moves on the board; passing is always allowed. |
| @end quotation |
| @item @option{--situational-superko} |
| @quotation |
| Forbid repetition of any earlier board position with the same player |
| to move. This only applies to moves on the board; passing is always |
| allowed. |
| @end quotation |
| @item @option{--copyright}: Display the copyright notice |
| @item @option{--version} or @option{-v}: Print the version number |
| @item @option{--printsgf @var{filename}}: |
| @quotation |
| Create an SGF file containing a diagram of the board. Useful with |
| @option{-l} and @option{-L} to create a diagram of the board from |
| another sgf file. Illegal moves are indicated with the private |
| @code{IL} property. This property is not used in the FF4 SGF |
| specification, so we are free to preempt it. |
| @end quotation |
| @item @option{--options} |
| @quotation |
| Print which experimental configure options were compiled into the program |
| (@pxref{Other Options}). |
| @end quotation |
| @item @option{--orientation @var{n}} |
| @quotation |
| Combine with @option{-l}. The Go board can be oriented in 8 different |
| ways, counting reflections and rotations of the position; this option |
| selects an orientation (default 0). The parameter @samp{n} is an integer |
| between 0 and 7. |
| @end quotation |
| @end itemize |
| |
| @subsection Other options affecting strength and speed |
| |
| @itemize @bullet |
| @item @option{--level @var{amount}} |
| @cindex level |
| @quotation |
| The higher the level, the deeper GNU Go reads. Level 10 is the default. |
| If GNU Go plays too slowly on your machine, you may want to decrease it. |
| @end quotation |
| @end itemize |
| |
| This single parameter @option{--level} is the best way of |
| choosing whether to play stronger or faster. It controls |
| a host of other parameters which may themselves be set |
| individually at the command line. The default values of |
| these parameters may be found by running @command{gnugo --help}. |
| |
| Unless you are working on the program you probably don't |
| need the remaining options in this category. Instead, |
| just adjust the single variable @option{--level}. The |
| following options are of use to developers tuning the |
| program for performance and accuracy. For completeness, |
| here they are. |
| |
| @itemize @bullet |
| @item @option{-D}, @option{--depth @var{depth}} |
| @cindex depth |
| @quotation |
| Deep reading cutoff. When reading beyond this depth (default 16) GNU |
| Go assumes that any string which can obtain 3 liberties is alive. Thus |
| GNU Go can read ladders to an arbitrary depth, but will miss other |
| types of capturing moves. |
| @end quotation |
| @item @option{-B}, @option{--backfill-depth @var{depth}} |
| @quotation |
| Deep reading cutoff. Beyond this depth (default 12) GNU Go will no |
| longer try backfilling moves in its reading. |
| @end quotation |
| @item @option{--backfill2-depth @var{depth}} |
| @quotation |
| Another depth controlling how deeply GNU Go looks for backfilling |
| moves. The moves tried below @code{backfill2_depth} are generally more obscure |
| and time intensive than those controlled by @code{backfill_depth}, so this |
| parameter has a lower default. |
| @end quotation |
| @item @option{-F}, @option{--fourlib-depth @var{depth}} |
| @quotation |
| Deep reading cutoff. When reading beyond this depth (default 7) GNU |
| Go assumes that any string which can obtain 4 liberties is alive. |
| @end quotation |
| @item @option{-K}, @option{--ko-depth @var{depth}} |
| @quotation |
| Deep reading cutoff. Beyond this depth (default 8) GNU Go no longer |
| tries very hard to analyze kos. |
| @end quotation |
| @item @option{--branch-depth @var{depth}} |
| @quotation |
| This sets the @code{branch_depth}, typically a little below the |
| @code{depth}. Between @code{branch_depth} and @code{depth}, |
| attacks on strings with 3 liberties are considered but branching |
| is inhibited, so fewer variations are considered. Below this |
| depth (default 13), GNU Go still tries to attack strings with only |
| 3 liberties, but only tries one move at each node. |
| @end quotation |
| @item @option{--break-chain-depth @var{depth}} |
| @quotation |
| Set the @code{break_chain_depth}. Beyond this depth, GNU Go abandons |
| some attempts to defend groups by trying to capture part of the surrounding |
| chain. |
| @end quotation |
| @item @option{--aa-depth @var{depth}} |
| @quotation |
| The reading function @code{atari_atari} looks for combinations beginning |
| with a series of ataris, and culminating with some string having an |
| unexpected change in status (e.g. alive to dead or critical). This |
| command line optio sets the parameter @code{aa_depth} which determines |
| how deeply this function looks for combinations. |
| @end quotation |
| @item @option{--superstring-depth} |
| @quotation |
| A superstring (@pxref{Superstrings}) is an amalgamation of |
| tightly strings. Sometimes the best way to attack or defend a |
| string is by attacking or defending an element of the superstring. |
| Such tactics are tried below @code{superstring_depth} and this |
| command line option allows this parameter to be set. |
| @end quotation |
| @end itemize |
| |
| The preceeding options are documented with the reading code |
| (@pxref{Reading Basics}). |
| |
| @itemize @bullet |
| @item @option{--owl-branch} Below this depth Owl only considers |
| one move. Default 8. |
| @item @option{--owl-reading} Below this depth Owl assumes the |
| dragon has escaped. Default 20. |
| @item @option{--owl-node-limit} |
| @quotation |
| If the number of variations exceeds this limit, Owl assumes the dragon can |
| make life. Default 1000. We caution the user that increasing |
| @code{owl_node_limit} does not necessarily increase the strength of the |
| program. |
| @end quotation |
| @item @option{--owl-node-limit @var{n}} |
| @quotation |
| If the number of variations exceeds this limit, Owl assumes the dragon can |
| make life. Default 1000. We caution the user that increasing |
| @code{owl_node_limit} does not necessarily increase the strength of the |
| program. |
| @end quotation |
| @item @option{--owl-distrust @var{n}} |
| @quotation |
| Below this limit some owl reading is truncated. |
| @end quotation |
| @end itemize |
| |
| @subsection Ascii mode options |
| @cindex ascii mode |
| |
| @itemize |
| @item @option{--color @var{color}} |
| @quotation |
| Choose your color ('black' or 'white'). |
| @end quotation |
| @item @option{--handicap @var{number}} |
| @quotation |
| Choose the number of handicap stones (0--9) |
| @end quotation |
| @end itemize |
| |
| For more information about the following clock options see @xref{Ascii}. |
| |
| @itemize |
| @item @option{--clock @var{seconds}} |
| @quotation |
| Initialize the timer. |
| @end quotation |
| @item @option{--byo-time @var{seconds}} |
| @quotation |
| Number of seconds per (Canadian) byo-yomi period |
| @end quotation |
| @item @option{--byo-period @var{stones}} |
| @quotation |
| Number of stones per (Canadian) byo-yomi period |
| @end quotation |
| @end itemize |
| |
| @subsection Development options |
| |
| @itemize |
| @item @option{--replay @var{color}} |
| @quotation |
| Replay all moves in a game for either or both colors. If used with the |
| @option{-o} option the game record is annotated with move values. This |
| option requires @option{-l @var{filename}}. The color can be: |
| @itemize |
| @item white: replay white moves only |
| @item black: replay black moves only |
| @item both: replay all moves |
| @end itemize |
| When the move found by genmove differs from the move in the sgf |
| file the values of both moves are reported thus: |
| |
| @example |
| Move 13 (white): GNU Go plays C6 (20.60) - Game move F4 (20.60) |
| @end example |
| |
| This option is useful if one wants to confirm that a change such as a |
| speedup or other optimization has not affected the behavior of the |
| engine. Note that when several moves have the same top value (or |
| nearly equal) the move generated is not deterministic (though it can be |
| made deterministic by starting with the same random seed). Thus a few |
| deviations from the move in the sgf file are to be expected. Only if the |
| two reported values differ should we conclude that the engine plays |
| differently from the engine which generated the sgf file. |
| @xref{Regression}. |
| @end quotation |
| @item @option{-a}, @option{--allpats} |
| @quotation |
| Test all patterns, even those smaller in value than the largest move |
| found so far. This should never affect GNU Go's final move, and it |
| will make it run slower. However this can be very useful when "tuning" |
| GNU Go. It causes both the traces and the output file (@option{-o}) to |
| be more informative. |
| @end quotation |
| @item @option{-T}, @option{--printboard}: colored display of dragons. |
| @quotation |
| Use rxvt, xterm or Linux Console. (@pxref{Colored Display}) |
| @end quotation |
| @item @option{--showtime} |
| @quotation |
| Print timing information to stderr. |
| @end quotation |
| @item @option{-E}, @option{--printeyes}: colored display of eye spaces |
| @quotation |
| Use rxvt, xterm or Linux Console. (@pxref{Colored Display}) |
| @end quotation |
| @item @option{-d}, @option{--debug @var{level}} |
| @quotation |
| Produce debugging output. The debug level is given in hexadecimal, using the |
| bits defined in the following table from @file{engine/gnugo.h}. A list of |
| these may be produced using @option{--debug-flags}. Here they are in |
| hexadecimal: |
| |
| @cindex debugging options |
| @example |
| DEBUG_INFLUENCE 0x0001 |
| DEBUG_EYES 0x0002 |
| DEBUG_OWL 0x0004 |
| DEBUG_ESCAPE 0x0008 |
| DEBUG_MATCHER 0x0010 |
| DEBUG_DRAGONS 0x0020 |
| DEBUG_SEMEAI 0x0040 |
| DEBUG_LOADSGF 0x0080 |
| DEBUG_HELPER 0x0100 |
| DEBUG_READING 0x0200 |
| DEBUG_WORMS 0x0400 |
| DEBUG_MOVE_REASONS 0x0800 |
| DEBUG_OWL_PERFORMANCE 0x1000 |
| DEBUG_LIFE 0x2000 |
| DEBUG_FILLLIB 0x4000 |
| DEBUG_READING_PERFORMANCE 0x8000 |
| DEBUG_SCORING 0x010000 |
| DEBUG_AFTERMATH 0x020000 |
| DEBUG_ATARI_ATARI 0x040000 |
| DEBUG_READING_CACHE 0x080000 |
| DEBUG_TERRITORY 0x100000 |
| DEBUG_OWL_PERSISTENT_CACHE 0X200000 |
| DEBUG_TOP_MOVES 0x400000 |
| DEBUG_MISCELLANEOUS 0x800000 |
| DEBUG_ORACLE_STREAM 0x1000000 |
| @end example |
| |
| These debug flags are additive. If you want to turn on both |
| dragon and worm debugging you can use @option{-d0x420}. |
| @end quotation |
| @item @option{--debug-flags} |
| @quotation |
| Print the list of debug flags |
| @end quotation |
| @item @option{-w}, @option{--worms} |
| @quotation |
| Print more information about worm data. |
| @end quotation |
| @item @option{-m}, @option{--moyo @var{level}} |
| @quotation |
| moyo debugging, show moyo board. The @var{level} is fully |
| documented elsewhere (@pxref{Influential Display}). |
| @end quotation |
| @item @option{-b}, @option{--benchmark @var{number}} |
| @quotation |
| benchmarking mode - can be used with @option{-l}. Causes GNU Go to play itself |
| repeatedly, seeding the start of the game with a few random moves. This method |
| of testing the program is largely superceded by use of the @command{twogtp} |
| program. |
| @end quotation |
| @item @option{-S}, @option{--statistics} |
| @quotation |
| Print statistics (for debugging purposes). |
| @end quotation |
| @item @option{-t}, @option{--trace} |
| @quotation |
| Print debugging information. Use twice for more detail. |
| @end quotation |
| @item @option{-r}, @option{--seed @var{seed}} |
| @quotation |
| Set random number seed. This can be used to guarantee that GNU Go will make |
| the same decisions on multiple runs through the same game. If @code{seed} is |
| zero, GNU Go will play a different game each time. |
| @end quotation |
| @item @option{--decide-string @var{location}} |
| @quotation |
| Invoke the tactical reading code (@pxref{Tactical Reading} to decide |
| whether the string at @var{location} can be captured, and if so, whether it |
| can be defended. If used with @option{-o}, this will produce a variation tree |
| in SGF. |
| @end quotation |
| @item @option{--decide-owl @var{location}} |
| @quotation |
| Invoke the owl code (@pxref{The Owl Code}) to decide whether the dragon at |
| @var{location} can be captured, and whether it can be defended. If used with |
| @option{-o}, this will produce a variation tree in SGF. |
| @end quotation |
| @item @option{--decide-connection @var{location1}/@var{location2}} |
| @quotation |
| Decide whether dragons at @var{location1} and @var{location2} can be connected. |
| Useful in connection with @option{-o} to write the variations to an SGF file. |
| @end quotation |
| @item @option{--decide-dragon-data @var{location}} |
| @quotation |
| Print complete information about the status of the dragon at @var{location}. |
| @end quotation |
| @item @option{--decide-semeai @var{location1}/@var{location2}} |
| @quotation |
| At @var{location1} and @var{location2} are adjacent dragons of the |
| opposite color. Neither is aliveby itself, and their fate (alive, |
| dead or seki) depends on the outcome of a semeai (capturing race). |
| Decide what happens. Useful in connection with @option{-o} to |
| write the variations to an SGF file. |
| @end quotation |
| @item @option{--decide-tactical-semeai @var{location1}/@var{location2}} |
| @quotation |
| Similar to @option{--decide-semeai}, except that moves proposed by the |
| owl code are not considered. |
| @end quotation |
| @item @option{--decide-position} |
| @quotation |
| Try to attack and defend every dragon with dragon.escape<6. If |
| used with @option{-o}, writes the variations to an sgf file. |
| @end quotation |
| @item @option{--decide-eye @var{location}} |
| @quotation |
| Evaluates the eyespace at @var{location} and prints a report. You can get |
| more information by adding @option{-d0x02} to the command line. |
| (@pxref{Eye Local Game Values}.) |
| @end quotation |
| @item @option{--decide-surrounded @var{location}} |
| @quotation |
| A dragon is @emph{surrounded} if it is contained in the convex hull of |
| its unfriendly neighbor dragons. This does not mean that it cannot escape, |
| but it is often a good indicator that the dragon is under attack. This |
| option draws the convex hull of the neighbor dragons and decides whether |
| the dragon at @var{location} is surrounded. |
| @end quotation |
| @item @option{--decide-combination} |
| @quotation |
| Calls the function @code{atari_atari} to decide whether there |
| exist combinations on the board. |
| @end quotation |
| @item @option{--score @var{method}} |
| @quotation |
| Requires @option{-l} to specify which game to score and @option{-L} if |
| you want to score anywhere else than at the end of the game record. |
| @var{method} can be "estimate", "finish", or "aftermath". "finish" and |
| "aftermath" are appropriate when the game is complete, or nearly so, and |
| both try to supply an accurate final score. Notice that if the game is |
| not already finished it will be played out, which may take quite a long |
| time if the game is far from complete. The "estimate" method may be used |
| to get a quick estimate during the middle of the game. Any of these |
| options may be combined with @option{--chinese-rules} if you want to use |
| Chinese (Area) counting. |
| |
| If the option @option{-o @var{outputfilename}} is provided, the result |
| will also be written as a comment in the output file. For the "finish" |
| and "aftermath" scoring algorithms, the selfplayed moves completing the |
| game are also stored. |
| |
| @itemize |
| @item finish |
| @quotation |
| Finish the game by selfplaying until two passes, then determine the |
| status of all stones and compute territory. |
| @end quotation |
| @item aftermath |
| @quotation |
| Finish the game by selfplaying until two passes, then accurately |
| determine status of all stones by playing out the "aftermath", i.e. |
| playing on until all stones except ones involved in seki have become |
| either unconditionally (in the strongest sense) alive or unconditionally |
| dead (or captured). Slower than @option{--score finish}, and while these |
| algorithms usually agree, if they differ, @option{--score aftermath} is |
| most likely to be correct. |
| @end quotation |
| @end itemize |
| @end quotation |
| @item @code{--score aftermath --capture-all-dead --chinese-rules} |
| @quotation |
| This combination mandates @strong{Tromp-Taylor} scoring. The |
| Tromp-Taylor ruleset requires the game to be played out until |
| all dead stones are removed, then uses area (Chinese) scoring. |
| The option @option{--capture-all-dead} requires the aftermath |
| code to finish capturing all dead stones. |
| @end quotation |
| @end itemize |
| |
| @subsection Experimental options |
| |
| Most of these are available as configure options and are |
| described in @ref{Other Options}. |
| |
| @itemize @bullet |
| @item @option{--options} |
| @quotation |
| Print which experimental configure options were compiled into the program. |
| @end quotation |
| @item @option{--with-break-in} |
| @item @option{--without-break-in} |
| @quotation |
| Use or do not use the experimental break-in code. This option |
| has no effect at level 9 or below. The break in code is enabled |
| by default at level 10, and the only difference between levels |
| 9 and level 10 is that the break in code is disabled at level 9. |
| @end quotation |
| @item @option{--cosmic-gnugo} |
| @quotation |
| Use center oriented influence. |
| @end quotation |
| @item @option{--nofusekidb} |
| @quotation |
| Turn off the fuseki database. |
| @end quotation |
| @item @option{--nofuseki} |
| @quotation |
| Turn off fuseki moves entirely |
| @end quotation |
| @item @option{--nojosekidb} |
| @quotation |
| Turn off the joseki database. |
| @end quotation |
| @item @option{--mirror} |
| @quotation |
| Try to play mirror go. |
| @end quotation |
| @item @option{--mirror-limit @var{n}} |
| @quotation |
| Stop mirroring when @var{n} stones are on the board. |
| @end quotation |
| @end itemize |