A few questions about CECP
Posted: Sat Jan 05, 2013 9:32 pm
Hi (hgm?),
I have a few questions about CECP:
1) clocks:
I would rather rely on time/otim instead of handling the clocks myself. Of course I can simply readjust when i get time/otim, but that's extra work for me. With other words: is it safe to rely on time/otim?
2) pondering:
When can I expect to get easy/hard? If the engine is already pondering and receives easy, should it abort the search? And if it receives hard, should it start pondering immediately if there's a ponder move?
Also, on ponderhit, can the engine rely on current clocks set by time/otim (same as 1)? The question is, assuming that the GUI doesn't know whether the engine is pondering and on what move it's pondering, is it safe to assume that time/otim sent before move made by the user/opponent?
3) level and st, how am I supposed to orthogonally combine these commands? I mean should I assume that when I don't get level after new that it's undefined? Also what if I receive go and neither level/st is issued?
4) result
The specs say it's mandatory to send result when the engine thinks/knows the game is over. May I ask why? Is it safe to rely on the GUI to adjudicate the game instead?
5) hash size
What is the preferred way to do that? Using an option? Or using memory command? The problem with memory command is that some memory is already used by code+data itself so it's not quite possible to reliably divide memory among tables.
6) thinking output
What is the standard way to report fails at root? I tried to append + or - to depth but this seems to confuse WinBoard/xboard. I can either ignore that completely or append that to PV. How to report selective depth? Can I simply use D/SD? Also how does the GUI parse score in thinking output? Can I send a custom string or does it rely on an integer? I'm talking about mate scores. Or use a defacto standard used by Polyglot and some engines that 9999 cp is mate in one and -9999 is mated in one (plies)?
Also should the score be from engine's point of view or always from white's POV? Or is it engine-specific? The GUI only cares about the result, but what about adjudication?
7) edit mode
From what I understand, the engine is supposed to clear ep square and automatically set castling rights when exiting edit mode. What is not clear to me is how is it supposed to work in FRC mode? Always assing castling rights to outermost rooks? Also I've read in the specs that Chessbase
added some new commands (what the hell is "fritz" command? but unfortunately i get 404 when I click the link. Of course I would rather rely on setboard, can I assume that when I set feature setboard=1 and it gets accepted by the GUI that it won't use edit mode?
8) k-best mode
What is expected of the engine to support k-best mode?
9) ICS
Is the engine supposed to do something special when in ics mode?
10) up to date specs?
Are there up to date specs to be found somewhere? I think hgm added excludemoves and other stuff recently.
What I've found is this: http://www.open-aurec.com/wbforum/WinBo ... -intf.html
I have to say that I'm starting to like CECP. The engine gets more freedom (and more responsibility). Plus I absolutely love the low verbosity of the protocol.
Thanks
Martin
I have a few questions about CECP:
1) clocks:
I would rather rely on time/otim instead of handling the clocks myself. Of course I can simply readjust when i get time/otim, but that's extra work for me. With other words: is it safe to rely on time/otim?
2) pondering:
When can I expect to get easy/hard? If the engine is already pondering and receives easy, should it abort the search? And if it receives hard, should it start pondering immediately if there's a ponder move?
Also, on ponderhit, can the engine rely on current clocks set by time/otim (same as 1)? The question is, assuming that the GUI doesn't know whether the engine is pondering and on what move it's pondering, is it safe to assume that time/otim sent before move made by the user/opponent?
3) level and st, how am I supposed to orthogonally combine these commands? I mean should I assume that when I don't get level after new that it's undefined? Also what if I receive go and neither level/st is issued?
4) result
The specs say it's mandatory to send result when the engine thinks/knows the game is over. May I ask why? Is it safe to rely on the GUI to adjudicate the game instead?
5) hash size
What is the preferred way to do that? Using an option? Or using memory command? The problem with memory command is that some memory is already used by code+data itself so it's not quite possible to reliably divide memory among tables.
6) thinking output
What is the standard way to report fails at root? I tried to append + or - to depth but this seems to confuse WinBoard/xboard. I can either ignore that completely or append that to PV. How to report selective depth? Can I simply use D/SD? Also how does the GUI parse score in thinking output? Can I send a custom string or does it rely on an integer? I'm talking about mate scores. Or use a defacto standard used by Polyglot and some engines that 9999 cp is mate in one and -9999 is mated in one (plies)?
Also should the score be from engine's point of view or always from white's POV? Or is it engine-specific? The GUI only cares about the result, but what about adjudication?
7) edit mode
From what I understand, the engine is supposed to clear ep square and automatically set castling rights when exiting edit mode. What is not clear to me is how is it supposed to work in FRC mode? Always assing castling rights to outermost rooks? Also I've read in the specs that Chessbase
added some new commands (what the hell is "fritz" command? but unfortunately i get 404 when I click the link. Of course I would rather rely on setboard, can I assume that when I set feature setboard=1 and it gets accepted by the GUI that it won't use edit mode?
8) k-best mode
What is expected of the engine to support k-best mode?
9) ICS
Is the engine supposed to do something special when in ics mode?
10) up to date specs?
Are there up to date specs to be found somewhere? I think hgm added excludemoves and other stuff recently.
What I've found is this: http://www.open-aurec.com/wbforum/WinBo ... -intf.html
I have to say that I'm starting to like CECP. The engine gets more freedom (and more responsibility). Plus I absolutely love the low verbosity of the protocol.
Thanks
Martin