Potato Chess 1.1.0
Chess engine written in C++ and compiled to Web Assembly
Written in C++ and compiled to web assembly using [Emscripten](https://github.com/emscripten-core/emscripten)
Compiled using the command `em++ -O3 -lembind -o engine.js *.cpp -fno-signed-zeros -freciprocal-math -ffp-contract=fast -ffinite-math-only -ffast-math`
Yes, I know options like `-ffast-math` will break floating point arithmetic, but none of them are used in my code and I see a small but real performance increase by using them
Can also be used as a desktop app (electron) for maximum performance
144-long array board representation (because I don't understand bitboards)
22 million nodes per second move generator
Keeps track of pinned pieces and the direction they are pinned
Keeps track of squares attacked by the opponent to prevent king from moving there
Tapered evaluation (uses game phase to "weigh" the importance of midgame score to endgame score) with piece tables
Minimax search with Alpha-Beta pruning
Move ordering is used to guess the strength of moves to speed up AB pruning
Syzygy endgame tablebase (powered by [Lichess](https://github.com/lichess-org/lila-tablebase))
Move ordering is used to guess the strength of moves to speed up AB pruning
Syzygy endgame tablebase (powered by [Lichess](https://github.com/lichess-org/lila-tablebase))
Comments
Post a Comment