Calvin is a UCI-compliant chess engine written in Java.
Currently playing on Lichess: https://lichess.org/@/Calvin_Bot
The table below tracks the strength of release versions, on the CCRL computer chess leaderboards and on Lichess.
Version | Release date | Lichess | CCRL Blitz |
---|---|---|---|
2.6.2 | 2023-11-12 | ~2300 | 2276 |
3.0.0 | 2023-12-02 | ~2380 | - |
3.1.0 | 2023-12-05 | ~2390 | - |
3.2.0 | 2023-12-09 | ~2400 | - |
- Bitboards of each piece type/colour are used for internal board representation.
- Legal move generation - pseudo-legal moves are not generated.
- Magic bitboards are used for sliding piece move generation.
- Iterative deepening search + negamax.
- Quiescence search to combat the horizon effect.
- Principal Variation Search
- Lazy SMP multi-threaded parallel search.
- Transposition table with Zobrist hashing.
- Null-Move Pruning
- Futility Pruning
- Reverse Futility Pruning
- Late Move Reductions
- Delta Pruning
- Material: basic material count, bishop pair bonus
- Piece square tables: asymettrical PSTs
- Tapered eval: evaluation tapered based on opening/middlegame/endgame phase
- Pawn structure: passed pawn bonuses, isolated/doubled pawn penalties.
- King safety: bonus for a pawn shield around the king, penalty for a pawn storm towards the king, penalty for open file around the king.
- Incremental updates: Evaluation is updated incrementally with make/unmake move
- Simple opening book loaded from a .txt file on startup. Can be disabled using the 'OwnBook' UCI option
- No endgame tablebases implemented yet.
- UCI protocol implemented with time management support.
- Calvin is connected to Lichess where he plays regularly in the engine pool: https://lichess.org/@/Calvin_Bot
Depth | Nodes | Speed |
---|---|---|
1 | 20 | PT0.000004S |
2 | 400 | PT0.000009S |
3 | 8902 | PT0.003844S |
4 | 197281 | PT0.025309S |
5 | 4865609 | PT0.123557S |
6 | 119060324 | PT1.363415S |
If you would like to contribute, or just talk about chess/chess programming, get in touch!