Proposed pgn for Kriegspiel
I'd like to offer the following suggestion for a
Kriegspiel notation which is backwards-compatible with the popular pgn
notation. It is in our interest to be backwards compatible
as there are many chess applications which are
both useful to us and dependent upon pgn.
The only real issues here are keeping track of the attempted illegal
moves and keeping track of the attributes returned on a move's
completion (if it was a take, if it put you in check and how, etc).
To keep track of these things while preserving backwards compatibility,
we can use the age-old technique of putting the new information inside
the comments. For example, a kriegspiel move might be recorded like:
5. exd3 {(K:d4,dd3:Td3)} Nxd3+ {(K::CK)}
Where Td3 means that the opponent is told of a take at square d3
and CK means that the opponent is told that they are in check by
knight. The grammar would be as follows (I use '.' to signify
concatination):
- comma = , (just the comma character).
- colon = : (just the colon character).
- nothing = (empty string)
- move = a standard pgn move in san, i.e. "e4" or "Rfxc2+". See
here for the formal
specification.
- movelist = move.comma.movelist | move
- square = a square on the chess board, i.e. "e4".
- CR, CF, CD, CK = Represents a player being informed of check:
respectively, these mean check by rank, check by file, check by
diagonal, and check by knight.
- T.square = Represents a player being informed that the piece
on the given square is taken.
- attemptedMoveList = movelist | nothing (list of attempted moves)
- opponentInformation = nothing | T.square | CR | CF | CD | CK (represents
the information the opponent gets from the move)
- kriegInfo = (K.colon.attemptedMoveList.colon.opponentInformation)
Something of the form kriegInfo can be inserted into
a the comment after the made move and will contain all the relavent
kriegspiel information. Conceptually, a kriegspiel pgn half-move will
have the form
move {(K:attempted moves:opponent information) comments}
The information I get out of my own move (if I cause check, or if
I take a piece) will be availible from the standard san.
I haven't written anything based on this yet, and so I'd welcome comments
before I start coding it up. One issue that I've thought of is how to
deal with the move of asking if there exists a pawn that can take
(a shortcut move allowed in some varients of kriegspiel to speed play).
I've delt with this by simply not allowing the ask move -- it is not all that
hard to simple check if the pawns take one at a time.
Web Accessibility