146 lines
4.1 KiB
Groff
146 lines
4.1 KiB
Groff
.TH CHESSFS 4
|
|
.SH NAME
|
|
chessfs \- chess filesystem
|
|
.SH SYNOPSIS
|
|
chessfs [-verbose] [-addr addr] [-srv srv] [-group gid]
|
|
|
|
chessterm [-font path] [-bg col] [-fg col] player directory
|
|
|
|
uciconnect [-think time] [-wait time] [-player p] -dir game command
|
|
|
|
rc/play [-r] player directory
|
|
|
|
rc/spectate [-r] directory
|
|
|
|
.SH DESCRIPTION
|
|
Chessfs is a filesystem for playing chess games. It posts a
|
|
server named after the argument, which by default is "chessfs".
|
|
Specifying a listening address serves 9p over the announces
|
|
address, instead of a server, or UNIX socket. The files' username
|
|
is the one running the program, and the group can be set using
|
|
the -group option.
|
|
|
|
The filesystem contains three files -
|
|
.BI "ctl",
|
|
.BI "clone"
|
|
and
|
|
.BI "games".
|
|
Opening the clone file creates a new game, and the id can be
|
|
read from the fid. The game can be found under the games directory,
|
|
as a directory with the game id. Ctl is for reading and setting
|
|
server options. It displays the maximum amount of games, and the
|
|
current count of games. Setting roomsize changes the maximum number
|
|
of games which can be played.
|
|
|
|
In each game directory, there are the
|
|
.BI "ctl",
|
|
.BI "white",
|
|
.BI "black",
|
|
.BI "moves"
|
|
and
|
|
.BI "fen"
|
|
files. Ctl supports the following commands:
|
|
|
|
.TF "\fLtime seconds\fR"
|
|
.TP
|
|
.BI "time " seconds
|
|
Set the amount of time each player has. The default value is
|
|
-1 indicating that the game is not timed.
|
|
.TP
|
|
.BI "start"
|
|
Start the game.
|
|
.TP
|
|
.BI "close"
|
|
Close the game, which may or may not have ended.
|
|
.PD
|
|
.RE
|
|
.PP
|
|
The board files, white and black, show the current pieces' position,
|
|
depending on the player. Writing to the file makes a move on behalf
|
|
of the corresponding player.
|
|
.TF "\fLresign\fR"
|
|
.TP
|
|
.BI "draw"
|
|
Offer a draw, or accept a draw if the other player offered one.
|
|
.TP
|
|
.BI "resign"
|
|
Resign the game.
|
|
.TP
|
|
.I "move"
|
|
Make the following move, following the algebraic notation.
|
|
.PD
|
|
.RE
|
|
.PP
|
|
For reading the game in the PGN notation, the
|
|
.BI moves
|
|
file can be read.
|
|
.PP
|
|
The
|
|
.BI fen
|
|
file can be used to read the FEN notation of the current game. Additionally,
|
|
writing to the file, before the game is started, sets the pieces' position.
|
|
.PP
|
|
Chessterm is the user interface for the filesystem. It assumes the game
|
|
is already cloned, and takes as arguments the player (either "black" or "white"),
|
|
and the game directory. Every half of second the directory is checked
|
|
and the board is updated. A mouse action, or the pressing the space key
|
|
on the keyboard, retriggers an update. Mouse button 2 brings up a menu with
|
|
the option to offer a draw, resign, or start the game. When promoting, the pieces
|
|
are shown in a menu. The font used is the one either
|
|
from the
|
|
.CW font
|
|
environment variable, or from the argument. Additionally, the background
|
|
and foreground colors can also be set, based on which the board is drawn.
|
|
.PP
|
|
Uciconnect can be used to connect a game directory, with a process serving
|
|
the UCI protocol via standard input and output. There are two mandatory
|
|
arguments: the game directory and the command to execute. The
|
|
.BI -think
|
|
arguments sets the time the engine is allowed to find a move. Between
|
|
commands and reads, the program sleeps a duration, which can be set via the
|
|
.BI -wait
|
|
option. By default, the engine plays the white player, which can be set with the
|
|
.BI -player
|
|
flag.
|
|
.PP
|
|
Play is an interactive script which prints the board and game status,
|
|
and waits for your or your opponent's move. The -r flag transcribes
|
|
the UTF-8 piece symbols into other symbols, in case the used font
|
|
doesn't have them. Spectate is a similar script, only printing the
|
|
board updates.
|
|
.SH EXAMPLES
|
|
Run the filesystem:
|
|
.IP
|
|
.EX
|
|
chessfs -srv chessfs -group chessclub
|
|
mount /srv/chessfs /n/chess
|
|
.EE
|
|
.PP
|
|
Create a new game, set parameters, and play:
|
|
.IP
|
|
.EX
|
|
cd /n/chess
|
|
cd games/`{cat clone}
|
|
echo time 1800 >ctl
|
|
echo start >ctl
|
|
echo e4 >white
|
|
sleep 1
|
|
echo resign >white
|
|
.EE
|
|
|
|
.SH SOURCE
|
|
|
|
https://git.disroot.org/kitzman/chessfs
|
|
|
|
https://shithub.us/kitzman/chess/HEAD/info.html
|
|
|
|
.SH BUGS AND TODO
|
|
|
|
Menus don't work with plan9port's devdraw. I have only
|
|
tested this, once, on a Linux machine.
|
|
|
|
Encrypting connections should be an option.
|
|
|
|
Currently players cannot change the owners of the files. That means
|
|
anyone can take over the game.
|