• Сергей Козлов. Ежик в тумане

  • Декілька нових доробків вашого покірного слуги


  •   через ОЗУ
    CECP (Chess Engine Communication Protocol), в просторечии - Winboard protocol
      версия 1
      версия 2
    CXBoard protocol - расширение WB для китайских шахмат. Здесь описание (на английском)
    UCI protocol
      версия 1
      версия 2
    USI protocol (Universal Shogi Interface) - базируется на UCI.
    UCCI protocol (Universal Chinese Chess Interface) - базируется на UCI.
    Chessbase protocol
    MCS (Millennium Chess System)[???] - чрезвычайно скудная информация, одни только упоминания о... Существуют адаптеры:
      PolyGlot - подключение UCI-движков к WinBoard-интерфейсу.
      Wb2Uci - подключение движков Winboard к интерфейсу UCI.
      через порты
    Auto232 - нуль-модем через COM-порты. (Попробовать через виртуальные порты: null-modem emulator com0com)
      посредством сети
    ??? - для LAN
    ICS protocol
      через файл
      Автор GUI NewBoard (исчадие ADA: "It is written in Ada 95 language", доступна с исходными текстами) единственный (насколько мне известно) догадался реализовать этот вполне очевидный способ: NewBoard has a protocol like WinBoard but simpler. It doesn't use WinBoard's pipes methold but uses simple text files (Протокол NewBoard похож на WinBoard, но проще. Он не использует именованных каналов, но использует простые текстовые файлы). Идея выглядит интересной - во избежание недоразумений с только что упомянутыми каналами (pipes), с разрядностью (WinBoard requires Win32 engines) и прочих, о которых мне пока не известно.
      You can set the file's names in NewBoard setup but it is normaly 'input.txt' and 'output.txt'. The moves are sent using long algebraic notation. Ex: d2d4 and not d4. Every move is written in one single line. The castelling is done using king's move. Ex: e1g1 and not O-O. The pawn promotion is done putting a character after the move. q - queen (defaut), b -bishop, n - knight, r - rook. Ex: a7a8n. To make a new game the engine must recieve "new" (without '"') and "go" makes the engine to play and the engine must exit with "quit".. NewBoard won't test the legality of engine's moves. If the person makes one illegal move the engine must send "Illegal move". Yet about the communication files there are still three important things to say:
      a) Engine must save (flush) the imput file AFTER it changes the line. So first use "\n" (in C language) and then save the file.
      b) There can not be spaces, numbers or other caracters before the moves. Ex: use a2a4 and not (space) a2a4. All caracters must be in lower case, ex: h7h5 and not H7H5.
      c) If your engine is written in Pascal please consider to use Virtual Pascal www.vpascal.com because FreePascal and GNU Pascal, for example, seem to not allow file sharing!!!

      Вот последний пункт выглядит странно - избежав одних проблем, немедленно получаем другие. Однако это, видимо, в том случае, если держать файлы постоянно открытыми на запись, иначе к чему разделение? После закрытия файла рн становиться вполне доступен любой другой программе. И зачем два файла? Впаолне достаточно одного. Признаком выполнения противной стороной хода является его переименование. Примерный шаблон: <уникальный идентификатор текущей партии>_<номер полухода>. Переименование, будучи финальной операцией, информирует об окончании расчета вариантов и совершении хода; уникальный идентификатор - на случай проведения сеанса одновременной игры (даже двух движков между собой), освобождается по завершении партии; символ подчеркивания "_" сигнализирует об обработке произведенного хода буферной программой (в случае наличия таковой - GUI-оболочкой, например), и предполагает ожидания имени файла без этого индикатора.

























  • Сергей Козлов. Ежик в тумане

  • Декілька нових доробків вашого покірного слуги