UCI (протокол)
UCI (англ. Universal Chess Interface) — свободно распространяемый коммуникационный протокол, позволяющий движкам шахматных программ взаимодействовать с их графическим интерфейсом[источник не указан 483 дня].
Был разработан и реализован Рудольфом Хубером (Rudolf Huber), автором программы SOS, и Стефаном Мейер-Каленом (Stefan Meyer-Kahlen), автором шахматной программы Shredder в ноябре 2000 года, и его можно рассматривать как серьёзного конкурента более старому и устоявшемуся коммуникационному протоколу Xboard/Winboard[источник не указан 534 дня].
В 2002 году Chessbase, компания, занимающаяся разработкой шахматного программного обеспечения и продающая Fritz, начала поддерживать UCI, который до этого момента поддерживался лишь несколькими интерфейсами и движками.
На на 2021 год хорошо известно о более чем 300 движках, которые непосредственно поддерживают UCI.
Дизайн
[править | править код]По своему замыслу UCI поручает некоторые задачи пользовательскому интерфейсу (то есть, слою представления), которые традиционно выполнялись самим движком (на бизнес-уровне).
Прежде всего, считается, что открытие должно обрабатываться именно пользовательским интерфейсом (UI), который просто выбирает ходы до тех пор, пока не исчерпает варианты, и только затем запускает движок для анализа полученной позиции. UCI не устанавливает никакого формата для хранения открытий на носителе. Разные пользовательские интерфейсы обычно имеют свои собственные проприетарные форматы.
Хотя UI также может взять на себя ответственность за управление таблицами окончаний, это, возможно, лучше реализовано в самом движке, поскольку наличие информации о таблицах окончаний может быть полезным для рассмотрения возможных будущих позиций.
Протокол UCI от Стефана Мейера-Калена в Shredder использует варьированную алгебраическую нотацию для ходов. Ход "нуль" от движка к GUI должен передаваться как 0000.
Примеры:
- e2e4
- e7e5
- e1g1 (короткая рокировка белых)
- e7e8q (на продвижение)
Функции
[править | править код]Параметр uci_limitstrength сообщает движкам с этой функцией играть на более низком уровне. Параметр uci_elo указывает рейтинг Эло, на который будет ориентироваться движок. Движки, которые реализовали uci_elo, включают Delfi, Fritz, HIARCS, Houdini, Junior, Rybka, Shredder, Sjeng и Stockfish.
Варианты
[править | править код]UCI был модифицирован для игры в некоторые варианты шахмат. Некоторые из них:
- Универсальный интерфейс шуги (USI) — диалект для шоги;
- Универсальный интерфейс китайских шахмат (UCCI) — диалект для сянци.
Каждый из этих протоколов может также определять варианты Портативной игровой нотации (PGN) и нотации Форсайта-Эдвардса (FEN). Говорится, что XBoard CECP требует гораздо меньших изменений для поддержки вариантов.