Skip to content

codedeliveryservice/Reckless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reckless – Bitboard Chess Engine

Build and Test

Reckless is a UCI chess engine written in Rust as a personal project.

Guided by the insights from the chess programming community, it fearlessly combines established concepts, as the name suggests.

Features

Board representation

  • Bitboards with Little-Endian Rank-File Mapping
  • Magic Bitboards for sliding piece attacks
  • Copy-Make approach

Move generation

Search

  • Fail-Soft Alpha-Beta
  • Principle Variation Search
  • Iterative Deepening
  • Aspiration Windows
  • Transposition Table
  • Quiescence Search

Selectivity

Pruning

  • Reverse Futility Pruning
  • Null Move Pruning
  • Futility Pruning
  • Late Move Pruning
  • Delta Pruning

Reductions

  • Late Move Reductions
  • Internal Iterative Reductions

Extensions

  • Check Extensions

Move ordering

  • Hash Move
  • MVV-LVA
  • Killer Heuristic
  • History Heuristic

Evaluation

  • NNUE
  • Architecture: (768 -> 128)x2 -> 1
  • Activation Function: CReLU
  • Quantization: i16 (256/64)
  • Trained on original data generated entirely through self-play

Rating

Version CCRL Blitz CCRL 40/15 Release Date
Reckless v0.4.0 2933 +/- 19 [#151] 2929 +/- 21 [#158] Dec 13, 2023
Reckless v0.3.0 2617 +/- 20 [#229] 2615 +/- 21 [#251] Nov 6, 2023
Reckless v0.2.0 2358 +/- 19 [#333] Oct 7, 2023
Reckless v0.1.0 2020 +/- 20 [#471] May 16, 2023

Getting started

Precompiled binaries

You can download precompiled builds from the GitHub Releases page.

  • x86_64-v1: Slowest, compatible with any x86-64 CPU.
  • x86_64-v2: Faster, requires support for POPCNT, SEE3, etc.
  • x86_64-v3: Even faster, requires support for AVX2, etc.
  • x86_64-v4: Fastest, requires support for AVX512.

For detailed information on the specific features needed for each level, refer to the x86-64 microarchitecture levels Wikipedia page.

Building from source

To build the engine from source, make sure you have Rust 1.65 or a later version installed. If you don't have Rust, follow the official Rust installation guide.

Then, compile the engine using Cargo:

cargo rustc --release -- -C target-cpu=native

Alternatively, you can use the provided Makefile:

# Build for the current CPU architecture
make
# Build release binaries for all microarchitecture levels
make release

Usage

Reckless is not a standalone chess program but a chess engine designed for use with UCI-compatible GUIs, such as Cute Chess or ChessBase.

Alternatively, you can communicate with the engine directly using the UCI protocol.

Custom commands

Along with the standard UCI commands, Reckless supports additional commands for testing and debugging:

Command Description
perft <depth> Run a perft test to count the number of leaf nodes at a given depth.
bench <depth> Run a benchmark on a set of positions to measure the engine's performance.
eval Print the static evaluation of the current position from white's perspective.

Contributing

Contributions are welcome! If you encounter issues or have suggestions for improvements, please open an issue or submit a pull request.

Acknowledgements

  • Chess Programming Wiki: A crucial resource that greatly contributed to the project's foundation.
  • Cute Chess: The primary testing tool.
  • Open source chess engines, like Stockfish, Ethereal, Berserk, and numerous others, for serving as inspiration and providing ideas that fuel development.
  • Many thanks to the CCRL team and all chess engine testers for their valuable contributions.

License

This project is licensed with the MIT license.