,,
,/ \
/ 'O |
( < _|
\___/
/ \
/_____\
/_______\
(________)
FollyChess
FollyChess is a UCI-compatible chess engine written in C++23.
Ensure your environment is set up with the following:
-
A C++23 compiler such as Clang 17+.
To build the optimized UCI command-line interface, run:
bazel build --compilation_mode=opt //cli:follychessThe binary will be written to bazel-bin/cli/follychess.
To play against FollyChess, install a UCI-compatible GUI such as:
Configure the GUI to point to the bazel-bin/cli/follychess executable.
You can interact with the engine directly via standard input for debugging or scripting.
$ bazel-bin/cli/follychess
,,
,/ \
/ 'O |
( < _|
\___/
/ \
/_____\
/_______\
(________)
FollyChess
d
8: r n b q k b n r
7: p p p p p p p p
6: . . . . . . . .
5: . . . . . . . .
4: . . . . . . . .
3: . . . . . . . .
2: P P P P P P P P
1: R N B Q K B N R
a b c d e f g h
w KQkq - 0 1
position startpos moves e2e4 e7e5
d
8: r n b q k b n r
7: p p p p . p p p
6: . . . . . . . .
5: . . . . p . . .
4: . . . . P . . .
3: . . . . . . . .
2: P P P P . P P P
1: R N B Q K B N R
a b c d e f g h
w KQkq e6 2 2
The project includes several helper scripts for development and testing.
| Script | Description | Example |
|---|---|---|
| benchmark | Runs a single benchmark and updates the results in the benchmarks directory. | ./benchmark attacks |
| perft | Runs all Perft tests to verify move generation. | ./perft |
| watch | Watches the directory for file changes. Automatically recompiles (fastbuild) and runs unit tests on save. | ./watch |
If you prefer not to use the watch script, you can run tests directly via Bazel:
bazel test //...