What is Sjeng ? --------------- Sjeng is a chessprogram that plays many variants. In addition to that, it can also play normal chess quite well and is fully compatible with the standard XBoard/WinBoard protocol (version 1 and 2). Sjeng also supports some broken WinBoard implementations, such as the one present in the ChessBase/Fritz WinBoard adapter. Technically, Sjeng is a highly advanced alpha-beta searcher, using modern techniques like history and killer moves, transposition tables, SEE move ordering and pruning, and search enhancements like selective extensions, Aspiration Principal Variation Search, Adaptive nullmove pruning, Extended Futility Pruning and Limited Razoring. Sjeng can use an opening book and learns from the games it plays. In it's suicide and losers mode, Sjeng use proof-number searches to quickly find forced wins. Sjeng plays at the same level that the best humans are capable of. On 14th of October 2000, Sjeng won it's first title by becoming the World Computer Crazyhouse Chess Champion. On December 31th 2000, Sjeng became the first computer program to reach the #1 spot on the crazyhouse rating list on the Free Internet Chess Server. It had been #1 on the Internet Chess Club before. Early 2001 Sjeng became the #1 losers/giveaway player on the Internet Chess Club. What variants are supported ? ----------------------------- Sjeng currently plays standard chess, crazyhouse, bughouse, suicide (aka giveaway or anti-chess) and losers. It can also play variants which have the same rules as normal chess, but a different starting position. How do I get it to work ? ------------------------- Building it ----------- GNU/Linux, FreeBSD, other Un*x variants: ---------------------------------------- Building Sjeng should be as simple as: ./configure make (su to root if needed) make install If you notice Sjeng is only reporting time in full second increments, edit config.h and change #define HAVE_FTIME into #undef HAVE_FTIME. Windows ------- I have succesfully compiled Sjeng with Microsoft Visual C++. Other compilers are not tested, but may also work. The easiest way is to locate a Windows port of Sjeng's sources, which you can compile out-of-the-box. If those are not available, follow these instructions: You need to find a Windows port of the GDBM library. There are several (free) ones available on the internet. You will have to create a config.h file which contains #define HAVE_SYS_TIMEB_H #define HAVE_FTIME #define VERSION "11.2" You may have to define _WIN32 also, if your compiler doesn't already do so. You also need an implementation of the strcasecmp function. An implementation is available in the file strcasec.c in the DJGPP distribution. Alternatively you can use the Cygnus utilities. I have never used them myself so I cannot help you there, but I have had reports from users which successfully built Sjeng with it. The opening books ----------------- Sjeng uses two kind of books: .opn books and binary books The .opn books are intended to be created manually, and are ideal for getting Sjeng to play your favorite openings. Some examples are in the books directory. To use a .opn book, just copy it to the same directory where you are running Sjeng from. Sjeng will always look in the .opn book first and will never apply learning to it. The binary books are created automatically from PGN databases, by a built-in bookbuilder. To use it, just start Sjeng and enter 'book'. To generate a crazyhouse/bughouse book, first type 'variant crazyhouse', then type 'book'. ('losers' and 'suicide' are also supported) Be sure to make the keycache large enough or the book-generation will be slow and you will end up with very large files. One byte in the keycache is enough for one position. The keycache is stored in RAM, so do not make it bigger than the actual amount of RAM you have. You need about 12 bytes diskspace per position that will be stored. You must use a pure PGN database. PGN derivates like BPGN are not (yet) supported, nor is the psuedo-PGN that some other programs output. I recommend running your PGN database through the 'Extract' program by David Barnes first. It has options to strip variantions, comments and NAG's and to suppress duplicates which will significantly speed up the bookbuilding process, as well as getting rid of any psuedo-SAN. A PGN database of some high-quality crazyhouse games is available at ftp://sjeng.sourceforge.net/pub/sjeng/zhbook.pgn Getting an interface -------------------- You can start Sjeng now by typing 'sjeng', but you will probably find the text-based interface unpleasant. The recommended interface for playing standard chess with Sjeng is WinBoard/XBoard, by Tim Mann. http://www.tim-mann.org/xboard.html You will need to start WinBoard/xboard with the -variant option to play bughouse, crazyhouse, suicide or losers. If you need more help with WinBoard/xboard read its documentation. If you want to let Sjeng play on a chess server, be sure to read zippy.README Zon Juan Jan wrote a Windows interface for crazyhouse-playing programs that can be used with Sjeng. Go to http://bughouse.net and look in the downloads section. The program is called Zhouse Challenger. It works nicely and I can recommend it a lot! There is an alternate download at: http://www.d2d4.de/download/zchall-sfx.exe EBoard is a chess interface for POSIX systems (GNU/Linux, FreeBSD, etc.) based on the GTK+ GUI toolkit. It is available on http://eboard.sourceforge.net/ and has extensive support for Sjeng. Generating endgame databases ------------------------- Sjeng support endgame databases for the suicide variant. You can generate them as follows: 1) Make a subdirectory named 'stb' in Sjeng's directory 2) Start Sjeng form the command line and issue the command 'buildegtb' This will take an hour or so, depending on the speed of your computer. Tuning Sjeng ------------ A great deal Sjeng's workings can be customized without recompiling it. You should take a look at sjeng.rc and adjust the parameters to your likings. Especially the first three are imporant because they control how much memory Sjeng will use for transposition tables and caches. If those are set too big for your RAM, Sjeng will crash. Benchmarking ------------ As a little test of your computer's speed, you can start Sjeng and give the 'speed' command. This will run a little benchmark of the most commonly-used functions in Sjeng. Running testsuites ------------------ Sjeng can automatically run testsuites by use of the 'test' command. Input data is expected to be in EPD format with either a 'best move' (bm) or 'avoid move' (am) tag. Some testsuites are included in the 'tests' directory of the Sjeng distribution. Getting more info ----------------- For more info about Sjeng, you can visit the homepage http://www.sjeng.org/ If you are in need of info about Sjeng's internal workings, send me a mail at gcp@sjeng.org Reporting bugs -------------- If you spot a bug, or Sjeng crashes on you, please send email to gcp@sjeng.org Please try to provide an accurate description of the problem and, if possible, how to reproduce it. Starting XBoard/WinBoard with the -debug option will produce debug output (either on screen or in a winboard.debug file) that can help a lot in tracking down the problem. Copying/Distribution -------------------- Sjeng is Free Software and is licensed under the GNU General Public License. For more details see the file COPYING that comes with Sjeng. If this file is missing, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Sjeng should have come with source code, or you should have been given the possibility to obtain it for a charge no more than the cost of physically performing the source distribution. If not, please contact gcp@sjeng.org. Sjeng includes tablebase accessing code written by Andrew Kadatch and Eugene Nalimov. This code is contained in the files tbindex.cpp and tbdecode.h and is copyrighted by them, all rights reserved. This code does _not_ fall under the GPL. You are hereby given the additional right to compile and link Sjeng with this code, as well as to distribute the resulting executable and code under the conditions of the GPL, except for the files tbindex.cpp and tbdecode.h, which do not fall under the GPL, but may also be distributed together with Sjeng. The author regrets having to include this non-free code with Sjeng, but no free replacement of the same quality is availble yet. What is bughouse ? ------------------ Bughouse is a form of chess which is played with 2 teams, each consisting of 2 players. Each player plays his opponent on a seperate board. If a piece is captured, the capturing player can pass it on to his partner, who can then drop the piece into his game and use it. If you have never played bughouse before, you are really missing out on something. Try it, you'll like it. for a more complete description of the rules: http://matador.unige.ch/nabla/Bug/rules.html What is crazyhouse ? -------------------- Crazyhouse is similar to bughouse, but is played with only 2 players, on 1 board. What is suicide/giveaway/anti-chess ? ------------------------------------- Suicide is a form of chess where the goal is to lose all your pieces. Your king acts like a normal piece and can be captured, and you can promote pawns to a king. If you can capture, you must. Suicide is sometimes referred to as giveaway or anti-chess, although there are minor differences between variants. In suicide, castling is not allowed, but in giveaway it is. If a player is stalemated, he loses in giveaway, but in suicide he wins if he has less material than his opponent. What is losers ? ---------------- Losers is similar to suicide with the exception that the king may not be captured, you cannot promote pawns to kings, and if you are checkmated you win. Where can I play bughouse ? ---------------------------- The most common place to play bughouse is the Free Internet Chess Server (FICS). Most important chess servers also offer it, like the Internet Chess Club. http://www.freechess.org http://www.chessclub.com Or even better, gather a few friends, 2 chessboards, 2 clocks, some beer, and have fun beating each other ;) -- last revised 2001-12-27 -- gcp@sjeng.org --