Интерактивная панель мониторинга, запуска и разработки сценариев фреймворка IGG Doomsday: Last Survivors.
Веб-интерфейс спроектирован как единое SPA-приложение (Single Page Application), работающее без компиляции Node.js. Вся навигация сосредоточена в верхней шапке приложения:
☑️ и переименованием ✏️, полнофункциональный редактор кода Monaco Editor (VS Code) и диалоговый AI-чат с Google Gemini 2.0 Flash.capture/captured_commands_YYYYMMDD_HHMMSS.log и экспорт готового кода вызова команд.Вкладка предназначена для контроля запущенной нагрузки в реальном времени. Обновление метрик происходит автоматически каждые 1.5–2 секунды.
Таблица детально отображает сетевое состояние и выполняемые скрипты каждого персонажа:
| Персонаж | 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). Бот находится в режиме ожидания, а после завершения сессии реальным игроком автоматически возобновляет работу.
Таблица агрегирует метрики времени отклика и завершения транзакций (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 |
Центр управления выполнением сценариев и одиночных скриптов в один клик без необходимости обращения к командной строке сервера.
Сценарий / Одиночный скрипт
sc_mass_scrips.py — Массовый запуск (30 ботов)
logs/scripts/{name}.log, а сценарий — в logs/scenarios/{name}.log. При выборе скрипта или сценария в выпадающем списке терминал мгновенно загружает строго его персональную историю без смешивания с чужими данными.▶️ СТАРТ старый журнал скрипта/сценария очищается, и запись начинается с 1-й строки нового прогона с аккуратным стартовым заголовком и итоговой таблицей транзакций.scripts/*.py) исполняются изолированным легковесным раннером SingleScriptRunner строго для 1 бота в 1 поток (без Trio, без задержек ramp-up и без пачек из 3 ботов), что обеспечивает мгновенную и прозрачную отладку действий персонажа.SCRIPT_TITLE и SCENARIO_TITLE в списках выбора раннера отображаются информативные русскоязычные названия вместо голых имен файлов.
Фреймворк поддерживает интеллектуальное планирование выполнения задач в группах 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 (бесконечно) |
Максимальное количество повторений цикла до автозавершения группы. |
⏳ ОЖИДАНИЕ (расписание) с точным указанием причины и времени следующего пуска (например: «Ожидание окна активности 09:00-18:00 (старт в 09:00:00 МСК)»).
Интегрированная среда разработки (IDE) со встроенным проводником файлов, редактором Monaco Editor и AI-ассистентом:
☑️ Режим выбора: скрывает или отображает чекбоксы у файлов для выполнения пакетных операций (скачивание, удаление).✏️ Переименование: позволяет быстро переименовать выбранный файл прямо из браузера без перезагрузки страницы.📥 Скачивание: загружает один выбранный файл или формирует ZIP-архив из нескольких файлов/папок.🗑️ Удаление: удаление файлов с обязательным диалогом подтверждения и защитой от случайного удаления системного ядра.➕ Создать: мастер создания нового скрипта или сценария по готовому эталонному шаблону с преднастроенным расписанием.scripts/ — прикладные скрипты персонажей (Init ➔ Action ➔ End).scenarios/ — сценарии оркестрации и распределения ботов по группам.capture/ — эталонный справочник Важные команды.txt и журналы перехваченных сетевых пакетов. Создание сессионных логов переведено в ленивый режим: пустые файлы больше не создаются.data/ — словари опкодов opcodes.json, логины ботов logins.json и конфигурации.__init__.py и системная папка sniffer/ скрыты из проводника для удобства и чистоты навигации.Ctrl+S / Cmd+S.google/gemini-2.0-flash-exp:free через OpenRouter или Gemini API, поддерживающую прямое чтение и сохранение файлов проекта.
Вкладка «📡 Захват команд» — это специализированная среда для исследования закрытого сетевого протокола официального клиента Doomsday.exe в реальном времени.
Она полностью избавляет от необходимости вручную искать шестнадцатеричные опкоды в IDA Pro или дизассемблировать Protobuf-библиотеки: вы просто совершаете действие в игре, размечаете его меткой, а система автоматически декодирует пакеты, протоколирует их и генерирует готовый Python-код для интеграции в ботов.
Поскольку официальный клиент игры Doomsday.exe работает исключительно под управлением Windows 11 (x64), а сервер фреймворка и веб-интерфейс могут быть развернуты на удаленном сервере (в Kubernetes/Docker) либо локально, обмен данными организован через двунаправленный WebSocket-мост высокой производительности:
Клиент игры: Doomsday.exe
Хуки: ws2_32.dll / TLS SChannel
Сниффер: sniffer/run_sniffer.bat
Потоковый прием кадров
Двусторонняя синхронизация меток
Авто-переподключение при обрывах
Кольцевой буфер (300 пакетов)
Журнал: capture/captured_commands_*.log
Веб-сокет для UI: /ws/capture/ui
Интерфейс вкладки спроектирован так, чтобы инженер по тестированию или разработчик сценариев мог за секунды локализовать нужную команду и сразу отправить её в работу.
| Время | Поток | Опкод | 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 пакетов: кольцевой буфер на сервере сохраняет историю последних запросов даже при перезагрузке страницы в браузере.🗑️ Очистить: сбрасывает память буфера для начала чистого эксперимента.☑ Автопрокрутка: удерживает фокус таблицы на последнем входящем пакете.Позволяет связать физический клик игрока с понятным описанием на русском языке:
capture/captured_commands_YYYYMMDD_HHMMSS.log.✏️ в строке таблицы позволяет скорректировать комментарий постфактум.В игре постоянно циркулируют служебные сообщения (пинги, синхронизация времени, тики). Инструменты фильтрации позволяют оставить только нужное:
Build, March, Hero) или hex-опкоду (0x2801).У каждого перехваченного пакета доступны три умные кнопки:
⚡ В редактор: автоматически генерирует вызов self.send_and_wait(command="...", ...) с заполненными параметрами, переключает пользователя на вкладку «🛠️ Разработка» и вставляет готовый код в открытый Python-скрипт в текущую позицию курсора!🤖 AI: отправляет пакет встроенному ассистенту Gemini 2.0 Flash с запросом: «Объясни параметры Protobuf для команды X и напиши метод бота».📋 Protobuf: открывает JSON-инспектор полей прямо внутри таблицы.Ниже представлен сквозной сценарий: от скачивания сниффера из веб-интерфейса до вставки готового метода автоматизации в сценарий бота.
Вам не нужно вручную копировать скрипты или настраивать пути. Перехватчик полностью упакован в папку sniffer/:
☑️ (Режим выбора).sniffer/.sniffer.zip.Doomsday.exe (например, в C:\sniffer\).Для работы сниффера требуется Python 3.10–3.12 (с установленной галочкой «Add Python to PATH» при установке).
cmd.exe в распакованной папке сниффера и выполните:
pip install -r requirements.txtСкрипт установит динамический движок перехвата
frida, библиотеку сериализации protobuf и сетевой клиент websockets.
Дважды кликните по файлу run_sniffer.bat. Откроется интерактивное командное меню:
• Нажмите 1, если сервер запущен на этом же компьютере.
• Нажмите 2, если сервер работает в Kubernetes или на удаленном стенде, и укажите адрес сервера (например, wss://k8s.mytest.com/ws/capture/ingest).
Запустите официальный игровой клиент Doomsday.exe.
Сниффер автоматически обнаружит процесс игры, перехватит сетевой сокет и установит соединение с веб-сервером.
🟢 Сниффер подключен: Windows 11 (192.168.1.55).
Сбор ресурсов альянса.Doomsday.exe и нажмите нужную кнопку в интерфейсе игры.capture/captured_commands_YYYYMMDD_HHMMSS.log.Вам больше не нужно вручную переписывать параметры:
# Автоматически сгенерировано из перехваченной команды 0x2993 (Сбор ресурсов альянса):
reply = self.send_and_wait(
command="KMsgCl2GsguildCollectPlayerGuildResourceRequest",
guildId=1084209,
collectType=1,
expected_reply="KMsgGs2ClguildCollectPlayerGuildResourceReply",
timeout=5.0
)
if reply:
lr.log(f"Ресурсы успешно получены: {reply}")
Кнопка «📁 Логи и справочник» в шапке вкладки открывает окно инспектора с интерактивным выпадающим списком файлов в директории capture/:
⭐ Важные команды.txt — базовый эталонный справочник ключевых игровых команд и их полей;🟢 captured_commands_YYYYMMDD_HHMMSS.log — текущая активная сессия перехвата с клиента;captured_commands_*.log — исторические сессионные логи.Инженер может в любой момент переключить открытый файл через селектор, обновить его содержимое кнопкой «🔄 Обновить», сохранить файл себе на компьютер по кнопке «💾 Скачать» или отсечь новую чистую запись кнопкой «➕ Новый лог»:
sniffer/run_sniffer.bat.Doomsday.exe, войдите в свой город, и только затем запускайте run_sniffer.bat. Если игра запущена от имени Администратора, запустите командную строку Windows и run_sniffer.bat также с правами Администратора.
Doomsday.exe является нативным x64-приложением Windows, которое устанавливает прямое защищенное бинарное соединение с серверами IGG с шифрованием SChannel TLS. Браузер изолирован песочницей и не имеет физического доступа к сетевым сокетам других процессов операционной системы. Поэтому сниффер на базе Frida является обязательным мостом, снимающим дампы из памяти процесса и передающим их в веб по WebSocket.
capture/. Эталонный справочник capture/Важные команды.txt содержит базовые описания структуры команд. Живые логи записываются с маской captured_commands_YYYYMMDD_HHMMSS.log. Через окно «📁 Логи и справочник» в шапке панели перехвата доступен выпадающий список для быстрого переключения между любыми логами и справочником.
Веб-интерфейс Doomsday Control Center защищен криптографической системой аутентификации:
bcrypt с 12 раундами соли. Пароли в открытом виде нигде не хранятся.secrets.token_urlsafe(48)) в защищенных куках HttpOnly.data/web_users.json. Создается автоматически с двумя учетками по умолчанию:
admin (роль admin) — полный административный доступ.operator (роль operator) — запуск и мониторинг сценариев.tools/manage_users.py:
# Просмотр списка пользователей python3 tools/manage_users.py list # Добавление новой учетной записи python3 tools/manage_users.py add <логин> <пароль> --role operator # Смена пароля python3 tools/manage_users.py set-password <логин> <новый_пароль> # Удаление пользователя python3 tools/manage_users.py delete <логин>