# ChessV

ChessV (short for Chess Variants) is a free computer program designed to play many chess variants. ChessV is an open-source, universal chess variant program with a graphical user-interface, sophisticated AI, support for opening books and other features of traditional chess programs. The developer of this program, Gregory Strong, has been adding more variants with each release of ChessV. Over 100 chess variants are supported, including the developer's few own variants and other exotic variants, and can be programmed to play additional variants. ChessV is designed to be able to play any game that is reasonably similar to chess. ChessV is one of only a few such programs that exist. The source code of this program is freely available for download as well as the executable program.
As of ChessV 0.93, it is possible to customize the variants it supports. Of all chess variants supported, two of the most-played variants are probably Fischer Random Chess and Grand Chess.
ChessV is capable of playing:
* 2 variants on 6×6 squares
* 17 variants on 8×8 squares
* 15 variants on 10×8 squares
(including 10 Capablanca Chess variants)
* 15 variants on 10×10 squares
* 3 variants on 12×8 squares
Some of the provided variants can be customized in their details. While users can create custom variants with ChessV 0.93, it needs to be recompiled, which is tedious when programming. ChessV 2.0+ fixes this, using a scripting language. While the pieces in a custom variant have to be chosen from a limited list, this allows ChessV to play hundreds or thousands of variants of each game it directly supports.

## Engine features

* Searching: Alpha-Beta Nega-Max Principal variation search, Iterative deepening, Null-move Forward Pruning, Static Exchange Evaluation (SEE).
       Search Extensions: check extension, recapture extension, null-move threat extension, PV extension, Futility Pruning and Razoring, History Heuristic, Killer-move heuristic.
* Evaluation: Piece-square tables, Pawn structure evaluation, Mobility evaluation, King safety, King tropism, Lazy evaluation.
* Hash Tables: Transposition table, Pawn structure table, Evaluation cache, Repetition detection.
Since ChessV 2.2, the engine can be set to adjust to their player's needs:
* Transposition Table Size can be adjusted.
* The engine can be allowed for variance of play.
* Weaken the chess engine to be human-beatable even for beginners.

## Current limitations

* No games with more than two players are supported.
* No games with randomness or hidden information are supported.
* No ability to edit the board mid-game is provided.

## Supported games

ChessV supports many variants. Other than chess, it supports:
* Alice Chess, Almost Chess, Archchess, Berolina Chess, Bird's Chess, Capablanca Chess and its variants, Carrera's Chess, Chess480, Chess and a Half, Chess with Different Armies, Courier Chess, Cylindrical Chess, Diagonal Chess, Diamond Chess, Doublemove chess, Embassy Chess, Eurasian Chess, Extinction Chess, Fischer Random Chess (Chess960), Great Chess, Great Shatranj, Grand Chess, Grotesque Chess, Janus Chess, Kinglet, Ladorean Chess, Legan's Game, Los Alamos Chess, Makruk, Omega Chess, Opulent Chess, Roman Chess, Royal Court, Shatranj, Shatranj Kamil, Sosarian Chess, Switching Chess, TenCubed Chess, Three Checks Chess, and more infamous variants.
Since ChessV can be programmed to play additional variants, here are a few examples:
* Almost Chess, Enep, Butterfly Chess, Nightrider chess and Janus Kamil.

## Syntax

ChessV code is saved as the extension ".cvc" (ChessV Code). Its syntax is reasonably similar to C#. The scripting language is mostly stable, but creating new rules for new pieces is not supported yet. Here is an example of "Almost Chess" in .cvc code:

## Competitions

ChessV software won third place in a 2004 Gothic Chess Computer World Championship.