jtheardw / mantissa

Chess Engine
GNU General Public License v3.0
17 stars 0 forks source link

Mantissa

About

Mantissa is a young UCI-compatible chess engine written as a side project to learn both chess programming and also rust. Because of this, there are many things to improve both in terms of code organization and in terms of performance and correctness for Mantissa, but there are a lot of ideas packed in already.

Mantissa is named after the "significand" (or mantissa) in the floating point spec (and math in general). Ironically there are next-to-no floats in Mantissa's code.

Play Against Mantissa

Mantissa is hosted on lichess here: https://lichess.org/@/AKS-Mantissa

She accepts challenges from humans and bots in any time format except ultrabullet (bots aren't allowed to play ultra-bullet on lichess) or correspondence/unlimited (a few bad apples have clogged up Mantissa's match queue before by leaving once they were in a bad spot). Mantissa accepts both casual and rated challenges.

Strength

Lichess

As of this writing, Mantissa is currently between 2300 and 2550 lichess Elo in most formats and is slowly getting stronger. Lichess Elo does not seem to have a straightforward conversion into CCRL/CEGT/etc ratings, however, due to several reasons, most notably the wall of Stockfish Clones around 2600 Elo.

Rating Lists

All ratings listed her are for the 1CPU version.

Version CCRL Blitz (40/4) CCRL 40/40 CCRL 40/40 (4CPU) CEGT 40/4 CEGT 40/20 SPCC
3.7.2 3281 3238 ~3310 ~3186 3193 3283
3.3.0 3115 3093 3180 2993 3044 N/a
3.0.0 2999 2996 N/a 2877 N/a N/a
2.5.0 N/a N/a N/a N/a N/a N/a
2.1.x 2685 N/a N/a N/a N/a N/a

Features

Mantissa is UCI-compatible and can be used with most UCI GUIs (e.g. cutechess, arena). She supports both clock+inc time and x moves in y time formats.

In terms of search, Mantissa uses some form of the following ideas:

Board Representation

Handwritten Evaluation

NNUE

Search Basics

Selectivity

Move Ordering

Build

In order to build Mantissa, you'll need rust nightly > 1.63.0 installed. From there, you can use whatever build method is easiest for you. Typically, this is navigating to the directory of the project (in this case, Mantissa), and running RUSTFLAGS='-C target-cpu=native' cargo build --release.

Credit

Engine Design

I am not very good at chess and am still relatively new to chess programming, so many of the ideas implemented in Mantissa have been very much informed by or taken from those who have come before. I have to give a big thanks to the Chess Programming Wiki in general, which is an excellent jumping-off point for new chess programmers. While I have looked at a lot of engines recently, there are a few I will directly credit for having been particularly influential of my understanding of chess programming:

Data

NNUE

Other