tsito(1)tsito(1)NAMEtsito - XiangQi (Chinese Chess)
SYNOPSIStsito [-cxboard] [-red] [-blue] [-nobook] [-depth search-depth] [-ts
hash-table-bits]
DESCRIPTION
Tsito plays XiangQi against the user or it referees two players. It
can be used on the console (or an xterm) or can communicate through
pipes to a GUI frontend. If used in a console it uses ASCII characters
to display the board on the screen.
COMMAND OPTIONS-cxboard
Tells tsito that it is communicating to a GUI, not a user. Out‐
put is less user friendly and more pragmatically useful.
-red Tells tsito to play red.
-blue Tells tsito to play blue; the default.
-nobook
Tells tsito not to use an opening book.
-depth search-depth
Tells tsito the maximum depth to use for searching the game
tree. More means better play but slower responce.
-ts hash-table-bits
Tells tsito how many bits to use for indexing in the transposi‐
tion table. The size of the table will be 2^hash-table-bits
elements wide.
COMMANDS
MOVE_TEXT
Moves can be entered at the prompt in place of commands. These
moves are interpreted as the user's move and are made up of
exactly 2 sets of 2 characters without any spaces. Each set of
characters represent a square on the board, with the first set
being the origin and the second being the destination. Ranks
are labeled by numbers from 0-9 and files are letters from a-i;
character sets are composed of file followed by rank. Moves are
not case sensitive.
Example: h2e2 - This is the common opening move of red's right
cannon moving to the center of the board.
cxboard
Tell tsito to start talking to a GUI.
console
Tell tsito to start talking to a human.
red Tell tsito that the human player is red, tsito will play blue.
blue Tell tsito that the human player is blue, tsito will play red.
force Enter force mode; computer plays niether color and only checks
entered moves for legality.
sd depth
Use max depth of 'depth' for search tree.
post Display thinking.
nopost Stop displaying thinking.
vomit Prints the starting position, the current position, and entire
move history for the current game to stderr.
go Tell the engine to start playing the side to move.
force Place the engine into 'force' mode. Engine plays neither side
but acts as a referee.
undo Take back the last move. This command is only available in
force mode.
remove Take back the last two moves - in other words take back YOUR
last move. This command can be used in any mode.
? If the engine is thinking about its next move this command
forces it to make a move right now.
st seconds
Sets the count in seconds available for each side to make a sin‐
gle move. Counter is reset each time a legal move is made. If
either side runs out of time during their move then the game is
lost.
time Shows the time available.
t Shorthand for the 'time' command.
new Resets the board to the default starting position and starts a
new game.
setboard cfen
Sets the board based on the supplied 'cfen' notation position
description and starts a new game. The supplied argument must
match the 'CFEN' description below.
set option value
Sets engine specific option to value.
ENGINE SPECIFIC OPTIONS
search value
Sets the search method to use for finding computer moves.
Available values are: mtd - Very fast but not particularly sta‐
ble (as in sometimes makes questionable moves). alphabeta
(default)- Slow but very stable. negascout - Medium speed,
questionable stability.
nullmove on/off
If this option is on (default) then the engine will use null
moves to speed up the search.
verifynull on/off
If this option is on (default) then tsito will increase the null
move reduction factor and verify all null move cutoffs. This
increases search stability at some cost to the speed gained by
the null move.
hash on/off
If this option is on (default) then tsito will use a transposi‐
tion table to greately reduce the amount of search nodes that
must be evaluated by saving calculations already made and using
those values if the same position is found again.
hashadjust
If this option is on (off by default) then when tsito finds a
position that it has seen before but has not search to the depth
it wants to now it will adjust the alpha-beta window to try and
increase cutoffs. This can cause some conflicts with null moves
and is considered an unstable option. This option has no effect
if the search method is mtd.
iterative
If this option is on (default) then tsito will search depths
incrimentaly so that moves are ordered better. It is actually
faster to search to each depth up to max depth instead of just
searching to max depth the first time.
CFEN
CFEN is my own version of the standard FEN notation altered to repre‐
sent a chinese chess position. Like FEN it consists first of a string
of characters representing the layout of the board. This string starts
at a9 and stops at i0 (blue to red, left to right from red's side).
Emty spaces are represented by integers that count how many consecutive
spaces are empty. Pieces are represented by their respective charac‐
ter, blue is lower case whereas red is uppercase. Each rank is sepa‐
rated by a '/' character and space counts do not span multiple ranks.
Folowing this layout description is a space followed by a 'b' or 'r'
representing the side to move. Since there are no castling or en-pas‐
ant rights in chinese chess, these are not implemented. The half move
count is also ommited.
Example: r2Rka1hr/4a4/e3e3c/p1p1C1p1p/9/6P2/P1P1P3P/2H3H1E/3RA4/1cEK1A3
r
Pieces:
Pp - soldier (pawn)
Cc - canon
Rr - cart (rook)
Hh - horse
Ee - elephant
Aa - guard (advisor)
Kk - general (king)
SEE ALSO
The command set used in tsito is modeled after the xboard protocol by
Tim Mann, which can be viewed at http://www.tim-mann.org/xboard/engine-
intf.html
BUGS
When using null window search methods like mtd and negascout then some‐
times a null move can end up in the primary line. This happens rather
often and on not so rare occasions it effects the search poorly. The
only way to get rid of the bug is to either not use these search meth‐
ods or turn off null move heuristics. I decided to leave that up to
you, the user. If you find that it is often making stupid moves and
you are beating it regularly because of this, try turning null moves
off or using alphabeta as the search method. You may need to lower the
search depth if you do this. Using null move verification does help
quite a bit but does not get rid of the problem all together.
AUTHORS
This man page writen by Noah Roberts
The origional tsito XiangQi engine was written by Noah Roberts as part
of his senior project while enroled in the Computer Science department
at St. Martin's College and Abby. The other members of the team, Scott
Christian and Anthony Czyk, contributed related works including a Win32
GUI and documentation.
tsito(1)