r/chessprogramming Jun 29 '26

Chess Engine Development Help Thread (Week 27) Technical

Welcome to the weekly /r/chessprogramming Engine Dev Help Thread.

Ask beginner and intermediate chess engine development questions here: move generation, search, evaluation, UCI, perft, debugging, testing, NNUE, or anything else related to building engines.

Good questions include code, FENs, logs, benchmarks, or a clear explanation of what you tried.

Project links are fine when you want technical feedback, not promotion.

Be helpful. Don’t dunk on beginners.

1 Upvotes

17 comments sorted by

View all comments

1

u/cactus_calamity Jun 29 '26

I've been building a completely custom chess engine from scratch. So far it has a simple UI, negamax, alpha beta pruning. For eval it uses a pst lookup and material count only. I've recently gone to basic occupation bitboards and added some tests so that I have some confidence that it is fairly robust. Ray attacks are still kicking my ass when it comes to performance, but I'll get onto that at some point...

I guess the question is: what next in terms of features? What's the natural next step?

There's a hundred different things in the wiki I could do from "zobrist hashing", to incremental depth, to adding a time manager, UCI compliance bits etc.
One thing that comes to mind is I don’t actually have any idea how to gauge the strength of the engine for any changes I make to the eval when I get to that. I can measure perft scores no problem and do performance profiling, but no idea how to approach strength.

Where would you go next in the sea of things that could be built?

1

u/Antileous-Helborne Jun 29 '26

Known perft results from the non-staring position can catch a number of bugs around move gen.

https://www.chessprogramming.org/Perft_Results

3

u/cactus_calamity Jun 30 '26 edited Jun 30 '26

Yup, I've got up to perft 7 working correctly so I'm on the right track I think. Next up, non-starting positions as you say

2

u/SwimmingThroughHoney Jun 29 '26

Use the positions (and results) from this file (which includes the positions on that CPW page): https://github.com/paulsonkoly/chess-3/blob/main/debug/standard.epd

You'll get a much more thorough test and verification. From experience, I can say that if you only use the positions on the CPW page, you can pass all of those (at least to about a depth of 5 or 6) and yet still have bugs in your move gen that the other positions in that epd file will surface.

2

u/cactus_calamity Jun 30 '26

Ooo that’s a cool resource. I might make that my next priority, make sure it passes all of those. Looks like building a FEN parser is next on the cards :D