Some time ago I proposed a protocol extension for sending move + draw claim in an atomic way that had better backward compatibility than this new suggestion:Matthias Gemuh wrote:Code: Select all
Here's a suggestion (from Bob): ... protocol version 2: move Rh7+ to protocol version 3: move Rh7+ draw ...
I agree with Bob's suggestions.
Now tell us your opinion.
1/2-1/2 {3-fold repetiton after Rh7+}
Bob, however, was against this, and convinced me that it woud be better to overload the offer draw command for this purpose, because it reflects the way that an ICS handles it, and it would be undesirable to require the behavior of an engine to be different in ICS play than in local play.
So the protocol for handling this sitution now is to send
offer draw
move Rh7+
on which the GUI should terminate the game as a draw if a draw condition (50-move or 3-fold rep) exists after Rh7+.
If the draw condition already exists before the move, the GUI could also interpret the offer draw as a claim, although it would be perfectly valid for the engine to terminate the game by itself through
1/2-1/2 {3-fold rep}
without sending any move, in that case.
If there is no draw condition either before or after the move, the offer draw is relayed to the opponent just before the move, in perfect agreement with the FIDE rules, which stipulate that a draw claim is also a draw offer.
I think this completely solves eveything, and see no need for a protocol extension.
Note that WinBoard 4.3 gives some leeway to engines making 'false' draw claims because they use the alternative way of claiming (1/2-1/2 after having sent their move) that is unsafe w.r.t. the race condition: if a 1/2-1/2 command gets in after the opponent has moved, WinBoard judges the validity of the claim not only based on the position after this move, but also on the one before it. Ths because it is conceivable the opponent has just sneeked in a move between the claiming engine's move and the claim. Although this in principle can be exploited by cheating engines (delaying their claim until after the opponent has moved, and only stake it when the move is good), I figured that if the penalty is forfeit, it is better to let the cheaters get away than to unjustly forfeit faithful engines that happen to be unlucky because of a communication delay. (The fact that I do not know a singe engine that cheats tis way, and that I consider it extremely unikely one will ever e built, made this an easy decision...
