Markus Enzenberger wrote:
I would like to propose a new optional command subset for graphical user interfaces.
The main problem it tries to access is the excessive number of play and undo commands when navigating in games, which slow down GUIs and are not very human-readable.
Why does it slow down GUIs? I understand the readability part, but not the GUI one. (Quarry uses sequences to resume games only, though, so my experience here is limited.)
Here are the proposed new commands:
play_sequence <color> <move> [<color> <move> [...]]
Example: play_sequence b c3 w g7 b g3
As Gunnar has already pointed out, there are potential problems WRT to state after an error in the middle.
undo_multiple <int>
Example: undo_multiple 3
Like the undo command, but with an argument that tells the number of moves to undo. GoGui presently uses the GNU Go gg-undo extension command, if supported by the engine. The command should have a different name from the simple undo command to avoid problems with engines that support only simple undo and don't check if the command has an argument.
Likewise, we need to think about the behavior on failure. GNU Go's behavior is certainly not something to follow as the final state is undefined if an error occurs...
setup <color>|empty <point> [<point> [...]]
Example: setup b c3 g7
Setup stones. [...]
If this command is added, we _must_ stress that the clients must never expect that an engine will accept an invalid position. I'm sure most engines have no use for invalid positions permitted by SGF (I understand why SGF permits them, they are useful for e.g. explaining game rules, but for a game-playing program there is no reason to support such positions.)
There is also command `setup_board' used in at least two programs (not generally available.) It is probably not so nice for Go as it is for smaller-board games. It has single argument with run-together values of all board squares (sth. `-' for empty, `x' for black, `o' for white) listed left-to-right, top-to-bottom. Unfortunately, for Go this normally means 361 characters long argument, which is not quite as nice as 100 or even 64 characters for Amazons and Arimaa.
In general, this discussion is kind of meaningless unless GTP 2 is released or a fork (doh...) is made. As some of you may know, there are also ideas (already implemented) of expanding GTP to other games as the protocol seems really useful.
Paul