Только сейчас увидел проект nanochess. Óscar Toledo G. в 2009 портировал свою миниатюрную версию шахмат с языка C на Javascript. Код не менялся с 2009 года. Весит в разных UI версиях около 2 кб. Умели же раньше. Для понимания: в этот кусок кода входит абсолютно все: движок с выбором лучшего хода, логика валидации шахматных ходов, en passant, рокировка, превращение пешки в фигуру, выбор фигуры и выбор поля, отрисовка поля и фигур. Честно говоря я в шоке. Для сравнения я посмотрел chess.js там валидация и генерация ходов. 71 кб, и chessground.js тут только UI доски и фигур. 29 кб. При этом сами библиотеки приятные, ничего против не имею, сам с удовольствием пользуюсь. Просто это реально много всего надо учесть.
Перенес этот движок к себе в шахматные задачки, как раз не хватало чего-то, что будет делать ответные ходы в задачах. Нести целый стокфиш или что-то подобное совсем не хотелось. Он довольно прилично играет. У меня, например, получилось его обыграть только один раз из 10. Попробуйте вы