Sloppy is a free chess engine Copyright (C) 2007 - 2009 Ilari Pihlajisto (ilari.pihlajisto@mbnet.fi) LICENSE AND WARRANTY Sloppy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Sloppy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. COMPILING In UNIX/Linux systems just type "make" to compile Sloppy. There is no "make install" though, so if you want to install Sloppy to an other directory you'll need to copy the executable and the opening book (if any) to said directory. The Windows version compiles at least with Mingw and Microsoft's Visual C++ compiler. Makefiles for both are included (Makefile.mgw and Makefile.win). INTERFACE, COMMAND LINE OPTIONS Sloppy speaks both of the common chess engine communication protocols: the Xboard/Winboard protocol (version 2) and UCI. A GUI needs no special setup: the protocol is chosen by the first command the GUI sends, so configuring Sloppy as either an Xboard engine or a UCI engine just works. Sloppy doesn't accept any command line options, see configuration below. UCI NOTES The UCI options Sloppy advertises are Hash, Clear Hash, OwnBook, EgbbPath, EgbbLoadType, EgbbCache and Egbb5Men. Their defaults are taken from the configuration file, so "setoption" is only needed to override it per session. Sloppy does not ponder, and therefore does not advertise the Ponder option. Some inputs are still accepted beyond what Sloppy advertises, so that a GUI which sends them anyway gets protocol-correct behavior instead of a desynchronized game: - "ucinewgame" does not clear the hash table. Sloppy has never cleared it between games (the Xboard "new" command doesn't either), and UCI mode deliberately keeps the engine's original behavior so that both protocols play identically. A GUI or user who wants a cold start can send "setoption name Clear Hash". - UCI mode never writes the game log files. "gamelog.txt" and "games.pgn" are produced only by the Xboard protocol's game lifecycle (and only with logfile = on): UCI has no "result" command, so games can't be logged from it, and only the error log ("errlog.txt") can be written in UCI mode. "ucinewgame" therefore also refuses to delete an existing "gamelog.txt". Note that the engine still deletes that file from its working directory once at startup, before any protocol has been chosen. - "go ponder" is treated like "go infinite": the best move is held back until "ponderhit" or "stop" arrives, and an "info string" notice says so. Sloppy does not actually think on the opponent's time. - "go mate N" runs a normal search instead of a mate search, and says so. - "register" is answered with "registration ok"; Sloppy never asks for registration. - The option value "<empty>" (a convention of some GUIs) clears EgbbPath. - A "go" without any parameters searches until told to stop. - Zero or negative clocks make Sloppy move as fast as it can. - Unknown commands are ignored, with an "info string" notice. CONFIGURATION Sloppy is configured by editing the configuration file ("sloppy.conf"). On Windows systems the configuration file should be placed to the same directory where the executable is. On non-Windows systems the configuration file should be placed to $HOME/.config/sloppy/ directory. ASCII INTERFACE COMMANDS In addition to all Xboard input, Sloppy accepts these commands: bench runs Sloppy's own benchmark debug toggles debugging mode divide [d] perft to depth [d], prints a node count for every move help shows this list perft [d] runs the perft test to depth [d] printboard prints an ASCII chess board and the FEN string printeval prints the static evaluation printkey prints the hash key printmat prints the material each player has on the board printmoves prints a list of legal moves quit quits the program readpgn [f] imports pgn file [f] to the book readpgnlist [f] imports a list of pgn files (in file [f]) to the book testpos [sec] [fen] runs a test position (eg. WAC, WCSAC) testsee [fen] [move] tests the Static Exchange Evaluator testsuite [sec] [f] runs a list of test positions (in file [f]) uci switches to UCI mode xboard switches to Xboard/Winboard mode