Pitch: Analisador de partidas de xadrez
Sem dúvidas o principal serviço para analisar suas partidas de xadrez é o do chess.com, o site possui uma interface amigável e fácil de entender e usar, a sua análise é completa e detalhada, mas contas gratuitas só podem analisar uma vez por dia
Você pode pagar para obter analises ilimitadas, mas para jogadores que jogam xadrez apenas como uma forma de distração pode não ser muito vantajoso, fazendo muitos optarem por utilizar contas segundarias ou até mesmo a alternativa gratuita lichess.
Eu atualmente estou criando um bot para o discord, e queria adicionar a possibilidade de jogar partidas de xadrez diretamente pelo bot, mas não fico contente apenas com esse jogo e para me diferenciar decidi implementar também um sistema de análise para partidas de xadrez inspirado no chess.com
O analisador consegue obter, em geral, uma precisão bem proxima ao resultado do site inspirado, além de dar uma descrição para o lance e uma precisão total e por peça que cada jogador obteve.
Explicação de como o algoritmo funciona
Para obter uma análise da posição de xadrez é utilizado o motor stockfish, ele me retorna os melhores lances da posição com uma avaliação, quanto maior a avaliação que ele der significa maior vantagem para o jogador.
O algoritmo então utiliza o resultado obtido pelo stockfish e compara com o movimento feito pelo jogador, retornando uma avaliação para esse lance que é dividida em várias categorias explicadas no github informado no final desse post.
O algoritmo, apos identificar o tipo de lance (se é bom ou ruim), passa a tentar identificar a razão para o lance ser bom ou ruim passando por um detector tático, que percorre os melhores lances que o stockfish retornou tentando detectar algum tema, como peão passado, dobrados ou caso perdeu a chance de atacar alguma peça inimiga
Caso nenhum tema seja detectado, ele usara a descrição padrão do movimento
Observações
O algoritmo foi escrito utilizando javascript, portanto, é necessário ter instalado para conseguir executar, a versão testada foi apenas a 18.3.0, versão instalada na minha vps, não garanto compatibilidade com outras versões mais novas ou antigas
O algoritmo pode ser melhorado, buscarei fazer isso no meu tempo livre.
O stockfish está compilado para o Linux, especificamente para debian 10, o primeiro parâmetro da classe Analysis é o caminho para o stockfish ou qualquer motor de xadrez compatível com uci.
O arquivo index.js contem um servidor websocket para integrar com algum sistema, é um servidor simples e recomendo modifica-lo
O arquivo _template.js é um arquivo que eu utilizei para gerar um pgn com comentários para seu usado no chess.com, para utiliza-lo basta criar um arquivo chamado game_play.pgn
com o conteudo sendo o pgn da partida, ao executar será gerado o arquivo generate.pgn
que pode ser usado na análise do chess.com para uma melhor visualização. Utilizei para testar o sistema e não precisar criar minha própria interface antes do analisador
Se puderem testar e dar suas opiniões eu agradeceria, eu adoraria receber criticas sobre o sistema e como eu posso melhora-lo