Home * Engines * Tunguska

an UCI compliant open source chess engine by Fernando Tenorio, written in C++11, released in December 2016 on GitHub [1]. Tunguska may be build to run under Windows, Linux and Mac OS. A new version should fix the inappropriate sliding piece attack implementation (see below) either by using leading zero count intrinsics or magic bitboards.
Fallen trees at Tunguska, 1927 [2]


Board Representation

Tunguska represents the board using a bitboard array declaration along the the obligatory 8x8 board. Sliding piece attacks are generated ray-wise by the classical approach. While this approach relies on scanning the nearest blocker in positive and negative directions using bitscan forward or bitscan reverse, aka trailing (tzc) or leading zero count (lzc), Tunguska implements these zero counts, in particular lzc, without machine instructions. Kim Walisch's and Mark Dickinson's suggestion of a parallel prefix fill for a MS1B separation along with De Bruijn multiplication and lookup is likely the cheapest general implementation without hardware support, but still far to slow for this purpose considering other sliding piece attack approaches.


So far the search uses iterative deepening, alpha-beta with transposition table, check extensions, null move pruning, late move reductions and futility pruning. The move ordering is enhanced by using the history heuristic and killer heuristic.


Tunguska's evaluation relies on material, piece-square tables, mobility, various piece specific terms, pawn structure, and pawn shield and zone attacks concerning king safety. All feature weights are aggregated as distinct middlegame and endgame scores, finally interpolated by the current game phase - a technique known as tapered eval.

See also

Forum Posts

External Links

Chess Engine



  1. ^ New engine Tunguska 1.0 by Fernando Tenorio, CCC, December 11, 2016
  2. ^ Fallen trees at Tunguska, 1927, Tunguska event from Wikipedia, Wikimedia Commons

What links here?

Up one Level