DirtyLeague Autonomous FSM Bot
Автономный бот для игры DirtyLeague на движке Unity (Windows), основанный на конечном автомате (FSM), компьютерном зрении (OpenCV Template Matching) и Windows Native OCR.
Бот автоматически управляет экранами игры, отслеживает статистику матчей, собирает сундуки (нижние 4 слота и сундук корон), контролирует трофеи/MMR и выполняет мгновенную капитуляцию при достижении лимита побед или превышении порога кубков.
📋 Требования к системе
- ОС: Windows 10 или Windows 11 (64-bit) — встроенный движок Windows Media OCR (
winrt-Windows.Media.Ocr). - Python: версия 3.10, 3.11, 3.12 или 3.13 (обязательно отметить галочку "Add python.exe to PATH" при установке). Visual Studio или C++ компиляторы НЕ требуются (все пакеты используют готовые бинарные wheels).
- Языковые пакеты Windows: В системе должен быть установлен английский язык (
English (United States)в Параметры -> Время и язык -> Язык и регион) для работы OCR. - Права: Запуск командной строки / батника с правами Администратора (необходимо для перехвата глобального Kill Switch клавишей
Qи корректной эмуляции кликов в окно Unity). - Игра: Запущенная игра DirtyLeague (рекомендуемое разрешение: 1920×1080 или в окне с соотношением 16:9).
🚀 Быстрая установка на новом компьютере
Шаг 1. Клонирование репозитория
Откройте командную строку (CMD или PowerShell) и выполните:
git clone https://gitem.volandsz.ru/volandsz/DirtyLeague_Bot.git
cd DirtyLeague_Bot
Шаг 2. Автоматическая установка (Рекомендуется)
Запустите скрипт setup.bat:
- Двойным кликом по файлу
setup.bat, либо через консоль:setup.bat
Скрипт автоматически проверит наличие Python, создаст виртуальное окружение .venv и установит все необходимые зависимости из requirements.txt.
Альтернатива: Ручная установка через консоль
Если вы предпочитаете настроить окружение вручную:
# 1. Создание виртуального окружения
python -m venv .venv
# 2. Активация окружения (Windows CMD):
.venv\Scripts\activate.bat
# Или в PowerShell:
# .venv\Scripts\Activate.ps1
# 3. Обновление pip и установка пакетов
pip install --upgrade pip
pip install -r requirements.txt
⚙️ Конфигурация (config.json)
Основные параметры бота настраиваются в файле config.json:
{
"target_window": {
"title": "DirtyLeague",
"process_name": "DirtyLeague.exe"
},
"bot": {
"max_wins_limit": 3,
"poll_interval_sec": 0.8,
"confidence_threshold": 0.8,
"action_delay_sec": 0.5,
"kill_switch_key": "q"
},
"league_retention": {
"upper_trophy_threshold": 2125,
"lower_trophy_threshold": 125,
"points_per_win": 50,
"points_per_loss": 50
},
"assets_dir": "assets",
"log_level": "INFO"
}
max_wins_limit: Максимальное количество побед подряд до включения режима сброса рейтинга (слива боев).upper_trophy_threshold: Верхний порог кубков лиги (при превышении бот начинает быстро сдаваться).lower_trophy_threshold: Нижний порог кубков (при опускании ниже бот играет на победу).kill_switch_key: Клавиша для экстренного выключения бота (по умолчаниюq).
🎮 Запуск бота
⚠️ Важно: Рекомендуется запускать от имени Администратора, чтобы бот мог перехватывать нажатие Kill Switch и посылать клики в окно игры.
Способ 1: Быстрый запуск через батник
- Запустите игру DirtyLeague и откройте главное лобби (экран башни).
- Нажмите правой кнопкой мыши по
start_bot.bat-> Запуск от имени администратора (или просто двойным кликом).
Способ 2: Запуск через командную строку
# Активируйте виртуальное окружение
.venv\Scripts\activate
# Обычный запуск (бесконечный цикл до нажатия Q или Ctrl+C)
python run.py
# Ограничить работу по времени (например, 3600 секунд):
python run.py --duration 3600
# Ограничить работу количеством боев/циклов (например, 20 боев):
python run.py --cycles 20
🛑 Управление и безопасность
- Экстренная остановка (Kill Switch): Нажмите клавишу
Qв любой момент времени (в том числе в свернутом режиме). Бот немедленно остановит клики и завершит работу. - Логирование: Все действия бота подробно записываются в консоль и сохраняются в папку
logs/в форматеbot_YYYYMMDD_HHMMSS.log.
📂 Структура проекта
DirtyLeague_Bot/
├── assets/ # Эталонные шаблоны UI (кнопки, баннеры, сундуки)
├── logs/ # Автоматические логи работы бота
├── bot_core.py # Главный конечный автомат (FSM) и логика принятия решений
├── window_utils.py # Захват экрана, фокус окна, масштабирование кликов (Unity Canvas Scaler)
├── ocr_utils.py # Windows Native Media OCR для считывания трофеев и счетчиков
├── calibrate_tool.py # Инструмент калибровки и нарезки шаблонов
├── run.py # Точка входа в программу с обработкой Kill Switch
├── config.json # Файл конфигурации параметров
├── requirements.txt # Список зависимостей Python
├── setup.bat # Скрипт автоматической установки окружения
├── start_bot.bat # Скрипт быстрого запуска бота
└── README.md # Инструкция по установке и запуску
🛠️ Возможные проблемы и решения
Target window 'DirtyLeague' not found- Убедитесь, что игра запущена. Заголовок окна должен содержать
DirtyLeague.
- Убедитесь, что игра запущена. Заголовок окна должен содержать
PermissionErrorили не реагирует клавишаQ- Запустите консоль или
start_bot.batс правами Администратора (библиотекаkeyboardтребует повышенных привилегий в Windows).
- Запустите консоль или
- Ошибки
winsdk/ OCR- Убедитесь, что в Windows установлен языковой пакет английского языка (Settings -> Time & Language -> Language & Region).