What is this?

Back, what was supposed to be a month but became 4 or 5 due to procrastination, I decided I wanted to make chess - program the full game from scratch, and be proud of it. And then, I would make an opponent that would be able to play against you, and hopefully, win every time.

The first part of this journey was to program the game itself. On the Chess Programming Wiki (CPW), it says that the first step to programming a chess engine is to have a fully working and bug-free implementation of the full game:

CPW - Getting Started

The very first step to writing a chess engine is to write a complete, bug free board representation that knows every rule of chess. While this can sometimes be a pain, especially implementing the more complicated rules such as castling and repetition draws, it is the backbone of the chess engine, and your engine will not get far without it.

The problem with this came when I found there were an extreme lack of resources present for this task, and it quickly became apparent that this would be pretty difficult to achieve. And a month later, it was finished. I was supposed to spend a week or so, documenting my experience, but I forgot and pushed it to the side - eventually, I forgot about it, but now I'm writing this guide so that it's just that little bit easier for anyone else who was at the start of the same path I walked.

About this project

This project will use code written in C#, as this is what my move generator was written in, originally. Hopefully, the code should be self-explanatory, and I'll do my best to explain alongside the code samples presented throughout this book.

If there are any issues, feature requests, or contributions, feel free to list them in the issues tab of this repository here.

Thank you for reading! ❤️🎉