martes, enero 04, 2011

Ajedrez en Linux con Stockfish

Poquito a poco, quizas influenciado porque meti en el iphone varios juegos de ajedrez como stockfish (antes llamado glaurung) y abaia, así como visores de partidas como ChessDB y Chess Database, me puse a trastear algo con las aplicaciones para linux.

Parece ser que existen varios motores de ajedrez, es decir, programas que evaluan las posiciones y determinan los mejores movimientos. Con estos programas no se pueden jugar, se necesitan otros programas que muestran la interfaz GUI, ie, muestran las piezas y el tablero y nos permiten hacer los movimientos contra la 'máquina'. Pero ahí no queda eso, existe una tercera aplicación que pone de acuerdo al tablero y al motor, siempre que hablen el mismo idioma (protocolo).

Por tanto la interfaz como el motor tienen que implementar un protocolo de comunicación. A su vez existen muchos protocolos, pero dos destacan sobre los demas. El protocolo xboard, el primero que salio, y una mejora llamada UCI. Polyglot sirve para comunicar las aplicaciones que manejan el protocolo xboard con las que manejan el protocolo UCI.

Mi primera prueba fue utilizar la combinación xboard+polyglot+stockfish. Aunque hay otros motores, elegí stockfish porque hablan muy bien de él y lo comparan con los mejores motores comerciales.

En debian se puede descargar stockfish pero para sus versiones más recientes es necesario bajarse el codigo fuente y compilarlo por nosotros mismos.

Para descargarlo solo hay que visitar la web http://www.stockfishchess.com/download/, descomprimir el fichero que nos descargamos y luego nos vamos al directorio src para compilar con 'make all'. Esto nos genera un fichero ejecutable de nombre stockfish que nosotros situaremos en /usr/games/ con el nombre stockfish-version. Si nos hemos bajado la versión 1.9.1, sera stockfish-1.9.1 y si nos hemos bajado la 2.0 será stockfish-2.0. Hacerlo de esta forma nos permite posteriormente ir probando con diferentes versiones del motor.

El siguiente paso es instalar polyglot, la forma más sencilla es con 'apt-get install polyglot'. Una vez instalado es necesario crear los archivos ini con las opciones del motor. Para ver varios ejemplos entramos en /usr/share/doc/polyglot/examples. El archivo normal.ini es una buena opción. La copiamos dentro del directorio ~/.polyglot bajo el nombre del motor en cuestion, por ejemplo stockfish-1.9.1.ini y modificamos su contenido añadiendo las rutas del engine y el nombre del binario. Para otras opciones nada mas que tenemos que ver los ejemplos.

Sólo nos falta instalar xboard, que con 'apt-get install xboard' resolvemos el problema.

Para hace una prueba podemos teclear lo siguiente:

xboard -fd "/home/alidhaey/.polyglot/" -fcp "polyglot stockfish.ini" -debug

Este comando lanza xboard y el motor de juego stockfish, que usa polyglot para comunicarse con él. Para aquellos que se han atrevido a compilar varios versiones de stockfish, tenemos el siguiente comando, que tiene dos motores diferentes

xboard -fd "/home/alidhaey/.polyglot/" -fcp "polyglot stockfish-1.9.1.ini" -scp "polyglot stockfish-2.0.ini" -debug

Y para jugar 4 matches entre ambos motores, añadimos la opcion '-mg 4' y listo.

Como se puede ver, no es muy complicado de hacer. En otro momento con más tiempo me pongo escribir algo sobre scid, que es una base de datos tipo chessbase pero para linux.

No hay comentarios:

Publicar un comentario