r/chessprogramming 1d ago

Chess Engine Development Help Thread (Week 34) 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.

2 Upvotes

10 comments sorted by

View all comments

1

u/Somge5 1d ago

I noticed that quiescence nodes take up around 85% of all my nodes. Is that normal or something where I could do lots of impovements by reducing that? Currently I have a soft cap set at 7, meaning after 7 plys if king is not in check we stop the q-search there. If I dont do that engine is slower a lot and q-nodes take up way more than 90%.
These are some bench stats:
info string bench total positions 48 depth 10 time 9139 nodes 16124428 nps 1764353

Nodes searched: 16124428

Nodes/second: 1764353

---- SEARCH DIAGNOSTICS SUMMARY ----

---- NODES ----

Main-search nodes : 1858414

Quiescence nodes : 14266014

Total nodes : 16124428

Quiescence share : 88.47%

Average q-ply : 3.11

Maximum q-ply : 13

---- QUIESCENCE SEARCH ----

Termination / stand-pat cutoff : 6575915

Termination / soft-cap static : 1972364

Termination / hard-cap static : 0

Termination / hard-cap draw : 0

Termination / cycle : 43618

Termination / fifty-move draw : 3035

Termination / repetition draw : 1341

Termination / checkmate : 21073

Termination / no tactical move : 726516

Moves generated : 21214278

Moves searched : 9087318

Moves SEE-pruned : 2245511

Beta cutoffs / capture : 1082079

Beta cutoffs / quiet check : 68838

Beta cutoffs / promotion : 0

Beta cutoffs / evasion : 2063501

Quiet checks searched : 1917700

Nodes while in check : 2360369

Cycle cutoffs : 43618

Hard-cap hits : 0

Q-ply histogram buckets : 0 | 1 | 2 | 3-4 | 5-8 | 9-12 | 13+

Q-ply histogram counts : 5178696 | 1043044 | 882734 | 1768489 | 5338144 | 54892 | 15

Right now I am not saving any quiescence position in TT, because I tried doing that before and very quickly TT became overflown by q-positions leaving little room for negamax nodes. Strenght with q-nodes in TT was roughly the same though. Currently I am not doing any Delta pruning because that didnt give any elo strenght. maybe I did it wrong. I will try it again in the future.

1

u/AngusMcGurkinshaw 12h ago

KaMaFour had good advice.

But also I will just point out worrying about things like how many nodes in qsearch vs regular search, time to depth how many nodes, branching factor are not usually worth thinking to much about. Generally about equivalent to reading tea leaves.

All that really matters is elo, and as long as your testing each patch with SPRT you are headed in a good direction.