Daniel Shawul wrote:If you decide to support games with protruding squares (islands), I use the symbol '*' to represent them. For Omegachess the FEN I use is
a**********a/1crnbqkbnrc1/*pppppppppp*/*10*/*10*/*10*/*10*/*10*/*10*/*PPPPPPPPPP*/1CRNBQKBNRC1/A**********A w - - 0 1
Maybe there is a better solution than this like sending playable squares only. Assuming rectangular board causes unnecessary information exchange . May be it is even better to be straight forward as possible and avoid FEN all in all. At each step, the gui could send the squares where pieces exist. The playbable squares are sent only once so at the start of the game. Such kind of format is used in past google ai challenge (and even before that), so that they won't have to rewrite the code for every game they invent for the competions.
Note that you have not been entirely consistent, because the non-existing squares on the piece row are indicated as empty squares in the FEN you give, rather than as *. This could reflect a true error in your board setup.
The FEN format does present a bit of a problem. For an Omega-Chess user it would be very annoying having to handle all the asterisk every time. OTOH, in the WB setup command the board format has to be specified in detail, as WB will in general will not know which board squares are inaccessible. So leaving out inaccessible squares, or denoting them as empty squares (to allow contraction, ********** = 10, *10* = 12) would not work in the setup command.
Perhaps we would have to introduce a dual standard here. The setup command would have to explicitly indicate inaccessible squares by asterisk, like in the format you propose. But when a FEN is encountered that does not include any asterisks, and for which the length of the ranks is not equal to the current board width, the FEN decoding would skip squares that are currently marked as inaccessible on the internal board. In general it is not possible to decode FENs without prior knowledge (like pieceToCharTable), so FENs in loaded PGNs can only be decoded after the GUI has seen the setup command from the engine, which would load the standard board setup, and thus mark inaccessible squares.
In the setboard command we could then use the format including asterisks, to make life easier for multi-variant engines.