I'd say just leave it for now. I think everyone can wait a little while for this one feature, while many others are waiting for the release.H.G.Muller wrote:Indeed, for convenient operation of PSWBTM there must be an xboard.ini. I will see if I can still add one before we release, even if it cannot be saved yet.
Or perhaps, as a temporary kludge, I should provide an adater for invoking xoard by PSWTM, that does nothing else but reading xboard.ini, put whatever is in there as arguments before the arguments with which it was called, and then call xboard (through an exec call, no forking).
Many reasons. Say you want to have a bunch of engines configured a certain way, and have the configuration saved externally. Having the GUI directly manipulate the parameters allows this. Also, the GUI can display all the available options in one place, and display their current values. The user can look at all of them at once and decide which one to change, rather than having to either enter a sane value into every dialog box that pops up (potentially quite a few), or not entering anything, while expecting the engine to properly handle blank input, etc. GUIs can validate input as well, so the user can't enter "one" for the history percent, etc. Finally, I think the askuser command is pretty ugly. Instead of standardizing the parameters as communication from the interface to the engine, it bypasses the interface and goes directly to the user, who might not want to answer all the dialog boxes, or type in "stupid", or who might not even be looking at the computer.How exactly is the
feature option style list stupid patzer mediocre weak
feature option lmr_history_percent int 0 - 100
better then
askuser style Enter style: stupid patzer mediocre weak
askuser lmr_history_percent Give lmr history percentage:
?
From the viewpoint of the engine, it seems quite immaterial if you have to send one or the other.
Also, I think prepending all of these option commands with "option" or something similar would be best, from an engine writer's point of view. If you look at Fruit, it doesn't keep integer representations of all its options, but merely an array of strings for option types and strings for their values. So a setoption command doesn't have to know anything about the options themselves, just that a command started with "setoption".
I disagree with Matthias about using the UCI syntax directly. So are we supposed to use options like UCI_hash? I think the syntax I proposed, of clearly delineating which options are standard and which are engine-specific, is much cleaner. And how hard is it really to program this stuff?
- Code: Select all
char *c;
if (protocol == UCI)
c = "setoption";
else if (protocol == XBOARD)
c = "option";
...etc...