Skip to content

ColonelPhantom/fe_chess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

fe_chess

A currently 0x88 mailbox-based chess engine in Rust

Installation

fe_chess installs like a normal cargo crate: clone the repo and cargo build --release. The executable will be in target/release.

It can also be ran with cargo run --release or the binaries on the Releases page.

Usage

fe_chess currently only has a simple built-in shell that is not compatible with uci. Type help to get a list of command. (UCI not functional).

Changelog

  • Add late-move-reduction to search moves that are considered worse by move ordering to a lesser depth
  • Reimplement principal variation based on the transposition table
  • Add quiescence move ordering
  • Increase standard search depth to 6
  • Start testing opening position
  • Better move ordering
    • Was only SEE
    • Added: static eval
    • Added: check
    • Give TT move priority bonus for DRY coding
  • Make score i16 instead of i32
  • Remove PV from search
  • Implement node counting
  • Add beta and static eval to transposition table
  • Rewrite tt.get usage
  • Implement basic SEE-based move ordering
  • Rewrites mostly related to the transposition table
  • Make search use table hits of which the outcome is decided (Win, Draw, Loss)
  • Remove previous PV from search
  • Do not double search at depth 1 in the iterative deepening
  • Delta prune in quiescence when alpha is game-ending
  • Implement hashtable rehashing to improve performance under pressure
  • Implement static exchange evaluation
    • Quiscence search does not consider a move with see < 0
    • Quiescence search does not consider moves where standing pat + SEE + a margin is below alpha
  • Improve eval() significantly by evaluating mobility
  • Implement a transposition table to speed up search significantly
    • Implement zobrist hashing
  • Implement delta pruning
  • Store scores in a specialized struct
  • Make search handle ending the game (it now can mate!)
  • Let think output score and pv
  • Initial release