Executando verificação de segurança...
4

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

GitHub: https://github.com/RyanMatheusRamello/stchess-app

Carregando publicação patrocinada...
2

Cara, muito legal! Gosto muito de iniciativas envolvendo o Xadrez (perco muito tempo jogando, inclusive, rs) e também gostaria de desenvolver algo relacionado durante meu processo de aprendizado em programação. A interface do xadrez com tecnologia da informação é um terreno muito fértil para ideias e experimentações. Testarei seu projeto quando assim que tiver a oportunidade, e quem sabe posso dar um feeback mais útil também, sobre o projeto em si.

Pessoalmente eu não uso o chess.com, então não sei que nível de acesso eles dão às suas ferramentas. O lichess, que é Open Source, é bem instigante nesse aspecto, dando acesso a várias APIs, datasets, etc. Não avaliei os limites da API, mas há uma, por exemplo, específica para análises, que imagino que poderia facilitar sua vida e tornar o projeto mais portável: https://lichess.org/api#tag/Analysis

A comunidade do lichess tem muitos desenvolvedores e no blog da plataforma aparecem postagens ocasionais de criações coisas bem interessantes com lichess (a maioria que me recordo envolvendo mais análise de dados, mas as possibilidades são muitas).

Abraço!

1

Eu dei uma olhada na api, ela possui apenas a avaliação de posição já analisadas previamente, poderia implementar para uma analise mais rapida e profunda.

Em questão a portabilidade, eu deixei compilado no github apenas o stockfish para linux, mas pode baixar no site do stockfish e utilizar em qualquer dispositivo

https://stockfishchess.org/download/