Introducing Kiki
Kiki is - or will be - a chess engine. It will support the evaluation of regular chess positions alongisde positions from Fischer random and Crazyhouse variants. My reasons for building Kiki are multifold:
- Increase my Python programming proficiency (at least until I bring myself to learn a lower level language like C++ or Rust)
- Exposure to ML concepts (NNUEs, RL, eventually I’d like for Kiki to train itself with some compute resources I have spare)
- I plan to write this up into my undergrad dissertation
- I just genuinely find the idea of building a chess engine interesting and I’m that way inclined🤷🏼♂️
Context
I have no formal training in AI (yet) although I do plan to read a masters in it. I have extremely rudimentary Python knowledge, so each line of code written is a result of research online, (generally a search from within the Chess Programming Wiki for the concept and then documentation for the implementation), or checking through a forum, or a conversation with an LLM.
There are no lines of code in this project written by AI and there never will be. I use LLMs to teach me new concepts in a conversational way but I value understanding the concepts for myself. Where I have gaps, I’ll plug them, but I’ll never outsource.
This series isn’t intended to teach the fastest way to build a chess engine. It’s a record of building one from first principles. I’ll occasionally make suboptimal decisions because understanding why something works is more valuable to me than ripping off Stockfish.
As mentioned I’m borrowing a lot of my ideas from the Chess Programming Wiki which is fantastic and I’m grateful it exists.
Where do I want to take this?
I don’t know what a good “end” to this project will be. An evaluation function can be optimised and other parts of the engine refined until the cows come home. But some good milestones are:
- It makes legal moves
- It makes competent legal moves
- It plugs into Arena
- It can play variants
- Eventually, a NNUE evaluator allows for self play, supervised at first
- Finally, distributed reinforcement learning across the limited compute I have lying around
Wish me luck - if you’re interested in following along the GitHub for this project is here 🙏🏻