Therefore, I decided to re-implement the UCI engine setup and do what the UCI protocol specification actually intended: the GUI should parse all options and build a dialog that allows the user to change them. For engines with only a few options, this yields a concise dialog, as illustrated below with BikJump v1.8. For engines with many options, this yields a more elaborate, scrollable dialog, as illustrated below for Leela Chess Zero. In any case, however, the new implementation gives the user full access to all options!
Expect this new feature to go into production very soon. A few comments on issues that could be improved.
- As before, the options setup is a one time procedure for each engine. Individual options can only be changed by first clearing the options for that engine, and starting again. I may add a "change options" feature at some point, so that not all parameters need to be revisited each time.
- The UCI protocol specification recommends omitting certain options that are best handled elsewhere. For now, I opted for showing all options at once.
- The options setup is associated with an engine binary. Perhaps in the future I may allow setting up a single binary with different options, and giving each configuration a new name.