Menu

Home

Orest

Sconvolt is a graphical user interface + a native chess engine

It is built using C/C++ (GNU GCC compiler is used to compile it), the graphical part uses the A.L.L.E.G.R.O programming libraries, a set of open source libraries used for graphics, the program is cross-platform and currently compiles and runs on Windows and Linux platforms (tested on windows xp, vista, 7, 8, Ubuntu) on the x86 architecture

The Engine

Sconvolt represents the current board state using a 2 dimensional array of size 8.

“Board [8][8]” is a global variable, and the GUI uses it to display the corresponding values on the computer screen. The 2D array is kept as a global variable, and various functions take it as input or as parameter when computing calculations and making decisions about outputs. The engine is structured in memory as a set of functions that can manipulate the board state (the 2D array) and can return values that represent decisions.

The Sconvolt engine uses alpha/beta pruning to "think" a number of moves ahead, If a perfect evaluation function existed, then no search depth would be needed, because the machine could tell mathematically what is the best move at any given position, this is the main reason chess engines tend to go as deep as possible in their search of possible moves, because the correctness of a score improves.

In Its standard configuration, the program is able to think 5 moves ahead relatively fast (less than a second for depth 5), and the evaluation function sums a material score with a positional score, the material score has been decided according to chess literature, it gives importance to the pieces in the following manner:
– Pawn equals 100
– Bishop equals 325
– Knight equals 320
– Rook equals 500
– Queen equals 975
– King equals 20000
King should have an infinite value, but logically in this case is expressed as 20000, it is very important that no evaluation function could reach that number, because the king safety should be the first priority in a chess engine.
The positional score is based on the fact that normally a player loses when his king has no more available legal moves, so it has been assumed that a higher mobility will increase the chances of the program to win. So, in the case of 1 white king, against a black's one and a queen, the white king will always try to go to squares where it predicts it will have as many legal moves as possible. The evaluate function adds 3 points to the final score to be returned
every time a new possible move is found, so, the evaluation functions gives score to mobility in a proportional way.