VeryChess introduces multi-threaded search based on the Lazy SMP approach, with support for 1 to 256 search threads and a shared lock-free transposition table.
Author: Oleh Sych
In our tests, the previous version, 0.4.0, competed in the Chess Engine League qualifying round in Group E, but ended up a distant 35th, scoring just 4.5 points out of 70 games. Now we’ll see how the latest version measures up.
Verychess 0.7.0 what's new?
Overview
This is primarily a search release. Its headline is singular extensions: the engine detects when the transposition-table move is clearly better than every alternative and searches that move one ply deeper, sharpening tactics and forced lines. It also retunes king safety for a small further gain, fixes the evaluation of a few known-drawn endgames, adds a go nodes search limit, and — importantly — fixes a search-robustness bug where some positions could ignore the move-time limit and never return a move.
Strength
About +34 Elo at a long time control.
What's new
Singular extensions
When the transposition table already holds a good move for a position, the engine runs a quick verification search of that node excluding the stored move, using a narrow window a little below its score. If every other move fails to reach that window — the stored move stands alone as the only good option — the move is judged singular and searched one ply deeper. This spends extra depth exactly where it matters: forced tactical sequences, single-defence positions, and critical endgame moves, where the nominal depth understates the real tactical depth. Measured at +34.3 ± 18.4 Elo at 120+2 versus the 0.6.0 search baseline.
Endgame scaling fixes
The endgame-scaling evaluation now recognises more dead-drawn material: two knights versus a lone king (KNNvK) is scored as a draw, and lone-minor endings (king and one knight or bishop versus a bare king) are again scored as draws after a 0.6.0 tuned-value change had briefly made a lone knight read as a winning edge.
King safety retune
King safety was left frozen during the 0.6 evaluation tuning. Its linearisable weights — the danger table indexed by the number of attackers, and the open-file penalty near a castled king — were now unfrozen and re-tuned with the same Texel pipeline. The tuner raised them: they had under-valued king danger. Worth +7.2 Elo in fixed-nodes self-play, and it is search-friendly — the sharper evaluation prunes a little more (~14% fewer nodes to a fixed depth).
Time limits are always honoured (search robustness)
A real robustness bug is fixed. On some positions with long forcing check sequences, the check extension can hold the search at the same nominal depth, so the search ply grows without bound; the quiescence search underneath had no depth cap and did not poll the clock, so it could spin without returning — the engine ignored its move-time and never moved (a lost-on-time in a real game). The search now has a hard ply cap in both the main and quiescence search, and the main thread emits a periodic info heartbeat during a timed search, so the clock is always honoured and long thinks stay visible to the GUI.
`go nodes` search limit
The engine now accepts `go nodes N`, stopping the search after N nodes. This gives a reproducible, speed-independent way to compare search or evaluation changes.
Comments
Post a Comment