[enhancement] Умный противник после новых механик: актуальная модель батарей, честная разведка и устойчивая очередь маршрутов #127
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Запрос владельца: проверить, сохранилась ли «умность» противника после добавления батарей, ролей РЛС, радиомолчания, новых коллизий и логистики. Аудит закреплён на
kimi-work@61aaa0bf359026711ba811a7f7e9877ce253ead2.Что уже работает
Это не предложение переписать всё с нуля. Есть инкрементальный планировщик налёта с бюджетом, обход известных зон и рельефа на этапе исходного плана, учёт истории направлений, раскрытие стреляющих комплексов/РЭБ, перенацеливание и специализированные задания против наблюдавшихся РЛС. Тест
sead_uses_only_unexpired_observations_at_the_last_known_positionпроверяет использование последней известной позиции и TTL. Эти свойства следует сохранить.Подтверждённые расхождения
1. Оценка угрозы отстала от реальной схемы батарей. price_grid_on вызывает
sight::reachкак собственный сенсор даже дляLauncherOnlyи отключённого поиска. Самreachвычисляет геометрическую дальность, а не проверяет работоспособность поиска; актуальный radar_up исключает эти состояния. Сетевые доноры в оценке выбираются через общийsight::LINK, без полного актуального контрактаlink_range/роли РЛС, разрешающей применение оружия.Изолированная native-проверка на этом
61aaa0bf35: один известный С-400 вLauncherOnly, без других юнитов/РЛС;radar_up=false,battery_status.linked=false. Для Х-22 планировщик всё равно добавляет риск в 272 ячейки сетки 41×41 (cell=32, min=(-640,0,-640), work=529). Это консервативная оценка, но она сейчас получается из скрытой конфигурации живого объекта, а не из осознанной неопределённости разведки. Нужна одна семантика возможностей и явная модель уверенности, а не отдельная устаревшая имитация боевой системы.2. Массовое перенацеливание безвозвратно теряет необработанные маршруты. adapt/replan_routes сразу очищает маршруты всех выбранных объектов; при исчерпании
WORK_PER_TICKцикл останавливается. Необработанные задания не сохраняются. На следующемadaptобъект уже направлен в известную позицию и пропускается.Native-проверка: 40 известных С-400 (сетка 8×5, шаг 160), 40 queued smart Х-22 с существующими маршрутами, старт x=-1800, разные z; цель до адаптации (1800,70,1800). После
tick=40; adapt()39 из 40 маршрутов пусты; ещё пять вызовов на тиках 80…240 оставляют те же 39 пустыми. Это прямо описанный в комментарии fallback «оставшиеся летят прямо», а не неожиданная новая регрессия. Но с выросшими налётами он существенно ослабляет противника. Сохранять лимит работы нужно; терять задания навсегда — нет.3. Повторный план слабее исходного по рельефу. Исходный план вызывает
plan_route_on(... relief ...), а повторный —price_gridиplan_routeбез relief. После новых voxel-коллизий это уже не только вопрос красоты маршрута. Нужны одинаковые ограничения известного рельефа, допустимой высоты и безопасного продолжения для обоих путей планирования.4. Граница знаний проведена не везде.
known_unitsотбрасывает известные записи по фактическомуalive(); оценка зон читает реальные roles/состояние/модель юнита по ID;adaptузнаёт об уничтожении прежней цели из живогоself.sams. Перемещение позиции уже частично отделено от разведданных (#93), однако остальные атрибуты всё ещё могут обновляться без наблюдения. Не требуется делать противника слепым: требуется явно разделить наблюдение, предположение и истину симуляции.Предлагаемые этапы
target. Ограничить частоту переключений, учитывать уже назначенные объекты, цену смены маршрута и неопределённость. Отключение РЛС, разделённая батарея, ограниченный боезапас/логистика и конечная энергия перехватчика должны иметь явные игровые реакции, без чтения скрытых резервов игрока.Приёмка
Связано: #91, #93, #103, #118, #120, #121, #126. Приоритет P2; отдельные подтверждённые проблемы можно выделить в дочерние задачи при реализации.
🤖 Agent: Kimi Code, с участием DeepSeek fast.
Опубликована узкая часть #127 в
kimi-work:6f7b041c8,a47812aad,a592ece6e.Массовый retarget больше не теряет маршруты при исчерпании
WORK_PER_TICK: FIFO-задания по ID дрона продолжаются между тиками, старый безопасный маршрут сохраняется до готовности нового, повторный retarget заменяет job без дублей, отмена имеет явный fallback. Повторный план использует известный рельеф исходной версии.При ревью отдельно исправлены два versioning-риска: каждый job хранит
Arc<KnownRelief>своей версии (новая волна не меняет его карту), а price/route caches ключуются полнойKnowledgeVersion(tick + known + relief), поэтому разведка разных тиков не смешивается.Регрессии: 40+ ретаргетов с прогрессом каждый бюджетный тик и отсутствием вечных пустых маршрутов, детерминизм/отсутствие дублей, смена рельефа новой волной, разные known snapshots при одинаковом relief.
Проверки: core release 204 + 8 сценариев (8 ignored), adapter 67 + 1 boundary + 5 сценариев, WASM 30 шагов. Save-формат не менялся: текущий формат дронов/запуска очереди не содержит.
Не заявляю полный EnemyPicture, честное разделение наблюдения/истины, структурированное намерение, durable queue и GUI/Windows-приёмку — они остаются в #127. Issue открыт.
🤖 Agent: Kimi Code. #127 реализован в
8fc10c07aиe7934a1eb: честная EnemyPicture, structured intent, versioned bounded очередь и durableair 1. Проверки: core release 232+8, adapter 68+1+5, WASM 30 шагов. Ограничения сохранения задокументированы. Issue закрываю.