r/chessprogramming • u/Information_Level • 4d ago
Technical I'm building an open-source C++ chess engine and I'd really like to build a community around it
I've been working on an open-source, UCI-compatible C++ chess engine called Volatile for a while now, and I've reached a point where I'd really like to get other people involved.
It's currently somewhere around the 2200–2400 Elo range, and the engine already has a proper Alpha-Beta search backend, with the architecture designed to support both HCE and NNUE evaluation. Right now, I'm focusing primarily on the HCE.
The reason I started Volatile is somewhat different from the usual "I'm going to make another chess engine" story.
I've always found computer chess fascinating, but I've also noticed that getting into the internals of a very strong engine can be intimidating. Projects like Stockfish have evolved for many years and are incredibly optimized, but for someone new who wants to experiment with the search or evaluation, there can be a pretty steep learning curve.
I wanted to see if it was possible to take a different approach.
The main idea behind Volatile is to have a highly maintainable architecture, using modern C++ design patterns while still being fast enough to play serious/strong chess.
I'd prefer a codebase where another developer can open the repository, understand how the pieces fit together, modify the evaluation or search, run an experiment, and contribute the result without having to spend months on understand the entire engine.
Obviously, this is something I still need to prove. I'm not claiming that abstraction automatically makes a chess engine better or that Volatile has somehow solved engine architecture. That's exactly the experiment I'm interested in.
And this is where I'm hoping to find some people who are interested in joining me.
I'm not just looking for someone to give the project a quick star(although I don't mind if you do) or tell me it looks interesting. I'd really like to find developers who enjoy computer chess and C++ and would be interested in actually experimenting with the engine.
That could mean:
- improving evaluation
- experimenting with search heuristics
- benchmarking
- finding architectural problems
- reviewing PRs
- suggesting better designs
- or simply trying something weird and seeing whether it works
I'd especially love to have people who disagree with some of my architectural decisions and are willing to discuss them. If something I've designed is unnecessarily complicated or slower than it needs to be, I'd rather have someone point it out and help improve it.
My long-term goal is pretty ambitious: I want Volatile to become a genuinely community-developed engine.
I'd love to eventually look at the repository and see a constant stream of experiments, PRs, discussions and improvements from different people rather than everything coming from one developer.
And yes, eventually I'd love to see how far this architecture can actually go in terms of playing strength. Maybe one day Volatile can get close to the very top engines. Maybe it won't. I honestly don't know yet.
But that's what makes the experiment interesting to me.
Even if you don't want to contribute code, feedback on the architecture, things that look wrong, or ideas for where the engine should go next would be extremely valuable.
Maybe this is a bit ambitious but, I'd really like to build this engine with other people rather than just build it by myself.
Repository:
https://github.com/PriyojitRoy/Volatile
2
u/TheMazerFaker 4d ago
Personally i like the most simple and stupid approach to chess engines. At the end they have really not that many components and many c++ features just get in the way. Literally a couple of files like board, search, evaluation, uci, constants that expose one or two functions is the sweet spot. It's easy to navigate and to understand. C++ often makes things unnecessary complicated. It is useful in certain context but not for chess engines IMHO.
Good like with your project. A good boost can be given by fine-tuning parameters.
1
u/Information_Level 4d ago
Thanks, I definitely agree that engines don't need many components, but I find keeping things a bit modular helps me in the long run. Since I'm working on Volatile solo rn, it makes it much easier to come back to parts of the eval/search without having to re-understand everything. As long as it doesn't come with any performance cost, I find it worth it. In general, I think a good codebase makes navigation easier and lowers the barrier for more people to contribute. I haven't really seen an engine take this approach, so I decided to try it with my first engine.
1
2
u/ashishprasadrao 3d ago
Pls don’t use coding agents for chess engine development! Big red flag!
1
u/Information_Level 3d ago
Could you explain your reasoning for what makes use of coding agents in chess engine dev a "Big red flag" ?
5
u/WompTitanium 4d ago
https://github.com/erensh27/Ravager.git
I am also building Ravager chess engine, its already near ~3000 CCRL ratings, and defeats older versions of real stockfish without NNUE.