Check out Glinski's Hexagonal Chess, our featured variant for May, 2024.

Enter Your Reply

The Comment You're Replying To
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).

Edit Form
Conduct Guidelines
This is a Chess variants website, not a general forum.
Please limit your comments to Chess variants or the operation of this site.
Keep this website a safe space for Chess variant hobbyists of all stripes.
Because we want people to feel comfortable here no matter what their political or religious beliefs might be, we ask you to avoid discussing politics, religion, or other controversial subjects here. No matter how passionately you feel about any of these subjects, just take it someplace else.
Quick Markdown Guide

By default, new comments may be entered as Markdown, simple markup syntax designed to be readable and not look like markup. Comments stored as Markdown will be converted to HTML by Parsedown before displaying them. This follows the Github Flavored Markdown Spec with support for Markdown Extra. For a good overview of Markdown in general, check out the Markdown Guide. Here is a quick comparison of some commonly used Markdown with the rendered result:

Top level header: <H1>

Block quote

Second paragraph in block quote

First Paragraph of response. Italics, bold, and bold italics.

Second Paragraph after blank line. Here is some HTML code mixed in with the Markdown, and here is the same <U>HTML code</U> enclosed by backticks.

Secondary Header: <H2>

  • Unordered list item
  • Second unordered list item
  • New unordered list
    • Nested list item

Third Level header <H3>

  1. An ordered list item.
  2. A second ordered list item with the same number.
  3. A third ordered list item.
Here is some preformatted text.
  This line begins with some indentation.
    This begins with even more indentation.
And this line has no indentation.

Alt text for a graphic image

A definition list
A list of terms, each with one or more definitions following it.
An HTML construct using the tags <DL>, <DT> and <DD>.
A term
Its definition after a colon.
A second definition.
A third definition.
Another term following a blank line
The definition of that term.