UCI (универсальный шахматный интерфейс)
Описание UCI:
* Движок – exe файл, консольное или обычное приложение windows.
* Связь осуществляется через стандартный ввод/вывод простыми текстовыми командами.
* Загруженный движок должен ждать команду от GUI - "isready" или команду "setoption", чтобы инициализировать свои параметры. Процесс начальной загрузки должен быть максимально быстр.
* Движок должен уметь обрабатывать входящие данные от stdin, даже при размышлении.
* Все команды, которые получает движок, заканчиваются '\n '. Также все команды, которые GUI получает от движка, должны заканчиваться '\n '.
* Движок не должен начинать играть или рассчитывать без команды “go”.
* Движок не должен совершать ход на внутренней шахматной доске без запроса от GUI, т.е. движок не должен выполнять лучший ход после поиска.
* Прежде, чем движок начнет поиск в позиции, он должен принять текущую позицию.
* Все дебютные библиотеки сделаны через GUI,
Но имеется опция для движка для использования собственной ДБ (опция "OwnBook", см. ниже)
Формат хода:
Формат хода использует длинную алгебраическою нотацию:
Примеры: e2e4, e7e5, e1g1 (короткая рокировка), e7e8q (превращение пешки)
Команды от GUI к движку:
* UCI
Сообщить движку об использовании протокола uci.
После команды “uci” движок посылает команды о себе и настройках.
Т.е. передает команду "option" с параметрами.
После этого движок должен послать "uciok".
Если uciok не послан в пределах некоторого периода времени, то движок будет выгружен!
* DEBUG [on | off]
Переключить способ отладки движка вкл. и выкл.
По умолчанию этот параметр должен быть выключенным!
В этом режиме движок может посылать дополнительную информации оболочке.
* ISREADY
Команда используется для синхронизации движка и оболочки.
После ее посылки оболочка ждет готовность движка.
Этой команде нужно всегда отвечать "readyok".
* SETIPTION NAME <id> [value <x>]
Передается движку, когда пользователь хочет изменить внутренние настройки движка. Пример:
setoption name Hash value 12
setoption name NalimovCache value 4
setoption name OwnBook value true
setoption name NalimovPath value C:\Tbase
setoption name Ponder value false
setoption name book_during_analysis value true
setoption name book_learning value false
* POSITION [fen <fenstring> | startpos ] moves <move1> .... <movei>
Передать позицию.
* GO
Дать команду на вычисление текущей позиции.
Имеется множество команд, которые могут следовать за этой командой.
* wtime <x>
Белые x мсек на часах
* btime <x>
Черные x мсек на часах
* winc <x>
приращение на ход в мсек, если x> 0
* binc <x>
приращение на ход в мсек, если x> 0
* movestogo <x>
Имеются ходы x к следующему контролю,
Послано если x> 0.
* depth <x>
Искать на x глубину.
* nodes <x>
Искать x узлов.
* mate <x>
Искать мат.
* movetime <x>
Искать точно x мсек.
* infinite
Поиск до команды "stop". Не выходите из поиска без выключения этого режима!
* STOP
Остановка поиска.
Не забывайте команду "bestmove" по окончании поиска!
* PONDERHIT
Пользователь делает ожидаемый ход.
* QUIT
Выйти из программы.
Вольный перевод by bankuss 2004