Coiled 1.1 - Motor de ajedrez por Oscar Gavira.

Versión:

1.1

Fecha de publicación:

12 - Noviembre - 2021

Versiones disponibles:

Windows y Linux. 32&64 bit

Protocolo de comunicación:

UCI

Representación del tablero:

Mailbox. 8x8 unidimensional tipo entero.

Código abierto:

Ajedrez960 / FRC:

Si

Soporta redes neuronales:

Si. NNUE.

Tablas de finales:

Si. Syzygy. Por Ronald de Man. Gaviota. Por Miguel Ballicora. BitBases. Por daniel shawul.

Libro de aperturas:

Si. Formato SqlIte.

Lenguaje de programación:

C

Modo de juego:

Por tiempo: Convencional, Convencional e incremental, por movimiento. Profundidad. Mate. Infinito.

Otros:

Detección final del juego con las reglas de la FIDE. Incluyendo triple repetición y la regla de 50 movimientos. Tablas por material insuficiente.

Ponder:

No

Multihilo:

No

ELo estimado:

± 3300 NNUE. ± 2600 Interna.


- Tablas de finales disponibles en internet. http://oics.olympuschess.com/tracker/


Introducción

Coiled es un motor de ajedrez de protocolo UCI escrito en C. Es un programa de línea de comandos (Aplicación de consola), que no está diseñado para usarse directamente, sino a través de una interfaz de usuario o GUI, con capacidad para tratar el protocolo UCI, como: Cute Chess, Tarrasch, Banksia, c-chess-cli, Arena, Fritz...

En un principio el motor lo realicé en Visual basic .Net ya que la idea era unirlo a la parte gráfica (AjedreNet). Pero su rendimiento era bajo. Finalmente opté por hacerlo en el lenguaje de programación C.

Reconozco que me ha costado y me cuesta manejar C, ya que no he programado nunca en este formato, sobre todo el trato con cadenas (lo que sería un string). Sin embargo, la sintaxis es parecida a PHP (sintaxis que sí conozco) y casi todo el programa son funciones matemáticas y poco trato con cadenas.

En agosto del 2013, Coiled fue publicado por primera vez para el usuario final. Desde entonces, he ido realizando actualizaciones, depurando errores, incrementando su fuerza de ELO, etc.

Actualmente Coiled es capaz de jugar a la variante Chess960 de usar tablas de finales, soporta redes neuronales.

Para leer más sobre algunas de las técnicas utilizadas en Coiled, consulte la página Wiki de programación de ajedrez de Coiled. (inglés)


Código abierto

Ahora Coiled es de código abierto.

Quiero aportar mi pequeño granito de arena a la comunidad de investigación, que tanto me ha aportado a mi en la creación de Coiled.

Espero no infligir nada, no ofender a nadie y de ser así hablar del tema.

Toda ayuda y mejora sera bien recibida.

También quiero decir que es mi primer proyecto de código abierto.

El proyecto esta alojado en github.


Requisitos hardware

Requisitos mínimos para que funcione Coiled en Windows.


X86

X64

PROCESADOR

Intel Pentium Pro o Amd K7

Intel o Ahtlon con soporte MMX, SSE, SSE2

RAM

16MB Mínimo.

64MB Mínimo.


Redes neuronales (NNUE)

Actualmente Coiled utiliza la red neuronal de Fisherman.


Autor

Creado

Url


Instalación

Coiled es un motor y como tal no incluye de un tablero de ajedrez, solo calcula los movimientos. Es por eso que requiere de una parte gráfica para que el usuario final pueda jugar cómodamente. Existen diversos programas para esta tarea, pudiendo elegir el que más agrade al usuario. Algunos de ellos son:


Arena Chess Gui

Tarrasch Chess GUI

Lucas Chess GUI

PyChess GUI

ChessX GUI

Cute Chess GUI


Un pequeño listado de GUI


Consultar el manual de instalación de un motor de ajedrez en dicha GUI.


Clasificación ELO

Coiled-NNUE 0.7 ± 3050 ELO.

Coiled NNUE 0.8 ± 3250 ELO.

Coiled 1.0 ± 2590 ELO Evaluación interna.


Proceso de ELO Proceso de ELO


Opciones Uci

Hash

Para ajustar el tamaño de la tabla hash en MB.

PreventTimeout

Para evitar Timeout en un juego por tiempo. Valor en milisegundo. Descuenta X ms al tiempo por jugada. (por defecto: 50)

OwnBook

Para usar el libro de apertura propio del motor. (por defecto: false)

OwnBookLimit

Para limitar el numero de jugadas máximas obtenidas desde el libro de apertura. (por defecto: 8)

EndGamesTablebases

Seleccione entre la tablas de finales a usar: Ninguna, Syzygy, Gaviota y BitBases. (por defecto: Ninguna)

EndGamesTablebasesPath

Para asignar la carpetas/directorios de las tablas de finales. Syzygy, Gaviota y BitBases. (por defecto: Vacío)

EndGamesTablebasesCache

Asigna la cache de las tablas de finales. Gaviota y BitBases. (por defecto: 32MB)

EndGamesTablebasesLimit

Indica a partir de cuantas piezas busca en la tabla de finales. Syzygy y Gaviota. (por defecto: 5)

NnueUse *

Activa/desactiva el uso de redes neuronales. (por defecto: true)

NnuePath *

Para asignar la ruta de la red neuronal. (por defecto: red_neuronal.nnue)

NnueTechnology *

Indica el tipo de tecnología que utiliza la red neuronal para mayor compatibilidad con las CPU. AVX2 o SSE4.1 o SSE3 o SSE2. (por defecto: Auto detecta al más moderno)

UCI_Chess960 **

Activa/desactiva el modo de juego Chess960. (por defecto: false)

UCI_Chess960CastlingSign **

Indica si utiliza el enroque estándar del protocolo UCI o el de la GUI Arena (por defecto: UCI)


* Opciones disponibles, solo en la versión de 64bits.

** Si activa UCI_Chess960 y utiliza la GUI de Arena, en la opción UCI_Chess960CastlingSign debes seleccionar la configuración: O-O/O-O-O. Para un correcto funcionamiento con la GUI Arena.


Comandos adicionales no oficiales UCI

Existe la posibilidad de realizar un Perft. Esta opción sirve para descubrir fallos en la generación de movimientos.

Puedes realizar una búsqueda de todos los movimientos hasta la profundidad que se desee, con divide, escribiendo los siguientes comandos:


- Desde una posición en concreto:

position fen 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -

perft <X>

perftdiv <X>


- También se puede verificar el libro de aperturas escribiendo:

book


Estas opciones también están disponibles para el modo Chess960, solo has de activar el modo UCI_Chess960.


Términos de Uso

Coiled es gratuito y se distribuye bajo la licencia pública general GNU versión 3 (GPL v3). Básicamente, esto significa que eres libre de hacer casi exactamente lo que quieras con el programa, incluso distribuirlo entre tus amigos, hacer que esté disponible para descargarlo de tu sitio web, venderlo (ya sea solo o como parte de algún paquete de software más grande), o utilizándolo como punto de partida para un proyecto de software propio.

La única limitación real es que siempre que distribuya Coiled de alguna manera, siempre debe incluir el código fuente completo o un puntero al lugar donde se puede encontrar el código fuente. Si realiza algún cambio en el código fuente, estos cambios también deben estar disponibles bajo la GPL.

Para obtener todos los detalles, lea la copia de la GPL v3 que se encuentra en el archivo llamado License.


Agradecimientos

Estoy muy agradecido a las siguientes personas:


- A mi familia y amigos, que siempre están ahí para ayudar.

- A todos aquellos que han decidido compartir el código fuente de sus motores (Me han aclarado funciones y entendimiento de ellos).

- A la web CPW https://www.chessprogramming.org/ por todo el contenido sobre las técnicas aplicables a un motor ajedrez.

- A todos aquellos que han jugado con el motor y han publicado su experiencia y opiniones.

- A los archivos de rendimientos .epd de posiciones estratégicas tipo: WAC, IQ6, mes400... En especial a la web https://sites.google.com/site/strategictestsuite/

- A la web CCRL 40/4 , CEGT 40/4, Chess Engines Diary por realizar un torneo y darle una clasificación de ELO.

- A toda web que haya publicado una clasificación ELO o/y haya añadido un enlace a mi web.

- A Pedro Castro por ser el primero en probar y realizar un torneo. Autor de la web Motores de ajedrez hispanos y autor de DanaSah.

- A la web Motores de Ajedrez Hispanos por realizar su primer torneo y darle una clasificación de ELO en su primera versión.

- Alex Chess del foro talkchess, por el torneo realizado en chess.com

- Ronald de Man's, por el proyecto Fathom con el que poder implementar el uso de las tablas de finales Syzygy. https://github.com/jdart1/Fathom

- A Daniel Shawul, por el proyecto nnue-probe que ha sido de utilidad para implementar el uso de redes neuronales, utilizando una versión modificada del excelente código Cfish.

- Grupo de Stockfish. Aquí encontraras una gran variedad de redes neuronales.

Seleccionar la red neuronal descargada mediante las opciones UCI o renombrar el archivo a red_neuronal.nnue y colóquelo en el mismo directorio que Coiled_1.1_x64.exe