Hi All!
I've been working for months on a new engine - in c++ and pretty much totally OO - even the game itself isn't global - it's nearly ready for release, but I'm having a few headaches with pondering in the winboard protocol, and detecting a "ponderhit"
In the UCI protocol, this is easy to hack into the search - poll for input, if the input is "ponderhit" reset the clock and carry on. In Winboard, it's not clear for me in the protocol what the interruption command will be when pondering.
Looking at the winboard debugs, when the opponent makes a move and my engine is pondering, winboard always sends the "time xxxx" command, then "otim xxxx", then "usermove xxxx". This is the same for Arena.
Is this standard, always? If so, I can resolve this in the input detect part of the search and treat the three commands as for "ponderhit" in the UCI protcol.
If not, then there's a horrible redesign coming up - at the moment, I have a "Driver" class which has the "Input Handler" and "Searcher" classes inside it - I would need to move some of the input handling class into the searcher class etc etc.....
Thanks for any replies.
Richard
PS the new engine will be called jabba - it's played a few games on ICC under jabbaC username. It's weaker than Lime - skeleton Eval still, and pure AB search. But it's much more "self influenced" in design, and has been great fun to program. Release and Code to come when I get back from honeymoon in October