Page 1 of 1

Claim draw UI

PostPosted: 27 Jan 2018, 21:10
by leokom
Hello.
While implementing a chess engine and actively testing it with the WinBoard UI, I have got a few questions concerning the Winboard UI itself.

1) Official possibility to disable claim draw adjudication

If we open the menu Options -> Adjudication, is that true that setting Apply N-moves rules, N-fold repeats to 0 disables those adjudications?
While it seems true, I didn't find this information in the help file.

Draw claim by 50-moves rule/3-fold repeats is a right of a player and not a requirement. As far as I understand the FIDE rules, the game should continue if a player doesn't make the claim. So it should be possible to disable automatic assistance of the UI.

2) Idea about new defaults for draw adjudication

According to FIDE rules, since July 2014 the mandatory rules that MUST cause game finish with draw result are: 75-moves rule and 5-fold position repetition (both - without a claim).

Is it a good idea to make those values defaults for Apply N-moves rule, N-fold repeats in WinBoard?

3) Ability to distinguish between claim draw and offer draw

The UI provides menu 'Draw' which looks universal (and according to the documentation it acts for both situations).
However a player might want to make a draw offer even if he has a right to claim draw (maybe he doesn't see that fact, he didn't count the moves or repetitions).
Can the UI provide separate possibilities to 'Claim draw' and to 'Offer draw'?
As for me, treating 'Draw' as 'Claim draw' provides unneeded bonus to the player who wasn't attentive. In a game, if a player doesn't pay attention to the 50-moves rule and offers draw, he can receive a rejection and as I understand it's pretty a legal situation, the game can continue. For me it looks similar to the situation that a player doesn't see a checkmate possibility. Assistance in potential claim draw position (or in a position before checkmate) can be a nice option provided by UI but as for me it shouldn't be mandatory.

Thank you for checking those questions & ideas, I look forward to your answers!

Re: Claim draw UI

PostPosted: 27 Jan 2018, 21:44
by H.G.Muller
Indeed, setting N for the N-moves rule and N-fold repeats to 0 disables these adjudication. I think I configured the 'factory settings' to be 51 and 4, to make it possible to see if engines actually claim. To mimic FIDE rules they should indeed be 75 and 5. For engine testing the last thing you want is to drive up the duration of the pointless shuffling that goes on when engines refuse to accept they cannot win. So I am not sure if these would be good default settings.

As for distinguishing draw claims and offers: It is likely that every existing engine would always accept the draw offer in a situation where a draw is claimable. If they do not want a draw, they would never have allowed it to become claimable, unless it is such a dead draw that it can no longer be avoided. So there seems to be very little point in doing this.

Re: Claim draw UI

PostPosted: 01 Feb 2018, 21:33
by leokom
Hello and thank you for the comprehensive explanation!

I have got one more follow-up question:

is the current Winboard UI behaviour correct:
In the case when user calls Action -> Draw (and the 50-moves rule indeed allows claim draw, even if it's for example already the 51'th or the 52'th move), the UI sends following commands to the engine:

* draw (so it looks like a draw offer, in principle it corresponds to FIDE rules that claim draw is also a draw offer)
Winboard UI doesn't complete the game here, instead it allows a move to be executed from the UI
* force
* usermove ... (whatever user did on the UI)
* result 1/2-1/2 {Draw claim: 50-move rule}

Is this behaviour of not executing immediate draw claim from UI by design? (in the situation 9.3.2 from FIDE rules)

Re: Claim draw UI

PostPosted: 02 Feb 2018, 21:25
by H.G.Muller
You are right, this is not as it should be. I looked at the code for handling the draw menu item, and it checks if a draw offer from the engine is pending, and declares an immediate draw if it is. But it doesn't check for a 50-move or 3-fold-rep condition if it isn't, but just relays the draw offer to the engine. Thanks for reporting this.