Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Extensible Chess Interface (XCI) : updated draft

Author: Dann Corbit

Date: 10:54:46 03/15/05

Go up one level in this thread


On March 14, 2005 at 20:45:49, Michael Yee wrote:

>On March 14, 2005 at 15:30:04, Dann Corbit wrote:
>
>>CREATE TABLE NumericParameters (
>>       NumericParameterID   INTEGER NOT NULL,
>>       ProgramID            INTEGER NOT NULL,
>>       ProgramVersionID     INTEGER NOT NULL,
>>       Name                 VARCHAR(255),
>>       Description          VARCHAR(255),
>>       MinimumValue         DOUBLE PRECISION,
>>       MaximumValue         DOUBLE PRECISION,
>>       DefaultValue         DOUBLE PRECISION,
>>       CurrentValue         DOUBLE PRECISION,
>>       PreviousValue        DOUBLE PRECISION
>>);
>
>Maybe this table could also have fields for StepSize and whether or not the
>parameter is restricted to be integer?

I would like to keep it as simple as possible, because every change complicates
the interface.  I would just put that sort of thing into the description.
But it could be modified for that purpose, or a new table could be formed that
allows only integer values.

>>CREATE TABLE OpeningBook (
>>       OpeningBookID        INTEGER NOT NULL,
>>       FormatID             INTEGER,
>>       ProgramID            INTEGER,
>>       ProgramVersionID     INTEGER,
>>       BookName             VARCHAR(255),
>>       BookPath             VARCHAR(20)
>>);
>
>Your database design looks really great (no surprise...). I especially like how
>it allows easy management of different configurations of the same engine.
>
>But is your scheme more of an implementation choice for how the GUI would manage
>its "installed" engines as opposed to part of the communication protocol?

This database does not address engine to engine messages.  The entire content is
designed for gui to engine communication, for setup.  The Winboard protocol is
flawed, because every engine requires that you edit some ini file and each file
is in a different format.  How rude.

The UCI protocol is flawed because it does not store the engine setup
information.  You have to communicate this stuff every time.  Still, this part
of the UCI protocol is clearly better than Winboard, because it at least is
uniform.

The idea of storing things in a database is so that the constants stored can be:
1.  Persistent
2.  Consistent

You can write a single GUI that will work for all engines.

>On a related note, I'm confused about where the FormatIDs for opening books
>would come from... Would they be harvested from the engines (i.e., we create a
>new ID every time an engine alerts the GUI about the existence of a new opening
>book format through a getoptions mechanism), or would they be pre-defined in
>some standard?

I am aware of:
0.  Thompson
1.  Nalimov
2.  Edwards
3.  ChessMaster FEG
4.  Ferret
5.  Heinz
6.  GAFS format

Then there are bitbase files (probably as many different types as ordinary
tablebase files.  I have literally hundreds of chess engines.  Probably 2/3 of
them require that I spell out the EGTB location in an ini file.  And
(tragically) each new iteration of the program has a new ini file (possibly with
a different format to the previous format) which over-writes the last setting.

I think that tablebase files are the biggest mess, as far as engines are
concerned.  It is very hard to get permission to use them, despite the fact that
Eugene Nalimov is a nice guy and eventually grants permission.  I get at least
one email per month asking *me* to get permission from Eugene because they have
not got a response back from him in a long time.  Despite the fact that he is
right down the street from me, I have no magic portal to get permissions from
him.

Most of the other formats are unpublished or are unclear on usage.

I would like to see a standardized format or set of formats, and also clear
usage terms that are easy to obtain.

The interface to tablebase files would clearly have to be standardized, and I
would propose DLL usage like the case for Aristarch and List.  This is clearly
superior to everyone on earth writing their own interface over and over and
over.

What number corresponds to which EGTB would need to be clearly defined and also
it makes sense to list the name of the DLL to load, for programs that want to
dynamically load them.  Clearly, for that to work, the full interface would need
to be specified precisely.




This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.