Skip to content

ITGod 2020 Bot Games Предлагаем тебе написать своего бота, который сойдется в сложной битве против других ботов в игре IT-God 2020. Для участия в мероприятии тебе нужно зарегистрироваться на игровой платформе IT-God Game, создать бота, выбрать язык из поддерживаемых. На текущий момент поддерживаются следующие языки программирования: C# Python 3.…

Notifications You must be signed in to change notification settings

krastykovyaz/gaming_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITGod 2020 Bot Games

Предлагаем тебе написать своего бота, который сойдется в сложной битве против других ботов в игре IT-God 2020.

Для участия в мероприятии тебе нужно зарегистрироваться на игровой платформе IT-God Game, создать бота, выбрать язык из поддерживаемых. На текущий момент поддерживаются следующие языки программирования:

  • C#
  • Python 3.6
  • Java
  • Kotlin
  • Node.js

Детальные инструкции по созданию бота можно прочитать в разделе 2.

Выбор языка программирования для реализации бота ограничен возможностями того или иного языка. Как написать бота на своем любимом языке - смотри в разделе 3.

Среди ботов будет проводиться турнир - следи за новостями на игровой платформе, сайте и в наших каналах.

Действия, которые будут представлять риск нанесения ущерба игровой платформе, будут рассматриваться как нарушение и приведут к блокировке участника.

1. Описание механики

  • Описание механики
  • Игровые объекты и концепции
  • Игровые взаимодействия
  • Условия победы

См.на сайте IT-God 2020

2. Создание бота

Для создания бота перейди в раздел Боты и выбери Создать бота.

При создании тебе будет предложено дать имя боту, выбрать язык программирования для твоего бота и героя, которого он будет представлять (раса).

На следующем шаге откроется окно редактора бота с загруженным кодом типового бота на выбранном тобой языке программирования.

2.1. Отладка бота

Отладка бота возможна в двух режимах:

  • в игровом клиенте
  • в типовом приложении

2.2. Отладка бота в игровом клиенте

Для отладки бота в игровом клиенте создай игру, активируй Игра с ботами, нажми применить. В открывшемся окне выбери своего бота из списка напротив слота любого игрока.

Результаты отладки ты будешь видеть на игровом экране в процессе игры или после завершения игры.

2.3. Отладка бота в типовом приложении

Для отладки бота в типовом приложении нужно скачать типовой проект, ссылка на который есть в окне редактирования бота.

Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение скрывает внутри себя взаимодействие с сервером, и является посредником между игровым сервером и решением участника.

Типовой проект ты сможешь запускать у себя локально или в докере, файл которого находится в архиве с проектом. Для отладки можно использовать точки останова, вывод в консоль или в файл.

В каждом архиве проекта в файле Readme есть инструкция для работы с проектом на выбранном языке программирования.

3. Отладка бота в типовом приложении на языке Python 3

Типовое приложение передает JSON от игрового сервера в стандартный поток ввода (stdin) и забирает ответ из стандартного потока вывода (stdout). Для корректной работы решение должно запускаться с параметрами для ввода/вывода без буфера (для Python это флаг -u при запуске интерпретатора).

Стратегия бота реализуется в файле bot.py. Вместе с типовым приложением поставляется стратегия, сохраненная на игровом сервере на момент скачивания типового приложения.

Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение стартует один раз, скрипт бота работает в бесконечном цикле. Обрабатывать остановку не обязательно, в конце игры работа контейнера будет завершена. Внутри цикла заключается обработка ввода/вывода, происходит обработка JSON и вызов главного обработчика.

После подключения к игре, сервер рассылает подключившимся конфигурацию игры game.

После старта игры, сервер рассылает состояние игрового мира state.

Ответ должен содержать одно из возможных действий:

  • Move - перемещение отрядов
  • Ability - специальные действия доступные типу героя бота

Описание игровых объектов можно посмотреть на сайте IT-God 2020

3.1. Настройка типового приложения

Для отладки бота локально в типовом приложении нужно скопировать параметры 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.

3.2. Запуск приложения для отладки

Создай новую игру. Можно выбрать любую игру. Выбрав игру, нажми кнопку Применить. В окне игрового лобби, важно оставить один слот свободным. Именно к этому слоту будет подключаться твой бот.

После того как открылось окно игрового лобби, запусти типовое приложение в среде разработки, из консоли или докера. Процесс подключения к игре отражается в консоли. Как только в консоли отобразится >>> 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 действий, чтобы избежать блокировки учетной записи.

3.3. Использование среды разработки для отладки

Для отладки бота в типовом приложении можно использовать среду разработки, например, PyCharm. Версия Python не ниже 3.6.

3.4. Загрузка бота на сервер

Когда твой бот готов к испытаниям, обнови содержимое окна редактора бота на содержимое файла bot.py и сохрани бота. Теперь ты можешь участвовать в сражениях.

В файле стратегии должны отсутствовать логеры, иначе поведение твоей стратегии будет отличаться от поведения на сервере

3.5. Включение библиотек - по запросу

В типовом проекте доступны стандартные библиотеки, библиотека для разбора JSON, реализации протокола WebSocket.

Для включения дополнительных библиотек необходимо обратиться к организаторам игры.

4. Стенды для разработчика

Для разработки ботов нужно использовать стенд:

https://game.it-god.ru 
wss://gameapi.it-god.ru

5. Создание бота на своем языке

Выбор языка программирования для реализации бота ограничен поддержкой языком протокола WebSocket.

Если ты хочешь использовать свой любимый язык программирования, и он поддерживает протокол WebSocket, тебе необходимо разработать на этом языке приложение для взаимодействия с игровой платформой и docker файл с параметрами создания необходимого для его выполнения окружения.

В качестве образца можно взять любой проект, предлагаемый для отладки бота.

Разработанное приложение нужно предоставить организаторам игры как ZIP-архив на ревью. При положительном решении поддержка твоего языка будет добавлена в игровую платформу, а проект будет доступен в примерах для скачивания.

Требования к приложению:

  • стратегия бота должна быть реализована в одном файле размером не более 5 Мб и запускаться отдельным процессом
  • в боте должна быть реализована простая типовая стратегия по аналогии с проектами предлагаемыми для отладки бота
  • наличие docker файла с параметрами создания необходимого окружения для запуска и работы приложения
  • поддерживать запуск из командной строки со следующими параметрами:
    • -i (--ip) - ip адрес игрового сервера
    • -u (--user) - идентификатор пользователя
    • -b (--bot) - идентификатор бота
  • корректный синтаксис
  • корректное подключение других модулей/пакетов выбранного языка

About

ITGod 2020 Bot Games Предлагаем тебе написать своего бота, который сойдется в сложной битве против других ботов в игре IT-God 2020. Для участия в мероприятии тебе нужно зарегистрироваться на игровой платформе IT-God Game, создать бота, выбрать язык из поддерживаемых. На текущий момент поддерживаются следующие языки программирования: C# Python 3.…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages