Stockfish


Stockfish es un motor de ajedrez de código abierto. Será nuestro rival en las partidas con ChessPU, encargándose de dar respuesta a nuestros movimientos y de gestionar el juego en general. En Wikipedia hay una pequeña descripción de Stockfish que permite conocer algunos detalles sobre él. Si queremos profundizar, podemos acceder al proyecto oficial en GitHub.

Inicialmente, mientras estemos en el proceso de montaje del tablero, lo más cómodo será tenerlo instalado en nuestro Windows. De este modo podremos gestionarlo todo desde nuestro PC cómodamente. Más adelante ya abordaremos la instalación en Raspberry, lo que nos permitirá prescindir del ordenador y que el tablero sea completamente autónomo.

Instalación


En primer lugar descargaremos Stockfish desde el área de descarga de la web oficial. En mi caso he optado por la versión más compatible, no la más rápida.

Página de descarga de Stockfish
Página de descarga de Stockfish

No se trata de un instalador ejecutable, sino de un fichero .zip que tendremos que desempaquetar en una carpeta de nuestra elección. Yo lo he hecho en C:\Stockfish, quedando finalmente instalado en la carpeta C:\Stockfish\stockfish_14_win_x64_popcnt.

Stocksfish instalado (sencillamente desempaquetado)
Stocksfish instalado (sencillamente desempaquetado)

Nociones


Stockfish utiliza UCI (Universal Chess Interface) para comunicarse. Dispone de la mayoría de las opciones UCI descritas en este documento que podemos descargar.

Para utilizarlo e interactuar con él de forma directa, hay que lanzar el ejecutable (en mi caso stockfish_14_x64_popcnt.exe), lo que abrirá una ventana de consola en la que podremos teclear los distintos comandos UCI para enviar intrucciones o solicitar información a Stockfish.

Dejando a un lado las opciones de configuración y otras cuestiones, cabe destacar que, cada vez que queramos obtener un movimiento de Stockfish, tendremos que proporcionarle la disposición completa del tablero. De hecho, en la descripción oficial del UCI se dice de forma explícita que “Before the engine is asked to search on a position, there will always be a position command to tell the engine about the current position”.

Y el modo más sencillo de comunicarle el estado del tablero es utilizando la notación FEN (Forsythe-Edwards Notation).

Stockfish en ejecución en Windows
Stockfish en ejecución en Windows

En la imagen de arriba se puede ver cómo en la primera línea señalada se le indica a Stockfish la situación actual de juego

    position fen rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2

En la segunda línea destacada se le pide un movimiento a Stockfish (limitado a 250 segundos de análisis).

    go movetime 250

Y el resultado nos aparece en la línea señalada con la flecha roja al final, indicando con “bestmove” el que Stockfish considera el mejor movimiento y mostrando con “ponder” la que probablemente sea la respuesta del contrincante.

    bestmove d7d6 ponder d2d4

Otra cosa destacable es que el comando “d” (que no he encontrado en UCI) permite mostrar de forma gráfica la situación actual del juego.

Resultado de mandar 'd' a Stockfish
Resultado de mandar 'd' a Stockfish


Creación de esta entrada: Benissa
Última actualización: Miércoles 21/10/2021 Benissa