A chess library for Gleam
Gleam 96.9%
JavaScript 2.9%
Erlang 0.1%
72 2 0

Clone this repository

https://tangled.org/gearsco.de/starfish
git@tangled.org:gearsco.de/starfish

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Starfish#

A chess library for Gleam!

TODO list#

  • Implement full legal move generation
  • Implement basic minimax search
  • Use zobrist hashing to cache positions when searching
  • Use piece tables to give more weight to certain squares in evaluation
  • Implement a system to test the performance of the generated moves
  • Maybe have some way to perform a search using iterative deepening?
  • Order moves before searching via heuristics to improve alpha-beta pruning
  • Continue searching past regular depth when captures are available (https://www.chessprogramming.org/Quiescence_Search)
  • Incrementally update game information such as zobrist hash, material count, and other evaluation information
  • Improve endgame play by encouraging the king to the centre of the board and encouraging pawns to promote
  • Search deeper for certain "more interesting" moves: https://www.chessprogramming.org/Extensions
  • Improve static evaluation using pawn structure
  • Use an opening database to improve opening play
  • Cache transposition table across searches
  • Precalculate various pieces of data to avoid calculations when searching or evaluating (e.g. distance to edge)
  • Use bitboards for efficient calculations
  • Use null move pruning to reduce search space: https://www.chessprogramming.org/Null_Move_Pruning
  • Use late move reductions to reduce search space: https://www.chessprogramming.org/Late_Move_Reductions