Interfaz Universal de Ajedrez
lenguaje informático que permite la comunicación entre un motor de ajedrez y una interfaz de usuario
From Wikipedia, the free encyclopedia
Una interfaz universal de ajedrez (UCI) es un protocolo de comunicación abierto que permite a los motores de ajedrez comunicarse con las interfaces de usuario.[1][2]
Historia
En noviembre de 2000, se publicó el protocolo UCI. Diseñado por Rudolf Huber y Stefan Meyer-Kahlen, el autor de Shredder, UCI compite con el antiguo "Protocolo de comunicación del motor de ajedrez" introducido con XBoard/WinBoard.
En 2002, ChessBase, la compañía de software de ajedrez que comercializa Fritz, comenzó a respaldar el protocolo UCI, que anteriormente solo contaba con algunas interfaces y motores.
A partir de 2007, se sabe que más de 100 motores son compatibles directamente con UCI, incluyendo a los mejores motores disponibles en el momento.[3][4][5]
- Stockfish 12 analizando una posición sin interfaz gráfica de usuario, mostrando jugadas a través del protocolo UCI en modo texto.
- Stockfish 12 analizando la misma posición de la izquierda, mostrando análisis en una interfaz gráfica de usuario a través del protocolo UCI.
Diseño
Por diseño, UCI asigna algunas tareas a la interfaz de usuario (es decir, la capa de presentación) que tradicionalmente han sido manejadas por el propio motor (en la capa empresarial).[cita requerida]
En particular, generalmente se espera que la interfaz de usuario maneje el libro de aperturas, simplemente seleccionando movimientos para jugar hasta que esté fuera del libro, y solo luego iniciando el motor para el cálculo en la posición resultante. UCI no especifica ningún formato en disco para el libro de apertura. Las diferentes interfaces de usuario suelen tener sus propios formatos propietarios.[cita requerida]
Si bien la interfaz de usuario también puede asumir la responsabilidad de manejar las bases de tablas de finales, esto se maneja mejor en el propio motor, ya que tener información de la base de tablas puede ser útil para considerar posibles posiciones futuras.[6]
El protocolo UCI de Stefan-Meyer Kahlen en Shredder utiliza una notación algebraica larga para los movimientos. Un "nullmove" del motor a la GUI debe enviarse como 0000.[7]
- Ejemplos
Funciones
El parámetro uci_limitstrength le dice a los motores con esta característica que jueguen a un nivel más bajo.[8] El parámetro uci_elo especifica la clasificación Elo a la que el motor apuntará a jugar.
Variantes
La UCI ha sido modificada para jugar algunas variantes de ajedrez. Algunos de estos son:[9]
- Universal Shogi Interface (USI), variante para el shogi;[10]
- Universal Chinese Chess Interface (UCCI), variante para el xiangqi.[11]
Cada uno de estos protocolos también puede definir variantes de PGN y FEN. Se dice que XBoard CECP requiere muchos menos cambios para admitir variantes.[9]