···11-# starfish
11+# Starfish
2233-[](https://hex.pm/packages/starfish)
44-[](https://hexdocs.pm/starfish/)
33+A chess library for Gleam!
5466-```sh
77-gleam add starfish@1
88-```
99-```gleam
1010-import starfish
1111-1212-pub fn main() -> Nil {
1313- // TODO: An example of the project in use
1414-}
1515-```
1616-1717-Further documentation can be found at <https://hexdocs.pm/starfish>.
1818-1919-## Development
2020-2121-```sh
2222-gleam run # Run the project
2323-gleam test # Run the tests
2424-```
55+### TODO list
66+- [x] Implement full legal move generation
77+- [x] Implement basic minimax search
88+- [x] Use zobrist hashing to cache positions when searching
99+- [x] Use piece tables to give more weight to certain squares in evaluation
1010+- [ ] Continue searching past regular depth when captures are available (https://www.chessprogramming.org/Quiescence_Search)
1111+- [ ] Order moves before searching via heuristics to improve alpha-beta pruning
1212+- [ ] Improve static evaluation using pawn structure
1313+- [ ] Improve endgame play by encouraging the king to the centre of the board and encouraging pawns to promote
1414+- [ ] Incrementally update game information such as zobrist hash, material count, and other evaluation information
1515+- [ ] Implement a system to test the performance of the generated moves
1616+- [ ] Maybe have some way to perform a search using iterative deepening?
1717+- [ ] Use an opening database to improve opening play
1818+- [ ] Cache transposition table across searches
1919+- [ ] Search deeper for certain "more interesting" moves: https://www.chessprogramming.org/Extensions
2020+- [ ] Precalculate various pieces of data to avoid calculations when searching or evaluating (e.g. distance to edge)
2121+- [ ] Use bitboards for efficient calculations