Skip to content

aywrite/arche

Repository files navigation

Arche

Andrew's Rust Chess Engine

About

This project is mostly indented for self-edification. The engine is not intended to be particularly novel or powerful.

The board is currently represented using only bitboards (with magic bitboards for move generation of sliding pieces).

Usage

The engine does not ship with any GUI. It currently implements a subset of the UCI protocol, you can use it with an open source GUI such as Arena.

The program does not accept posix style arguments it will immediately start in UCI mode.

TODO

[x] transposition table

  • null move pruning
  • killer moves
  • known issues
    • fail low (alpha) nodes are never stored in the transposition table, only exact and beta nodes
    • transposition table scores don't account for repetition or fifty move history, make_move_str clears the key for played moves as a workaround
    • hash table size is only configurable from code, there is no UCI Hash option, so every engine allocates the 500MB default
    • history array is fixed at 375 plies and ply is initialised to twice the full move number, so very long games can overflow it
    • en passant is hashed for every double pawn push, even when no capture is possible, which slightly reduces transposition hits
  • perft command from uci
  • fix magics to load on engine start
  • better evaluation
    • mobility in evaluation
    • evaluate drawn positions
    • special cases (bishop pair, open files etc)
  • winboard
  • Implement the rest of the UCI protocol
  • opening books

Acknowledgements

About

Basic rust chess engine

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages