Check out Grant Acedrex, our featured variant for April, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Single Comment

Double Castling[Subject Thread] [Add Response]
H. G. Muller wrote on Fri, Sep 25, 2015 06:56 AM UTC:
Well, a GUI is orders of magnitude more complex than an engine, and I guess
XBoard is worse than most, as it evolved over decades, and most of the
things it does now were added as an afterthought rather than as part of a
coherent initial design.

For double castling you would indeed need to modify XBoard. I haven't looked atthe precise details of double castling, but life would be much simpler if the Rook displacement would be (like normal castling) an implied side effect of a King move. Then you don't have to invent new notations for it, and would not have to touch the move parser and SAN generator. That would only leave the move generator (GenLegal() in move.c, where you would have to mess with the code that tests whether castling is allowed), and the routine ApplyMove() in backend.c, which modifies a position according to a move, (and detects a two-step sideway King move as a special case, moving the corner piece as a side effect). IMO it should be feasible for someone with no prior knowledge of the XBoard code to add support for double castling just by looking at what the existing code for standard castling does, and generalize that to involve the other Rook.

I never looked at the source code of Sjaak II. I recommended it because of
the comparatively straightforward way it can be configured, its
availability for Windows as well as Linux and Mac, and the fact that it is
open source. There exist other configurable multi-variant engines, but none
that I know that combines all these favorable characteristics. Nebiyu could
be stronger than Sjaak II, and configuring it is also not rocket science,
but it is not open source and only available as Windows binary. Fairy-Max
is rather awful to configure (I really should design a more user-friendly
format to do that...), and in several ways quite limited to what it can
handle (e.g. boards always have to be 8 ranks, no drop moves). It is open
source, but the code, although quite small, is rather obfuscated and quite
difficult to change. Still, it can do some things Sjaak II would not be
able to do (such as bent sliders).