Moggy assess: Separate intersection and group iteration
[pachi.git] / README
blob0d2b9570173755fbb5b9f2b8582f4ad0635d2ef4
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 1d KGS strength on 9x9. It is not yet tuned for 19x19; running
17 it on big board is possible, but it will play slowly and hardly
18 be an opponent for someone stronger than about KGS 15k.
21 Framework
22 ---------
24 The aim of the framework is to make it easy to plug your engine
25 to the common infrastructure and implement your ideas while
26 minimalizing the overhead of implementing the GTP, board tools, etc.
27 Also, there are premade random playout and UCT tree engines, so that
28 you can directly tweak only particular policies.
30 The infrastructure is optimized for speed to make it well suited
31 for bruteforce engines, however tradeoffs are made to make it useful
32 for heavier MonteCarlo playouts as well (e.g. real liberties are
33 tracked instead of pseudoliberties). If you are looking for raw
34 light playout speed, libEGO is better choice.
36 Pachi is under the MIT licence (almost public domain) so that as
37 many people as possible can use it; if you use it to create your engine,
38 appropriate credits would be appreciated. Some of the bundled engines
39 or policies are under a more restrictive licence (GPL).
42 Currently, Pachi supports a simple idiotbot-like engine and an example
43 MonteCarlo-player with bits of optional domain-specific knowledge.
44 Also, example UCT engine is provided, reusing the same knowledge.
45 The infrastructure is pretty fast and it should be quite easy to extend
46 it to provide more facilities for your engine (but it should be at
47 the same time kept as simple as possible).
49 Pachi uses New Zealand scoring, currently. That means, it simply counts
50 the number of stones and one-point eyes of each color on the board,
51 plus komi and handicap correction.
53 New Zealand rules also mean that multi-stone suicide is allowed! If you
54 do not like that (basically if you want to pretend it plays according
55 to Chinese rules), you need to rule that out in your engine, currently.
56 The provided engines DO avoid multi-stone suicide.
58 New Zealand rules have positional superko; the board implementation
59 will set a flag if it is violated, but play the move anyway. You need
60 to enforce the superko rule in your engine.
63 Also, Pachi supports only few GTP commands now. Most importantly,
64 it does not support the undo command, and its final_status_list command
65 is only an empty stub.
68 To build Pachi, simply type:
70         make
72 Built zzgo binary (named that way from historical reasons) in the current
73 directory is a GTP client; use your favorite Go client to connect to it
74 (generally it should be possible to use it in place of GNU Go; the
75 command-line usage is however different), or use kgsGtp to connect to KGS.
76 The zzgo binary can take some parameters.
78 To build better optimized binary, type:
80         make zzgo-profiled
82 This will also create binary zzgo, but while the build will take
83 more time (probably less than a minute anyway), the resulting binary
84 will be about 1/4 to 1/5 faster.