docs: record the engine cleanup for failed film takes
Engine 60cc7b11d removes a failed or cancelled take's video, raw sound and log, carries the log's last lines in the error, and only creates <name>.mp4 after a successful finish. A real failing encoder on the scratch world left no temporaries and kept the earlier film byte for byte; successful audio and no-audio control films still verified. Co-Authored-By: Kimi Code <noreply@moonshot.ai>
This commit is contained in:
@@ -67,9 +67,11 @@ query/voice/peak-memory бюджеты. Старый допуск broadband RT60
|
||||
h264 + AAC, отчёт мода совпадает с `ffprobe nb_frames`, отмена/ошибка SDK/ошибка энкодера/повторный
|
||||
запуск проходят. Найден и исправлен дефект: выход в заголовок во время экспорта оставлял захват
|
||||
записывать заголовок (запрос `sec=10` дал 3898 кадров); теперь показ завершается по кадровому хуку.
|
||||
Подробности и ограничения (очистка временных файлов движком при ошибке энкодера) —
|
||||
[HD-RENDERER](HD-RENDERER.md) (раздел про кинорежиссёра) и [ENGINE](ENGINE.md) (раздел про
|
||||
захват). 10-минутный экспорт и Windows/Linux по-прежнему не проверены.
|
||||
Подробности и проверенные ограничения — [HD-RENDERER](HD-RENDERER.md) (раздел про кинорежиссёра)
|
||||
и [ENGINE](ENGINE.md) (раздел про захват). Очистка временных файлов при ошибке энкодера
|
||||
исправлена в движке `73b9d3070`: лог удаляется, его последние строки входят в текст ошибки, а
|
||||
готовый MP4 прежнего экспорта с тем же именем сохраняется. 10-минутный экспорт и Windows/Linux
|
||||
по-прежнему не проверены.
|
||||
|
||||
## Обновление #123
|
||||
|
||||
|
||||
+10
-5
@@ -63,7 +63,8 @@ runtime закреплённого движка. Используется вре
|
||||
|
||||
## Акустика и владение захватом (API 27)
|
||||
|
||||
Текущий pin: `57f8b2853c4443f7e3ff5701600cbb262b53118f` (API 29). Акустические
|
||||
Текущий pin: `73b9d307048fc44d7f21fa3c829fc5a855d144a6` (API 29; поверх `57f8b2853` — очистка
|
||||
неудачного захвата). Акустические
|
||||
`render.acoustics-status` и `render.capture-owner-status` возвращают поколение,
|
||||
`available`, `enabled`, `request-accepted`, `prepared` и причину. В игре всё это показывает
|
||||
`/airdef capabilities`. Отсутствие запроса, выключение, ожидание backend и ошибка различаются.
|
||||
@@ -81,14 +82,18 @@ AirDef не принимает чужие Recording/Done за свой эксп
|
||||
сбрасывает готовность. Уже переданный writer файл на Encoding может всё же завершиться:
|
||||
это запрос отмены, не гарантия удаления файла.
|
||||
|
||||
Проверено на реальном экспорте 4 ноября (pin `57f8b2853`):
|
||||
Проверено на реальном экспорте 4 ноября (pin `57f8b2853`; очистка ошибки в `73b9d3070`):
|
||||
|
||||
- Смена мира доходит до движка только через снимок мода (`set_snapshot`). На экране заголовка тики
|
||||
не вызываются, поэтому мод без хука `frame` не сообщает о закрытии мира, и захват продолжает
|
||||
писать заголовок. AirDef теперь просит `frame` и завершает показ по `game.world-id = none`.
|
||||
- При ошибке энкодера писатель удаляет только отменённые файлы: `<имя>.audio.raw` и
|
||||
`<имя>.ffmpeg.log` остаются. Успешная и отменённая записи временных файлов не оставляют.
|
||||
Это ограничение движка, а не мода; исправление — в `game/film.rs`.
|
||||
- При ошибке энкодера временные файлы этого захвата (`<имя>.video.mp4`, `<имя>.audio.raw`,
|
||||
`<имя>.ffmpeg.log`) удаляются, а последние строки лога переносятся в текст ошибки: ссылки на
|
||||
уже удалённый лог больше нет. Кодировщик всегда пишет `<имя>.video.mp4`, а `<имя>.mp4`
|
||||
появляется только после успешного mux или переименования, поэтому неудачный, отменённый или
|
||||
беззвучный захват не перезаписывает и не удаляет готовый фильм прежнего экспорта с тем же
|
||||
именем. Исправлено в `73b9d307048fc44d7f21fa3c829fc5a855d144a6` (`game/film.rs`), проверено
|
||||
реальной ошибкой ffmpeg и контрольным MP4.
|
||||
|
||||
## Отдельный тяжёлый WASM tier
|
||||
|
||||
|
||||
+8
-4
@@ -368,7 +368,7 @@ HORIZON_HD_TAA=0 --out run-home-bench/out/taa-off` — A/B; `--baseline run-home
|
||||
- Мод-HUD (`set-hud`) теперь рисуется и при `set-main-view` (титры, леттербокс фильма); ванильный HUD по-прежнему скрыт.
|
||||
- Режиссура: `airdef-mod/src/film.rs` (план по записи, варианты ракурсов, проверка рельефа по высотам `Ground::land_state`, ускорение/замедление времени).
|
||||
|
||||
### Проверенный жизненный цикл MP4 (4 ноября, pin `57f8b2853`, API 29)
|
||||
### Проверенный жизненный цикл MP4 (4 ноября, pin `57f8b2853`, очистка ошибки энкодера — `73b9d3070`, API 29)
|
||||
|
||||
Реальный короткий экспорт на scratch `HORIZON_HOME`/мире (не на сохранениях игрока), Apple M5, Metal,
|
||||
ffmpeg 9.0.1. `/airdef replay export` с записанного налёта (4 цели, 4 перехвата), 640×360:
|
||||
@@ -383,9 +383,13 @@ ffmpeg 9.0.1. `/airdef replay export` с записанного налёта (4
|
||||
ffmpeg не остаётся; сразу после отмены новый экспорт проходит.
|
||||
- отказ SDK (`size=10000x10000`): сообщение об ошибке, захват не остаётся, следующий экспорт проходит.
|
||||
- ошибка энкодера (подставной `HORIZON_FFMPEG`, отвечающий на `-encoders`, но падающий при записи):
|
||||
«Экспорт не удался: … Broken pipe», файла и процесса нет; новый экспорт после неё проходит.
|
||||
Движок при этом оставляет `<имя>.audio.raw` и `<имя>.ffmpeg.log` — очистка временных файлов при
|
||||
ошибке писателя находится в `horizon/crates/horizon-client/src/game/film.rs` (вне этого репозитория).
|
||||
«Экспорт не удался: … Broken pipe …: fake encoder failed: no such codec»; временных файлов и
|
||||
процесса нет, а последние строки лога теперь в самом тексте ошибки (сам лог удалён). Готовый
|
||||
`keep.mp4` прежнего экспорта с тем же именем остался байт-в-байт (sha256), как и беззвучный
|
||||
`keepnone.mp4` после неудачного `noaudio`-экспорта с тем же именем. Движок `73b9d3070` всегда
|
||||
пишет `<имя>.video.mp4`; `<имя>.mp4` появляется только после успешного mux/переименования.
|
||||
Контрольный `ctrl` на итоговой сборке `73b9d3070` — h264 + AAC, 33 кадра, временных файлов нет;
|
||||
`keep` (h264 + AAC, 32 кадра) и `keepnone` (только h264, 32 кадра) проверялись на той же правке.
|
||||
- **выход в заголовок во время экспорта** (до исправления): игра перестаёт тикать на экране
|
||||
заголовка, но продолжает кадры, поэтому захват писал заголовок; запрос `sec=10` дал 3898 кадров
|
||||
(129.9 с), временные `video.mp4`/`audio.raw` и ffmpeg оставались, а после возврата в тот же мир
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
| #72 | Upstream Horizon 0.2.97 объединён с форком; сохранена история; локальные тесты и Metal-полигон | Windows/Linux, native HDR, сравнительная производительность |
|
||||
| #87 | Каноническое SDK-free ядро `airdef-core`, используется модом и сценариями | Дальнейшее отделение текстового/визуального вывода домена от адаптера |
|
||||
| #88 | Типизированный журнал измеренных переходов; read-only Snapshot для Smoke/Shown; записанные пожары, позы, пуски и зажигание | Перевести оставшиеся model/audio adapters и режиссёра на общий снимок; замер полной 10-минутной записи |
|
||||
| #89 | Session владеет Live/Replay/Export; явные часы/поколения; единый cleanup; задержанный звук следует часам показа; выход в заголовок завершает показ одним cleanup (хук `frame`, `Session::world_left`) | Реальный короткий MP4 проверен 4 ноября (звук/видео, отмена, ошибка SDK и энкодера, повторный запуск, совпадение кадров и хвоста очереди). Остаётся: очистка `*.audio.raw`/`*.ffmpeg.log` движком при ошибке энкодера; 10-минутный экспорт; приёмка Windows/Linux |
|
||||
| #89 | Session владеет Live/Replay/Export; явные часы/поколения; единый cleanup; задержанный звук следует часам показа; выход в заголовок завершает показ одним cleanup (хук `frame`, `Session::world_left`); движок освобождает temp/лог ошибки энкодера и не трогает готовый MP4 | Реальный короткий MP4 проверен 4 ноября (звук/видео, отмена, ошибка SDK и энкодера, повторный запуск, совпадение кадров и хвоста очереди, сохранность прежнего MP4). Остаётся: 10-минутный экспорт; приёмка Windows/Linux |
|
||||
| #91 | Общий каталог доступности и потребители меню/инвентаря; явный RM48U-профиль; корректные подписи очередей | Единый источник всех чисел, звуков и Python-регистраций; проверка вариантов комплексов |
|
||||
| #92 | Authored overrides, проверка ссылок/PNG/границ, manifest, безопасная транзакционная генерация; registry/texture/icon modules | Дальнейшее ручное улучшение контента относится к #115 |
|
||||
| #96 | Акустические пути; измеренные синтетические occlusion/echo/reverb fixtures; лицензии и исходные notices в архивах | Прослушивание, игровой массовый звук/CPU, акустика реального MP4; точность RT60 пока по допуску 35%, не 15% |
|
||||
|
||||
Reference in New Issue
Block a user