Keep PV in triangular array, and add multi-PV
[fairymax.git] / fairymax.6
1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
29 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
30 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
31 .\" nothing in troff, for use with C<>.
32 .tr \(*W-
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
55 .if \nF \{\
56 .    de IX
57 .    tm Index:\\$1\t\\n%\t"\\$2"
58 ..
59 .    nr % 0
60 .    rr F
61 .\}
62 .\"
63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
65 .hy 0
66 .if n .na
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "FMAX.6 1"
132 .TH FMAX.6 1 "2009-06-05" "perl v5.8.8" "User Contributed Perl Documentation"
133 .SH "NAME"
134 fairymax \- xboard\-compatible chess and chess\-variant engine 'Fairy\-Max'
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 \&\fBfairymax\fR [hashSize] [iniFile]
138 .PP
139 \&\fBshamax\fR [hashSize] [iniFile]
140 .PP
141 \&\fBmaxqi\fR [hashSize] [iniFile]
142 .SH "DESCRIPTION"
143 .IX Header "DESCRIPTION"
144 \&\fBfairymax\fR is a program that plays chess and chess variants. 
145 It uses the xboard/winboard chess-engine protocol to communicate.
146 Apart from 'regular' chess (also known as the Mad-Queen variant),
147 it can play Capablanca chess, gothic chess, knightmate, cylinder chess, 
148 berolina chess, superchess and courier chess.
149 Fairy-Max can be easily configured by the user to play other variants as well,
150 by modifying the ini file.
151 This ini file describes the rules of movement
152 of the participating pieces and the initial board setup.
153 .PP
154 Fairy-Max can also play shatranj, 
155 but in this case is not aware of the shatranj rule that a bare king loses.
156 So it might play sub-optimally in the late end\-game.
157 A version of Fairy-Max adapted to implement the baring rule is
158 available under the name \fBshamax\fR.
159 .PP
160 Similarly, a version of Fairy-Max adapted to play Xiang Qi (Chinese Chess)
161 is included in the fmax package as well.
162 .PP
163 \&\fBfairymax\fR is a derivative of the world's (once) smallest chess program 
164 (source\-code wise), micro\-Max.
165 The latter measures less that 2000 characters, (about 100 code lines),
166 and has a computer rating of around 2050 on the \s-1CCRL\s0 rating list.
167 Although this is about 1000 rating points behind the world champion,
168 micro-Max still makes a quite tough opponent even for club players,
169 although it is not unbeatable.
170 .PP
171 The main difference between micro-Max and Fairy-Max is that the latter loads
172 its move-generator tables, which specify how the various pieces move,
173 from an external file, so it can be easily adapted to incorporate un-orthodox pieces.
174 For ease of use of the artificial\-intelligence, Fairy-Max is equipped with
175 I/O routines that allow it to run with the xboard graphical user interface.
176 .PP
177 See \fIxboard\fR\|(6) for instructions about how to use \fBfairymax\fR through xboard. To
178 start up quickly, you just need the command: \fBxboard \-fcp fairymax\fR.
179 However, XBoard might not support symbols for every unorthodox piece in board sizes
180 different from \fBbulky\fR, \fBmiddling\fR and \fBpetite\fR.
181 It might thius be adviasable to specify a board size as well, e.g.
182 \&\fBxboard \-fcp shamax \-boardSize middling \-variant shatranj\fR 
183 to get correct display of the elephant and general pieces in shatranj.
184 Note that to be able to play the chess variants,
185 you will need xboard 4.3.14 or later.
186 .PP
187 The fmax.ini file from which Fairy-Max by default takes the piece and game definitions
188 is a self-documenting text file,
189 which contains instructions for how to define new pieces and chess variants.
190 In addition it contains an extensive list of pre-defined pieces,
191 incuding many not occurring in any of the pre-defined variants,
192 which the user can draw on to define his own variants.
193 .PP
194 Amongst the move types supported by Fairy-Max are normal leaper and slider moves,
195 (e.g. knight and rook),
196 divergent moves (i.e. capture and non-capture moves can be different)
197 hoppers (which jump over other pieces, such as the Chinese cannon or the grasshopper),
198 lame leapers (the move of which can be blocked on squares they cannot move to,
199 such as the Chinese horse and elephant),
200 and any combination thereof,
201 in every possible direction.
202 The board width is configurable upto a width of 14 squares,
203 and cylindrical boards (where left and right edge connect) are supported as well.
204 .SH "OPTIONS"
205 .IX Header "OPTIONS"
206 .IP "\fBhashSize\fR" 8
207 .IX Item "hashSize"
208 If the first argument to fairymax is numeric,
209 it is taken as an indicator for the amount of memory Fairy-Max is allowed to use
210 for its internal hash table.
211 The default value for this argument, 22, would result in a memory usage of 48MB.
212 Each next-higher number doubles the memory usage, each next-lower halves it.
213 Running with less than 6MB (i.e. argument 19) is not recommended.
214 When fairymax is running under xboard 4.3.15 the hash-table size can be set 
215 through the xboard menus,
216 making this argument superfluous.
217 .IP "\fBiniFile\fR" 8
218 .IX Item "iniFile"
219 A second or non-numeric first argument is taken as a filename.
220 Fairy-max will use the mentioned file in stead of its default fmax.ini file
221 to define the movement of pieces and initial setup of the variants.
222 This makes it easier to define your own variants.
223 .SH "SEE ALSO"
224 .IX Header "SEE ALSO"
225 \&\fIxboard\fR\|(6)
226 .PP
227 http://www.chessvariants.org/index/msdisplay.php?itemid=MSfairy\-max
228 .PP
229 http://home.hccnet.nl/h.g.muller/max\-src2.html
230 .PP
231 http://www.open\-aurec.com/wbforum/viewtopic.php?t=49439
232 .SH "AUTHOR"
233 .IX Header "AUTHOR"
234 \&\fBFairy-Max\fR was written by H.G.Muller <h.g.muller@hccnet.nl>.
235 .PP
236 This manual page was generated with \fIpod2man\fR\|(1).