Welcome to Supra chess engine website

Welcome to Supra chess engine website - Supra chess engine

Supra chess is the first Portuguese chess engine. 

The source code is totally original, open, written in c ++ and is available to download at the bottom of webpage. ↓


Creator and developer: Pedro Mourão Soares Correia.



update available to download at the bottom of webpage

update available to download at the bottom of webpage - Supra chess engine


Supra 28.0:




  • Substantial improvement of the algorithms of choice of best play according to Alexander shashin model with the 5 parameters: material parameter, temporal parameter (number of possible movements), king safety parameter, compression and expansion parameters.


  • Substantial improvement of vertical filter. 


  • Substantial improvement of the search extension.  


  • set of small improvements in several areas.


  • Approximately +150 elo than the previous version.






• Type: UCI chess engine (that is, a totally logical program, without its own graphic structure, requiring a graphic chess program to be able to interfere and visualize. It can be connected with any graphic chess program, such as fritz , light chessbase, hiarcs, among others).
• Language: C ++
• Size: approx. 15 000 lines of code foreseen for version 1.0 executable size: approx. 1.5 MB.
• Creator and implementer: Pedro Mourão Correia.
• Year of creation:2010.




Algorithms used:



Principal Algorithm:

*Base algorithm (equivalent to minimax): Recursive algorithm that for each node finds the strongest child (min or max) according to the perspective of the side to be played.This Base algorithm was designed by me in 2011 in Version Supra 2.0. Later I realized that it had been discovered long before!




Algorithms related to the base algorithm:


alpha beta algorithm: when Supra analyzes the children of a given node, it interrupts the research whenever beta <= alpha, because even if beta may still lower more, it does not matter because it will not be relevant to grow alpha. When this cut occurs it means that the node in question is no better than the strongest node at this level of depth and section of the tree.

*wormhole algorithm: wormhole algorithm applies the same condition as the alpha beta algorithm but extends it to all previous levels: For example at the level deph=5: the condition instead of "if (beta5 <= alfa4)" is "if (beta5 <= alfa4 || beta5 <= alfa2 || beta5 <= alfa0)". The gain is overwhelming!



Data ordering algorithms to speed up cuts in the alpha beta algorithm:

Internal Iterative Deepening algorithm: Internal Iterative Deepening algorithm does successive full scans with increasing deph with each scan. This makes it possible to better group the nodes in order (enhancing the alpha beta cut) and to better manage the time spent on research. 

Killer moves: Killer moves allows you to always analyze the movement that made alpha beta cut in the previous section at the same depth level. Often even in different positions the same part movement produces alpha beta cut if previously it also produced.

Filtering algorithm by condition:

*vertical filter: Powerful filter of variants frankly bad from deph=3.

*Turbo filter: Allows SUPRA use a method of searching a bit faster by staged increments of alpha.

Pre-search filtering algorithm with lower depth level:

Null move prunning: The side to move do not move and leaves the opponent play: if the result of this analysis (with deph = deph-2) is still bad for the opponent exists a full cut at this node.

Late move redutions: Late move reductions analyze the first children of a node with normal deph. If after the analysis of these first (about 5) nodes there is no alpha beta cut the research is continued but now with a lower deph. This procedure saves a lot of time in research, as alpha beta cutting is normally not produced other than in the first nodes.If a cut is produced then Supra will have to re-analyze the remaining nodes with normal deph. Supra uses a more radical version of this algorithm and only searches for the node again with normal deph if that node produced alpha beta cut and not all nodes indiscriminately. In other words, if alpha beta cut with lower deph is produced in a given node (after the initial 5) then supra analyzes that node with normal deph and then if it is not confirmed the alpha beta cut Supra analyzes the next node with lower deph and executes the same procedure.


Principal Variation Search: Supra for each node starts with a scan with very reduced size window (<1) if the beta value does not get out of the window the search with unlimited window is not performed and Supra saves a lot of time searching for this node.

*: algorithms discovered by me or independently discovered by me.


Download Supra 28.0

Supra 28.0 Supra 28.0 [4.610 Kb]

Music made on synthesizer

Music made on synthesizer.


Author: Pedro Mourão Soares Correia


Year: 1997