Why?
Why? Why should anyone write a chess engine in this day and age? Deep blue beat Kasparov in 1997 and since then, existing engines have only become more powerful. Engines like Stockfish and Leela Chess Zero will play better than I could ever hope to achieve with my puny little engines. Yet it’s still an interesting problem to me.
See, there isn’t just one problem to solve. A chess engine is a complex project, from the move generator to the search and the heuristic. Even understanding UCI and writing a compliant interface isn’t exactly trivial. To then see the engine work, actually play games and win at an ELO much higher than my own is a great feeling.
It’s also interesting because the gap to existing engines is so big. There simply are so many interesting techniques and approaches to try. Some are pretty straightforward, some are very complex. For some components, there exists one clear correct approach. For other components, there might be 10 different things to try, to make work, to evaluate.
To me, it’s a never-ending puzzle and while it might be frustrating at times, to see it all work together feels pretty darn cool.
So yeah, you might’ve found this page while already on the quest to build your own engine. If you are, that’s great, carry on. If not, maybe give it a try. Check out the resources section to help you get started.