Winboard alters SAN command

Discussions about the WinBoard protocol. Here you can also report bugs and request new features.

Moderators: hgm, Andres Valverde

Winboard alters SAN command

Postby vlad_tudose » 01 Apr 2010, 02:07

I'm developing a chess engine and I'm using SAN notation.
I have the following issue,when playing my engine against itself at some point I send the move "Ngxe3" because I have two knights who can reach e3 so I have to perform disambiguation.
The problem is that the command received by the other engine is "Nxe3". The second engine can't tell which piece to move, so it updates its internal board by moving the wrong knight.
Why does winboard alter my command,is it a bug? I don't know if its relevant but my engine at this stage moves randomly so it sends commands very quickly.

I keep a log in which I write all the commands that I send/receive to/from Winboard so I know for sure that these are the commands sent/received.

Image
vlad_tudose
 
Posts: 5
Joined: 23 Mar 2010, 14:12

Re: Winboard alters SAN command

Postby H.G.Muller » 01 Apr 2010, 08:40

You have only one Knight that can reach e3. The other Knight is pinned. If there is an engine that would move the pinned Knight, it should be considered broken...
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Winboard alters SAN command

Postby vlad_tudose » 03 Apr 2010, 23:03

Thank you for the answer, It was silly of me to ask such a question but I found it strange that Winboard alters my commands so I didn't look if the problem could be in other places.
vlad_tudose
 
Posts: 5
Joined: 23 Mar 2010, 14:12

Re: Winboard alters SAN command

Postby H.G.Muller » 04 Apr 2010, 08:41

This is not strange at all, but intrinsic to how WinBoard works. WinBoard does not relay anything directly from one engine to another. This would not work at all. One engine might print the move as SAN, the other engine might not understand SAN. So the engines each negociate a way to communicate with WinBoard that works for them (SAN or long algebraic), and WnBoard then extracts the meaning of what they send, and translates that meaning independently into the form the other engines understands.

In this case the second engine requested SAN, soit got the move n SAN, which prescribes there is no disambiguator in this position. So the second engine receives the move in the agreed-upon standard format, and is thus protected from being exposed to the abberrant format sent by the first engine, which conceivably might have confused it. Fortunately the WinBoard parser is pretty smart, and understands almost anything that remotely resembles aa move.
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL


Return to WinBoard development and bugfixing

Who is online

Users browsing this forum: No registered users and 19 guests