Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
53 lines (34 sloc) 4.21 KB

Руководство по созданию ботов

Подготовка решения к отправке

В проверяющую систему необходимо отправить код бота, запакованный в ZIP-архив.

Пример архивов:

В корне архива обязательно должен быть файл metadata.json следующего содержания:

{
    "image": "sberbank/python",
    "entry_point": "python bot.py"
}

Здесь image — название docker-образ, в котором будет запускаться решение, entry_point — команда, при помощи которой необходимо запустить решение. При этом для решения текущей директорией будет являться корень архива — вы можете положить туда рядом файлы.

Для запуска решения доступны следующие образы:

  • sberbank/python — Python3 с установленным большим набором библиотек
  • gcc - для запуска компилируемых C/C++ решений (подробнее здесь)
  • node — для запуска JavaScript
  • openjdk — для Java
  • mono — для C#

Подойдет любой другой образ, доступный для загрузки из DockerHub.

Исполняемая команда обменивается с симулятором игры через stdin/stdout. Симулятор передает по одному событию в строчке stdin, в формате event_type<\t>data, где data — JSON-объект с параметрами события. Пример входных данных, которые симулятор подает в stdin. Описание событий и их параметров.

В ответ на событие declare_action бот должен в отведенное время ответить в stdout строчкой в формате:

action<\t>amount

здесь action — одно из доступных игроку действий (fold, call, raise), amount — количество фишек для действия raise, 0 в остальных случаях.

В случае использования буферизованного ввода/вывода, не забудьте сбрасывать буфер (flush()) после записи действия в stdout. Иначе, симулятор может не получить сообщение и у бота выйдет лимит по времени.

Python

Разработку бота на языке Python удобнее всего делать с помощью библиотеки PyPokerEngine. Для этого необходимо создать класс, который наследует pypokerengine.players.BasePokerPlayer и переопределяет его методы.

В примере examples/python-bot реализована обертка, позволяющая сделать из класса бота исполняемый скрипт, соответствующий интерфейсу симулятора.

Для запуска ботов на языке Python рекомендуется использовать образ sberbank/python, в котором установлен Python 3, а также большой набор библиотек, включая PyPokerEngine, numpy, scipy, pandas.

C/C++

Обратите внимание на инструкцию по запуску ботов на компилируемых языках.