Motor de Ajedrez Roque
Novedades
29/07/2014. Publicado MiniRoque 2.1. Corrección de errores, optimizaciones en la generación, evaluación y ordenación de movimientos.
08/06/2014. Publicado MiniRoque 2.0. Corrección de errores, mejoras en la administración del tiempo, la ordenación de movimientos y en la función de evaluación, y reescritura de algunos módulos del código, incluido el algoritmo alfa-beta.
12/09/2012. Publicado Roque 2.1. Incluye la versión 1.1 del libro de aperturas y algunas mejoras respecto a Roque 2.0.
12/09/2012. Publicada la versión 1.1 del libro de aperturas.
11/09/2012. Publicado MiniRoque 1.2. Mejoras en la administración del tiempo en los modos de juego controlados por tiempo.
02/09/2012. Publicado Roque 2.0. Incluye la versión 1.0 del libro de aperturas y notables mejoras respecto a Roque 1.1.
02/09/2012. Publicada la versión 1.0 del libro de aperturas.
02/09/2012. Publicado MiniRoque 1.1, que corrige algunos fallos de la versión anterior.
07/08/2012. Publicado MiniRoque 1.0, una versión mínima y reducida de Roque.
Descripción
Roque es un motor de ajedrez basado en el protocolo xboard. Para comprender mejor qué es Roque debemos tener presente que un programa de ajedrez se puede dividir en dos partes bien diferenciadas:
Una parte sería la interfaz gráfica de usuario (GUI), encargada de mostrar el tablero y los relojes, mover las piezas con el ratón, mostrar las jugadas y el razonamiento que va siguiendo el programa, etc. Existen numerosas interfaces para los programas de ajedrez, muchos de ellos gratuitos, siendo Winboard (de Tim Mann) uno de los más sencillos y extendidos para el sistema operativo Windows.
La otra parte principal de un programa de ajedrez es el motor (en inglés, engine), que se encarga de realizar todo el razonamiento de los movimientos que va a realizar el programa. Es, por tanto, la parte más compleja de un programa de ajedrez y la que determina su fuerza de juego.
Debido a que la interfaz y el motor son dos partes totalmente independientes, debe existir un lenguaje que permita establecer la comunicación entre ambas. A este lenguaje se le denomina protocolo. El primer protocolo que surgió para los programas de ajedrez fue el protocolo xboard (diseñado por Tim Mann para su interfaz gráfica y el motor GNUChess). De esta forma, se pueden utilizar en una misma interfaz gráfica varios motores que se comuniquen a través del mismo protocolo o bien utilizar un motor en diferentes interfaces. Por ejemplo, Roque se puede utilizar en la interfaz Winboard para jugar contra un jugador humano o se puede utilizar en el programa Arena para que compita contra otros motores de ajedrez.
Roque en el programa Arena
Roque con la interfaz Winboard
Características técnicas
Las características técnicas del motor Roque son las siguientes:
Protocolo xboard, versión 1.
Representación del tablero: vector de 64 enteros.
Generador de movimientos: sencillo, basado en tablero de 8x8 y con ordenación de movimientos mediante la técnica MVV/LVA e historial heurístico.
Función de búsqueda: basada en el algoritmo alfa-beta con búsqueda de la variante principal (PVS), y búsqueda búsqueda quiescente para tratar el efecto horizonte.
Ventana de aspiración.
Tablas de transposición (hash).
Poda por inutilidad (futility pruning).
Función de evaluación basada en material, tablas de bonificación por posición de las piezas, estructuras de peones, seguridad del rey y otras bonificaciones.
Evaluación rápida (lazy evaluation).
Modo de reflexión (pondering) y modo análisis.
Movimiento rápido basado en la variante principal (experimental).
Libro de aperturas.
Detección del final de la partida aplicando las reglas de la FIDE, incluyendo triple repetición y la regla de los 50 movimientos.
Comando Edit (editar posición).
Lenguaje de programación: C
Modos de juego: controlado por tiempo (convencional, incremental y tiempo fijo por movimiento) o por profundidad fija.
Elo estimado: ~1825.