K2 by Sergey Meus, Russia

K2 by Sergey Meus, Russia       


    Движок K2  (движок так назван в честь одной из самых высоких горных вершин в мире,  которая находится на границе Пакистана и Китая  в горной системе Каракорум к северо-западу от Гималаев ее высота 8614 метров над уровнем моря). Движок -  это шахматная программа, которая не имеет собственного графического интерфейса (GUI) и использует  графические интерфейсы, написанные другими авторами. Для передачи информации о работе движка сегодня используются два наиболее распространенных протокола Xboard (Winboard) и UCI с помощью которых команды передаются графической оболочке. Вначале существовал только протокол Xboard (Winboard),  а потом появился протокол UCI.  Сегодня это самый распростарненный протокол, который используют авторы.

Движок  K2 сделал свои первые публичные шаги в 2013 году и активно развивался до версии K2 0.87,  которая была обнародована в октябре 2016 года. Движок написан на языке C++ и распространяется автором с открытыми исходными файлами, авторская страничка движка K2.

    После выхода версии K2 0.87 Сергей сделал большой перерыв  и полностью переписал движок.  В результате этой большой работы родился новый движок K2 0.91. Характеризуя его особенности Сергей написал следующее:

    "... ядро движка, т.е. тот способ, которым он представляет позицию, был переписан с нуля. Новый алгоритм содержит специальный массив с перечислением всех атакованных полей от каждой фигуры. Это позволяет проще и почти без дополнительных затрат реализовать многие улучшения оценочной и поисковой функции, таких как статическая оценка разменов, подсчет мобильности фигур, оценка атак на короля, полностью легальный генератор ходов и др. Обратной стороной данного алгоритма является его низкая скорость, в чём я убедился на своем опыте.

    На сегодняшний день почти во всех сильнейших движках для представления доски используются так называемые bitboard (64-битные числа, у которых каждый бит содержит определенную информацию о каждом поле шахматной доски), которые сочетают в себе высокую скорость и широкие возможности. Я планирую в будущем переписать движок на bitboard, а сегодняшний алгоритм может пригодиться для вариантов игры, в которых размер доски больше, чём 8 на 8, например, готические шахматы (если хватит времени на это).

    Другой особенностью, скрытой от глаз пользователя является более совершенный подход к тестированию программы с использованием модульных автотестов (юнит-тестов) и автоматических интеграционных тестов, для последних в движке появилась новая команда test. Это позволяет увеличить скорость разработки нового функционала за счёт обнаружения ошибок в программе на ранних стадиях. Команда test чем-то похожа на команду bench движка Stockfish, она проводит проверку генератора ходов путем вызова функции perft для нескольких позиций и проверку поисковой функции путем анализа нескольких позиций на заданную глубину. Если количество узлов после вызова функции perft хотя бы для одной позиции отличается от правильного, или если анализ хотя бы одной позиции не нашел правильный ход, выводится сообщение об ошибке. Пользователи движка с помощью функции test могут оценивать скорость перебора, а также убедиться в правильности сборки движка из исходников для разных платформ или операционных систем: число, выводимое после Search total nodes во всех сборках должно быть одинаковым. Для версии 0.91 это число должно равняться 4420420. Последняя версия движка - K2 0.91(в авторский пакет мы добавили сборку для MAC OSX 64 bit). Программа отлично работает во всех известных нам оболочках, которыми мы располагаем!

Скачать программу можно со страницы автора   Сергея Меуса (Sergey Meus) и с нашей страницы DOWNLOAD.

Вернуться на главную страницу 

 


Последнее обновление 26.07.18 11-00