NAME¶
fairymax - xboard-compatible chess and chess-variant engine 'Fairy-Max'
SYNOPSIS¶
fairymax [hashSize] [iniFile]
shamax [hashSize] [iniFile]
maxqi [hashSize] [iniFile]
DESCRIPTION¶
fairymax is a program that plays chess and chess variants. It uses the
xboard/winboard chess-engine protocol to communicate. Apart from 'regular'
chess (also known as the Mad-Queen variant), it can play Capablanca chess,
gothic chess, knightmate, cylinder chess, berolina chess, superchess, makruk
(Thai chess, also with Cambodian rules), courier chess, Seirawan chess,
Spartan chess, falcon chess, great shatranj, shuffle chess without castling
and chess with different armies. Fairy-Max can be easily configured by the
user to play other variants as well, by modifying the ini file. This ini file
describes the rules of movement of the participating pieces and the initial
board setup.
Fairy-Max can also play shatranj, but in this case is not aware of the shatranj
rule that a bare king loses. So it might play sub-optimally in the late
end-game. A version of Fairy-Max adapted to implement the baring rule is
available under the name
shamax.
Similarly, a version of Fairy-Max adapted to play Xiang Qi (Chinese Chess) is
included in the fairymax package as well, under the name
maxqi.
fairymax is a derivative of the world's (once) smallest chess program
(source-code wise), micro-Max. The latter measures less that 2000 characters,
(about 100 code lines), and has a computer rating of around 2050 on the CCRL
rating list. Although this is about 1000 rating points behind the world
champion, micro-Max still makes a quite tough opponent even for club players,
although it is not unbeatable.
The main difference between micro-Max and Fairy-Max is that the latter loads its
move-generator tables, which specify how the various pieces move, from an
external file, so it can be easily adapted to incorporate un-orthodox pieces.
For ease of use of the artificial-intelligence, Fairy-Max is equipped with I/O
routines that allow it to run with the xboard graphical user interface.
See
xboard(6) for instructions about how to use
fairymax through
xboard. To start up quickly, you just need the command:
xboard -fcp
fairymax. However, XBoard might not support symbols for every unorthodox
piece in board sizes different from
bulky,
middling and
petite. It might thus be advisable to specify a board size as well,
e.g.
xboard -fcp shamax -boardSize middling -variant shatranj to get
correct display of the elephant and general pieces in shatranj. Note that to
be able to play the chess variants, you will need xboard 4.3.14 or later.
Some of the variants Fairy-Max plays are only partially supported by XBoard, and
can only be played whith the legality-testing function of the latter switched
off. (This applies to cylinder chess, berolina chess, great shatranj, and
chess with different armies.) For some variants even the name is unknown to
XBoard, and they are all grouped under the catchall name 'fairy'. Which
variant is played by Fairy-Max when XBoard is set to 'fairy', can be
determined by a combobox control in the XBoard 'Engine Settings' menu dialog.
Fairymax supports multi-PV mode: by specifying a non-zero multi-PV margin in the
Engine-Settings dialog of XBoard, Fairy-Max will not only print the principal
variation for the best move, but also for every move that approaches the score
of this best move to within the set margin. (If it does not find the best move
on the first try, this might lead to printing of a few extra lines below the
threshold.)
The fmax.ini file from which Fairy-Max by default takes the piece and game
definitions is a self-documenting text file, which contains instructions for
how to define new pieces and chess variants. In addition it contains an
extensive list of pre-defined pieces, incuding many not occurring in any of
the pre-defined variants, which the user can draw on to define his own
variants.
Amongst the move types supported by Fairy-Max are normal leaper and slider
moves, (e.g. knight and rook), divergent moves (i.e. capture and non-capture
moves can be different), hoppers (which jump over other pieces, such as the
Chinese cannon or the grasshopper), lame leapers (the move of which can be
blocked on squares they cannot move to, such as the Chinese horse and
elephant), limited-range sliders (upto range 5), and any combination thereof,
in every possible direction. The board width is configurable upto a width of
14 squares, and cylindrical boards (where left and right edge connect) are
supported as well.
OPTIONS¶
- hashSize
- If the first argument to fairymax is numeric, it is taken as an indicator
for the amount of memory Fairy-Max is allowed to use for its internal hash
table. The default value for this argument, 22, would result in a memory
usage of 48MB. Each next-higher number doubles the memory usage, each
next-lower halves it. Running with less than 6MB (i.e. argument 19) is not
recommended. When fairymax is running under xboard 4.3.15 the hash-table
size can be set through the xboard menus, making this argument
superfluous.
- iniFile
- A second or non-numeric first argument is taken as a filename. Fairy-Max
will use the mentioned file in stead of its default fmax.ini file to
define the movement of pieces and initial setup of the variants. This
makes it easier to define your own variants.
- INTERACTIVE OPTIONS
- Fairy-Max also supports some options that can only be set interactively,
though XBoard's engine settings menu dialog. These include a setting to
further define -variant fairy, (e.g. which armies to pit against each
other in chess with different armies), and whether makruk is to be played
with Thai or Cambodian rules (the latter requiring XBoard's legality
testing to be switched off!). You can also enable resigning, and set a
score threshold for when Fairy-Max should do it, and define the already
mentioned multi-PV margin there.
AVAILABILITY¶
At
http://hgm.nubati.net/cgi-bin/gitweb.cgi the source code can be obtained.
SEE ALSO¶
xboard(6)
explanations:
http://www.chessvariants.org/index/msdisplay.php?itemid=MSfairy-max
micro-Max:
http://home.hccnet.nl/h.g.muller/max-src2.html
XBoard:
http://hgm.nubati.net
STANDARDS¶
WinBoard,
xboard(6) interface ("Chess Engine Communication
Protocol")
AUTHOR¶
H.G.Muller <h.g.muller@hccnet.nl>.
This manual page was generated with
pod2man(1).