Code: Select all
* movestogo <x>
there are x moves to the next time control,
this will only be sent if x > 0,
if you don't get this and get the wtime and btime it's sudden death
- you play a time control like 40/x (x minutes per 40 moves, repeating)
- it is your turn to play move #40, and you have 10 seconds left on the clock
- you play white
The UCI interface will therefore send you this command:
The problem is that:go wtime 10000
- you hsould *use* all the 10 seconds (minus a buffer to allow for lag), because your clock will be credited some extra time after this move.
- but what if the time control is actually a blitz time control, rather than a tournament time control ? If it's like 5'+0" and you have 10" left, you shouldn't use 10 seconds for the move, as you'll have nothing left for the rest of the game!
When I implemented the movestogo command, I never knew how to deal with that situation. Typically I make the conservative assumption that "go wtime ... [winc] ..." is interpreted as though it was blitz tc in the absence of a movestogo. But that means that I play way too fast at move #40, #80 etc. And sometimes lose the game because of that.
Is it a bug of the UCI protocol ? How does one get around it ?


