Разработка мода для игры Мир Танков и Worldoftanks
Система автоматизированной рассылки личных сообщений игрокам в игре «Мир Танков» / «World of Tanks».
Данный документ описывает модовую часть проекта (клиент игры). Веб-часть рассматривается отдельно.
1. Общая цель модовой части
Мод должен обеспечивать полностью автоматизированную работу игрового клиента для массовой рассылки личных сообщений игрокам, получая команды и данные от веб-приложения (или локального сервиса), без участия пользователя.
Ключевые задачи:
Автоматический вход в игру
Пропуск всех стартовых и уведомительных окон
Минимизация нагрузки на ПК (графика, анимации)
Получение списка игроков и текста сообщений
Отправка личных сообщений
Смена аккаунта после выполнения заданий
2. Совместимость и ограничения
Игра: Мир Танков (WG / Lesta)
Версия клиента: актуальная на момент запуска проекта (мод должен быть легко адаптируем под обновления)
Тип мода: клиентский мод (Python + Scaleform / BigWorld)
Работа в оконном и полноэкранном режимах
3. Архитектура модовой части
Мод состоит из следующих логических компонентов:
Инициализационный модуль
Модуль управления интерфейсом
Модуль рассылки сообщений
Модуль связи с веб-частью
Модуль смены аккаунтов
Модуль логирования и статусов
**На усмотрение мододела
4. Инициализация и запуск
4.1 Автозапуск
Мод автоматически загружается при старте клиента
Не требует ручного включения
4.2 Пропуск вступительных экранов
Мод должен автоматически:
Закрывать приветственные окна
Скипать обучающие подсказки
Принимать лицензионные соглашения (если появляются)
Закрывать всплывающие акции / новости / ивенты
Закрывать уведомления о достижениях
Приоритет — максимально быстрый выход в ангар.
5. Минимизация графики и нагрузки
По возможности мод должен:
Автоматически выставлять минимальные настройки графики
Отключать:
Тени
Постобработку
Анимации ангара
Динамическое освещение
Эффекты частиц
При возможности — включать режим «пустого ангара»
Ограничивать FPS (например, до 30 или ниже)
Настройки должны применяться автоматически при каждом запуске клиента.
6. Связь с веб-частью
6.1 Тип связи
Один из вариантов (должно быть заложено в архитектуру):
HTTP (локальный сервер)
или
WebSocket
Очередь команд
6.2 Получаемые данные
Мод должен уметь принимать:
Список никнеймов игроков
Текст сообщения
Ограничения по скорости рассылки
Команды:
start
pause
stop
switch_account
7. Модуль рассылки сообщений
7.1 Поиск игрока
Открытие интерфейса личных сообщений
Поиск игрока по никнейму
Проверка, что игрок существует
7.2 Отправка сообщений
Вставка текста сообщения
Отправка сообщения
Обработка задержек между сообщениями
7.3 Ограничения
Настраиваемая задержка между сообщениями
Возможность ограничения количества сообщений за сессию
8. Обработка ошибок
Мод должен корректно обрабатывать:
Игрок не найден
Бан чата
Ошибка интерфейса
Потеря соединения
Критические ошибки клиента
При ошибке:
Логировать причину
Переходить к следующему игроку
Или отправлять статус в веб-часть
9. Смена аккаунтов
9.1 Условия смены аккаунта
Достигнут лимит сообщений
Получена команда switch_account
Ошибка/блокировка
9.2 Процесс смены
Мод должен:
Выйти из текущего аккаунта
Вернуться на экран авторизации
Выбрать следующий аккаунт (по данным от веб-части или конфигу)
Выполнить вход
Повторить инициализацию (скип окон, графика)
10. Логирование и статусы
Мод должен вести логи:
Успешные сообщения
Ошибки
Смены аккаунтов
Статус текущей задачи
Логи должны быть:
В локальном файле
Или передаваться в веб-часть
11. Конфигурация
Мод должен иметь конфигурационный файл:
Задержки
Лимиты
Графические настройки
Параметры подключения
Формат: JSON / YAML
12. Требования к стабильности
Работа в длительных сессиях (несколько часов)
Работа в несколько потоков (клиентов игры)
Отсутствие утечек памяти
Корректная работа после крашей клиента
13. Безопасность
Отсутствие хранения паролей в открытом виде
Минимизация следов вмешательства в клиент
14. Результат
Результатом является клиентский мод, который:
Сам запускает игру
Сам доходит до ангара
Сам рассылает ЛС
Сам меняет аккаунты
Управляется извне (веб-часть)
15. Дополнительно (по согласованию)
Режим «без интерфейса»
Автовосстановление после вылета
Для быстрой связи ТГ @exhipocrates
