Computer Chess Club Archives


Search

Terms

Messages

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

Author: Dann Corbit

Date: 12:30:04 03/14/05

Go up one level in this thread


On March 14, 2005 at 12:45:22, Michael Yee wrote:

>The protocol proposal has been updated to reflect several good
>comments/suggestions.
>
>(1) There is now a table of what commands are valid in each state. This makes
>the protocol clearer and even look simpler than it did before (at least to me
>:). Thanks to Harald for this suggestion.
>
>(2) New commands from GUI to engine : getstartpos, getmovelist, getresult
>
>This enables the protocol to be truly extensible since variants that aren't
>officially supported by the GUI can still be supported by letting one engine be
>the "referee" or "arbiter". This interesting idea came from Reinhard (also the
>source of the move and position formats for officially supported variants
>FRC/CRC).
>
>(3) New command from engine to GUI : error
>
>------
>
>Even if people are dead set against introducing a new protocol into the mix, I'm
>curious what UCI fans think about some of the extensions. Specifically,
>
>- describing what options mean,
>- custom thinking output, and even
>- getstartpos, getmovelist, getresult
>
>could be added without too much fuss (while maintaining the core philosophy of a
>stateless engine)...

All parameters for all engines should be stored in a database file.

Perhaps something like this:


CREATE TABLE BooleanParameters (
       BooleanParameterID   INTEGER NOT NULL,
       ProgramID            INTEGER NOT NULL,
       ProgramVersionID     INTEGER NOT NULL,
       Name                 VARCHAR(255),
       Description          VARCHAR(255),
       DefaultValue         TINYINT,
       CurrentValue         TINYINT,
       PreviousValue        TINYINT
);

CREATE UNIQUE INDEX BooleanParameters_INDEX_1 ON BooleanParameters
(
       BooleanParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE UNIQUE INDEX BooleanParameters_INDEX_0 ON BooleanParameters
(
       BooleanParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE INDEX BooleanParameters_INDEX_2 ON BooleanParameters
(
       Name
);

CREATE INDEX BooleanParameters_INDEX_3 ON BooleanParameters
(
       ProgramID
);

CREATE INDEX BooleanParameters_INDEX_4 ON BooleanParameters
(
       ProgramID,
       ProgramVersionID
);

CREATE INDEX BooleanParameters_INDEX_5 ON BooleanParameters
(
       ProgramVersionID
);


CREATE TABLE CountryCodes (
       CountryID            INTEGER NOT NULL,
       abbreviation         CHAR(2) NOT NULL,
       countryname          VARCHAR(255)
);

CREATE UNIQUE INDEX CountryCodes_INDEX_3 ON CountryCodes
(
       CountryID
);

CREATE UNIQUE INDEX CountryCodes_INDEX_0 ON CountryCodes
(
       CountryID
);

CREATE UNIQUE INDEX CountryCodes_INDEX_1 ON CountryCodes
(
       abbreviation
);

CREATE UNIQUE INDEX CountryCodes_INDEX_2 ON CountryCodes
(
       countryname
);


CREATE TABLE EndGameDataBase (
       EgdbID               INTEGER NOT NULL,
       EgdbTypeID           INTEGER NOT NULL,
       EgdbPath             VARCHAR(255)
);

CREATE UNIQUE INDEX EndGameDataBase_INDEX_1 ON EndGameDataBase
(
       EgdbTypeID
);

CREATE UNIQUE INDEX EndGameDataBase_INDEX_0 ON EndGameDataBase
(
       EgdbTypeID
);

CREATE UNIQUE INDEX EndGameDataBase_INDEX_2 ON EndGameDataBase
(
       EgdbID
);

CREATE UNIQUE INDEX EndGameDataBase_INDEX_3 ON EndGameDataBase
(
       EgdbID
);


CREATE TABLE EndGameDataBaseType (
       EgdbTypeID           INTEGER NOT NULL,
       EgdbTypeDescription  VARCHAR(255)
);

CREATE UNIQUE INDEX EndGameDataBaseType_INDEX_0 ON EndGameDataBaseType
(
       EgdbTypeDescription
);

CREATE UNIQUE INDEX EndGameDataBaseType_INDEX_1 ON EndGameDataBaseType
(
       EgdbTypeID
);

CREATE UNIQUE INDEX EndGameDataBaseType_INDEX_2 ON EndGameDataBaseType
(
       EgdbTypeID
);


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
);

CREATE UNIQUE INDEX NumericParameters_INDEX_1 ON NumericParameters
(
       NumericParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE UNIQUE INDEX NumericParameters_INDEX_0 ON NumericParameters
(
       NumericParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE INDEX NumericParameters_INDEX_2 ON NumericParameters
(
       Name
);

CREATE INDEX NumericParameters_INDEX_3 ON NumericParameters
(
       ProgramID
);

CREATE INDEX NumericParameters_INDEX_4 ON NumericParameters
(
       ProgramVersionID
);

CREATE INDEX NumericParameters_INDEX_5 ON NumericParameters
(
       ProgramID,
       ProgramVersionID
);


CREATE TABLE OpeningBook (
       OpeningBookID        INTEGER NOT NULL,
       FormatID             INTEGER,
       ProgramID            INTEGER,
       ProgramVersionID     INTEGER,
       BookName             VARCHAR(255),
       BookPath             VARCHAR(20)
);

CREATE UNIQUE INDEX OpeningBook_INDEX_1 ON OpeningBook
(
       OpeningBookID
);

CREATE UNIQUE INDEX OpeningBook_INDEX_0 ON OpeningBook
(
       OpeningBookID
);

CREATE INDEX OpeningBook_INDEX_2 ON OpeningBook
(
       BookName
);

CREATE INDEX OpeningBook_INDEX_3 ON OpeningBook
(
       FormatID
);

CREATE INDEX OpeningBook_INDEX_4 ON OpeningBook
(
       FormatID
);

CREATE INDEX OpeningBook_INDEX_5 ON OpeningBook
(
       ProgramID
);

CREATE INDEX OpeningBook_INDEX_6 ON OpeningBook
(
       ProgramVersionID
);

CREATE INDEX OpeningBook_INDEX_7 ON OpeningBook
(
       ProgramID,
       ProgramVersionID
);


CREATE TABLE OpeningBookFormats (
       FormatID             INTEGER NOT NULL,
       Name                 VARCHAR(50),
       TechnicalDescription LONGVARCHAR(1024)
);

CREATE UNIQUE INDEX OpeningBookFormats_INDEX_1 ON OpeningBookFormats
(
       FormatID
);

CREATE UNIQUE INDEX OpeningBookFormats_INDEX_0 ON OpeningBookFormats
(
       FormatID
);


CREATE TABLE Program (
       ProgramID            INTEGER NOT NULL,
       ProgrammerID         INTEGER,
       ProgramName          VARCHAR(255)
);

CREATE UNIQUE INDEX Program_INDEX_3 ON Program
(
       ProgramID
);

CREATE UNIQUE INDEX Program_INDEX_0 ON Program
(
       ProgramID
);

CREATE UNIQUE INDEX Program_INDEX_1 ON Program
(
       ProgrammerID
);

CREATE UNIQUE INDEX Program_INDEX_2 ON Program
(
       ProgrammerID
);


CREATE TABLE ProgrammerInfo (
       ProgrammerID         INTEGER,
       Picture              LONGVARBINARY(1024),
       Greeting             LONGVARBINARY(1024),
       Biography            LONGVARCHAR(1024)
);

CREATE UNIQUE INDEX ProgrammerInfo_INDEX_1 ON ProgrammerInfo
(
       ProgrammerID
);

CREATE UNIQUE INDEX ProgrammerInfo_INDEX_0 ON ProgrammerInfo
(
       ProgrammerID
);


CREATE TABLE Programmers (
       ProgrammerID         INTEGER,
       Firstname            VARCHAR(255),
       ProgramID            INTEGER NOT NULL,
       middlename           VARCHAR(255),
       lastname             VARCHAR(255),
       title                VARCHAR(255),
       countryid            INTEGER,
       countryid            INTEGER,
       notes                VARCHAR(255)
);

CREATE UNIQUE INDEX Programmers_INDEX_0 ON Programmers
(
       ProgrammerID,
       ProgramID
);

CREATE INDEX Programmers_INDEX_1 ON Programmers
(
       countryid
);

CREATE INDEX Programmers_INDEX_2 ON Programmers
(
       countryid
);

CREATE INDEX Programmers_INDEX_3 ON Programmers
(
       Firstname
);

CREATE INDEX Programmers_INDEX_4 ON Programmers
(
       lastname
);


CREATE TABLE ProgramVersion (
       ProgramID            INTEGER NOT NULL,
       ProgramVersionID     INTEGER NOT NULL,
       ProgramVersionOrDate VARCHAR(255),
       PhysicalLocation     VARCHAR(255),
       PhysicalName         VARCHAR(255),
       LogicalName          VARCHAR(255),
       EgdbID               INTEGER
);

CREATE UNIQUE INDEX ProgramVersion_INDEX_1 ON ProgramVersion
(
       EgdbID
);

CREATE UNIQUE INDEX ProgramVersion_INDEX_0 ON ProgramVersion
(
       EgdbID
);

CREATE UNIQUE INDEX ProgramVersion_INDEX_2 ON ProgramVersion
(
       ProgramID,
       ProgramVersionID
);

CREATE UNIQUE INDEX ProgramVersion_INDEX_3 ON ProgramVersion
(
       ProgramID,
       ProgramVersionID
);

CREATE INDEX ProgramVersion_INDEX_4 ON ProgramVersion
(
       PhysicalName
);

CREATE INDEX ProgramVersion_INDEX_5 ON ProgramVersion
(
       ProgramID
);


CREATE TABLE StringParameterDomain (
       StringParameterDomainID INTEGER NOT NULL,
       StringParameterID    INTEGER NOT NULL,
       ProgramID            INTEGER NOT NULL,
       ProgramVersionID     INTEGER NOT NULL,
       Value                VARCHAR(255),
       Description          VARCHAR(255)
);

CREATE UNIQUE INDEX StringParameterDomain_INDEX_1 ON StringParameterDomain
(
       StringParameterDomainID,
       StringParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE UNIQUE INDEX StringParameterDomain_INDEX_0 ON StringParameterDomain
(
       StringParameterDomainID,
       StringParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE INDEX StringParameterDomain_INDEX_2 ON StringParameterDomain
(
       ProgramID
);

CREATE INDEX StringParameterDomain_INDEX_3 ON StringParameterDomain
(
       ProgramVersionID
);

CREATE INDEX StringParameterDomain_INDEX_4 ON StringParameterDomain
(
       StringParameterDomainID
);

CREATE INDEX StringParameterDomain_INDEX_5 ON StringParameterDomain
(
       StringParameterID
);

CREATE INDEX StringParameterDomain_INDEX_6 ON StringParameterDomain
(
       StringParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE INDEX StringParameterDomain_INDEX_7 ON StringParameterDomain
(
       Value
);


CREATE TABLE StringParameters (
       StringParameterID    INTEGER NOT NULL,
       ProgramID            INTEGER NOT NULL,
       ProgramVersionID     INTEGER NOT NULL,
       Name                 VARCHAR(255),
       Description          VARCHAR(255)
);

CREATE UNIQUE INDEX StringParameters_INDEX_1 ON StringParameters
(
       StringParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE UNIQUE INDEX StringParameters_INDEX_0 ON StringParameters
(
       StringParameterID,
       ProgramID,
       ProgramVersionID
);

CREATE INDEX StringParameters_INDEX_2 ON StringParameters
(
       Name
);

CREATE INDEX StringParameters_INDEX_3 ON StringParameters
(
       ProgramID
);

CREATE INDEX StringParameters_INDEX_4 ON StringParameters
(
       ProgramVersionID
);

CREATE INDEX StringParameters_INDEX_5 ON StringParameters
(
       ProgramID,
       ProgramVersionID
);




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.