Monday, October 19, 2026

ChessKISS 2.2, last version for a while?

After three intense months of development, I think ChessKISS has become a pretty strong chess engine. I've played countless games and run tournaments against previous versions, strong new competitors, and, of course, my own bugs. It's been a lot of fun — and stressful at times!

19/10/26 2.2

  • Added space evaluation to improve positional play.
  • Improved king safety, piece positioning, passed-pawn evaluation and threat detection.
  • Introduced a new ProbCut implementation, negative extensions and Internal Iterative Reduction (IIR).
  • Added a new unit bitbase and support for King and Pawn vs. King endgames.
  • Refined search extensions with depth-dependent limits. Single-reply extensions are now also applied to hash moves when evading check.
  • Improved repetition and draw detection throughout the search, including material draws, the 50-move rule and threefold repetition.
  • Added static evaluation to the search stack, keeping evaluation scores separate from history heuristics.
  • Removed lazy evaluation.
  • Improved quiescence search with a new mechanism for handling checks.
  • Tuned aspiration windows, late-move pruning thresholds and null-move reduction depths.
  • Changed parallel search scheduling: workers now search to a maximum depth rather than for a fixed amount of time, stopping when the main worker finishes.
  • Refined knight and pawn evaluation in the middlegame.

Downloaded at ChessKISS.zip

Saturday, October 10, 2026

ChessKISS 2.1, Autumn version

This version improves many things over 2.0, I guess now ELO is between 2500 and 2600, which is not bad at all.
  • Improved move generator performance
  • Improved EvalPawn(), EvalPawnRace(), and CalculateImbalance()
  • Improved Passed Pawn Extension
  • Added the null-move value to the TT
  • The oldest entry is now replaced when a cluster is full
  • Tried faster sorting methods
  • Added some tuned values (WIP)
  • Reuse checks in Quiescent Search when available
  • Tuned and/or tapered many parameters
  • Improved locality for some data structures
  • Fixed an issue in Eval_KNB_VS_K()
  • Improved Eval_KBB_VS_KN() performance
  • Fixed some nasty issues in Eval_KR_VS_KP()
  • Improved bishop and knight outpost evaluation
  • Improved passed pawn candidate evaluation
  • Fixed the isolated pawn penalty
  • GenerateKings() was not symmetric!
  • Improved the fifty-move rule and draw probability
  • No king safety checks in pawn endings
  • Slightly changed knight and bishop pair evaluation
  • Promotion is now taken into account for MVVLVA in the move picker
  • Check extensions now avoid search explosions by counting every two plies
  • Fixed a singular move issue
  • Added quiet-move pruning
  • Removed the pawn cache; bitboards are now used
You can download it at ChessKISS 2..1

Saturday, September 19, 2026

ChessKISS 2.0 arrives before the end of the summer

Three days left until Autumn (well, here it's still summer for at least another 30 days). To celebrate it (...), I've been quite busy over the last month creating a much better (still amateur) chess engine.

The result is version 2.0, which I believe is quite an advanced version of a chess engine that still needs tuning (WIP).

So, what's new since 1.9?

  • Performance improvements everywhere (move generator, hash generator, Quiescence)

  • Improved SEE

  • Better king defense/attack

  • Lazy SMP with worker voting

  • Improvements in repetitions, threats, killer moves and move generator

  • In threat evaluation, reverse the order of the pieces (minor > major)

  • Better time management

  • Some values tuned

  • Added evasion pruning in Quiescence

  • New endgames: KQ vs KP, KP vs KP, KRB vs KR, KRN vs KR, KQ vs QRB

  • Added rook vs bishops in EvalUndeveloped()

  • Added singular extensions

  • New settings: CPU=0 // auto and Debug=0 // default

  • Added pondering

  • Fixed a long-standing bug where a move from a missed aspiration window could be used

  • Refactored cache code

  • LMR table is now dynamic rather than having only two entries

  • Improved outposts for bishops and knights

  • More use of bitboards in TEvaluation.EvalPassers() and TEvaluation.EvalPawnRace() instead of loops

  • Improved check extension performance

  • PawnOn7thExt extension on PV is now ONE ply (previously half a ply)

  • Scores are now returned rather than beta

  • GenerateAttacksDefends() is now fully implemented with bitboards

You can download it here: ChessKISS 2.0

Saturday, August 1, 2026

Surprise!, ChessKISS 1.9

You never know when a new version is going to be released, some weeks ago I tried to recover the project almost 4 years later and here we go!, version 1.9

From readme.txt:

01/08/26 1.9

-Some small performance improvements generating play, evaluating and checking repetitions
-Scores and now inserted into TT as relative to mate
-Many small bugs fixed (like far bonus on ending games and pawn cache issues with passers)
-King defense was not always calculated
-Added Late Move Pruning
-Completely changed how the engine handles the commands (bunch of if's VS hashmap and callbacks)
-ThreatPenalty table was missing values in pawn vs knight and rook vs queen
-Small adjustments in mobility scores
-Better time management
-Bad capture pruning when AlphaBeta (like in quiescent)
-Better aspiration window management
-Add quiescent scores into transposition table

Find a copy at https://drive.google.com/file/d/111cXD-dgMk8mIzSlRxoIYphrXLpyxvHP/view?usp=sharing

Thanks!