This isn't an "offer draw" case. It is a case of crafty sending "1/2-1/2" followed by a move that results in a draw...michiguel wrote:I wonder whether the sequence wasMatthias Gemuh wrote:bob wrote:
Crafty _always_ sends the 1/2-1/2 _after_ it makes a move.
No !
The reason Crafty forfeited in the game that started this discussion is that it sent the 1/2-1/2 while GUI was waiting for a move
Were you processing "offer draw" as the protocol now indicates?Code: Select all
crafty --> offer draw GUI gets "offer draw" from Crafty crafty --> move Rh8 GUI gets "move Rh8" from Crafty (here GUI should declare a draw with the new behavior of offer draw) GUI gets "move Kb7" from opponent faster than next command from Crafty crafty --> 1/2-1/2 GUI sees that it is not a draw anymore.
What I just wrote is what could happen with the old behavior of winboard.
Miguel
Code: Select all
Eng1 (Crafty 23.0 32-bit) <- 21 1 437 7781866 72. Kf1 Eng1 (Crafty 23.0 32-bit) <- 21 1 935 16387909 72. Kf1 Eng1 (Crafty 23.0 32-bit) <- 22 1 935 16387910 72. Kf1 Eng1 (Crafty 23.0 32-bit) <- 22 1 2976 50514331 72. Kf1 Eng1 (Crafty 23.0 32-bit) <- 23 1 2976 50514332 72. Kf1 Eng1 (Crafty 23.0 32-bit) <- 1/2-1/2 {Drawn by 3-fold repetition} Now in WB_EndOfGameClaim() at Time0000000939539828 Now in EndTheGame() at Time0000000939539828 0-1 { Game Nr. 1 : Crafty 23.0 32-bit resigns against ProDeo 1.6 GameDuration = 02:15:14, Finalposition 8/P7/5pk1/6pp/4P1nP/8/5KN1/6Qq w - - 11 72 } .
BTW, this is yet another good example of why "timing" of commands is the wrong way to go. Given this:
I move xxx
1/2-1/2
I move yyy
Which move does the 1/2-1/2 go with? How do you know? Currently, I move XXX, I try to send 1/2-1/2 but the GUI gets my move, sends it to the opponent, gets his move and sends it back, and then sees the 1/2-1/2 and thinks this is for the current position. It is not. It was for the position after _my_ move which the GUI has not misinterpreted.
And it gets recorded as a loss, incorrectly.