Inspiration

Chess is one of my most played games, so it showed up quite frequently in my YouTube recommendation when a video from Sebastian Lague showed up on my YouTube recommendation; the video is about his journey to creating a chess engine, and I had wanted to create my own engine since then, the project was never initialized because I need motivation to start a project because once I am committed to a project, I would spend all my time on it. That is, until now, this hackathon has motivated me to start it, and here I am.

What it does

Install the engine into a UCI GUI, which will function as a chess engine.

How I built it

The project is written in C# with Visual Studio using Dotnet. I found most of the resources on online websites, such as chess programming and YouTube videos. I used the API provided by Sebastian league tiny chess bot challenge to make the engine and make it UCI compatible.

Challenges we ran into

There are Challenges that arise from most major improvements that I try to make: Alpha-theta doesn't calculate properly, alpha-beta pruning was fine, adding Quiescence search requires me to implement Negamax instead of alpha-theta because I didn't want to implement two versions of Quiescence search; going from alpha-theta to Negamax causes me to change my Pesto evaluation because it only responds back in white perspective, iterative dep was fine, tranpositional table was making my engine return dumb move because implementation error that took forever to fix, and making this thing UCI compatible was a pain.

Accomplishments that I"am proud of

I started this challenge with no knowledge of C# and little in chess algorithms, but now I can say I am comfortable with C#(it is also very similar to C++) and knowledgeable in chess engine programming.

What I learned

C#, minimax, alpha-theta pruning, negamax, quiescence search, pesto evaluation, iterative dep, transpositional table, piece table value/piece square value, UCI stuff, and how to make a chess engine.

What's next for ghost engine

There are some stuff that I wanted to implement but didn't have time; they are as follows: better move ordering, opening book, node extension, and iterative deepening.

Built With

Share this project:

Updates