Well, for others who also like to see their engine participate in tournaments hold in basements all over the world, take heed of how tournament directors are likely to treat your draw claims:
You can safely send a RESULT string (like "1/2-1/2 { rep-draw }" ) when the current board position is a draw by rule, no matter who has the move. WinBoard will always accept this in two-machines mode, even if, due to timing issues, the opponent tries to destroy your draw by sneaking in a quick move.
Do NOT use a RESULT claim in positions that are not draw by rule, as this might result in forfeit.
If you want to claim a draw that will occur after your move, and you are playing on an ICS, you have to be more careful, as WinBoard has no authoroty in that case to correct the score if there are timing problems. The ICS will decide the outcome, and according to Bob, the safe way to claim it is by sending "offer draw" _before_ the move with which you are going to draw.
To uphold compatibility, WinBoard 4.3.13 will provide the same service in two-machines mode. So you can always send "offer draw" before sending a move that draws, and be 100% certain that the draw will be granted to you by ICS or GUI.
Offering or claiming a draw through "offer draw" is always safe.
But beware of false draw claims through a RESULT command.
Engine authors, beware of false-draw-claim forfeits!
Moderator: Ras
-
- Posts: 28353
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Engine authors, beware of false-draw-claim forfeits!
And there's nothing wrong with that. The problem is that 99% of the winboard/xboard users use the interface to either play chess against a program, or to play on ICC. So he can't bury his head in the sand and pretend that basement tournaments is all winboard is used for. That is just way wrong...Uri Blass wrote:I do not talk about other so I will not use the word "we" but I also share the same opinion as H.G.Muller about the way I would like to use the interface(engine-engine games and not engine-human games)mhull wrote:"....me, myself and I."hgm wrote:What a coincidence. That is exactly how we all feel about you...![]()
![]()
Uri
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Engine authors, beware of false-draw-claim forfeits!
Result should be removed. Or at least _verified_ by the GUI and ignored if it is incorrect. But "offer draw" is not "always safe" until you make some serious modifications internal to xboard/winboard, to address the timing issue pointed out many times...hgm wrote:Well, for others who also like to see their engine participate in tournaments hold in basements all over the world, take heed of how tournament directors are likely to treat your draw claims:
You can safely send a RESULT string (like "1/2-1/2 { rep-draw }" ) when the current board position is a draw by rule, no matter who has the move. WinBoard will always accept this in two-machines mode, even if, due to timing issues, the opponent tries to destroy your draw by sneaking in a quick move.
Do NOT use a RESULT claim in positions that are not draw by rule, as this might result in forfeit.
If you want to claim a draw that will occur after your move, and you are playing on an ICS, you have to be more careful, as WinBoard has no authoroty in that case to correct the score if there are timing problems. The ICS will decide the outcome, and according to Bob, the safe way to claim it is by sending "offer draw" _before_ the move with which you are going to draw.
To uphold compatibility, WinBoard 4.3.13 will provide the same service in two-machines mode. So you can always send "offer draw" before sending a move that draws, and be 100% certain that the draw will be granted to you by ICS or GUI.
Offering or claiming a draw through "offer draw" is always safe.
But beware of false draw claims through a RESULT command.
-
- Posts: 28353
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Engine authors, beware of false-draw-claim forfeits!
It is always safe, as sending it to WinBoard will _never_ result in forfeit.
What should or should not be removed is outside the scope of this thread.
What should or should not be removed is outside the scope of this thread.
-
- Posts: 2851
- Joined: Wed Mar 08, 2006 10:01 pm
- Location: Irvine, CA, USA
Re: Engine authors, beware of false-draw-claim forfeits!
As I understand HGM here, the only timing issue I see left, as long as the "offer draw" command is always sent before the move, is of no importance to me.bob wrote:But "offer draw" is not "always safe" until you make some serious modifications internal to xboard/winboard, to address the timing issue pointed out many times...
If engine A wants to, say, claim a 50 move draw with its next move it sends the offer before the move. Winboard receives it and, since a draw claim is not yet valid. forwards the request to engine B. Winboard now will do one of the following:
1: Read A's move, see that a draw claim is valid with an open draw offer, and declare a 50 move draw.
2: Read a refusal by B, then read A's move, and again correctly accept the draw claim.
3: Read a draw acceptance by B, which will result in a draw by agreement instead of by rule, an error I don't mind. I'm not sure it is safe to wait for a possible move from A to check if it should be a draw by rule, but if so then the minor error could be corrected.
Is there some other timing issue I'm not seeing?
-
- Posts: 28353
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Engine authors, beware of false-draw-claim forfeits!
I could have WinBoard hold up passing on the draw offer until after the move of the offerer was received (so that it never is passed on if the move creates a draw by rule). If it was a genuine offer, made before the engine started thinking on its own move, you would always have to wait out the move, though. Even if the other engine would have been ready to accept immediately.
I am not sure if this is a realistic objection, though: why would an engine send a draw offer without first doing the full search on its move? Why would an opponent ever accept a draw offer before he knows what you are going to move?
It might even be preferable to not pass draw offers when the offerer is still searching. Because the opponent then is likely to ponder, and might have to continue pondering for some time, so that bombarding it with draw offers could be a 'hinder tactic' to distract it from pondering. Engines with a flakey ponder implementation might be brought out of ponder mode by it, and lose strength because of that. So it might be good practice to only pass on draw offers when the move is also ready to be sent.
I am not sure if this is a realistic objection, though: why would an engine send a draw offer without first doing the full search on its move? Why would an opponent ever accept a draw offer before he knows what you are going to move?
It might even be preferable to not pass draw offers when the offerer is still searching. Because the opponent then is likely to ponder, and might have to continue pondering for some time, so that bombarding it with draw offers could be a 'hinder tactic' to distract it from pondering. Engines with a flakey ponder implementation might be brought out of ponder mode by it, and lose strength because of that. So it might be good practice to only pass on draw offers when the move is also ready to be sent.
-
- Posts: 2851
- Joined: Wed Mar 08, 2006 10:01 pm
- Location: Irvine, CA, USA
Re: Engine authors, beware of false-draw-claim forfeits!
The question in my mind is whether some winboard engines stop after making a draw offer and don't send their move until after the draw is refused. This feels like a natural behavior against a human opponent to me, even if it's a mistake that could lead to a time loss. Would that be violating the protocol? Or are you otherwise confident that this isn't being done?hgm wrote:It might even be preferable to not pass draw offers when the offerer is still searching. Because the opponent then is likely to ponder, and might have to continue pondering for some time, so that bombarding it with draw offers could be a 'hinder tactic' to distract it from pondering. Engines with a flakey ponder implementation might be brought out of ponder mode by it, and lose strength because of that. So it might be good practice to only pass on draw offers when the move is also ready to be sent.
-
- Posts: 10790
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: Engine authors, beware of false-draw-claim forfeits!
No it is not a natural behaviour in human-human games so I see no reason it is natural in human against engine.Dirt wrote:The question in my mind is whether some winboard engines stop after making a draw offer and don't send their move until after the draw is refused. This feels like a natural behavior against a human opponent to me, even if it's a mistake that could lead to a time loss. Would that be violating the protocol? Or are you otherwise confident that this isn't being done?hgm wrote:It might even be preferable to not pass draw offers when the offerer is still searching. Because the opponent then is likely to ponder, and might have to continue pondering for some time, so that bombarding it with draw offers could be a 'hinder tactic' to distract it from pondering. Engines with a flakey ponder implementation might be brought out of ponder mode by it, and lose strength because of that. So it might be good practice to only pass on draw offers when the move is also ready to be sent.
In human-human games the humans usually offers a draw and plays a move.
usually when one human offer a draw without playing a move immediatly after the offer the opponent tell him to play a move because he almost always can accept the offer later.
I say almost always because I know a story when one human told his opponent to make a move and the move was checkmate and of course in this case he could not accept the draw after the move but if the opponent has no mate in 1 it is good to tell the opponent to make a move and decide if to accept only after the opponent makes his move.
Uri
-
- Posts: 28353
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Engine authors, beware of false-draw-claim forfeits!
I don't think there are engines that would wait for acceptance or rejection of a draw offer. This would be a losing strategy in most cases, as WB protocol does not oblige engines to explicitly react to draw offers, and most engines actually don't react. The reject the offer by doing a move, but only if it is their turn.Dirt wrote:The question in my mind is whether some winboard engines stop after making a draw offer and don't send their move until after the draw is refused. This feels like a natural behavior against a human opponent to me, even if it's a mistake that could lead to a time loss. Would that be violating the protocol? Or are you otherwise confident that this isn't being done?
So I think that I will hold up all draw offers in two-machines mode until after the move of the offerer is recieved (but relay it before that move is relayed).
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Engine authors, beware of false-draw-claim forfeits!
If "offer draw" is overloaded, as it is at present, then your idea will fail. If I want to claim a repetition or 50 move draw, I just send "offer draw" and may or may not need to send a move, depending on whether the position is drawn before I move or after... I always am willing to play on, because some servers do not solve the timing problem as ICC does (FICS for one had this the last time I playeed there, as did chess.net, although I have not played at either server in several years).hgm wrote:I don't think there are engines that would wait for acceptance or rejection of a draw offer. This would be a losing strategy in most cases, as WB protocol does not oblige engines to explicitly react to draw offers, and most engines actually don't react. The reject the offer by doing a move, but only if it is their turn.Dirt wrote:The question in my mind is whether some winboard engines stop after making a draw offer and don't send their move until after the draw is refused. This feels like a natural behavior against a human opponent to me, even if it's a mistake that could lead to a time loss. Would that be violating the protocol? Or are you otherwise confident that this isn't being done?
So I think that I will hold up all draw offers in two-machines mode until after the move of the offerer is recieved (but relay it before that move is relayed).