uct_notify(): Stop background search on new game to avoid using deallocated board.
[pachi/peepo.git] / README
blobe18a1a42779b14f2d01798a4910b611ede59d679
1 Pachi is two things: a simple modular framework for robots playing
2 the game of Go/Weiqi/Baduk, and a reasonably strong engine built
3 within this framework.
6 Engine
7 ------
9 By default, Pachi currently uses the UCT engine that combines
10 monte-carlo approach with tree search; UCB1AMAF tree policy using
11 the RAVE method is used for tree search, while the Moggy playout
12 policy using 3x3 patterns and various tactical checks is used for
13 the random Monte-Carlo playouts.
15 The default engine plays by Chinese rules and should be about
16 2d KGS strength on 9x9. On 19x19, it might be about KGS 4k. Of couse,
17 this assumes reasonable hardware, e.g. four-threaded Core2 machine.
19 At the same time, various other approaches and tricks are being tried
20 and minor improvements have been achieved; they are enabled when they
21 give an universal playing strength boosts.
24 Except UCT, Pachi supports a simple idiotbot-like engine and an example
25 treeless MonteCarlo-player. The MonteCarlo simulation ("playout")
26 policies are also pluggable, by default we use one that makes use of
27 heavy domain knowledge.
29 Two special engines are also provided for development support:
30 * a simple "replay" engine that will simply play moves according
31   to the playout policy suggestions
32 * a special "patternscan" engine that will respond to 'play' commands
33   by iteratively matching various pattern features on each move and
34   outputting them as response to the command; it is intended to be
35   used for pattern-learning from games in cooperation with an external
36   helper; no 'genmove' command support is provided
39 Framework
40 ---------
42 The aim of the framework is to make it easy to plug your engine
43 to the common infrastructure and implement your ideas while
44 minimalizing the overhead of implementing the GTP, speed-optimized
45 board tools, etc.  Also, there are premade random playout and UCT
46 tree engines, so that you can directly tweak only particular policies.
47 The infrastructure is pretty fast and it should be quite easy
48 to extend it to provide more facilities for your engine (but it should
49 be at the same time kept as simple as possible).
52 Licence
53 -------
55 Pachi is distributed under the GPLv2 licence (see the COPYING file for
56 details and full text of the licence); you are welcome to tweak it as
57 you wish (contributing back upstream is welcome) and distribute
58 it freely, but only together with the source code. You are welcome
59 to make private modifications to the code (e.g. try new algorithms and
60 approaches), use them internally or even to have your bot play on the
61 internet and enter competitions, but as soon as you want to release it
62 to the public, you need to release the source code as well.
64 One exception is the Autotest framework, which is licenced under the
65 terms of the MIT licence (close to public domain) - you are free to
66 use it any way you wish.
69 To build Pachi, simply type:
71         make
73 Built zzgo binary (named that way from historical reasons) in the current
74 directory is a GTP client; use your favorite Go client to connect to it
75 (generally it should be possible to use it in place of GNU Go; the
76 command-line usage is however different), or use kgsGtp to connect to KGS;
77 DO NOT make it accessible directly to enemy users since the parser is
78 not secure - see the HACKING file for details.
80 The zzgo binary can take many parameters, as well as the particular
81 engine being used; the defaults should be fine for initial usage,
82 you will have to consult the sources for fine-tuning the parameters.
84 To build better optimized binary, type:
86         make zzgo-profiled
88 This will also create binary zzgo, but while the build will take
89 more time (probably less than a minute anyway), the resulting binary
90 will be about 1/4 to 1/5 faster.