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