Get the opening bookeXtreme Gammon opening book has been generated using rollouts made by user on BGonline.org. For that reason the data is in thepublic domain. You may freely download, use, modified the data with the only limitation that the information in each entry showing who is the person who made the rollout is preserved and displayed when the associated entry is presented. The file can been downloaded here: Latest Opening Book The file is a binary file, with a fixed size
EngineOpeningBookV2 = record
case EntryType: integer of
0: (Magic: Dword; // Leters OBDB or $4244424F
MajorVersion: integer; // version of file structure, currently 1
MinorVersion: integer; // subversion of file structure, currently 0
RecordSize: integer; // Record size for easy conversion in case it changes, currently 256
LastUpdate: TdateTime; // Last time the database was edited
FileVersion: string[8]; // User defined ANSI STRING
Description: TShortUnicodeString96; // Name of the opening book
);
1: (Notes: TShortUnicodeString96; // can have multiple record. they need to be concatenated
// to form the full notes.);
2: (
Source: TShortUnicodeString32; // source
Pos: PositionEngine; // list of 26 shortint, positive numbers mean player 1 checkers, negative for player2
Cube: integer; // cube value as value=2^cube
CubePos: integer; // 0=center; +1=own; -1=opponent
Score: array [1 .. 2] of integer; // score player1 and player2
Jacoby: integer; // 0 = False 1 = True
Beaver: integer; // 0 = False 1 = True
Crawford: integer; // 0 = False 1 = True
Eval: array [0 .. 5] of single; // Winning chances as loose bg, loose gammon, loose single,
// win single, win gammon, win backgammon
Equity: single; // cubeful normalized equity
Level: integer; // 100=Ro; 1000=XGR; 1001=XGR+; 100=RO; N=N-ply
// for normalization purpose GnuBG 2-ply should be stored as 3
ProgramName: integer; // 0=XG; 1=Snowie; 2=GnuBG; 3=BGBlitz
ProgramMajor: integer; // Major version of the program that made the analyze
ProgramMinor: integer; // Minor version of the program that made the analyze
ROGames: Dword; // For RO, number of game rolled
ROStd: single; // For RO, standard deviation of the normalized equity
ROChecker: integer; // For RO, level used for checker play
ROCube: integer; // For RO, level used for cube
RORotation: integer; // For RO, 0=rotate on 36 dice, 1=rotate on 21 dice
// probably only for XG, old version (<1.10) were making RO using 21 dice rotation
ROSeed: integer; // For RO, seed used
ROTruncation: integer; // For RO, truncate after ROTruncation moves, 0 for none
RODuration: single; // duration of the RO in seconds
DateImported: TdateTime;
DateSaved: TdateTime;
Deleted: Boolean;
Filler: array [0 .. 8] of integer; // unused, for future addition must be initialized to 0
);
end;
Just a few note about Delphi types
• Integer is 32 bit signed (regardless of 32 or 64 bit compilation)
• Dword is 32 bit unsigned
• TdateTime is a single precision float which is the Julian date (time in the decimal part)
• string[8] ANSI string of 8 characters (0 terminated if less)
• Shortint is 8 bit signed
• TShortUnicodeString96 Unicode UTF-16 string of 96 characters max (0 terminated if less)
• TShortUnicodeString32 Unicode UTF-16 string of 32 characters max (0 terminated if less)
• Single Single precision float
|

