Hoy hay miles de diferentes motores de ajedrez para una variedad de plataformas de cómputo. La mayoría de ellas juegan ya un ajedrez razonablemente bueno y es claro que el problema de hacer un programa que juegue con cierta corrección ya es un asunto resuelto en la práctica. No por ello, la gente ha dejado de escribir este tipo de programas. Uno nuevo es precisamente del que hablaremos aquí: Nemorino.

Este es un programa de ajedrez que usa el protocolo UCI (Universal Chess Interface), lo que significa que puede ser usado por programas como Fritz, Chessbase, Chess Assistant y Arena, entre otros. El protocolo trabaja bajo la salida y entrada estándar de los programas y entonces el software se comunica con la interfaz gráfica para jugar vía comandos de texto. El módulo de ajedrez recibe las jugadas del jugador a través de este mismo protocolo y regresa la jugada que este último hace.

Además, Nemorino usa las tablas de finales (hasta 7 piezas, que juegan los finales perfectamente bien) y puede jugar también el ajedrez normal o la versión ajedrez 960, inventada por Bobby Fischer, en donde los jugadores ponen en otras posiciones las piezas en las respectivas primeras filas antes de iniciar una partida. Nemorino soporta múltiples núcleos y tablas de hash compartidas. Tiene posibilidades de hacer análisis múltiple de variantes.

Su autor, Christian Günther, dice que decidió escribir este programa porque quería entender cómo es que trabajaba un programa de ajedrez. Y la mejor manera de aprender es escribirlo desde cero, por uno mismo. Dice Günther que primero empezó con C# pero después de poco tiempo decidió que tenía ambiciones de aprender C++.

Un sencillo problema de ajedrez con un premio de 1 millón de dólares

El autor aclara que no se esperen nuevas ideas en su código, el cual es de código abierto, así como tampoco esperen los interesados código limpio y estructurado. Lo que sí encontrará quien le interese la programación de juegos es una combinación única de ideas explicadas en uno de los sitios más importantes sobre el tema del ajedrez por computadora.

Además del sitio mencionado, Günther usó estos enlaces, que siempre tienen mucha información sobre este particular tema:

http://talkchess.com/forum/index.php
http://stockfishchess.org/ (de donde copió la representación del tablero y los movimientos, así como algunas líneas de código, marcadas en los comentarios correspondientes dentro del propio código).

https://github.com/mAarnos/Hakkapeliitta

http://op12no2.me/toys/lozza/

http://www.chessprogramming.net/senpai/

Los blogs de Steve Maughan, Thomas Petzke y Jonatan Pettersson.

Cabe señalar que este programa juega alrededor de 3000 puntos de rating, es decir, más que el nivel del Campeón Mundial humano, Magnus Carlsen. Y sí, hay que tomarse este dato como interesante pero nada más. Aún así, estos módulos de ajedrez distan de ser invencibles.

Referencias: BitBucket, Nemorino

Enlaces Patrocinados
Comentarios