I think an unfortunate order of commands happened here.The Gothmog version playing black moves as if it were playing white, which is rejected by the Gothmog version playing white. The second Gothmog version does get a "black" command, but moves as if it were white.
This happens only the first time I launch Winboard, if after the rejection of the move I start a new game it works fine, but for every first game after I start Winboard the problem occurs.
What is happening?
Robert
Debug file:
23003 23003 >first : accepted colors
...
27930 >second: e2e4
27930 >second: black
27930 >second: go
...
41159 41159 >second: accepted colors
Thanks for Robert for pointing out the problem, and to Fabien for explainingI think an unfortunate order of commands happened here.The Gothmog version playing black moves as if it were playing white, which is rejected by the Gothmog version playing white. The second Gothmog version does get a "black" command, but moves as if it were white.
This happens only the first time I launch Winboard, if after the rejection of the move I start a new game it works fine, but for every first game after I start Winboard the problem occurs.
What is happening?
Robert
Debug file:
23003 >23003 >first : accepted colors
...
27930 >second: e2e4
27930 >second: black
27930 >second: go
...
41159 >41159 >second: accepted colors
Gothmog 0.4.5 had a bug when receiving the black/white commands.
The new Gothmogs ask WinBoard not to send them anymore (they are obsolete anyway).
Unfortunately as you can see "black" was sent to engine 2 before receiving the corresponding feature ...
Tord will have to fix the colour bug for good I am afraid.
My advice is to only take "white" (resp. "black") into account when white (resp. black) is on move.
Also, plenty of outdated software still use protover 1 and will send colours no matter what ...
Fabien.
As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Thanks for Robert for pointing out the problem, and to Fabien for explainingI think an unfortunate order of commands happened here.The Gothmog version playing black moves as if it were playing white, which is rejected by the Gothmog version playing white. The second Gothmog version does get a "black" command, but moves as if it were white.
This happens only the first time I launch Winboard, if after the rejection of the move I start a new game it works fine, but for every first game after I start Winboard the problem occurs.
What is happening?
Robert
Debug file:
23003 >>23003 >first : accepted colors
...
27930 >second: e2e4
27930 >second: black
27930 >second: go
...
41159 >>41159 >second: accepted colors
Gothmog 0.4.5 had a bug when receiving the black/white commands.
The new Gothmogs ask WinBoard not to send them anymore (they are obsolete anyway).
Unfortunately as you can see "black" was sent to engine 2 before receiving the corresponding feature ...
Tord will have to fix the colour bug for good I am afraid.
My advice is to only take "white" (resp. "black") into account when white (resp. black) is on move.
Also, plenty of outdated software still use protover 1 and will send colours no matter what ...
Fabien.
what really happens. But isn't xboard supposed to wait until the engine
sends "feature done=1" before it starts sending commands to the engine?
Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
In my software I only have something like 10 extra lines of code to support a subset of "protover 1". Maybe it's not as much work as you think. Of course I never support "edit".Thanks for Robert for pointing out the problem, and to Fabien for explainingI think an unfortunate order of commands happened here.The Gothmog version playing black moves as if it were playing white, which is rejected by the Gothmog version playing white. The second Gothmog version does get a "black" command, but moves as if it were white.
This happens only the first time I launch Winboard, if after the rejection of the move I start a new game it works fine, but for every first game after I start Winboard the problem occurs.
What is happening?
Robert
Debug file:
23003 >>23003 >first : accepted colors
...
27930 >second: e2e4
27930 >second: black
27930 >second: go
...
41159 >>41159 >second: accepted colors
Gothmog 0.4.5 had a bug when receiving the black/white commands.
The new Gothmogs ask WinBoard not to send them anymore (they are obsolete anyway).
Unfortunately as you can see "black" was sent to engine 2 before receiving the corresponding feature ...
Tord will have to fix the colour bug for good I am afraid.
My advice is to only take "white" (resp. "black") into account when white (resp. black) is on move.
Also, plenty of outdated software still use protover 1 and will send colours no matter what ...
Fabien.
what really happens. But isn't xboard supposed to wait until the engine
sends "feature done=1" before it starts sending commands to the engine?
Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Of course "engine 2" is at a big disadvantage, as it might lag a lot while "engine 1" is initialising ...
My message is don't expect anything to work with the xboard protocol; you have to be ready for the worst, and it *will* happen at some point. I speak of experience.
Fabien.
Each of the 200 has work-around code to support the protocol ...Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Of course "engine 2" is at a big disadvantage, as it might lag a lot while "engine 1" is initialising ...
My message is don't expect anything to work with the xboard protocol; you have to be ready for the worst, and it *will* happen at some point. I speak of experience.
Fabien.
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
If you set done=1 during the initial two-second timeout after xboard sends you
the "xboard" command, the timeout will end and xboard will not look for any
more feature commands before starting normal operation. If you set done=0, the
initial timeout is increased to one hour; in this case, you must set done=1
before xboard will enter normal operation. "
http://www.tim-mann.org/xboard/engine-intf.html
btw, it would be nice to have a link to this page, Volker?
It's a big problem with TBs, they can't be initialized in less than 2 seconds,
so with TBs done=0 is needed.
Yeah that must be why there is only 200+ winboard engines, nothing works!
-S.
What I was pointing out is that the lag might prevent WinBoard from receiving anything from "engine 2" in time, including "feature done=0". Perhaps this is due to how Windows multitasking works, I do not know.Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
What work around code?Each of the 200 has work-around code to support the protocol ...Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Of course "engine 2" is at a big disadvantage, as it might lag a lot while "engine 1" is initialising ...
My message is don't expect anything to work with the xboard protocol; you have to be ready for the worst, and it *will* happen at some point. I speak of experience.
Fabien.
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
If you set done=1 during the initial two-second timeout after xboard sends you
the "xboard" command, the timeout will end and xboard will not look for any
more feature commands before starting normal operation. If you set done=0, the
initial timeout is increased to one hour; in this case, you must set done=1
before xboard will enter normal operation. "
http://www.tim-mann.org/xboard/engine-intf.html
btw, it would be nice to have a link to this page, Volker?
It's a big problem with TBs, they can't be initialized in less than 2 seconds,
so with TBs done=0 is needed.
Yeah that must be why there is only 200+ winboard engines, nothing works!
-S.
Fruit will not be added to the list.
Fabien.
Not sure if this is a problem, I don't think winboard initializes more thanWhat I was pointing out is that the lag might prevent WinBoard from receiving anything from "engine 2" in time, including "feature done=0". Perhaps this is due to how Windows multitasking works, I do not know.Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
Now it seems like Tord does not send it anyway, I did not even consider that possibility ...
Fabien.
I don't like UCI either, but as an ASCII I/O to a single search function, it's not too badly designed.What work around code?Each of the 200 has work-around code to support the protocol ...Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Of course "engine 2" is at a big disadvantage, as it might lag a lot while "engine 1" is initialising ...
My message is don't expect anything to work with the xboard protocol; you have to be ready for the worst, and it *will* happen at some point. I speak of experience.
Fabien.
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
If you set done=1 during the initial two-second timeout after xboard sends you
the "xboard" command, the timeout will end and xboard will not look for any
more feature commands before starting normal operation. If you set done=0, the
initial timeout is increased to one hour; in this case, you must set done=1
before xboard will enter normal operation. "
http://www.tim-mann.org/xboard/engine-intf.html
btw, it would be nice to have a link to this page, Volker?
It's a big problem with TBs, they can't be initialized in less than 2 seconds,
so with TBs done=0 is needed.
Yeah that must be why there is only 200+ winboard engines, nothing works!
-S.
Fruit will not be added to the list.
UCI is a lot worse, it's is not even a chess game protocol, it is a fixed position analysis protocol.
In order to get it to play a chess game without clearing hash at every move
you have to do lots of tricks that is directly against the nature of the
protocol.
Choose your poison.
Well you've made that nice uci2wb tool, so in a sense...![]()
IME "engine 2" is initialised "in a hurry" when a game starts.Not sure if this is a problem, I don't think winboard initializes more thanWhat I was pointing out is that the lag might prevent WinBoard from receiving anything from "engine 2" in time, including "feature done=0". Perhaps this is due to how Windows multitasking works, I do not know.Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
Now it seems like Tord does not send it anyway, I did not even consider that possibility ...
Fabien.
one engine at a time. Hard to say, usually they initialize so fast I have not
noticed.
Adding the done feature is a good idea in any case.
-S.
Aha! You tell me I should send "done=0" first? I thought it was enough toNo not if you send "feature done=0":As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.
"done (integer, no default)
Precisely what I was about to ask. I don't see how UCI differs from xboard inBTW, why would you need to clear the hash table?
It's not the design as such, it's the limitations imposed by the design I don't like.I don't like UCI either, but as an ASCII I/O to a single search function, it's not too badly designed.What work around code?Each of the 200 has work-around code to support the protocol ...Same here it's just obsolete with WBII.As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.Gothmog doesn't work at all in protocol version 1, for a number of reasons.
At the moment I have no plans of supporting it.
Tord
Of course "engine 2" is at a big disadvantage, as it might lag a lot while "engine 1" is initialising ...
My message is don't expect anything to work with the xboard protocol; you have to be ready for the worst, and it *will* happen at some point. I speak of experience.
Fabien.
I decided to support the very ugly WBI way of passing moves, without
the "usermove", it's kind of convient when typing stuff from the console.
No not if you send "feature done=0":
"done (integer, no default)
If you set done=1 during the initial two-second timeout after xboard sends you
the "xboard" command, the timeout will end and xboard will not look for any
more feature commands before starting normal operation. If you set done=0, the
initial timeout is increased to one hour; in this case, you must set done=1
before xboard will enter normal operation. "
http://www.tim-mann.org/xboard/engine-intf.html
btw, it would be nice to have a link to this page, Volker?
It's a big problem with TBs, they can't be initialized in less than 2 seconds,
so with TBs done=0 is needed.
Yeah that must be why there is only 200+ winboard engines, nothing works!
-S.
UCI is a lot worse, it's is not even a chess game protocol, it is a fixed position analysis protocol.
In order to get it to play a chess game without clearing hash at every move
you have to do lots of tricks that is directly against the nature of the
protocol.
Choose your poison.
Well you've made that nice uci2wb tool, so in a sense...![]()
BTW, why would you need to clear the hash table?
The full point of PolyGlot is that the work-around code is outside of the engine. Also other engines can share that code if they want to.
Fabien.
Apparently, Tim did not expect engines to clear them after "new" either. There is that "reset" function in the (now dead) CB adapter that was considered as an addition to "protover 3". I don't think the discussions are still ongoing though.Precisely what I was about to ask. I don't see how UCI differs from xboard inBTW, why would you need to clear the hash table?
this respect. I never clear the hash tables in either protocol.
Tord
If they do get initialized simultaniously they should get about 50% cpu each.IME "engine 2" is initialised "in a hurry" when a game starts.Not sure if this is a problem, I don't think winboard initializes more than
one engine at a time. Hard to say, usually they initialize so fast I have not
noticed.
I have had problems related to that in the past.
Feel free to do so, as long as it isn't strongerAha! You tell me I should send "done=0" first? I thought it was enough toNo not if you send "feature done=0":As you know, after some timeout (is it 2 or 5 seconds?) xboard "decides" that an engine does not support "protover 2" and carries on with "protover 1" commands.
"done (integer, no default)
just send "done=1" at the end. Thanks for the tip!
Looks like I will have to release yet another 0.4.x version of Gothmog.
Quite annoying, I would really like to let this thing die. Its tortured
existence has continued far too long already.
Tord
I agree with this as well, if I want any of those the code would be outside the engine module. I am considering a two-staged protocol with game level (xboard like) and position level (UCI like).It's not the design as such, it's the limitations imposed by the design I don't like.I don't like UCI either, but as an ASCII I/O to a single search function, it's not too badly designed.
BTW, why would you need to clear the hash table?
The full point of PolyGlot is that the work-around code is outside of the engine. Also other engines can share that code if they want to.
E.g. how do you implement learning?
How do you know if you're playing a human or computer?
How do you know the rating of your opponent compared to your own rating?
This information is need IMO.
I'm actually surprised that UCI sends you the
time of your opponent, seems redundant from the design POV.
When setting up a new position it is better to clear the hash and reset
all the age flags etc., for efficiency.
In UCI you have to make a work around to see when the position is completely
new, or just evolved one move.
Good thinking
In general it is quite nice if the modules are seperate and can be pieced
together independently.
I'm just too lazy, I put everything in one binary, "the complete chess tool"
The point again is that it is a race condition. You can never be 100% sure that Winboard is going to receive any feature in time. Therefore each engine should be "protover 1"-compatible as well.If they do get initialized simultaniously they should get about 50% cpu each.IME "engine 2" is initialised "in a hurry" when a game starts.Not sure if this is a problem, I don't think winboard initializes more than
one engine at a time. Hard to say, usually they initialize so fast I have not
noticed.
I have had problems related to that in the past.
I would think this should be sufficient for winboard to recieve the done command.
-S.
Return to Archive (Old Parsimony Forum)
Users browsing this forum: No registered users and 20 guests