This might be too broad a question, but can anyone recommend specific books that deal with chess engines, including hard-coded ones such as Stockfish, Komodo, and other ones also based on neural networks and reinforcement learning? I want to get a broad overview of the logic behind chess engines, and maybe experiment in building one myself. For starters, is there anywhere I can refer to understand the Stockfish source code for example, and Alpha Zero respectively?
4 Answers
To my knowledge there is no book on chess engine programming because there is no market.
People study the source code simply by reading it. If you have any question, please join Stockfish/LC0 discord. It worked well for me, I just ask online anything I don't understand.
I would suggest the following on learning. Many more I may have missed.
- https://www.chessprogramming.org/Main_Page
- https://www.talkchess.com
- https://lib.vsu.by/jspui/handle/123456789/20821 (Deep learning for chess ai)
- Stockfish/LC0 discoards
- https://groups.google.com/forum/#!forum/fishcooking
FM Bill Jordan has written several, including:
- How to Write a Chess Engine
- The Joy of Chess Programming: How Chess Engines Work
- How to Write a Bitboard Chess Engine: How Chess Engines Work
The first is basically a printout of his engine's code, with an explanation of each code segment.
This depends quite a bit on your level of understanding, as well as your knowledge of relevant programming languages.
David Levy wrote a number of books that deal fairly closely with this topic. "Chess and Computers" (1976) is more for the beginner, while his "Computer Chess Compendium" is more 'medium' and above. See his biography/bibliography on Wikipedia for additional titles.
If you want to understand a particular engine, you basically have to go on what the author(s) have published -- and that may be in technical academical journals, so a good reference library nearby who can help you locate those is probably a necessity. If you want to understand a specific search algorithm, it's academical journals or text books, depending on if it's research-level stuff or more 'standard' things.
Good luck!
Chess Programming Wiki (CPW) is a fantastic online resource and has a recommended reading list. It will give you more breadth of information than any book, at the risk of not laying things out in a consistent manner like a book.
A good gentle introduction to chess engines in general is the 6-part series by François-Dominic Laramée (2000) listed in the online resources links.
Neural networks are still new and there aren't many long-form explanations on them yet. The only one I could find is Neural Networks For Chess: The magic of deep and reinforcement learning revealed by Dominik Klein. I have not read it.
Your best bet to understand Stockfish is to read the CPW article on Stockfish and NNUE. Also refer to the original AlphaGo papers. You should have some basic familiarity with what evaluation is and also the principles of a neural network (backpropagation).