Alan wrote:
You make some good points Don. It seems that the implicit scenario here is that you will always thoroughly know your opponent's engine. Since this may currently be the case, especially in this small computer-go clique, then I see your point. Will that always be true?
For non-tournament play, it seems like pickup games will be the norm and hence this group's extended discussion about non-tournament commands. In this case, having a priori knowledge of your opponent's engine may not be reasonable.
I can only make sense of this if I assume that you have missed that this is not a symmetrical protocol. The typical tournament scenario we envision is that the organizer operates an arbiter program. This arbiter connects to your program and to your opponent. It tells the programs relevant setup information, asks the program playing black for a black move, relays it to the opponent and asks for a white move and so on. You just have to make sure that your program correctly can respond to the commands the arbiter need. You don't have to worry the least bit about what GTP commands your opponent have implemented. In fact you won't ever have a direct communication with it.
Even if you're not in an actual tournament, the most straighforward way to arrange a game between two GTP speaking programs would be to set it up through an auxiliary program, such as twogtp in the GNU Go distribution.
/Gunnar