vasekva / IT_GOD_BOT_19.12.20

Бот с Хакатона ITGOD

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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. Отладка бота в типовом приложении на языке Java

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

Интерфейс BotApi предоставляет необходимую информацию об игре и используется для отправки команд боту.

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

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

После старта игры, сервер рассылает постоянно обновляющееся состояние игрового мира GameState.

Ответ серверу может содержать несколько возможных действий: move (перемещение отряда), boost (ускорение отряда) или upgradeTower (повысить уровень башни), доступные всем героям, а также специальные умения, доступные конкретному типу героя.

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

Для отладки бота локально в типовом приложении нужно скопировать параметры BotId и UserId в окне редактирования бота и добавить их в файле Program.java для соответствующих переменных, например

private String user = "41b4207-1365-4a6f-a8bc-ac18f2e988f6"
private String bot  = "0a1468d1-c1b6-4df9-8ddf-1cd125be93ed"

Или использовать их в качестве аргументов при запуске приложения из командной строки. Написание стратегии бота происходит в методе play класса Bot в файле Bot.java. Писать можно все, что угодно, но лучше всего сконцентрироваться на использовании BotApi.

  • Не менять зависимости в проекте.
  • Не вносить изменения в файлы проекта кроме Bot.java и Program.java (только в части задания значений user и bot).
  • Не менять имя класса Bot.
  • Не менять имя интерфейса IBotApi.
  • Написание кода происходит в методе Play класса Bot.
  • Писать можно все, что угодно, но лучше всего сконцентрировать на использовании интерфейса IBotApi.

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

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

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

Параметры запуска приложения:

  • i (--ip) - ip адрес игрового сервера
  • u (--user) - идентификатор пользователя
  • b (--bot) - идентификатор бота

Если параметры запуска отсутствуют в командной строке, то берутся значения из файла Program.java

Важно! Не отправляй за тик боле 40 действий, чтобы избежать блокировки учетной записи.

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

Для отладки бота в типовом приложении можно использовать среду разработки, например, Intellij Idea.

Особенности использования Intellij Idea для отладки бота:

  • для сборки и запуска приложения необходимо локально установить Apache Maven. Инструкция по скачиванию и настройке на разных ОС: https://maven.apache.org/install.html (на MacOS используй brew install maven)
  • необходимо установить плагин Lombok в настройках среды разработки
  • для сборки проекта запускаем из корневой папки, где лежит pom.xml, команду mvn clean package
  • для запуска приложения рекомендуется использовать конфигурацию Application, Main class - ru.sberbank.itgod.Program

Важно! при отладке необходимо для точек останова выбирать блокировку одного поток, а не всех, иначе это может привести к блокировке УЗ

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

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

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

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

В типовом проекте доступны стандартные библиотеки.

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

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


Languages

Language:Java 100.0%Language:Dockerfile 0.0%