BanksiaGUI can build opening books from games in databases and generate books in Polyglot, PGN or EPD formats.
It is used to build directly from PGN games. However, after considering carefully, we decided to turn that feature off. Instead, users may need to download some existing ones or convert their PGN games into BSG’s database first. Converting requires more steps to do but can help to save time in general since the converting process can parse, extract info, and sort games at once and the opening builder doesn’t need to repeat the such consumed time processes again.
After having a database, users can start generating opening books. Go menu->Tools->Create Opening Book to open a new dialog as Fig. 1, fill the “Database” the path of the database, and a new file path of the new opening book for “Book file” box. Other parameters can be kept with default values. After filling two path-boxes, the button “Process” in the bottom will be active and users can click on it to start. Just wait until the building-process completed as Fig. 2. Users can check the output folder to find the new opening book and can use it immediately.
The process is quite fast. For example, in Fig. 2 BSG can process all 50k games in 4 seconds only to create a book Polyglot 1.1 MB.
- Game conditions: only game satisfies the conditions will be processed (otherwise be ignored)
- min player Elo: 0-ignore that parameters, otherwise check both players and accept only if their Elo from that limit
- min game length: count games from that length (ply)
- repeat at least: an open line should be played from that number of games (say, 3 means it should be played at least in 3 games)
- White/Black: save down data for a side or both
- Game result factors: Polyglot assigns a number as a weight for each move in the book. When playing, the program will compare the weights to know which moves are the best, which ones are worse. BSG uses game results as votes for weights. More winning games the moves in an opening line will have higher weights and vice versa…
For examples: the weight of a move will be counted as the following formulas:
Weight = 5 * winCount + 2 * drawCount + 0 * lossCount
Users may change the formula to any you want via changing factors.
Some games may have not result. You can totally ignore them or consider them as wins/draws/losses.