FrankyCPP 1.6.0 - new version chess engine


Franky - UCI Chess Engine (java)
Modern C++20 UCI Chess Engine
Github:https://github.com/frankkopp/FrankyCPP/releases
Author: Frank Kopp

Franky 1.6.0 what's new?

Summary

v1.6 is a major evaluation overhaul delivering +81 ELO over v1.5 through three phases of eval feature development, plus critical search bug fixes and an aspiration window rewrite. The release adds ~25 new configurable eval parameters, a three-tier threat evaluation system, and comprehensive king safety improvements — all while keeping NPS regression within budget.

25 commits | 44 source/doc files changed | +7,235 / −493 lines


Headline Results (vs v1.5, 100 games, 300s/game)

Metricv1.5v1.6Delta
ELO vs v1.5—+81.4+81 ELO
ELO vs SF18 @2700+6.9+41.9+35 ELO
Test Suites1747/2875 (60.8%)1883/2984 (63.1%)+2.3%
STS (Strategic)870/1500 (58.0%)886/1500 (59.1%)+1.1%
WAC (Tactical)~96%95.5%✅ maintained
NPS7.00M6.68M−4.6% (within budget)

Evaluation — Phase 1: Quick Eval Wins (+81 ELO)

Four new evaluation features, each configurable via EvalConfigData / ConfigRegistry:

  • Knight outpost bonus — ranks 4–6 relative, supported/unsupported variants
  • Pawn advancement bonus — non-passed pawns on ranks 4–7, rank-indexed array
  • Bad bishop detection — penalty per own pawn on bishop's color squares
  • Rook behind passed pawn — bonus for rook behind own or enemy passers

Evaluation — Phase 2: King Safety Overhaul

Three king safety features plus a PawnTT optimization:

  • Pawn storm penalty — opponent pawns advancing toward our king (midgame)
  • King open file penalty — open/semi-open files adjacent to king position
  • Safe check squares — penalty for squares where enemy can deliver check uncontested, filtered by actual piece attacks and piece existence
  • PawnTT passed pawn caching — extended PawnTT entries to cache passed pawn bitboards (16→32 bytes), eliminating redundant computation on every evaluate() call
  • Pre-computed attackedBy[] bitboards (king+pawn in evaluate, pieces in pieceEval)

Evaluation — Phase 3: Threat Evaluation

Three-tier threat evaluation with per-piece-type attack maps:

  • Tier 1: Pawn attacks on pieces (per victim type: minor/rook/queen)
  • Tier 2: Minor piece attacks on major pieces (rook/queen)
  • Tier 3: Hanging pieces (attacked by us, not defended by them)
  • Added attackedByPT[PieceType][Color] tracking infrastructure
  • 13 new config parameters (USE_THREAT_EVAL + 12 weights)

Phase 3 space/coordination features (3.1, 3.3) were implemented, tested, and disabled by default after match results confirmed a net regression. Code retained behind USE_* flags for future Texel tuning.

Evaluation — Pre-Phase 1 Improvements

  • Rank-based passed pawn bonuses (indexed by rank)
  • Bishop pair bonus value tuning (increased midgame and endgame)
  • Rook 7th rank bonus
  • King proximity to passed pawns evaluation
  • King safety attack evaluation (weighted piece attacks)
  • Eigenmann Rapid Engine Test Suite integration

Search Improvements

Aspiration Window Rewrite

  • Exponential delta widening — replaced fixed 3-step array with while(true) loop using delta += delta / divisor (~×1.33 growth)
  • Mate bypass — skip aspiration entirely when previous iteration found checkmate
  • Extreme score bypass — immediate full-window for TB win/loss range (≥4000cp)
  • UCI time gate — suppress lowerbound/upperbound score swings for first 3 seconds (like Stockfish), LOG output always emitted
  • Configurable ASP_INITIAL_DELTA and ASP_DELTA_GROWTH_DIVISOR parameters

NMP Fix

  • Null-move pruning mate clamping — clamp to beta instead of VALUE_CHECKMATE_THRESHOLD. The threshold (9871) wasn't recognized as checkmate by isCheckMate() (requires >9871), causing bogus ±98.71 scores in UCI output from TT contamination.

Bug Fixes

  • MAX_MOVES crash fix — increased from 512 to 1024. Games exceeding ~384 plies caused out-of-bounds writes on historyState[] in Position, leading to ACCESS_VIOLATION crashes on helper threads. Root cause: v1.5.1 crashed at move 256 in SF18 match.
  • Bishop pair bonus sign handling — fixed evaluation sign from both perspectives
  • Exclude tactical test configs in PROD mode — prevents non-essential test configurations from being compiled into production builds

Infrastructure

  • CMake GLOB refactor — replaced manually maintained file lists with file(GLOB CONFIGURE_DEPENDS). New source files are auto-discovered, no CMake edits needed.
  • Position setFromFen() optimization — added overloaded methods to reduce stack usage in test initialization
  • Updated all documentation, build guides, and arena configuration for v1.6

Planning / Documentation

  • PLAN_Eval_and_Strength_Improvement.md — comprehensive eval plan with per-phase validation results, benchmarks, and match data
  • PLAN_Texel_Tuning.md (v1.2) — detailed plan for automated parameter optimization targeting v1.7. Includes 8-phase implementation roadmap, module architecture, data acquisition strategy, and algorithm specification.

What's Next (v1.7)

v1.7 will focus on Texel Tuning — automated optimization of all ~85 eval parameters against millions of labeled positions. This is expected to deliver +20–50 additional ELO at zero NPS cost. See PLAN_Texel_Tuning.md for details.


Comments

Popular posts from this blog

Torch-4 UCI v 1.01 - new version chess engine

Reckless 0.9.0 - new version super strong chess engine

Reckless 0.10.0 - new version super strong chess engine

We already have the new Fritz 20 program - what does it look like and how does it work?