# Раздельная батарея и холодный пуск ## Из исследования в игру Вместо «всё на одной машине» добавлена конфигурация с отдельными пусковыми и общими РЛС. Высокоуровневое разделение обзорной и огневой РЛС соответствует публичным описаниям системы; это не полная модель конкретной штатной батареи. | Публично описываемый элемент С-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»](https://www.bmlv.gv.at/pdf_pool/publikationen/7_rosmann.pdf) разделяет обзорный 91N6 и огневой 92N6; статья об С-400 в официальном [Memorial de Artillería 174/2, Ministerio de Defensa](https://publicaciones.defensa.gob.es/media/downloadable/files/links/m/e/memorial_artilleria_174-2.pdf) перечисляет КП, радары, пусковые и дополнительные средства. Это публичные обзоры, не эксплуатационная документация изготовителя. У чисел времени, дальности и качества в моде собственная игровая шкала; из этих публикаций они не калибровались. Для наглядности холодного старта найден официальный выпуск [«С-400. Секрет ракеты», «Военная приёмка»](https://rutube.ru/video/37a2ef7d5e83ffa9ec4ba222bfd8ce5f/) с участием завода «Авангард». Доступная страница выпуска не содержит стенограммы; форма шарнира крышки и длительность игровых стадий не объявляются воспроизведением механизма прототипа. Для С-500 применяется стилизация существующего игрового профиля, без утверждения о механике всех реальных ракет. ## Как собрать Через N → «Разместить элементы батареи…» можно расставить элементы в разных местах. Командные эквиваленты: ```text /airdef deploy radar_search /airdef deploy radar_track /airdef deploy s400_launcher /airdef deploy s500_launcher /airdef deploy radar_height /airdef battery ``` Нумерацию существующей техники показывает `/airdef battery`. Чтобы переоборудовать её: ```text /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). Текущий объём и ограничения описаны в [техническом журнале](CODEX-HANDOFF.md). ## Проверка в игре и тестами Историческая контрольная точка батареи и команд — `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`, максимальные скорости и столкновения не менялись. Данные: [сетка](measurements/issue-129-grid.csv), [рейды](measurements/issue-129-balance.csv). Ниже — исходные кадры крышек из изолированного тестового мира Horizon, Metal, 2560×1440. На первом четыре малые крышки ТПК закрыты; на втором одна поднята, остальные закрыты. Большая прямоугольная панель позади труб — навесная РЛС конфигурации `integrated`. ![Четыре закрытые крышки ТПК](media/cold-launch/s400-closed.png) ![Одна использованная ячейка с поднятой крышкой](media/cold-launch/s400-one-cell-used.png) Для этих кадров использовалась промежуточная сборка 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](media/cold-launch/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 перед пуском](media/cold-launch/cold-launch-129-general.png) ![Неосвещённый выброс, около 0,5 с](media/cold-launch/cold-launch-129-eject-0.5s.png) ![Факел после зажигания, около 1,1 с](media/cold-launch/cold-launch-129-ignition-1.1s.png) ![Разгон и поворот, около 1,7 с](media/cold-launch/cold-launch-129-departure-1.7s.png) **Ограничение приёмки.** Агент, выполнивший прогон, не имеет ввода изображений и не может сам оценить композицию, читаемость и красоту кадров; он проверил только факт съёмки, разрешение, частоту, длительность, звуковую дорожку, границы планов и появление крупной факельной области. Кадры и MP4 приложены для человеческого просмотра. Отдельный очень крупный статичный план выброса у самой ПУ и live-видео в этом прогоне не сняты; `--offscreen` не даёт окна для сторонней записи экрана. Это не полная визуальная приёмка #129.