Руководство по веб-интерфейсу Control Center

Интерактивная панель мониторинга, запуска и разработки сценариев фреймворка IGG Doomsday: Last Survivors.

Версия 2.4.0 (MSK)
Обновлено: 19.09.2026 21:25 MSK

1. Архитектура и навигация веб-интерфейса

Веб-интерфейс спроектирован как единое SPA-приложение (Single Page Application), работающее без компиляции Node.js. Вся навигация сосредоточена в верхней шапке приложения:

Шапка управления и навигации
DOOMSDAY CONTROL CENTER
📊 Мониторинг ▶️ Запуск 🛠️ Разработка 📡 Захват команд 📚 Документация
⚪ Готов к запуску

2. Вкладка «Мониторинг»

Вкладка предназначена для контроля запущенной нагрузки в реальном времени. Обновление метрик происходит автоматически каждые 1.5–2 секунды.

Верхние карточки-индикаторы (Metric Cards)

Сценарий
Массовик (30 ботов)
Время: 12м 45с
Итерации (Успех)
100%
Всего: 184 (✓ 184 | ✗ 0)
Процессор (CPU)
1.4%
Хост: 8.2%
Память (RAM)
148 MB
Система: 48%
Скорость
2.40 tx/s
Пропускная способность
Боты в игре
30
из 30 ботов (K206)

Сворачиваемая таблица виртуальных пользователей (VUsers)

Таблица детально отображает сетевое состояние и выполняемые скрипты каждого персонажа:

Персонаж Kingdom Статус бота Скрипты Транзакции (P/F/Tot) Ошибки Время работы
1813568357
visbot01@gmail.com
K206 🟢 ACTIVE TecnologyScript 12 / 0 (12) 0 12м 40с
1820818432
visbot21@gmail.com
K206 🟡 ИГРОК В СЕТИ (1013) ScoutBot 6 / 0 (6) 0 12м 45с
Приоритет владельца (код 1013): Если живой игрок заходит в игру со своего смартфона или клиента, фреймворк моментально уступает ему сокет. Статус бота переключается на 🟡 ИГРОК В СЕТИ (1013). Бот находится в режиме ожидания, а после завершения сессии реальным игроком автоматически возобновляет работу.

Сводная статистика транзакций

Таблица агрегирует метрики времени отклика и завершения транзакций (LoadRunner Transactions) в реальном времени:

Транзакция PASS (Успешно) FAIL (Сбой) STOP (Прервано) Всего Мин. время Среднее время Макс. время
login 30 0 0 30 1.20 ms 2.45 ms 5.80 ms
guild_assist_help_other 154 0 0 154 42.10 ms 85.60 ms 194.30 ms

3. Вкладка «Запуск»

Центр управления выполнением сценариев и одиночных скриптов в один клик без необходимости обращения к командной строке сервера.

Объект запуска Сценарий / Одиночный скрипт
Целевой файл и понятное название sc_mass_scrips.py — Массовый запуск (30 ботов)
▶️ СТАРТ ⏹️ СТОП 🔄 РЕСТАРТ

3.1. Управление выполнением и персональные логи

3.2. Расширенное расписание запусков (Workload Schedule)

Фреймворк поддерживает интеллектуальное планирование выполнения задач в группах VUserGroup и глобально в Scenario через параметр schedule={...}. Все временные критерии рассчитываются по московскому времени (MSK, UTC+3).

Параметр Тип данных Поддерживаемые форматы и примеры Описание работы
days
(days_of_week)
str | list "mon-fri", "weekdays" (будни)
"weekends", "сб-вс" (выходные)
["пн", "ср", "пт"], ["mon", "wed"]
[0, 2, 4] (0 = Пн, 6 = Вс), "all"
Фильтрация по дням недели. Вне разрешенных дней боты переводятся в сон до начала ближайшего разрешенного дня (00:00:00 МСК).
at_times
(times, time)
str | list "04:00" (одиночное время)
["04:00", "12:00", "20:00"] (несколько раз в сутки)
"04:30:00" (с секундами)
Запуск раунда в строго фиксированные моменты времени суток. Идеально для сбора дейликов при сбросе игрового дня (04:00 МСК).
time_window
(time_range, window)
str | dict "09:00-18:00" (дневное окно)
{"start": "09:00", "end": "21:00"}
"22:00-04:00" (ночное окно через полночь)
Окно активности. Действия разрешены только внутри указанного интервала. Вне окна боты ожидают открытия с отображением таймера.
dates
(date, date_range)
str | list | dict "2026-09-25" (конкретная дата)
["2026-09-20", "2026-09-25"] (список дат)
"2026-09-20..2026-09-25" (диапазон)
Ограничение по календарным датам. Позволяет привязать запуск скрипта к игровым праздникам, акциям и специальным ивентам.
interval_sec float 1800.0 (30 мин), 3600.0 (1 час) Пауза между повторными итерациями внутри разрешенного окна/дней.
repeats int | None 5 (лимит раундов), None (бесконечно) Максимальное количество повторений цикла до автозавершения группы.

Примеры конфигурации расписания в Python:

# Пример 1: Ежедневный запуск при сбросе игрового дня в 04:00 и 16:00 (МСК) VUserGroup( name="Подарки_Альянса", script=ActivityGiftScript, users="all", count=30, schedule={ "type": "schedule", "days": "everyday", "at_times": ["04:00", "16:00"], "repeats": None } ) # Пример 2: Работа по будням (Пн-Пт) в дневное окно 09:00-18:00 с интервалом 30 минут VUserGroup( name="Технологии_Альянса", script=TecnologyScript, users="all", count=30, schedule={ "type": "schedule", "days": "weekdays", # Рабочие дни (Пн-Пт) "time_window": "09:00-18:00", # Разрешенное окно (МСК) "interval_sec": 1800.0, # Пауза 30 минут "repeats": None } ) # Пример 3: Праздничный ивент в заданные даты с ночным окном активности (22:00-04:00) VUserGroup( name="Битва_Ивента", script=EventBattleScript, users="all", count=20, schedule={ "type": "schedule", "dates": "2026-09-20..2026-09-25", # Период проведения ивента "time_window": "22:00-04:00", # Ночное окно активности "interval_sec": 3600.0 } )
Отображение в мониторинге: Когда боты находятся вне окна активности или ожидают наступления точного времени/дня, в таблице вкладки «Мониторинг» их статус отображается как ⏳ ОЖИДАНИЕ (расписание) с точным указанием причины и времени следующего пуска (например: «Ожидание окна активности 09:00-18:00 (старт в 09:00:00 МСК)»).

4. Вкладка «Разработка»

Интегрированная среда разработки (IDE) со встроенным проводником файлов, редактором Monaco Editor и AI-ассистентом:

Панель «Файлы проекта» и кнопки управления
📂 Файлы проекта
☑️ Выбор ✏️ Имя 📥 Скачать 🗑️ Удалить ➕ Создать 🔄
Бесплатный Gemini 2.0 Flash: По умолчанию система использует бесплатную модель google/gemini-2.0-flash-exp:free через OpenRouter или Gemini API, поддерживающую прямое чтение и сохранение файлов проекта.

5. Вкладка «Захват команд» — Интерактивный туториал и сетевой сниффер

Вкладка «📡 Захват команд» — это специализированная среда для исследования закрытого сетевого протокола официального клиента Doomsday.exe в реальном времени. Она полностью избавляет от необходимости вручную искать шестнадцатеричные опкоды в IDA Pro или дизассемблировать Protobuf-библиотеки: вы просто совершаете действие в игре, размечаете его меткой, а система автоматически декодирует пакеты, протоколирует их и генерирует готовый Python-код для интеграции в ботов.

1. Сетевая топология и архитектура моста

Поскольку официальный клиент игры Doomsday.exe работает исключительно под управлением Windows 11 (x64), а сервер фреймворка и веб-интерфейс могут быть развернуты на удаленном сервере (в Kubernetes/Docker) либо локально, обмен данными организован через двунаправленный WebSocket-мост высокой производительности:

🎮 Windows 11 (Игровой ПК)

Клиент игры: Doomsday.exe
Хуки: ws2_32.dll / TLS SChannel
Сниффер: sniffer/run_sniffer.bat

Frida Dynamic Hooking
➔
⚡ WebSocket Трансляция

Потоковый прием кадров
Двусторонняя синхронизация меток
Авто-переподключение при обрывах

WS /ws/capture/ingest
➔
🖥️ Сервер и CaptureHub

Кольцевой буфер (300 пакетов)
Журнал: capture/captured_commands_*.log
Веб-сокет для UI: /ws/capture/ui

FastAPI + In-Memory Hub

2. Анатомия интерфейса вкладки: разбор всех элементов управления

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

Интерфейс вкладки «Захват команд» — Рабочая панель монитора пакетов
🟢 Сниффер подключен: Windows 11 (192.168.1.55) Лог: captured_commands_20260918_112318.log Буфер: 142 / 300
➕ Новый лог 📁 Логи и справочник 🗑️ Очистить ☑ Автопрокрутка
🔍
Все C ➔ S (Запросы) S ➔ C (Ответы)
⭐ Только с комментариями
🏷️
Активная пользовательская метка (синхронизирована со сниффером): «Сбор подарков альянса в цитадели»
Запись в .txt ВКЛЮЧЕНА Сбросить
Время Поток Опкод Protobuf-команда игры Размер Действие / Метка игрока Действия
14:32:05 C ➔ S 0x2993 (10643) KMsgCl2GsguildCollectPlayerGuildResourceRequest
Сервис: Guild / Модуль сбора ресурсов
32 B ⭐ Сбор подарков ✏️ ⚡ В редактор 🤖 AI 📋
Декодированные параметры Protobuf (JSON): Копировать JSON
{ "guildId": 1084209, "collectType": 1, "claimedGiftIds": [501, 502, 503], "autoOpen": true }
14:32:05 S ➔ C 0x2994 (10644) KMsgGs2ClguildCollectPlayerGuildResourceReply
Ответ сервера: Успешное начисление ресурсов
148 B — 📋 Protobuf
🟢 Индикатор и буфер
Живой мониторинг

Индикатор отображает сетевой статус сниффера:

  • 🟢 Подключен: показывает имя хоста Windows, внешний IP-адрес и готовность принимать клики.
  • 🔴 Не подключен: подсказывает запустить скрипт sniffer/run_sniffer.bat.
  • Буфер 300 пакетов: кольцевой буфер на сервере сохраняет историю последних запросов даже при перезагрузке страницы в браузере.
  • 🗑️ Очистить: сбрасывает память буфера для начала чистого эксперимента.
  • ☑ Автопрокрутка: удерживает фокус таблицы на последнем входящем пакете.
🏷️ Разметка действий (Active Label)
Синхронизация

Позволяет связать физический клик игрока с понятным описанием на русском языке:

  • Введите название действия перед кликом (например: «Атака на логово зомби 5 уровня») и нажмите «Установить метку».
  • Метка мгновенно передается в сниффер на Windows 11 через обратный WebSocket-канал.
  • Все последующие пакеты, отправленные клиентом игры в этот момент, автоматически получают метку и записываются в активный сессионный файл capture/captured_commands_YYYYMMDD_HHMMSS.log.
  • Кнопка ✏️ в строке таблицы позволяет скорректировать комментарий постфактум.
🔍 Фильтры и отсечение шума
Поиск по опкодам

В игре постоянно циркулируют служебные сообщения (пинги, синхронизация времени, тики). Инструменты фильтрации позволяют оставить только нужное:

  • Текстовый поиск: мгновенно находит команды по части имени (например: Build, March, Hero) или hex-опкоду (0x2801).
  • C ➔ S (Исходящие): отфильтровывает только команды, отправленные игроком. Именно их нужно вызывать в ботах!
  • S ➔ C (Входящие): отфильтровывает серверные ответы со структурами данных.
  • ⭐ Только с комментариями: мгновенно скрывает весь сетевой фон и оставляет на экране только те действия, которые вы пометили метками!
⚡ Кнопки действий у пакетов
Генератор кода

У каждого перехваченного пакета доступны три умные кнопки:

  • ⚡ В редактор: автоматически генерирует вызов self.send_and_wait(command="...", ...) с заполненными параметрами, переключает пользователя на вкладку «🛠️ Разработка» и вставляет готовый код в открытый Python-скрипт в текущую позицию курсора!
  • 🤖 AI: отправляет пакет встроенному ассистенту Gemini 2.0 Flash с запросом: «Объясни параметры Protobuf для команды X и напиши метод бота».
  • 📋 Protobuf: открывает JSON-инспектор полей прямо внутри таблицы.

3. Пошаговый туториал: Создание нового скрипта бота за 5 минут

Ниже представлен сквозной сценарий: от скачивания сниффера из веб-интерфейса до вставки готового метода автоматизации в сценарий бота.

1
Скачивание сниффера из веб-интерфейса в 1 клик

Вам не нужно вручную копировать скрипты или настраивать пути. Перехватчик полностью упакован в папку sniffer/:

  1. Откройте вкладку «🛠️ Разработка» в верхней шапке интерфейса.
  2. В панели «Файлы проекта» нажмите значок ☑️ (Режим выбора).
  3. Установите галочку напротив папки sniffer/.
  4. Нажмите синюю кнопку «📥 Скачать» — браузер мгновенно скачает готовый архив sniffer.zip.
  5. Распакуйте архив на вашем компьютере с Windows 11, где установлена игра Doomsday.exe (например, в C:\sniffer\).
2
Однократная установка зависимостей на Windows 11

Для работы сниффера требуется Python 3.10–3.12 (с установленной галочкой «Add Python to PATH» при установке).

Откройте командную строку cmd.exe в распакованной папке сниффера и выполните:
pip install -r requirements.txt
Скрипт установит динамический движок перехвата frida, библиотеку сериализации protobuf и сетевой клиент websockets.
3
Запуск перехватчика (run_sniffer.bat)

Дважды кликните по файлу run_sniffer.bat. Откроется интерактивное командное меню:

====================================================================
🎯 DOOMSDAY CLIENT SNIFFER — Меню запуска
====================================================================
[1] Подключиться к ЛОКАЛЬНОМУ веб-серверу (ws://127.0.0.1:8000)
[2] Подключиться к УДАЛЕННОМУ веб-серверу (Kubernetes / Docker)
[3] Автономный режим (запись в локальный лог без веба)
[4] Установить зависимости (pip install -r requirements.txt)
====================================================================

• Нажмите 1, если сервер запущен на этом же компьютере.
• Нажмите 2, если сервер работает в Kubernetes или на удаленном стенде, и укажите адрес сервера (например, wss://k8s.mytest.com/ws/capture/ingest).

4
Запуск клиента игры Doomsday.exe и проверка соединения

Запустите официальный игровой клиент Doomsday.exe. Сниффер автоматически обнаружит процесс игры, перехватит сетевой сокет и установит соединение с веб-сервером.

Визуальное подтверждение: В веб-интерфейсе на вкладке «📡 Захват команд» бейдж статуса мгновенно окрасится в зеленый цвет: 🟢 Сниффер подключен: Windows 11 (192.168.1.55).
5
Разметка действия и перехват игрового клика
  1. В веб-интерфейсе в поле «Введите действие в игре» напечатайте, к примеру: Сбор ресурсов альянса.
  2. Нажмите кнопку «Установить метку». Поле подсветится зеленым бейджем.
  3. Перейдите в окно игры Doomsday.exe и нажмите нужную кнопку в интерфейсе игры.
  4. В живой таблице веб-панели мгновенно появится исходящая строка:
    [C ➔ S] 0x2993 — KMsgCl2GsguildCollectPlayerGuildResourceRequest ⭐ Сбор ресурсов альянса
  5. Сервер автоматически добавит подробную запись со всеми полями в текущий активный сессионный файл capture/captured_commands_YYYYMMDD_HHMMSS.log.
6
Моментальный перенос команды в скрипт бота

Вам больше не нужно вручную переписывать параметры:

• Нажмите синюю кнопку «⚡ В редактор» рядом с перехваченной командой.
• Веб-интерфейс сам переключит вас на вкладку «🛠️ Разработка» и вставит готовый блок кода в открытый файл скрипта:
# Автоматически сгенерировано из перехваченной команды 0x2993 (Сбор ресурсов альянса):
reply = self.send_and_wait(
    command="KMsgCl2GsguildCollectPlayerGuildResourceRequest",
    guildId=1084209,
    collectType=1,
    expected_reply="KMsgGs2ClguildCollectPlayerGuildResourceReply",
    timeout=5.0
)
if reply:
    lr.log(f"Ресурсы успешно получены: {reply}")
        

4. Модальное окно просмотра («📁 Логи и справочник»)

Кнопка «📁 Логи и справочник» в шапке вкладки открывает окно инспектора с интерактивным выпадающим списком файлов в директории capture/:

Инженер может в любой момент переключить открытый файл через селектор, обновить его содержимое кнопкой «🔄 Обновить», сохранить файл себе на компьютер по кнопке «💾 Скачать» или отсечь новую чистую запись кнопкой «➕ Новый лог»:

Просмотр файла: capture/Важные команды.txt | captured_commands_*.log
================================================================================
ЖУРНАЛ КЛЮЧЕВЫХ КОМАНД И ДЕЙСТВИЙ ИГРОКА (DOOMSDAY: LAST SURVIVORS)
Сессия начата: 2026-09-18 11:23:18
================================================================================

[11:23:25] C->S [ЗАПРОС] Команда: KMsgCl2GsguildAssistHelpOtherRequest | Опкод: 0x28e2 (10466)
  Время: 2026-09-18 11:23:25.104
  Направление: C2S
  Комментарий: Прожатие помощи клану
  Параметры (0 полей):
    {}
--------------------------------------------------------------------------------

[11:23:31] C->S [ЗАПРОС] Команда: KMsgCl2GsguildCollectPlayerGuildResourceRequest | Опкод: 0x2993 (10643)
  Время: 2026-09-18 11:23:31.452
  Направление: C2S
  Комментарий: Сбор подарков альянса
  Параметры (2 полей):
    guildId: 1084209
    collectType: 1
--------------------------------------------------------------------------------
📋 Копировать весь текст в буфер

5. Часто задаваемые вопросы и диагностика неполадок (FAQ)

❓ Почему в веб-интерфейсе горит статус «🔴 Сниффер не подключен»?
1. Убедитесь, что на компьютере Windows 11 запущен файл sniffer/run_sniffer.bat.
2. Проверьте правильность выбранного пункта меню (для локального сервера — пункт 1, для удаленного — пункт 2 с указанием точного хоста/порта).
3. Убедитесь, что брандмауэр Windows не блокирует исходящие WebSocket-соединения на порт сервера (по умолчанию 8000).
❓ Frida выдает ошибку: «Process Doomsday.exe not found»
Сначала запустите клиент игры Doomsday.exe, войдите в свой город, и только затем запускайте run_sniffer.bat. Если игра запущена от имени Администратора, запустите командную строку Windows и run_sniffer.bat также с правами Администратора.
❓ Можно ли производить захват команд клиента Doomsday чисто из браузера без сниффера?
Нет. Официальный игровой клиент Doomsday.exe является нативным x64-приложением Windows, которое устанавливает прямое защищенное бинарное соединение с серверами IGG с шифрованием SChannel TLS. Браузер изолирован песочницей и не имеет физического доступа к сетевым сокетам других процессов операционной системы. Поэтому сниффер на базе Frida является обязательным мостом, снимающим дампы из памяти процесса и передающим их в веб по WebSocket.
❓ Где на диске сохраняются команды, где справочник и как переключать файлы?
Все файлы хранятся строго в директории capture/. Эталонный справочник capture/Важные команды.txt содержит базовые описания структуры команд. Живые логи записываются с маской captured_commands_YYYYMMDD_HHMMSS.log. Через окно «📁 Логи и справочник» в шапке панели перехвата доступен выпадающий список для быстрого переключения между любыми логами и справочником.

6. Безопасность и управление учетными записями

Веб-интерфейс Doomsday Control Center защищен криптографической системой аутентификации: