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