Программа RU64 является интерфейсной оболочкой для игровых модулей, выполненных по спецификации Kallisto. Автором этого формата является Игорь Коршунов, его домашняя страница доступна по ссылке: http://igorkorshunov.narod.ru
Игровой модуль в формате Kallisto - это 32-битная динамически загружаемая библиотека функций для операционной системы Windows, файл с расширением имени .dll Состав экспортируемых функций такой библиотеки может до определенной степени меняться.
Список функций
Для того чтобы игровой модуль мог быть подключен к программе RU64, он должен иметь минимально необходимый состав экспортируемых функций:
Функция | Назначение |
---|---|
EI_GetName | Вернуть название модуля |
EI_Initialization | Инициализировать модуль |
EI_NewGame | Начать новую партию |
EI_SetupBoard | Установить новую позицию на игровой доске |
EI_MakeMove | Сделать очередной ход на игровой доске |
EI_SetTimeControl | Установить игровой контроль времени |
EI_SetTime | Установить оставшееся для игры время |
EI_Think | Вычислить лучший ход |
EI_Analyse | Анализировать текущую позицию |
EI_Stop | Закончить все вычисления |
EI_Exit или EI_OnExit | Завершить работу модуля |
Ограничение силы
Для поддержки ограничения силы игры игровой модуль может экспортировать функцию EX_SetEasyLevel. Через вызов этой функции программа RU64 передает игровому модулю заданный игроком уровень силы игры.
Объявление функции для языка C (диалект GNU99):
#define ENGAPI __attribute__((stdcall,dllexport)) ENGAPI void EX_SetEasyLevel(int lvl);
Аргумент lvl этой функции - число в диапазоне от 0 до 9, где 0 означает отсутствие ограничения.
Использование эндшпильных баз
При необходимости использования сервиса оценки позиций по эндшпильным базам, игровой модуль может экспортировать функцию EX_EGDB. Через вызов этой функции программа RU64 передает модулю указатель на обработчик запросов.
Объявление функции для языка C (диалект GNU99):
#define ENGAPI __attribute__((stdcall,dllexport)) #define GUIAPI __attribute__((stdcall)) ENGAPI void EX_EGDB(GUIAPI int (*proc)(char *pos));
Аргумент pos, передаваемый при вызове обработчика по указателю proc, должен указывать на ACIIZ-строку, определяющую позицию таким же образом как и аргумент функции EI_SetupBoard. Возвращаемые обработчиком значения обозначают точный результат игры в переданной позиции для стороны, имеющей в ней очередь хода:
- ничья: 0
- победа: 10000
- поражение: -10000
- результат неизвестен: 32000
Так же программа RU64 параллельно поддерживает обращения к интерфейсу оценки позиций по эндшпильным базам, передаваемому через вызов функции EI_EGDB, если такая функция экспортируется из игрового модуля.
Для того чтобы дать представление об устройстве игровых модулей формата Kallisto, в установочный комплект программы RU64 включен архив с исходным кодом игрового модуля текущей версии.
Дополнительно
Архив с программой KallistoGUI и более подробной информацией о формате Kallisto доступен в разделе загрузок.