I see 1) problems with that "send 'level' instead of 'time' at every move" idea, and I also have 2) a different opinion about the move counting issue that is being discussed here. This finally leads me to 3) my proposal how to solve the issue.
Let's address one after another.
1)
Sending "level" as a replacement for "time" would not be a good solution IMO due to the following problem:
"time" and "otim" do send the time in centiseconds while "level" sends either minutes or minutes:seconds, so the resolution is different. You can't change this anymore unless you change the "level" spec again into something like minutes[:seconds[:centiseconds]]. But even then many existing engines would not recognize the centiseconds part, causing them probably to play slightly too fast since on average they would believe to have 0.5 seconds fewer than the "exact" remaining time that WB would have told them with the "time" command. This would mean that they would use about 20 seconds less per 40 moves than they could use. Also, "ultra-fast" time control would become pointless then.
Furthermore I would expect that existing engines would show quite different reactions on receiving more than one "level" command per game, for instance:
a) ignore it;
b) reject it;
c) get confused by it, i.e. get into an inconsistent state;
d) understand it and adjust their time control settings such that the "moves per session" number starts counting at the initial position of the game - which would be one of two possible interpretations of the original (Tim Mann's) description of the "level" command;
e) understand it and adjust their time control settings such that the "moves per session" number means "number of moves remaining from now until next time control" - which would be according to HGM's extended "level" description (see chapter 11 in
http://www.open-aurec.com/wbforum/WinBoard/engine-intf.html where HGM added a paragraph starting with "The number of moves given ..." which is unfortunately not coloured in green, unlike other changes
).
At least the differences in behavior regarding d) vs. e) would be substantial.
It would of course be interesting to find out what the current engines really do in this case but I'm afraid there will be no clear majority. So I would really prefer to stick with the "time" approach, even if the new behavior would only be switched on by a command line option to the engine. The problem with the command line option would be that in general you can't know how an engine behaves that does *not* implement that new option but also does *not* reject additional "level" commands, see my list above.
2) Now about
move counting. I really consider it a serious bug if a chess engine or a chess GUI does not keep track of the move counter properly in all cases. While handling the standard case (game starting at initial chess position, and moves being made from there) should be safe everywhere, two situations have been mentioned where programs sometimes "lose" the correct value of the move counter:
a) when receiving an FEN (e.g. via "setboard") with a "full move" counter > 0,
b) when moves are made in force mode.
Since both can be implemented correctly with no special effort (just our will to overcome our lazyness ...) I think it would be best just to do it. At least the move counter from an FEN should not be ignored.
I have to admit, though, that my own engine "Surprise" has that serious bug, too, since it ignores the move counter from an FEN
Nevertheless I propose to everyone to fix it if possible since it is kind of a trivial issue, which includes also fixing it in WB itself (for the case where the user pastes an FEN with Ctrl-V). I see no compatibility problem when doing this bugfix.
3) So now
my conclusion, where most of it has already been said:
- Leave the spec as it is now, with the exception that the implications of multiple "level" commands still are on open point for me (but not within the scope of the problem discussed here).
- Continue using "time" with every move.
- Fix (WB and) engines regarding their move counter handling when receiving "setboard". This would make the discussed problem go away already IMO.
- Accept that the time utilization of engines where that move counter problem can't be fixed or won't be fixed may remain "not optimal", i.e. accept that this is their own problem, not one of the specs (WB/PGN).
Best regards,
Sven