hgm wrote:So how is a GUI-engine communication protocol relevant if you are not using a GUI?
If you use things improperly, and don't get the desired results, the best solution would be to start using them properly. Not trying to change them to compensate for your own ineptness. If you insist eating soup with a screwdriver, you will stay hungry. You cannot expect screwdriver manifacturers (or soup manufacturers, for that matter) to change their product because of that...
<sigh>
1. I play in human events where my program has to play according to the FIDE rules of chess. Including draw offers, claiming draws, etc. Got that part?
2. I play using a GUI on ICC. And there I have to conform to a slightly different set of rules that are not in agreement with FIDE with respect to offering draws, claiming draws, and such. Got that part also?
The problem, which i _did_ clearly explain earlier, is that I now have to do the same task in two different ways in my chess program. I have to claim/offer draws in a way that meets FIDE rules, _AND_ I have to offer draws (even when I want to claim a draw) in a different order that does not meet FIDE rules when I play with a GUI.
Now I do not believe that is so very difficult to understand. I quite clearly explained that having to do it two different ways is clumsy. And leads to the continual confusion caused by this "difference" as Steven's question clearly shows.
That's all there is to the argument. I have to do it two different ways to handle FIDE and xboard games. And I do. It would be better if I didn't have to do this. And that, ladies and gentlemen, was my one and _only_ point here. Why that is so hard to grasp is beyond me.
Anyone ought to be able to pick up a FIDE book, write an engine that plays exactly by those rules, and then have a very simple task of translating from their normal output to match what xboard wants. For example, sending "move Ne3" rather than sending something like "My move is Ne3". But it isn't currently that simple once you get to the draw stuff. You might have your program say "I claim a draw by the 50-move rule" without moving or "I claim a draw by the 50 move rule after I play Rh7" Try translating that to xboard. I either offer a draw and don't make a move, or I first offer a draw and then make a move, even though the draw claim is only valid after my move, and I am not even offering a draw in the first place, I am claiming a draw.
That's what is wrong with this mess. It does not exactly meet the "intuitive protocol" standard.