Back to blog

2026-02-17 · 5 min read

Starting my Chess Engine

The beginnings of my handcrafted chess engine. No AI help or copying.

  • Ideas
  • Learning
Starting my Chess Engine

Intro:


Lately I've been getting really into chess.

I just reached a 70 day streak on chess.com, and I'm pushing a 650 elo rating in the rapid games. The site is amazing, but I hate how they make you pay for a game review. I want to be able to review my games without paying for some subscription. So I decided to build and train my own chess engine.

The attached YouTube video also served as inspiration to me.

Parameters:


While this is a problem that has been widely solved, I want to approach it myself. Many people are losing critical thinking and programming skills because it's so easy to just generate code with a prompt. I'm not exempt from that group. So I won't be using AI at all to learn about move validation, training my bot, or anything.

At it's core, this will be a chess engine. I just want to create the backend logic that someone could then attach to a chess UI. I plan to be able to paste in chess notation copied from chess.com games to see how I played. The product should accomplish the following:

  • I want to be able to play games via the engine using chess notation. This should lay the groundwork to create an api endpoint and attach to a UI with a board, etc.
    • To make this possible, I know I will need to store board state in memory
  • There shoould be some kind of bot that allows one-sided play, and I should also be allowed to play against someone else
  • Eventually, the engine should be able to accept finished games and review the play of both sides.
    • I want to be able to paste in chess notation directly from my chess.com games
    • It would be trivial to determine how both black and white played, and I will also compute which moves had big impacts on the outcomr

Initial Thoughts:


Additionally, I don't know a lot about this problem. For example, I know I will need to create some artifact for the model. When I trained my XGBoost, for example, I train to minimize the cost by changing the weights according to some algorithm. I don't know how this will look or what chess engines do here.

The first step will definitely be creating a way to play games purely via chess notation. This will include move validation logic on both white and black. I think castling, en passant, and evaluating checks/checkmates will be the most difficult.

Next, I need to figure out some way to actually train a bot to play against. The main problem is what do the weights/artifacts look like? I would assume that I will need two artifacts, one for black and one for white? Then I could just run a Monte Carlo simulation of many games, and just hope they get better by playing against each other. I've also heard of something called Alpha/Beta I think, but I need to do a bit of research.

Plan of Action:


I'm going to go out now and create the logic for the game itself. This will be in a python class called ChessGame or something like that. I will report back as I figrue things out.

Photos & Video

Chess Video