Files
airdef/docs/BATTERIES-AND-COLD-LAUNCH.md
T
chexit 56093b3a55 Record the #129 balance and the cold-launch capture
The stage contract and profiles are in 4b013fb. This commit adds the
measured balance (the #120 grid on identical seeds and the 12-seed raid),
the replay/export video with four stills, and updates the user and handoff
documentation. The visual files are provided for human review; the agent
that captured them has no image input and checked only the encoded
parameters, shot boundaries and the first large plume.

Co-Authored-By: Kimi Code <noreply@kimi.com>
2026-11-06 13:35:35 +03:00

18 KiB
Raw Blame History

Раздельная батарея и холодный пуск

Из исследования в игру

Вместо «всё на одной машине» добавлена конфигурация с отдельными пусковыми и общими РЛС. Высокоуровневое разделение обзорной и огневой РЛС соответствует публичным описаниям системы; это не полная модель конкретной штатной батареи.

Публично описываемый элемент С-400 Его смысл Игровая адаптация
91Н6: обзор/обнаружение Общая воздушная картина radar_search: больший игровой обзор, передача наблюдений
92Н6: сопровождение/управление огнём Отдельный радар огневого комплекса radar_track: более частые собственные измерения, поддержка нескольких ПУ
Дополнительная 96Л6 и антенные мачты Дополнительные средства обнаружения radar_height: условная мачтовая роль, улучшенный игровой радиогоризонт; это не копия 96Л6
Командный пункт 55К6 Управление и обмен данными Пока абстрагирован существующей сетью и распределением целей, отдельной машины КП нет
Пусковая с ТПК Боекомплект и физический пуск s400_launcher / s500_launcher, без навесной РЛС

Источники для архитектуры: оригинальная техническая публикация Bundesheer, «Radars für Raketenabwehr» разделяет обзорный 91N6 и огневой 92N6; статья об С-400 в официальном Memorial de Artillería 174/2, Ministerio de Defensa перечисляет КП, радары, пусковые и дополнительные средства. Это публичные обзоры, не эксплуатационная документация изготовителя. У чисел времени, дальности и качества в моде собственная игровая шкала; из этих публикаций они не калибровались.

Для наглядности холодного старта найден официальный выпуск «С-400. Секрет ракеты», «Военная приёмка» с участием завода «Авангард». Доступная страница выпуска не содержит стенограммы; форма шарнира крышки и длительность игровых стадий не объявляются воспроизведением механизма прототипа. Для С-500 применяется стилизация существующего игрового профиля, без утверждения о механике всех реальных ракет.

Как собрать

Через N → «Разместить элементы батареи…» можно расставить элементы в разных местах. Командные эквиваленты:

/airdef deploy radar_search
/airdef deploy radar_track
/airdef deploy s400_launcher
/airdef deploy s500_launcher
/airdef deploy radar_height
/airdef battery

Нумерацию существующей техники показывает /airdef battery. Чтобы переоборудовать её:

/airdef battery <номер С-400 или С-500> launcher
/airdef radar <номер РЛС> search
/airdef radar <номер другой РЛС> engagement

Можно оставить одну многофункциональную РЛС (multi) и несколько пусковых. Поисковая/мачтовая РЛС даёт подсказку, но не разрешает огонь сама. РЛС сопровождения принимает подсказку и должна сама измерить цель в своей игровой досягаемости и с учётом рельефа. Чужой трек не превращается в собственное измерение. После этого связанные пусковые используют общую картину и существующее распределение целей. Если РЛС сопровождения уничтожена, свёрнута, потеряла связь или её измерение устарело, новые пуски прекращаются. Уже вылетевшие ракеты продолжают штатную игровую логику связи/памяти/самонаведения.

Старые миры и обычные /airdef deploy s400 / s500 сохраняют сборную конфигурацию integrated. Режимы, роли, боезапас и использованные контейнеры сохраняются с миром и сценариями. У прежнего игрового С-500 был магазин на четыре ракеты при двух нарисованных ТПК; теперь он согласован с двумя физическими ячейками. При загрузке старой расстановки его загруженный остаток ограничивается новой вместимостью, как при обычном восстановлении боезапаса.

Что видно при пуске

  1. Подготовка резервирует конкретную ячейку. Отдельная крышка ТПК открывается; ракета ещё не расходуется.
  2. При потере цели или неисправности/сворачивании носителя до выброса подготовка отменяется.
  3. Ракета выбрасывается из фактического muzzle. Боекомплект уменьшается один раз; использованный ТПК остаётся открытым.
  4. Выброс идёт без двигателя: ракета поднимается и линейно теряет скорость под газовым сопротивлением. Длительность считается от выброса, а не от открытия крышки: у С-400 (M48n6) 20 тиков — 1,00 с, у С-500 (M77n6) 24 тика — 1,20 с, у IRIS-T и Тора (IrisT/M9m338) 8 тиков — 0,40 с. В этой фазе нет факела, непрерывного звука двигателя, моторного света и powered smoke; остаётся только отдельный газовый хлопок/клуб.
  5. Зажигание — отдельное событие в текущей точке ракеты, а не у оставленной ПУ: там же появляются вспышка, факел, звук и запись MotorIgnition. Оно наступает после cold тиков выброса.
  6. После зажигания начинается departure: тяга плавно нарастает от 45% к 100%, а допустимый темп поворота — от 20% к полному за boost тиков. Полное наведение (включая самонаведение и облёт рельефа) включается только при age >= cold + boost; при увеличении cold оно не может включиться раньше мотора. Максимальная скорость, pk, turn и правила столкновений не менялись.

Это действует для зенитных С-400/С-500 и подготовленного ударного RM48U у С-400. У ручного удара носитель и ячейка резервируются до пуска; изменение состояния отменяет подготовку без расхода. RM48U использует ту же 20-тиковую хореографию: неосвещённый выброс, зажигание в текущей точке, затем разгон; насчитанное время полёта включает выброс, а записанный дым начинается у точки зажигания. Задержанный ручной приказ не возобновляется после загрузки мира: незапущенный боеприпас остаётся в носителе. Ракеты с рельсовым (горячим) пуском тоже получили плавное нарастание тяги за свой boost, но не холодный выброс; электрический P1-SUN сохраняет постоянный разгон и не получает ракетную струю.

В записи сохраняются конфигурация машины, использованные ячейки и положение крышки; повтор восстанавливает их по своей временной шкале. Записанный дым начинается у точки зажигания, а не рисуется задним числом от горловины контейнера.

Ограничения

Роли РЛС и мачта пока используют общую модель машины, с разным поведением/отображением антенны. Отдельные точные модели 91Н6/92Н6/96Л6, машина КП, ручная принадлежность к батарее, отдельные каналы сопровождения и кабельное снабжение пока не добавлены. Подробные режимы и параметры реальных комплексов не моделируются. В следующей серии добавлены конечная работа двигателя/coast (#120), доставка RM48U через ТЗМ (#118), переключение излучения (#121) и укрытия от непрямого blast (#119). Текущий объём и ограничения описаны в техническом журнале.

Проверка в игре и тестами

Историческая контрольная точка батареи и команд — 966b52f: 169 тестов ядра и 4 сценария (7 ignored), 53 теста адаптера, проверка границы с ядром и ещё 4 сценария; настоящий WASM-пакет прошёл 21 шаг wasm_contract.toml, генератор моделей не нашёл различий.

Контрольная точка #129 — 4b013fb7f30dbaa87a266b27a31911937fc523b4 (ветка agent/issue-129-cold-launch): core release 206 + 8 сценариев (8 ignored), адаптер 67 + 1 boundary + 5 сценариев, настоящий WASM 30 шагов, gen_catalog.py --check без расхождений, gen_models.py --check без различий, test_gen_assets.py — 10 тестов.

Отдельные тесты проверяют открытие до расхода, отмену при повреждении, однократное списание при выбросе, отсутствие голоса/факела до зажигания, записанное зажигание через cold тиков после выброса, плавные ограничения скорости и поворота для всех профилей, а также RM48U без powered эффектов до зажигания. Тест повтора проверяет перемотку состояния крышек и конфигурации ПУ туда и обратно и отсутствие дыма до записанного зажигания.

Сравнительная выборка #129 (те же seed, что у сетки #120; 6 вариантов × 8 seed, 2208 целей на сторону): сбито 1988 → 1939, прорывов 216 → 258, ракет 3461 → 3467; energy_lost 0 → 0, expired 1 → 0, сорванных о рельеф 2 → 4. Близкие (near200) 318 → 311 сбитых, дальние (far1500) 338 → 334, холмы (hills20) 334 → 319. Отдельные 12 seed SAMS=20 SIZE=12: 203 → 201 сбитых, 1 → 3 прорыва, 355 → 360 ракет. Это ожидаемое следствие более длинного старта, а не скрытая компенсация: pk, максимальные скорости и столкновения не менялись. Данные: сетка, рейды.

Ниже — исходные кадры крышек из изолированного тестового мира Horizon, Metal, 2560×1440. На первом четыре малые крышки ТПК закрыты; на втором одна поднята, остальные закрыты. Большая прямоугольная панель позади труб — навесная РЛС конфигурации integrated.

Четыре закрытые крышки ТПК

Одна использованная ячейка с поднятой крышкой

Для этих кадров использовалась промежуточная сборка SHA-256 3fae616902563b01e6463a32687c062d5983c4e94bd357f8f8129744d859f4d7; геометрия крышек и их преобразования совпадают с опубликованной версией. Сохранение после пуска содержит 3 оставшиеся ракеты С-400 и маску использованной ячейки 1.

Съёмка стадий #129

Изолированный scratch-мир ColdLaunch129 (плоский тестовый рельеф, --creative), Metal, HORIZON_NO_AUDIO=1, мод и клиент из коммита 4b013fb…. Один перехват Х-22 записан и экспортирован режиссёром: /airdef replay export cold129d best fps=30 size=1280x720. Файл cold-launch-129.mp4 — h264 1280×720, 30 fps, 403 кадра, 13,43 с, AAC 48 кГц stereo (mean −15,7 dB, max −1,1 dB; звук сведён офлайн, живое прослушивание не выполнялось). Это повтор/экспорт одной записи, а не отдельная live-съёмка: живые кадры того же пуска в MP4 не попали.

Планы фильма (по сменам кадра и OCR титров, 30 fps): общий план ПУ — кадры 1–93; «Пуск» — 94–152; «Сближение» — 153–218; «Поражение цели» — 219–403. В плане «Пуск» камера стоит в 46 блоках сбоку и следит за ракетой. Выброс начинается на кадре 94; крупная факельная область появляется на кадре 128, то есть через 34 кадра ≈ 1,13 с от начала выброса — в пределах нескольких кадров от правила cold=20 тиков = 1,00 с (титр/склейка и порог цвета добавляют задержку). До этого кадра крупного факела нет. Разгон и поворот видны в кадрах 128–152 (≈0,8 с powered departure).

Кадры из того же MP4 (общий план, 0,5 с выброса без факела, 1,1 с — факел, 1,7 с — разгон):

Общий план С-400 перед пуском

Неосвещённый выброс, около 0,5 с

Факел после зажигания, около 1,1 с

Разгон и поворот, около 1,7 с

Ограничение приёмки. Агент, выполнивший прогон, не имеет ввода изображений и не может сам оценить композицию, читаемость и красоту кадров; он проверил только факт съёмки, разрешение, частоту, длительность, звуковую дорожку, границы планов и появление крупной факельной области. Кадры и MP4 приложены для человеческого просмотра. Отдельный очень крупный статичный план выброса у самой ПУ и live-видео в этом прогоне не сняты; --offscreen не даёт окна для сторонней записи экрана. Это не полная визуальная приёмка #129.