Предлагаем тебе написать своего бота, который сойдется в сложной битве против других ботов в игре IT-God 2020.
Для участия в мероприятии тебе нужно зарегистрироваться на игровой платформе IT-God Game, создать бота, выбрать язык из поддерживаемых. На текущий момент поддерживаются следующие языки программирования:
- C#
- Python 3.6
- Java
- Kotlin
- Node.js
Детальные инструкции по созданию бота можно прочитать в разделе 2.
Выбор языка программирования для реализации бота ограничен возможностями того или иного языка. Как написать бота на своем любимом языке - смотри в разделе 3.
Среди ботов будет проводиться турнир - следи за новостями на игровой платформе, сайте и в наших каналах.
Действия, которые будут представлять риск нанесения ущерба игровой платформе, будут рассматриваться как нарушение и приведут к блокировке участника.
- Описание механики
- Игровые объекты и концепции
- Игровые взаимодействия
- Условия победы
См.на сайте IT-God 2020
Для создания бота перейди в раздел Боты
и выбери Создать бота
.
При создании тебе будет предложено дать имя боту, выбрать язык программирования для твоего бота и героя, которого он будет представлять (раса).
На следующем шаге откроется окно редактора бота с загруженным кодом типового бота на выбранном тобой языке программирования.
Отладка бота возможна в двух режимах:
- в игровом клиенте
- в типовом приложении
Для отладки бота в игровом клиенте создай игру, активируй Игра с ботами
, нажми применить. В открывшемся окне выбери своего бота из списка напротив слота любого игрока.
Результаты отладки ты будешь видеть на игровом экране в процессе игры или после завершения игры.
Для отладки бота в типовом приложении нужно скачать типовой проект, ссылка на который есть в окне редактирования бота.
Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение скрывает внутри себя взаимодействие с сервером, и является посредником между игровым сервером и решением участника.
Типовой проект ты сможешь запускать у себя локально или в докере, файл которого находится в архиве с проектом. Для отладки можно использовать точки останова, вывод в консоль или в файл.
В каждом архиве проекта в файле Readme
есть инструкция для работы с проектом на выбранном языке программирования.
Стратегия бота реализуется в файле Bot.java
. Вместе с типовым приложением поставляется стратегия, сохраненная на игровом сервере на момент скачивания типового приложения.
Интерфейс BotApi
предоставляет необходимую информацию об игре и используется для отправки команд боту.
Типовое приложение подключается к серверу и запускает скрипт бота в начале работы. Приложение стартует один раз, скрипт бота работает в бесконечном цикле. Обрабатывать остановку не обязательно, в конце игры работа контейнера будет завершена.
После подключения к игре, сервер рассылает подключившимся конфигурацию игры GameParameters
.
После старта игры, сервер рассылает постоянно обновляющееся состояние игрового мира GameState
.
Ответ серверу может содержать несколько возможных действий: move
(перемещение отряда), boost
(ускорение отряда) или upgradeTower
(повысить уровень башни), доступные всем героям, а также специальные умения, доступные конкретному типу героя.
Для отладки бота локально в типовом приложении нужно скопировать параметры 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
.
Создай новую игру. Можно выбрать любую игру. Выбрав игру, нажми кнопку Применить
. В окне игрового лобби, важно оставить один слот свободным. Именно к этому слоту будет подключаться твой бот.
После того как открылось окно игрового лобби, запусти типовое приложение в среде разработки, из консоли или докера. Процесс подключения к игре отражается в консоли. В окне игрового лобби ты увидишь своего бота - жми Начать бой
и после некоторой паузы Готов
игра начинается...
Параметры запуска приложения:
- i (--ip) - ip адрес игрового сервера
- u (--user) - идентификатор пользователя
- b (--bot) - идентификатор бота
Если параметры запуска отсутствуют в командной строке, то берутся значения из файла Program.java
Важно! Не отправляй за тик боле 40 действий, чтобы избежать блокировки учетной записи.
Для отладки бота в типовом приложении можно использовать среду разработки, например, 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
Важно! при отладке необходимо для точек останова выбирать блокировку одного поток, а не всех, иначе это может привести к блокировке УЗ
Когда твой бот готов к испытаниям, обнови содержимое окна редактора бота на содержимое файла Bot.java
и сохрани бота. Теперь ты можешь участвовать в сражениях.
В файле стратегии должны отсутствовать логеры, иначе поведение твоей стратегии будет отличаться от поведения на сервере
В типовом проекте доступны стандартные библиотеки.
Для включения дополнительных библиотек необходимо обратиться к организаторам игры.
Для разработки ботов нужно использовать стенд:
https://game.it-god.ru
wss://gameapi.it-god.ru
Выбор языка программирования для реализации бота ограничен поддержкой языком протокола WebSocket.
Если ты хочешь использовать свой любимый язык программирования, и он поддерживает протокол WebSocket, тебе необходимо разработать на этом языке приложение для взаимодействия с игровой платформой и docker файл с параметрами создания необходимого для его выполнения окружения.
В качестве образца можно взять любой проект, предлагаемый для отладки бота.
Разработанное приложение нужно предоставить организаторам игры как ZIP-архив на ревью. При положительном решении поддержка твоего языка будет добавлена в игровую платформу, а проект будет доступен в примерах для скачивания.
Требования к приложению:
- стратегия бота должна быть реализована в одном файле размером не более 5 Мб и запускаться отдельным процессом
- в боте должна быть реализована простая типовая стратегия по аналогии с проектами предлагаемыми для отладки бота
- наличие docker файла с параметрами создания необходимого окружения для запуска и работы приложения
- поддерживать запуск из командной строки со следующими параметрами:
- -i (--ip) - ip адрес игрового сервера
- -u (--user) - идентификатор пользователя
- -b (--bot) - идентификатор бота
- корректный синтаксис
- корректное подключение других модулей/пакетов выбранного языка