[enhancement] Кинорежиссёр повторов: многоракурсный перехват, максимальное качество и экспорт MP4 #58

Closed
opened 2026-10-29 17:52:16 +00:00 by chexit · 1 comment
Owner

🤖 Filed by Codex, AI-агент Владимира (chexit).

Сформировано по прямому запросу автора проекта; текущий код просмотрен на f443f0a. Автор хочет смотреть повторы, особенно Reel/лучшие моменты, со всеми эффектами и высоким разрешением, а затем экспортировать готовый ролик в MP4.

Сейчас Replay::views задаёт width=1280 и ограничивает высоту 1080; API камер после патча 7 ограничен 1920×1080. Простое растягивание этой texture до окна/4K не даёт высокого разрешения. Экспорт в коде не найден.

Кинопрофиль

  • Максимальный cinematic preset по умолчанию для повторов, особенно Reel/лучших моментов: полный HD-конвейер, детальные модели/эффекты, тени, объёмы и качественное сглаживание. Отдельный экономный preview выбирается явно, а не наследуется скрыто от настроек живой игры. Исправления #56 и #57 обязательны.
  • Реальное разрешение камеры соответствует выбранному выходу: native framebuffer/1440p/4K или пользовательское в пределах устройства. Расширить SDK/runtime capability/лимиты там, где нужно; без молчаливого clamp до 1280/1080 и выдачи апскейла за native.
  • Независимые настройки cinematic preview и offline export. У offline качество важнее скорости рендера; не снижать автоматически эффекты ради realtime FPS. Пользователь видит применённые настройки.
  • Качество кино не переносится на маленькие grid monitors. Временные overrides и ресурсы восстанавливаются после выхода/отмены/ошибки; прогрев, reset истории после cut и подгрузка сцены согласованы.

Экспорт

  • В меню: полный повтор / выбранный интервал / Reel, разрешение, FPS, качество, HUD/титры/леттербокс, аудио, имя/путь результата, прогресс и отмена.
  • Offline frame stepping: время кадра определяется номером кадра и монтажом, не скоростью компьютера. Сглаженное движение между точками симуляции 20 Гц, pause/slow motion/cuts/шлейфы и временные эффекты воспроизводимы.
  • Аудиодорожка из записанных/восстановленных событий со слушателем в кинокамере, сохранением задержек и хвостов. Синхронизация A/V, перемоток и retiming; не записывать случайный звук живой игры с микшера.
  • Кодирование MP4 и запись файлов в native-части/разрешённом host tool, не произвольный запуск процессов из WASM. Выбрать поддерживаемый encoder и явный способ его установки/обнаружения.
  • Асинхронный GPU readback и ограниченная очередь кадров/звука; не хранить весь несжатый 4K-ролик в RAM. Отмена/ошибки оставляют управляемые временные файлы и не портят запись/мир.

Приёмка

Экспортировать один ночной Reel и полный повтор со вспышками, пожарами и плотным следом. Проверить реальные размеры/FPS/длительность файла, A/V sync, отсутствие realtime frame drops, артефактов после cut и кубических эффектов. Повторный экспорт с теми же настройками воспроизводим; память ограничена, выход/отмена возвращают обычное качество игры. Сравнение на #44.

Дополнение автора: постановка перехвата как законченного кинематографического момента

Автор хочет крупно улучшить саму режиссуру повторов. Успешный перехват особенно сложной цели должен ощущаться достижением: зритель видит, кто обнаружил угрозу, как комплекс подготовился и выпустил ракету, а затем получает выразительную кульминацию. Одного следования камеры за треком и случайной смены ракурса недостаточно.

Пример сцены: С-400 «Триумф» перехватывает «Искандер-М»

  1. Представление героя. Общий/трёхчетвертной план комплекса в окружении. Короткая аккуратная подпись «С-400 „Триумф“» и обозначение события «Перехват „Искандер-М“». Титр опирается на фактические типы из записи, а не на фиксированное имя шаблона. Свет и фон подчёркивают силуэт; у сцены есть короткий момент ожидания.
  2. Обнаружение и захват. Кадр камеры/прицела комплекса: появляется отметка, цель берётся на сопровождение, видна фиксация и готовность к пуску. Использовать реальные зарегистрированные события и состояние датчиков, включая доработку #46; не выдумывать захват задним числом по истинной позиции цели. Развести обзорную РЛС, внешнее целеуказание и fire-control tracking, если это разные источники.
  3. Подготовка и пуск со стороны. Камера сбоку/под углом так, чтобы целиком читалась ПУ. Показать настоящий доворот башни/средств сопровождения и работу механизмов. Для вертикального пуска не имитировать несуществующее наведение труб; особенности конкретного комплекса должны сохраняться.
  4. Выход ракеты и зажигание. Читаемый выход из направляющей/холодный выброс, затем фактическое зажигание двигателя, мощный факел, дым, подсветка установки и земли, нарастающий рёв. Время выброса и ignition берётся из записи/профиля ракеты; это разные фазы, а не одна вспышка с уже летящей ракетой. Использовать эффекты и звук #51, полноценный рендер #56.
  5. Полёт к цели. Переход на сопровождающую камеру позади/сбоку ракеты, которая показывает цель и направление сближения. Сохранить пространственную понятность — зритель понимает, откуда летит перехватчик и где цель. Подчеркнуть скорость, факел и след (#54), допускаются выразительные дополнительные ракурсы без хаотичного мельтешения.
  6. Кульминация и результат. Камера заранее выбирает читаемый ракурс встречи. Короткое замедление при необходимости, сильная вспышка, огненный объём, удар света и звуковая кульминация, затем горящие обломки/след и немного времени на осознание результата. Не заканчивать клип в сам кадр вспышки: дать звуковому хвосту и падению завершить сцену. Короткая итоговая подпись подтверждает реальное уничтожение; не объявлять сбитие там, где ракета промахнулась.

Это ориентир композиции, а не жёстко одинаковые шесть склеек для каждого события. Длительность и переходы подстраиваются под реальные интервалы обнаружения, подготовки и полёта.

Масштаб пафоса и разнообразие

  • С-400/С-500 и успешный перехват большой/баллистической/трудной цели получают наиболее торжественный, выразительный монтаж. Вес события определяется также опасностью, редкостью и контекстом, а не только названием установки.
  • Панцирь и более лёгкие комплексы — более короткие и динамичные сцены с меньшим пафосом, но всё равно с читаемой цепочкой «сопровождение → доворот → пуск/очередь → результат».
  • Частые обычные сбития можно объединять в монтажную серию; не растягивать каждый дешёвый дрон на одинаковую длинную заставку. Несколько согласованных шаблонов ракурсов и сдержанная вариативность.
  • Full replay, выбранный момент и Reel используют один механизм режиссуры. Настройки длины/интенсивности и возможность пропустить титр не должны ломать таймлайн и экспорт.

Что нужно записывать и как выбирать кадры

Текущий replay.rs::shoot в основном переключается между chase-камерой дрона/перехватчика и ракурсом пушки; clip обрезает Kill фиксированными 140 тиками до/50 после. record.rs хранит треки и результаты, но не полную историю состояний установки/датчиков. Поэтому одного редактирования положения камеры недостаточно.

  • Связать цепочку по ID: обнаружение/измерение, назначение и захват, разворот/готовность, конкретный пуск/перехватчик, ignition, сближение, срабатывание и исход. Сохранять необходимые положения/ориентации ПУ, приводов и состояние датчиков/индикации, а не показывать текущую установку из живой игры.
  • Границы клипа выбирать по событиям цепочки и времени полёта; нужный preroll может начинаться значительно раньше фиксированных семи секунд до сбития. Учесть ранние события до текущего начала записи.
  • Для старых/неполных записей — честный сокращённый монтаж доступных стадий. Не фабриковать отсутствующее обнаружение, lock или доворот.
  • Камеры не проходят через землю, технику и сооружения; обеспечивают видимость героя/ракеты/встречи. При плохом ракурсе нужен альтернативный shot, а не камера внутри корпуса. Использовать геометрию/видимость из #43 по готовности.
  • Режиссура воспроизводима по записи и собственному seed, не потребляет RNG боевой симуляции. Одинаковый timestamp/seek возвращает одинаковый ракурс; cut сбрасывает/прогревает подходящие истории TAA/объёмов.
  • Время суток/погода #57, детальные модели #55, аудио от позиции камеры, качество и MP4 из этого issue работают для всего монтажа, включая замедления и хвосты звука.

Приёмка режиссуры

Снять один успешный перехват большой цели С-400/С-500: читаются название комплекса, обнаружение/захват, подготовка, полный вид ПУ при пуске, выход ракеты и ignition, сопровождающий полёт и выразительная вспышка с результатом. Затем показать Панцирь против обычного дрона — короче и сдержаннее, но с понятными стадиями.

Проверить две ракеты на одну цель, промах, потерю трека, уничтоженную/движущуюся ПУ, короткую запись и несколько близких по времени событий. Монтаж не приписывает успех другой ракете/комплексу и не показывает выдуманный успешный исход. Preview и MP4 дают одну сцену с синхронным звуком, правильной ночью и без кубических эффектов.

🤖 Filed by Codex, AI-агент Владимира (chexit). Сформировано по прямому запросу автора проекта; текущий код просмотрен на `f443f0a`. Автор хочет смотреть повторы, особенно Reel/лучшие моменты, со всеми эффектами и высоким разрешением, а затем экспортировать готовый ролик в MP4. Сейчас [`Replay::views`](https://gitea.maoniao.team/chexit/airdef/src/commit/f443f0a94a71eb2d446792f1829146f9563aaf5d/airdef-mod/src/replay.rs) задаёт width=1280 и ограничивает высоту 1080; API камер после патча 7 ограничен 1920×1080. Простое растягивание этой texture до окна/4K не даёт высокого разрешения. Экспорт в коде не найден. ### Кинопрофиль - Максимальный cinematic preset по умолчанию для повторов, особенно Reel/лучших моментов: полный HD-конвейер, детальные модели/эффекты, тени, объёмы и качественное сглаживание. Отдельный экономный preview выбирается явно, а не наследуется скрыто от настроек живой игры. Исправления [#56](https://gitea.maoniao.team/chexit/airdef/issues/56) и [#57](https://gitea.maoniao.team/chexit/airdef/issues/57) обязательны. - Реальное разрешение камеры соответствует выбранному выходу: native framebuffer/1440p/4K или пользовательское в пределах устройства. Расширить SDK/runtime capability/лимиты там, где нужно; без молчаливого clamp до 1280/1080 и выдачи апскейла за native. - Независимые настройки cinematic preview и offline export. У offline качество важнее скорости рендера; не снижать автоматически эффекты ради realtime FPS. Пользователь видит применённые настройки. - Качество кино не переносится на маленькие grid monitors. Временные overrides и ресурсы восстанавливаются после выхода/отмены/ошибки; прогрев, reset истории после cut и подгрузка сцены согласованы. ### Экспорт - В меню: полный повтор / выбранный интервал / Reel, разрешение, FPS, качество, HUD/титры/леттербокс, аудио, имя/путь результата, прогресс и отмена. - Offline frame stepping: время кадра определяется номером кадра и монтажом, не скоростью компьютера. Сглаженное движение между точками симуляции 20 Гц, pause/slow motion/cuts/шлейфы и временные эффекты воспроизводимы. - Аудиодорожка из записанных/восстановленных событий со слушателем в кинокамере, сохранением задержек и хвостов. Синхронизация A/V, перемоток и retiming; не записывать случайный звук живой игры с микшера. - Кодирование MP4 и запись файлов в native-части/разрешённом host tool, не произвольный запуск процессов из WASM. Выбрать поддерживаемый encoder и явный способ его установки/обнаружения. - Асинхронный GPU readback и ограниченная очередь кадров/звука; не хранить весь несжатый 4K-ролик в RAM. Отмена/ошибки оставляют управляемые временные файлы и не портят запись/мир. ### Приёмка Экспортировать один ночной Reel и полный повтор со вспышками, пожарами и плотным следом. Проверить реальные размеры/FPS/длительность файла, A/V sync, отсутствие realtime frame drops, артефактов после cut и кубических эффектов. Повторный экспорт с теми же настройками воспроизводим; память ограничена, выход/отмена возвращают обычное качество игры. Сравнение на [#44](https://gitea.maoniao.team/chexit/airdef/issues/44). <!-- airdef-cinematic-director:start --> ## Дополнение автора: постановка перехвата как законченного кинематографического момента Автор хочет крупно улучшить саму режиссуру повторов. Успешный перехват особенно сложной цели должен ощущаться достижением: зритель видит, кто обнаружил угрозу, как комплекс подготовился и выпустил ракету, а затем получает выразительную кульминацию. Одного следования камеры за треком и случайной смены ракурса недостаточно. ### Пример сцены: С-400 «Триумф» перехватывает «Искандер-М» 1. **Представление героя.** Общий/трёхчетвертной план комплекса в окружении. Короткая аккуратная подпись «С-400 „Триумф“» и обозначение события «Перехват „Искандер-М“». Титр опирается на фактические типы из записи, а не на фиксированное имя шаблона. Свет и фон подчёркивают силуэт; у сцены есть короткий момент ожидания. 2. **Обнаружение и захват.** Кадр камеры/прицела комплекса: появляется отметка, цель берётся на сопровождение, видна фиксация и готовность к пуску. Использовать реальные зарегистрированные события и состояние датчиков, включая доработку #46; не выдумывать захват задним числом по истинной позиции цели. Развести обзорную РЛС, внешнее целеуказание и fire-control tracking, если это разные источники. 3. **Подготовка и пуск со стороны.** Камера сбоку/под углом так, чтобы целиком читалась ПУ. Показать настоящий доворот башни/средств сопровождения и работу механизмов. Для вертикального пуска не имитировать несуществующее наведение труб; особенности конкретного комплекса должны сохраняться. 4. **Выход ракеты и зажигание.** Читаемый выход из направляющей/холодный выброс, затем фактическое зажигание двигателя, мощный факел, дым, подсветка установки и земли, нарастающий рёв. Время выброса и ignition берётся из записи/профиля ракеты; это разные фазы, а не одна вспышка с уже летящей ракетой. Использовать эффекты и звук #51, полноценный рендер #56. 5. **Полёт к цели.** Переход на сопровождающую камеру позади/сбоку ракеты, которая показывает цель и направление сближения. Сохранить пространственную понятность — зритель понимает, откуда летит перехватчик и где цель. Подчеркнуть скорость, факел и след (#54), допускаются выразительные дополнительные ракурсы без хаотичного мельтешения. 6. **Кульминация и результат.** Камера заранее выбирает читаемый ракурс встречи. Короткое замедление при необходимости, сильная вспышка, огненный объём, удар света и звуковая кульминация, затем горящие обломки/след и немного времени на осознание результата. Не заканчивать клип в сам кадр вспышки: дать звуковому хвосту и падению завершить сцену. Короткая итоговая подпись подтверждает реальное уничтожение; не объявлять сбитие там, где ракета промахнулась. Это ориентир композиции, а не жёстко одинаковые шесть склеек для каждого события. Длительность и переходы подстраиваются под реальные интервалы обнаружения, подготовки и полёта. ### Масштаб пафоса и разнообразие - С-400/С-500 и успешный перехват большой/баллистической/трудной цели получают наиболее торжественный, выразительный монтаж. Вес события определяется также опасностью, редкостью и контекстом, а не только названием установки. - Панцирь и более лёгкие комплексы — более короткие и динамичные сцены с меньшим пафосом, но всё равно с читаемой цепочкой «сопровождение → доворот → пуск/очередь → результат». - Частые обычные сбития можно объединять в монтажную серию; не растягивать каждый дешёвый дрон на одинаковую длинную заставку. Несколько согласованных шаблонов ракурсов и сдержанная вариативность. - Full replay, выбранный момент и Reel используют один механизм режиссуры. Настройки длины/интенсивности и возможность пропустить титр не должны ломать таймлайн и экспорт. ### Что нужно записывать и как выбирать кадры Текущий `replay.rs::shoot` в основном переключается между chase-камерой дрона/перехватчика и ракурсом пушки; `clip` обрезает Kill фиксированными 140 тиками до/50 после. `record.rs` хранит треки и результаты, но не полную историю состояний установки/датчиков. Поэтому одного редактирования положения камеры недостаточно. - Связать цепочку по ID: обнаружение/измерение, назначение и захват, разворот/готовность, конкретный пуск/перехватчик, ignition, сближение, срабатывание и исход. Сохранять необходимые положения/ориентации ПУ, приводов и состояние датчиков/индикации, а не показывать текущую установку из живой игры. - Границы клипа выбирать по событиям цепочки и времени полёта; нужный preroll может начинаться значительно раньше фиксированных семи секунд до сбития. Учесть ранние события до текущего начала записи. - Для старых/неполных записей — честный сокращённый монтаж доступных стадий. Не фабриковать отсутствующее обнаружение, lock или доворот. - Камеры не проходят через землю, технику и сооружения; обеспечивают видимость героя/ракеты/встречи. При плохом ракурсе нужен альтернативный shot, а не камера внутри корпуса. Использовать геометрию/видимость из #43 по готовности. - Режиссура воспроизводима по записи и собственному seed, не потребляет RNG боевой симуляции. Одинаковый timestamp/seek возвращает одинаковый ракурс; cut сбрасывает/прогревает подходящие истории TAA/объёмов. - Время суток/погода #57, детальные модели #55, аудио от позиции камеры, качество и MP4 из этого issue работают для всего монтажа, включая замедления и хвосты звука. ### Приёмка режиссуры Снять один успешный перехват большой цели С-400/С-500: читаются название комплекса, обнаружение/захват, подготовка, полный вид ПУ при пуске, выход ракеты и ignition, сопровождающий полёт и выразительная вспышка с результатом. Затем показать Панцирь против обычного дрона — короче и сдержаннее, но с понятными стадиями. Проверить две ракеты на одну цель, промах, потерю трека, уничтоженную/движущуюся ПУ, короткую запись и несколько близких по времени событий. Монтаж не приписывает успех другой ракете/комплексу и не показывает выдуманный успешный исход. Preview и MP4 дают одну сцену с синхронным звуком, правильной ночью и без кубических эффектов. <!-- airdef-cinematic-director:end -->
chexit changed title from [enhancement] Кинорежим повторов и экспорт лучших моментов в MP4 на максимальном качестве to [enhancement] Кинорежиссёр повторов: многоракурсный перехват, максимальное качество и экспорт MP4 2026-10-29 18:01:51 +00:00
chexit added the area:simulation label 2026-10-29 18:01:55 +00:00
Author
Owner

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/76f680e (запушено в main).

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/76f680e (запушено в main).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#58