Dann Corbit wrote: ↑Sat Aug 02, 2025 9:26 pm
Of course we are very glad to hear from you.
Dann, you have a unique and IMO deep perspective on engine development. There are two posts of yours that come to mind.
The first one was about 'tweaking'; you probably remember that one, it's a bit old. You explained that the only difference between the top engines and normal ones is perseverance, perhaps implying that there was no secret knowledge. Most programmers just 'stop tweaking' after a while; it's not fun.
I read the second one more recently, but unfortunately I don't remember it well. It was a bit similar; you stated that there were two stages in engine development. Something like a growing phase where features are added, and a second phase that is more about tuning and possibly took many years.
Since I don't remember clearly, could you please reformulate your vision or find a reference? Both of your posts were so clear to me, and made me understand better.
I will be interested to discover how strong a rust engine can become.
Rust is obviously not going to help with engine strength.
Furthermore, I saw that quite a few engines are already written in Rust; some of them NNUE. So, for sure I am not going to contribute to your curiosity; sorry about that.
It's more about 'how to organise software', make it flexible, minimise the mistakes, and that's a big interest of mine. That's why I write engines from scratch (in various games) so many times. There is always a slightly different way to express things.
While a lot of Rust is just painful for chess engines (e.g. no global variables), I think overall it made me see some things more clearly. Like search data; I don't keep it around after a move anymore. In C++, I never asked myself if I actually needed it; it felt convienient to leave it there.
Will it use NN evaluation or hand-tuned eval?
It's not easy for me to give a clear answer to that apparently basic question.
Conceptually, for evaluation, I separate 'features' and 'scoring'. A feature would be a property of the position, such as a white knight on e5, while scoring would be transforming that feature (or a combination) into cp units. Now I can answer better.
The design for this engine follows one I wrote two years ago. Features are fully HCE; old-school engine like the previous Senpai. However the scoring will be more fluid: tables of weights computed by machine learning. I call this 'table-based evaluation', and that's what I use in other games like Othello and draughts. 'Look-up evaluation' would also be a good name. It replaces the numerous multiplications of an NN by array lookups. An eval like Pesto is already in that category.
No NN in my original plan (or the engine from two years ago). That could give this one a unique style, somewhere between HCE and full-NN. From the few experiments I ran on the other engine, that gives Senpai more king-safety awareness. That isn't saying much, however; my engines have always been endgame players, not king attackers.
If the results are too disappointing, I might add a small NN as an afterthought, for an Elo boost. Then it would really be a mix between HCE and full NN, with accordingly a mixed performance. Regardless of what I end up doing, it won't be competitive with optimised NNUE; that much is obvious.
Summary: HCE features, table-based scoring (rare), no NN or a small one later.
Fabien.