Предлагаем тебе написать своего бота, который сойдется в сложной битве против других ботов в игре IT-God 2020.
Для участия в мероприятии тебе нужно зарегистрироваться на игровой платформе IT-God Game, создать бота, выбрать язык из поддерживаемых. На текущий момент поддерживаются следующие языки программирования:
- C#
- Python 3.6
- Java
- Kotlin
- Node.js
Детальные инструкции по созданию бота можно прочитать в разделе 2.
Выбор языка программирования для реализации бота ограничен возможностями того или иного языка. Как написать бота на своем любимом языке - смотри в разделе 3.
Среди ботов будет проводиться турнир - следи за новостями на игровой платформе, сайте и в наших каналах.
Действия, которые будут представлять риск нанесения ущерба игровой платформе, будут рассматриваться как нарушение и приведут к блокировке участника.
- Описание механики
- Игровые объекты и концепции
- Игровые взаимодействия
- Условия победы
См.на сайте IT-God 2020
Для создания бота перейди в раздел Боты
и выбери Создать бота
.
При создании тебе будет предложено дать имя боту, выбрать язык программирования для твоего бота и героя, которого он будет представлять (раса).
На следующем шаге откроется окно редактора бота с загруженным кодом типового бота на выбранном тобой языке программирования.
Отладка бота возможна в двух режимах:
- в игровом клиенте
- в типовом приложении
Для отладки бота в игровом клиенте создай игру, активируй Игра с ботами
, нажми применить. В открывшемся окне выбери своего бота из списка напротив слота любого игрока.
Результаты отладки ты будешь видеть на игровом экране в процессе игры или после завершения игры.
Для отладки бота в типовом приложении нужно скачать типовой проект, ссылка на который есть в окне редактирования бота.
Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение скрывает внутри себя взаимодействие с сервером, и является посредником между игровым сервером и решением участника.
Типовой проект ты сможешь запускать у себя локально или в докере, файл которого находится в архиве с проектом. Для отладки можно использовать точки останова, вывод в консоль или в файл.
В каждом архиве проекта в файле Readme
есть инструкция для работы с проектом на выбранном языке программирования.
Типовое приложение передает JSON от игрового сервера в стандартный поток ввода (stdin
) и забирает ответ из стандартного потока вывода (stdout
). Для корректной работы решение должно запускаться с параметрами для ввода/вывода без буфера (для Python это флаг -u
при запуске интерпретатора).
Стратегия бота реализуется в файле bot.py
. Вместе с типовым приложением поставляется стратегия, сохраненная на игровом сервере на момент скачивания типового приложения.
Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение стартует один раз, скрипт бота работает в бесконечном цикле. Обрабатывать остановку не обязательно, в конце игры работа контейнера будет завершена. Внутри цикла заключается обработка ввода/вывода, происходит обработка JSON и вызов главного обработчика.
После подключения к игре, сервер рассылает подключившимся конфигурацию игры game
.
После старта игры, сервер рассылает состояние игрового мира state
.
Ответ должен содержать одно из возможных действий:
Move
- перемещение отрядовAbility
- специальные действия доступные типу героя бота
Описание игровых объектов можно посмотреть на сайте IT-God 2020
Для отладки бота локально в типовом приложении нужно скопировать параметры BotId и UserId в окне редактирования бота и добавить их в файле runner.py
для соответствующих переменных, например
user_id = "41b4207-1365-4a6f-a8bc-ac18f2e988f6"
bot_id = "0a1468d1-c1b6-4df9-8ddf-1cd125be93ed"
Или использовать их в качестве аргументов при запуске приложения из командной строки.
Для запуска в докере, создай образ из Docker файла в составе проекта и смонтируй контейнер.
- Не менять зависимости в проекте.
- Не вносить изменения в файлы проекта кроме
bot.py
иrunner.py
(только в части задания значенийuser_id
иbot_id
). - Написание кода происходит в файле
bot.py
.
Создай новую игру. Можно выбрать любую игру. Выбрав игру, нажми кнопку Применить
. В окне игрового лобби, важно оставить один слот свободным. Именно к этому слоту будет подключаться твой бот.
После того как открылось окно игрового лобби, запусти типовое приложение в среде разработки, из консоли или докера. Процесс подключения к игре отражается в консоли. Как только в консоли отобразится >>> GAME READY <<<
перейдите в игру. В окне игрового лобби ты увидишь своего бота - жми Начать бой
и после некоторой паузы Готов
игра начинается...
если после запуска проекта в консоли не отобразилось
>>> GAME READY <<<
- перезапусти проект
Пример запуска приложения из консоли или IDE если параметры заданы в файле runner.py
и в строке запуска:
python3 -u runner.py
python3 -u runner.py -u "41b4207-1365-4a6f-a8bc-ac18f2e988f6" -b "0a1468d1-c1b6-4df9-8ddf-1cd125be93ed"
Для запуска приложения в контейнере докера создай образ из Docker файла проекта и запусти контейнер. Ты можешь зайти в контейнер или запустить приложение через docker.
Пример запуска приложения в докере в фоновом режиме:
docker exec -d 0392a94d94ca python -u runner.py -i "wss://gameapi.it-god.ru" -u "41b4207-1365-4a6f-a8bc-ac18f2e988f6" -b "0a1468d1-c1b6-4df9-8ddf-1cd125be93ed"
Пример запуска приложения в докере c отображением консоли:
docker exec -it 630b2fe38a91 bash -c "python -u runner.py”
Параметры запуска приложения:
- -i (--ip) - ip адрес игрового сервера
- -u (--user) - идентификатор пользователя
- -b (--bot) - идентификатор бота
Если параметры запуска отсутствуют в командной строке, то берутся значения из файла runner.py
Важно! Не стоит забывать про буферизацию ввода/вывода в используемом инструментарии (например, интерпретатору python нужно передать флаг
-u
или выставить соответствующую переменную окружения). Без этого корректная работа не гарантируется.
Важно! Не отправляй за тик боле 40 действий, чтобы избежать блокировки учетной записи.
Для отладки бота в типовом приложении можно использовать среду разработки, например, PyCharm. Версия Python не ниже 3.6.
Когда твой бот готов к испытаниям, обнови содержимое окна редактора бота на содержимое файла bot.py
и сохрани бота. Теперь ты можешь участвовать в сражениях.
В файле стратегии должны отсутствовать логеры, иначе поведение твоей стратегии будет отличаться от поведения на сервере
В типовом проекте доступны стандартные библиотеки, библиотека для разбора JSON, реализации протокола WebSocket.
Для включения дополнительных библиотек необходимо обратиться к организаторам игры.
Для разработки ботов нужно использовать стенд:
https://game.it-god.ru
wss://gameapi.it-god.ru
Выбор языка программирования для реализации бота ограничен поддержкой языком протокола WebSocket.
Если ты хочешь использовать свой любимый язык программирования, и он поддерживает протокол WebSocket, тебе необходимо разработать на этом языке приложение для взаимодействия с игровой платформой и docker файл с параметрами создания необходимого для его выполнения окружения.
В качестве образца можно взять любой проект, предлагаемый для отладки бота.
Разработанное приложение нужно предоставить организаторам игры как ZIP-архив на ревью. При положительном решении поддержка твоего языка будет добавлена в игровую платформу, а проект будет доступен в примерах для скачивания.
Требования к приложению:
- стратегия бота должна быть реализована в одном файле размером не более 5 Мб и запускаться отдельным процессом
- в боте должна быть реализована простая типовая стратегия по аналогии с проектами предлагаемыми для отладки бота
- наличие docker файла с параметрами создания необходимого окружения для запуска и работы приложения
- поддерживать запуск из командной строки со следующими параметрами:
- -i (--ip) - ip адрес игрового сервера
- -u (--user) - идентификатор пользователя
- -b (--bot) - идентификатор бота
- корректный синтаксис
- корректное подключение других модулей/пакетов выбранного языка