Advertisement Jump to content


This topic is now archived and is closed to further replies.


Computer chess openings

This topic is 5331 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

In my last version of chess I had downloaded the ECO Database of chess openings. To add each opening to my program, I would look at the opening, and store each and every move in the opening to a table (a separate hash table). i.e: [My ECO] 1. e4 e5 2. Nf3 The opening would be stored as such: e4 e4 e5 e4 e5 Nf3 Three moves in the opening, three entries in my opening table. That was then. Now, after having done more research in to chess openings I''ve "discovered" that, depending on the side to move, following a certain opening is not a smart idea, statistically. (Numerous website publish statistics about games won / lost / drawn) This does not mean that a certain variation of the opening may not be good, just that following it to a certain line could be stupid. Using the above example, we may have found that white looses 99/100 games when playing the opening, however the following variation on that opening 1. e4 e5 2. Nf3 a5 3. c4 might statistically give white a 99/100 chance in winning. Taking this in to account, my old method of constructing a opening table is not going to work because it would suggest 1. e5 e5 2. Nf3 is a good opening. My question is this: What is a good way of generating opening books? Does the ECO data imply move progression, or only static situations: i.e. Only the last entry in the opening is to be played, and only if all of the other moves have occured. It does not imply that the first 3 moves in the opening should be played at all. Will

Share this post

Link to post
Share on other sites
You seem to have some confusion regarding ECO codes. Those codes are used to identify openings, to make it easier to classify games in databases. It has nothing to do with whether the moves that describe how to get to some ECO-coded position are good or not.

The interface to an opening book should be: you pass a position and it gives you back a list of recommended moves with associated probabilities, or an empty list if the position is not in the book.

You can implement your book in a number of ways. One that requires very little human intervention is this: Take a dabase of games played by people with ELO over 2400. For each position that happens at least 3 times in the database, count how many times each move was played, normalized (divide by the number of appearances) and return that as the distribution.

The really difficult thing is finding what openings are better for your program's style. The way we do it in our program is by playing many games against strong programs and then analyzing the game around the point where we got out of the book. Then we edit the probabilities of some moves by hand and we add a few more moves that were found during the analysis. This works pretty well, but it takes a long time to have a solid broad opening book.

[edited by - Alvaro on June 10, 2004 5:30:14 PM]

Share this post

Link to post
Share on other sites
You are correct; I was confused about the ECO. Thanks for the clarification.

What I was doing was storing the ECO openings in a table, checking to see which positions the current board could reach, and then randomly selecting one of the available moves.

After playing about 50 games against various opponents and wiping bad openings I''ve decided to try and automate the whole process.

Here is what I''ve done:

Take the entire ECO database and have the computer ''play out'' each opening.

At the end of the opening it does a depth 10 search of the position, and gets back a score.

If the score is greater than or equal to 0 then I consider the opening to be suiteable, and store it to a new file, which my program will later use as it''s opening.

This is just a short-term solution but it should be suiteable for the time being.


Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!