I have used a few ideas I saw in Senpai by Fabien Letouzey, in particular replacing the quiescence search by a static evaluation under certain conditions, making the evaluation colour-symmetric by looping over black and white and negating the eval terms at the end of the loop and the form of the king-safety term (I suspect that other programs use or used similar constructs, that's just where I saw them myself).
In terms of playing strength, in my testing this version is much stronger than the last release (524), but weaker than Jazz (but not hopelessly so, it stands a fair chance). If I were asked to put a number on it, I would guestimate a strength of ~2200 Elo on CCRL 40/40 scale, but take it with a healthy portion of salt since my main testing has been against the last version of Sjaak and Jazz. The strength difference probably also depends on the variant.
I'll give some technical details further down, for those who are interested.
What's new?
- Sjaak now understands both CECP and UCI protocol (also USI and UCCI, but those are not tested very well). For variants, UCI is not very useful because the GUI will probably not understand the rules for different variants (with the exception of Chess960), but you can select any variant in UCI mode anyway.
- Uses features that are new in XBoard 4.8, for the purpose of defining engine defined variants.
- Many new variants, including: Shatar (traditional Mongolian chess), Sittuyin (Burmese chess), Crazyhouse, Chessgi, Ai-Wok, King-of-the-hill, Los Alamos (6x6 mini-chess) and different Shogi variants (Japanese chess, it plays normal Shogi, mini Shogi, Sho Shogi and Tori Shogi).
- Improved terminal interface, for playing without a GUI. Sjaak also has a "rules" command that will display the rules of the current variant, including the moves of different pieces.
Code: Select all
'chess' (8x8)
'shatar' (8x8)
'makruk' (8x8)
'shatranj' (8x8)
'sittuyin' (8x8+6)
'crazyhouse' (8x8+6)
'chessgi' (8x8+6)
'asean' (8x8)
'ai-wok' (8x8)
'spartan' (8x8)
'pocketknight' (8x8+1)
'kingofthehill' (8x8)
'knightmate' (8x8)
'amazon' (8x8)
'chancellor' (8x8)
'berolina' (8x8)
'losalamos' (6x6)
'micro' (5x5)
'capablanca' (10x8)
'gothic' (10x8)
'embassy' (10x8)
'courier' (12x8)
'grand' (10x10)
'opulent' (10x10)
'minishogi' (5x5+5)
'shoshogi' (9x9)
'shogi' (9x9+8)
'torishogi' (7x7+6)
'xiangqi' (9x10)
This mostly refers to running under X/WinBoard:
- Shatar must be played with "legality testing" switched off. The reason is that XBoard is unaware of some of the special rules for this variant (a knight may not give mate, a sequence of checks leading to mate must include at least one check by rook, queen or knight)
- King-of-the-hill must also be played with legality testing off, for similar reasons.
- Sho Shogi may need to be played with legality testing off, depending on you Win/XBoard version. The initial release of XBoard 4.8 had a bug that made it fail to recognise the promoted Elephant as a second king.
- Sittuyin must be played with legality testing off. Even then, black must begin the game by placing his king (other moves are rejected as invalid). There are two work-arounds: 1) start from a pre-defined position that already has the king in place, or 2) disable the option "Send 'piece' descriptions" in the engine options dialog
- You can re-define the meaning of a particular variant name. For instance, Fairy-Max has an option to play Makruk using Ai-Wok rules. In Sjaak, you can set "makruk=ai-wok" will cause it to play Ai-Wok when asked to play makruk.
What's missing?
Or: why is this release called a "beta"?
- Seirawan chess
- The command-line referee program Sjef has not yet been updated
- USI and UCCI modes have not been tested very well
- Windows port hasn't been tested other than using the build-in move generator tests (which it passes), so it should be ok, but there may be unforeseen issues. It also hasn't been tested on an actual Windows system
- The "rules" command is a bit spotty in places
- Piece descriptions for custom variants need to be improved so they can be specified in Betza notation.
I mentioned this is almost a complete re-write. In particular, the move generator was largely re-written from scratch, as were the search and evaluation. The reason for this is code maintainability: the old version was written in C, and used separate code-paths for small (64 square) and large (>64 square) boards, which duplicated a lot of code and had branches all over the place. The current version uses C++ templates instead.
The code is a bit of a Frankenstein monster in terms of style though, mixing C, C-style-C++ and cleanish C++ code. This is a result of re-using some of the existing code, and I will clean this up gradually over time.
This mixed heritage means that in order to compile the code, you'll need a compiler that can deal with C99 as well as C++ code. Clang and GCC handle this well (on OS X and Linux, also cross-compiling for Windows), but I don't know about other compilers.
Getting it
It's at http://www.eglebbk.dds.nl/program/chess-download.html
Note that currently I only have 64 bit binaries. I'll update the archive with 32 bit ones (at least for Windows and Linux) after I've made sure those work properly.
Please let me know if and how it runs. Tips, suggestions and feed-back welcome!
