[architecture] Дорожная карта AirDef: границы ядра, единая сцена, акустика и развитие механик #103

Open
opened 2026-10-30 10:31:31 +00:00 by chexit · 3 comments
Owner

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

Архитектурный обзор 76f680eba64b64eb28435e71ce9f22a84b0e5da1 и форка Horizon: 32 patch-файла поверх pinned v0.2.93. Это дорожная карта отдельных задач, не требование переписать проект прежде, чем делать контент.

Вывод

Мод уже вырос из прототипа. Есть полезные headless сценарии, профили техники, датчики с треками, world-query API и разделённые HD-проходы. Основной долг теперь в контрактах между слоями: бой и presentation делят RNG/ID, live/replay показывают сцену разными реализациями, состояние загрузки и переходы режима не имеют одной точки проверки. Некоторые наземные/информационные механики остались заметно проще воздушного боя.

В этом проходе две дополнительные проверки выполнены нативно на отдельной копии: графический режим меняет следующую ошибку наведения/ID; state loader принимает нечисловые координаты и отрицательное HP. Остальные ниже — выводы из текущего кода и проектные предложения, не заявленные измеренные ускорения/утечки. Native suite на этом HEAD ранее: 56 unit + 4 integration scenarios; новые characterization probes: 2/2. Реальный FPS/аудиобюджет Mac в этом проходе не измерялся. Код проекта не менялся.

Этап 0 — не ждать архитектуры

P1 #73/#74 и остальные уже открытые #75–84 исправляются отдельно. Новые дефекты: RNG/ID 85, транзакционная загрузка/валидация 86. Большой рефакторинг не должен стать предлогом отложить воспроизводимые ошибки.

Этап 1 — границы и воспроизводимость

  • Ядро и адаптеры 87: сначала убрать domain→UI зависимости, сохранить поведение.
  • Сессии/часы/ресурсы 89: один lifecycle для Live/Replay/Export.
  • Контекст world queries и подтверждение изменений 90; развивает уже выполненный #43.
  • Сборка/SDK/capability contract 102; обновление upstream остаётся в #72.

Этап 2 — общие данные сцены и контента

  • Domain events + snapshots 88 дают live/replay/MP4 одну правду о пуске, позах и разрушении. Не внедрять полную пересимуляцию мира ради кино.
  • Каталог техники/профилей 91, исходники и генерация ассетов 92. Не навязывать ECS, сотни crate и внешнюю scripting-систему.
  • Информационные представления 93 для честного боевого режима, сохранив всеведущий sandbox для тестов.
  • Ground navigation 94: наземные машины и ТЗМ должны соответствовать выросшему уровню воздушной части.

Пожелания пользователя: игровые и аудиовизуальные ветки

Ветка Задачи Минимальный полезный выпуск
Звук moving/loop sources 95, acoustics 96 непрерывный пролёт + глушение преградой; затем отражения/реверб
Поражение outcomes 97 пушка чаще оставляет падающий остов, сильный перехват может разрушить/детонировать цель в воздухе
Команды tree/completion 98 реальные подкоманды/аргументы вместо единственного <args>
Предметы иконки 99, pipeline 92 все 29 предметов читаются по силуэту и назначению
Источник налёта позиции 100 1/2/4–5 реальных баз с очередью и фактическим стартом
Инициатива игрока разведка/ответный удар 101 найти базу и отменить её ещё не состоявшиеся пуски

Зависимости и порядок

  1. RNG и load validation можно чинить сразу, без ожидания выделения ядра.
  2. Сначала source/generated ownership, затем авторские иконки/#55; каталог мигрировать постепенно.
  3. Events/scene timeline поддерживают новые outcomes и кино. Outcomes MVP можно выпустить раньше, записав новый факт в текущий recorder.
  4. Moving sources — основа; acoustics direct path → reflections → late reverb. World queries общие, audio callback мир не трассирует.
  5. Launch sites MVP → наблюдение/разведка → ground strike. #47 доктрины и #48 карта показывают эти механики, не дублируются новыми задачами.

Как принимать изменения

Небольшие PR с одним направлением зависимости/поведением. На каждом этапе сохранять headless сценарии и старые корректные сейвы/команды. Сравнивать combat trace, а не только общий процент сбитий. Для GPU/аудио/WASM — отдельные профили и budgets; не обещать ускорение от переименования файлов. legacy/ не считать мусором без проверки, не удалять историю автоматически. Архитектурный результат — следующую механику можно добавить в одном понятном месте, а live/replay не расходятся.

🤖 Filed by Codex, AI-агент Владимира (chexit). Архитектурный обзор `76f680eba64b64eb28435e71ce9f22a84b0e5da1` и форка Horizon: 32 patch-файла поверх pinned v0.2.93. Это дорожная карта отдельных задач, не требование переписать проект прежде, чем делать контент. ### Вывод Мод уже вырос из прототипа. Есть полезные headless сценарии, профили техники, датчики с треками, world-query API и разделённые HD-проходы. Основной долг теперь **в контрактах между слоями**: бой и presentation делят RNG/ID, live/replay показывают сцену разными реализациями, состояние загрузки и переходы режима не имеют одной точки проверки. Некоторые наземные/информационные механики остались заметно проще воздушного боя. В этом проходе две дополнительные проверки выполнены нативно на отдельной копии: графический режим меняет следующую ошибку наведения/ID; state loader принимает нечисловые координаты и отрицательное HP. Остальные ниже — выводы из текущего кода и проектные предложения, не заявленные измеренные ускорения/утечки. Native suite на этом HEAD ранее: 56 unit + 4 integration scenarios; новые characterization probes: 2/2. Реальный FPS/аудиобюджет Mac в этом проходе не измерялся. Код проекта не менялся. ### Этап 0 — не ждать архитектуры P1 #73/#74 и остальные уже открытые #75–84 исправляются отдельно. Новые дефекты: RNG/ID [85](https://gitea.maoniao.team/chexit/airdef/issues/85), транзакционная загрузка/валидация [86](https://gitea.maoniao.team/chexit/airdef/issues/86). Большой рефакторинг не должен стать предлогом отложить воспроизводимые ошибки. ### Этап 1 — границы и воспроизводимость - Ядро и адаптеры [87](https://gitea.maoniao.team/chexit/airdef/issues/87): сначала убрать domain→UI зависимости, сохранить поведение. - Сессии/часы/ресурсы [89](https://gitea.maoniao.team/chexit/airdef/issues/89): один lifecycle для Live/Replay/Export. - Контекст world queries и подтверждение изменений [90](https://gitea.maoniao.team/chexit/airdef/issues/90); развивает уже выполненный #43. - Сборка/SDK/capability contract [102](https://gitea.maoniao.team/chexit/airdef/issues/102); обновление upstream остаётся в #72. ### Этап 2 — общие данные сцены и контента - Domain events + snapshots [88](https://gitea.maoniao.team/chexit/airdef/issues/88) дают live/replay/MP4 одну правду о пуске, позах и разрушении. Не внедрять полную пересимуляцию мира ради кино. - Каталог техники/профилей [91](https://gitea.maoniao.team/chexit/airdef/issues/91), исходники и генерация ассетов [92](https://gitea.maoniao.team/chexit/airdef/issues/92). Не навязывать ECS, сотни crate и внешнюю scripting-систему. - Информационные представления [93](https://gitea.maoniao.team/chexit/airdef/issues/93) для честного боевого режима, сохранив всеведущий sandbox для тестов. - Ground navigation [94](https://gitea.maoniao.team/chexit/airdef/issues/94): наземные машины и ТЗМ должны соответствовать выросшему уровню воздушной части. ### Пожелания пользователя: игровые и аудиовизуальные ветки | Ветка | Задачи | Минимальный полезный выпуск | | --- | --- | --- | | Звук | moving/loop sources [95](https://gitea.maoniao.team/chexit/airdef/issues/95), acoustics [96](https://gitea.maoniao.team/chexit/airdef/issues/96) | непрерывный пролёт + глушение преградой; затем отражения/реверб | | Поражение | outcomes [97](https://gitea.maoniao.team/chexit/airdef/issues/97) | пушка чаще оставляет падающий остов, сильный перехват может разрушить/детонировать цель в воздухе | | Команды | tree/completion [98](https://gitea.maoniao.team/chexit/airdef/issues/98) | реальные подкоманды/аргументы вместо единственного `<args>` | | Предметы | иконки [99](https://gitea.maoniao.team/chexit/airdef/issues/99), pipeline [92](https://gitea.maoniao.team/chexit/airdef/issues/92) | все 29 предметов читаются по силуэту и назначению | | Источник налёта | позиции [100](https://gitea.maoniao.team/chexit/airdef/issues/100) | 1/2/4–5 реальных баз с очередью и фактическим стартом | | Инициатива игрока | разведка/ответный удар [101](https://gitea.maoniao.team/chexit/airdef/issues/101) | найти базу и отменить её ещё не состоявшиеся пуски | ### Зависимости и порядок 1. RNG и load validation можно чинить сразу, без ожидания выделения ядра. 2. Сначала source/generated ownership, затем авторские иконки/#55; каталог мигрировать постепенно. 3. Events/scene timeline поддерживают новые outcomes и кино. Outcomes MVP можно выпустить раньше, записав новый факт в текущий recorder. 4. Moving sources — основа; acoustics direct path → reflections → late reverb. World queries общие, audio callback мир не трассирует. 5. Launch sites MVP → наблюдение/разведка → ground strike. #47 доктрины и #48 карта показывают эти механики, не дублируются новыми задачами. ### Как принимать изменения Небольшие PR с одним направлением зависимости/поведением. На каждом этапе сохранять headless сценарии и старые корректные сейвы/команды. Сравнивать combat trace, а не только общий процент сбитий. Для GPU/аудио/WASM — отдельные профили и budgets; не обещать ускорение от переименования файлов. `legacy/` не считать мусором без проверки, не удалять историю автоматически. Архитектурный результат — следующую механику можно добавить в одном понятном месте, а live/replay не расходятся.
chexit added the area:architecturepriority:P2type:enhancement labels 2026-10-30 10:31:31 +00:00
Author
Owner

🤖 Agent: Codex — по решению пользователя создана отдельная задача #104: перенос форка Horizon в самостоятельную репу и подключение horizon/ через pinned git submodule. Репозиторий создаст Владимир и передаст URL позже. Эта задача конкретизирует способ хранения/подключения движка; остальные требования к совместимости и проверкам сохраняются.

🤖 Agent: Codex — по решению пользователя создана отдельная задача #104: перенос форка Horizon в самостоятельную репу и подключение `horizon/` через pinned git submodule. Репозиторий создаст Владимир и передаст URL позже. Эта задача конкретизирует способ хранения/подключения движка; остальные требования к совместимости и проверкам сохраняются.
Author
Owner

🤖 Agent: Codex — ревью 31 октября 2026.

Ревью нового среза 38e515d: базовые 153 unit + 4 integration scenario и 5 Python-проверок прошли. Десять новых находок оформлены отдельно: #105, #106, #107, #108, #109, #110, #111, #112, #113, #114. P1: #105, #106. Дополнительные characterization tests выполнены в отдельной копии; код проекта не менялся. Это конкретные дефекты/дополнение новых механик, не повтор открытой архитектурной дорожной карты.

🤖 Agent: Codex — ревью 31 октября 2026. Ревью нового среза 38e515d: базовые 153 unit + 4 integration scenario и 5 Python-проверок прошли. Десять новых находок оформлены отдельно: #105, #106, #107, #108, #109, #110, #111, #112, #113, #114. P1: #105, #106. Дополнительные characterization tests выполнены в отдельной копии; код проекта не менялся. Это конкретные дефекты/дополнение новых механик, не повтор открытой архитектурной дорожной карты.
Author
Owner

🤖 Agent: Codex — итог повторного архитектурного/функционального ревью, результаты фиксировались последовательно по просьбе владельца.

Проверенный срез: AirDef kimi-work @ 61aaa0bf359026711ba811a7f7e9877ce253ead2, submodule Horizon @ 278f356aa604fa21c2d15d0081823bbe0f891df2; main для сравнения 1a693763fdf98916a39b394bb512340cc84bac87. После ранее проверенного cd3c4ed в ветке 94 коммита. В ней смешаны изменения разных агентов; название ветки не означает авторство Кими для каждого коммита.

Результаты текущего прохода:

  • #124, P2 — единая интеграция DLSS / FSR3 / MetalFX с матрицей поддержки, лицензиями, контрактом входных данных и отдельным этапом frame generation.
  • #125, P2 — отдельный RT-пресет по найденному исходному этапу 10 HD-плана: тени/отражения, затем GI; runtime capability probe, корректная сцена, denoising и сохранение обычного HD.
  • #126, P1 — архитектурная оптимизация и измерения: retained GPU meshes/instancing, объёмный дым, immutable scene extraction, native host worker для WASM-симуляции, управляемые очереди и бюджеты. Базовый порядок/RNG/частоту симуляции сохранять; качество не урезать. Это набор обоснованных кандидатов, а не выдуманный замер ускорения RTX3060.
  • #127, P2 — умный противник: подтверждённое расхождение оценщика с LauncherOnly/реальной сетью РЛС, потеря 39/40 маршрутов при массовом ретаргете, честная модель знаний и устойчивая очередь работ. Старое намеренное straight-flight fallback указано именно как ограничение дизайна, не названо новой случайной регрессией.
  • #128, P2 — подтверждённая блокировка независимого снабжения ТЗМ одной временно невыполнимой заявкой возврата RM48U.
  • В #118 отдельным комментарием описан меньший остаток выбора носителя: ранжирование по raw stock вместо свободного запаса после резерва на вывоз; native reproduction, приоритет остатка P3.

Прогнаны на указанном срезе: core release 195 unit passed + 8 scenario passed (8 ignored); adapter release 66 unit + 1 boundary + 5 scenario passed; Python 29 passed; tools/gen_catalog.py --check passed. Ещё 4 characterization probes в изолированной копии воспроизводят замечания к планировщику, ТЗМ и ранжированию носителей. Это положительные проверки существования дефектов, а не утверждение, что ошибочное поведение правильно.

Просмотрены актуальные комментарии #104–#123 и соответствующие критичные пути. Уже опубликованные исправления прежних terminal-sweep/движения strike, acoustic invalidation/busy-guard, typed stock, каталога и lifecycle не дублировались новыми issues. Тесты не заменяют полную игровую/платформенную приёмку: здесь не выполнялся GPU/FPS-прогон на RTX3060/M5, не подтверждалась художественная оценка всех моделей и не запускалась реальная DLSS/FSR/MetalFX/RT интеграция. Архивированные замеры авторов ветки не выдаются за собственные замеры этого ревью.

Код, main и статусы существующих задач не менялись; новые задачи размечены по типу/области/приоритету. Отдельные архитектурные улучшения уже идут в правильную сторону (SDK-independent core, единый каталог и snapshot/lifecycle), но вынос core не завершил разделение simulation/presentation, а новые механики выявили пробелы на границах старых подсистем.

🤖 Agent: Codex — итог повторного архитектурного/функционального ревью, результаты фиксировались последовательно по просьбе владельца. Проверенный срез: AirDef `kimi-work` @ `61aaa0bf359026711ba811a7f7e9877ce253ead2`, submodule Horizon @ `278f356aa604fa21c2d15d0081823bbe0f891df2`; main для сравнения `1a693763fdf98916a39b394bb512340cc84bac87`. После ранее проверенного `cd3c4ed` в ветке 94 коммита. В ней смешаны изменения разных агентов; название ветки не означает авторство Кими для каждого коммита. Результаты текущего прохода: - #124, P2 — единая интеграция DLSS / FSR3 / MetalFX с матрицей поддержки, лицензиями, контрактом входных данных и отдельным этапом frame generation. - #125, P2 — отдельный RT-пресет по найденному исходному этапу 10 HD-плана: тени/отражения, затем GI; runtime capability probe, корректная сцена, denoising и сохранение обычного HD. - #126, P1 — архитектурная оптимизация и измерения: retained GPU meshes/instancing, объёмный дым, immutable scene extraction, native host worker для WASM-симуляции, управляемые очереди и бюджеты. Базовый порядок/RNG/частоту симуляции сохранять; качество не урезать. Это набор обоснованных кандидатов, а не выдуманный замер ускорения RTX3060. - #127, P2 — умный противник: подтверждённое расхождение оценщика с LauncherOnly/реальной сетью РЛС, потеря 39/40 маршрутов при массовом ретаргете, честная модель знаний и устойчивая очередь работ. Старое намеренное straight-flight fallback указано именно как ограничение дизайна, не названо новой случайной регрессией. - #128, P2 — подтверждённая блокировка независимого снабжения ТЗМ одной временно невыполнимой заявкой возврата RM48U. - В #118 отдельным комментарием описан меньший остаток выбора носителя: ранжирование по raw stock вместо свободного запаса после резерва на вывоз; native reproduction, приоритет остатка P3. Прогнаны на указанном срезе: core release 195 unit passed + 8 scenario passed (8 ignored); adapter release 66 unit + 1 boundary + 5 scenario passed; Python 29 passed; `tools/gen_catalog.py --check` passed. Ещё 4 characterization probes в изолированной копии воспроизводят замечания к планировщику, ТЗМ и ранжированию носителей. Это положительные проверки существования дефектов, а не утверждение, что ошибочное поведение правильно. Просмотрены актуальные комментарии #104–#123 и соответствующие критичные пути. Уже опубликованные исправления прежних terminal-sweep/движения strike, acoustic invalidation/busy-guard, typed stock, каталога и lifecycle не дублировались новыми issues. Тесты не заменяют полную игровую/платформенную приёмку: здесь не выполнялся GPU/FPS-прогон на RTX3060/M5, не подтверждалась художественная оценка всех моделей и не запускалась реальная DLSS/FSR/MetalFX/RT интеграция. Архивированные замеры авторов ветки не выдаются за собственные замеры этого ревью. Код, main и статусы существующих задач не менялись; новые задачи размечены по типу/области/приоритету. Отдельные архитектурные улучшения уже идут в правильную сторону (SDK-independent core, единый каталог и snapshot/lifecycle), но вынос core не завершил разделение simulation/presentation, а новые механики выявили пробелы на границах старых подсистем.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#103