ViCTORIA is a UCI chess engine built from scratch using C++ 20.
ViCTORIA performs a in-depth analysis of the position with a handcrafted evaluation function.
It can perform an analysis in reasonable (10-25 seconds) time between depth 6 and 10+, depending on the number of possible moves.
Its elo rating is 1694 in blitz (February 2021).
ViCTORIA is not a complete chess program and requires a UCI-compatible graphical user interface (GUI) (e.g. XBoard with PolyGlot, Scid, Cute Chess, eboard, Arena, Sigma Chess, Shredder, Chess Partner or Fritz) in order to be used comfortably
ViCTORIA is built from scratch, so you don't need any C++ library, only a compiler (min C++ 17).
You need CMake.
On Windows you can use Cygwin to install g++
and make
.
Then:
mkdir build
cd build
cmake..
make
In the future, I will provide binaries.
./ViCTORIA
UCI commands:
position starpos [moves move_list]
position fen your_fen [moves move_list]
go depth n
go infinite
: wait for the stop commandgo movetime t
: search for t millisecondsgo wtime t1 btime t2 [winc t3 binc t4]
: Whites hast1
ms on clock Blacks hast2
ms on clock. Whites increment their time byt3
ms and Blacks increment their time byt4
msgo nodes n
search for n nodes (In fact, the number of nodes explored will be a bit greater than n)set openings path
use the openings book at path (must be in UCI format)
Among other thing, the evaluation function takes into account:
- Material score
- Pieces/squares tables
- Different evaluation for end game (differents pieces/position tables, pawn value is slightly increased, etc...)
- Alpha-Beta pruning
- Magic bitboard for sliding pieces
- Iterative deepening
- Aspiration windows
- Move ordering
- Captures table
- Killer move heuristic
Transposition table with Zobrist's hashing function (1 000 000 positions ~ 50 Mb)- Openings book