What I implemented is:
Code: Select all
engine<position....
engine<go wtime x btime y
[engine thinks]
engine>bestmove abc ponder xyz
engine<position .... moves .... xyz
engine<go ponder wtime x-t btime y-t
[engine ponders]
[user plays expected move]
engine<ponderhit
[engine think for t more time] (*)
engine>bestmove .. ponder ...
On the other hand, I'm actually starting to countdown time only _after_ i get ponderhit.
The way I am doing it seems to use the pondering time as extra time for the move while the way others are doing it seems to use it as a kind of buffer for the time spent searching for the current move thereby saving time for the rest of the game.
Any thoughts as to why one should prefer one approach over the other or even if there is any reason to show preference?