[enhancement] Адаптировать акустику Sound Physics Remastered для Horizon: преграды, отражения и реверберация #96

Open
opened 2026-10-30 10:30:43 +00:00 by chexit · 6 comments
Owner

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

Архитектурный проход по 76f680eba64b64eb28435e71ce9f22a84b0e5da1.

Запрос и текущая основа

Нужно ощущение пространства: взрыв в ущелье отдаётся эхом, за горой приглушается, под крышей/в тоннеле звучит иначе, чем в открытом поле. Мод уже задерживает звук по расстоянию и использует near/far слои (lib.rs::emit, cinema.rs). Mixer Horizon (horizon-client/src/audio.rs) умеет панораму/attenuation/pitch, но геометрического occlusion/reflections/reverb в просмотренном тракте нет.

Основной технический референс — исходники и алгоритмы Sound Physics Remastered. Пользователь уточнил: нужно изучить рабочую реализацию и оценить перенос/адаптацию механики в Horizon под AirDef, а не ограничиваться README и разработкой похожего эффекта с нуля. Точная волновая симуляция всего мира не требуется.

Исследование реализации и адаптация под AirDef

Первый этап — разбор актуального исходного кода Sound Physics Remastered с фиксацией commit и ссылками на конкретные функции. В первоначальном архитектурном обзоре Codex изучил только README; разбор реализации и пригодность её алгоритмов ещё не выполнены и не должны считаться доказанными.

  • Проследить путь от источника звука до результата: occlusion/поглощение блоками, выбор и трассировка отражений, затухание и задержки, оценка окружения/реверберации, обновление движущихся источников и кэширование. Отделить непосредственно алгоритмы от Minecraft/loader/audio-backend интеграции; проверить, какие эффекты реализация действительно рассчитывает, а какие делегирует бэкенду.
  • Составить короткое сопоставление «механизм/функция SPR → эквивалент в Horizon → адаптация/ограничение». Переиспользовать удачные решения, где они подходят; необходимые изменения объяснять различиями архитектуры и замерами. Адаптация Java→Rust и другого микшера — отдельная работа, не механический перевод строк.
  • Выбрать допустимый способ использования кода/алгоритмов с учётом лицензии SPR, лицензии Horizon и атрибуции. Перенос исходного кода не считать автоматически разрешённым только потому, что репозиторий открыт; прежнего категорического требования «без переноса кода» в этой задаче больше нет.
  • Приоритеты AirDef: длинный пролёт дрона/ракеты, сильный короткий воздушный взрыв, отражения от гор/построек, сохранение хвоста эха, множество одновременных источников. Перенастроить дальности, приоритеты и частоту расчётов под эти случаи, а не просто перенести дефолты другого мода.
  • Акустика живёт в Horizon и использует общие запросы геометрии; AirDef сообщает события/движущиеся источники через #95. Один DSP и правила времени работают для live, камеры реплея и offline MP4. Не должно появиться отдельное искусственное «эхо AirDef», расходящееся с системой движка.

Результат исследования — работающий небольшой прототип и сравнение на одинаковом звуковом полигоне: без акустики / адаптированный вариант. Оценить слышимость, устойчивость и CPU/память на Mac; затем расширять реализацию по этапам ниже. Не обещать совпадение с SPR или ускорение до разбора исходников и проверки.

Этапы

  1. Прямой звук: visibility к listener, частотно-зависимое поглощение/low-pass материалами и толщиной, плавная смена параметров. Открытая дверь/проём учитываются по геометрии, несколько лучей вместо бинарного одного допустимы. Не превращать Unknown мира в полную тишину.
  2. Ранние отражения: небольшой бюджет отражённых путей с задержкой и затуханием; скалы/стены дают различимые echoes. Счёт путей вне audio callback, кэш с инвалидированием world changes.
  3. Поздняя реверберация: дешёвая устойчивая DSP-сеть/окружение по локальным probes; outdoor/canyon/room/tunnel звучат по-разному. Много источников используют общие buses/probes, а не трассируют каждый sample.
  4. Интеграция moving sources, категорий и recorded listener/time. Учесть уже имеющиеся кинослои взрыва, чтобы не удвоить дальний гул/задержку и не перегрузить limiter.

Бюджеты и приёмка

Opt-in настройка форка/мода с прозрачным fallback; без изменения обычного игрового звука по умолчанию. Лимиты rays/probes/voices/reflection taps, LRU и telemetry. В callback нельзя обращаться к миру, блокирующим запросам или бесконтрольно выделять память.

Полигон: поле, одна стена/дверь, тоннель, ущелье, динамически разрушенная преграда, массовый перехват. Измерить CPU/аудиопропуски и память на Mac; бюджет установить по измерению, не обещать бесплатный эффект. Эхо продолжается после конца исходного хлопка, не после unload другой сессии. Offline MP4 использует тот же DSP по sample clock независимо от скорости GPU. Псевдоэхо случайным повторением one-shot не считается выполнением задачи.

Общий порядок и зависимости: архитектурная дорожная карта.

🤖 Filed by Codex, AI-агент Владимира (chexit). Архитектурный проход по `76f680eba64b64eb28435e71ce9f22a84b0e5da1`. ### Запрос и текущая основа Нужно ощущение пространства: взрыв в ущелье отдаётся эхом, за горой приглушается, под крышей/в тоннеле звучит иначе, чем в открытом поле. Мод уже задерживает звук по расстоянию и использует near/far слои (`lib.rs::emit`, `cinema.rs`). Mixer Horizon (`horizon-client/src/audio.rs`) умеет панораму/attenuation/pitch, но геометрического occlusion/reflections/reverb в просмотренном тракте нет. Основной технический референс — **исходники и алгоритмы [Sound Physics Remastered](https://github.com/henkelmax/sound-physics-remastered)**. Пользователь уточнил: нужно изучить рабочую реализацию и оценить перенос/адаптацию механики в Horizon под AirDef, а не ограничиваться README и разработкой похожего эффекта с нуля. Точная волновая симуляция всего мира не требуется. ### Исследование реализации и адаптация под AirDef Первый этап — разбор актуального исходного кода Sound Physics Remastered с фиксацией commit и ссылками на конкретные функции. В первоначальном архитектурном обзоре Codex изучил только README; разбор реализации и пригодность её алгоритмов ещё не выполнены и не должны считаться доказанными. - Проследить путь от источника звука до результата: occlusion/поглощение блоками, выбор и трассировка отражений, затухание и задержки, оценка окружения/реверберации, обновление движущихся источников и кэширование. Отделить непосредственно алгоритмы от Minecraft/loader/audio-backend интеграции; проверить, какие эффекты реализация действительно рассчитывает, а какие делегирует бэкенду. - Составить короткое сопоставление «механизм/функция SPR → эквивалент в Horizon → адаптация/ограничение». Переиспользовать удачные решения, где они подходят; необходимые изменения объяснять различиями архитектуры и замерами. Адаптация Java→Rust и другого микшера — отдельная работа, не механический перевод строк. - Выбрать допустимый способ использования кода/алгоритмов с учётом [лицензии SPR](https://github.com/henkelmax/sound-physics-remastered/blob/master/LICENSE), лицензии Horizon и атрибуции. Перенос исходного кода не считать автоматически разрешённым только потому, что репозиторий открыт; прежнего категорического требования «без переноса кода» в этой задаче больше нет. - Приоритеты AirDef: длинный пролёт дрона/ракеты, сильный короткий воздушный взрыв, отражения от гор/построек, сохранение хвоста эха, множество одновременных источников. Перенастроить дальности, приоритеты и частоту расчётов под эти случаи, а не просто перенести дефолты другого мода. - Акустика живёт в Horizon и использует общие запросы геометрии; AirDef сообщает события/движущиеся источники через #95. Один DSP и правила времени работают для live, камеры реплея и offline MP4. Не должно появиться отдельное искусственное «эхо AirDef», расходящееся с системой движка. Результат исследования — работающий небольшой прототип и сравнение на одинаковом звуковом полигоне: без акустики / адаптированный вариант. Оценить слышимость, устойчивость и CPU/память на Mac; затем расширять реализацию по этапам ниже. Не обещать совпадение с SPR или ускорение до разбора исходников и проверки. ### Этапы 1. **Прямой звук:** visibility к listener, частотно-зависимое поглощение/low-pass материалами и толщиной, плавная смена параметров. Открытая дверь/проём учитываются по геометрии, несколько лучей вместо бинарного одного допустимы. Не превращать Unknown мира в полную тишину. 2. **Ранние отражения:** небольшой бюджет отражённых путей с задержкой и затуханием; скалы/стены дают различимые echoes. Счёт путей вне audio callback, кэш с инвалидированием world changes. 3. **Поздняя реверберация:** дешёвая устойчивая DSP-сеть/окружение по локальным probes; outdoor/canyon/room/tunnel звучат по-разному. Много источников используют общие buses/probes, а не трассируют каждый sample. 4. Интеграция moving sources, категорий и recorded listener/time. Учесть уже имеющиеся кинослои взрыва, чтобы не удвоить дальний гул/задержку и не перегрузить limiter. ### Бюджеты и приёмка Opt-in настройка форка/мода с прозрачным fallback; без изменения обычного игрового звука по умолчанию. Лимиты rays/probes/voices/reflection taps, LRU и telemetry. В callback нельзя обращаться к миру, блокирующим запросам или бесконтрольно выделять память. Полигон: поле, одна стена/дверь, тоннель, ущелье, динамически разрушенная преграда, массовый перехват. Измерить CPU/аудиопропуски и память на Mac; бюджет установить по измерению, не обещать бесплатный эффект. Эхо продолжается после конца исходного хлопка, не после unload другой сессии. Offline MP4 использует тот же DSP по sample clock независимо от скорости GPU. Псевдоэхо случайным повторением one-shot не считается выполнением задачи. Общий порядок и зависимости: [архитектурная дорожная карта](https://gitea.maoniao.team/chexit/airdef/issues/103).
chexit changed title from [enhancement] Акустика Horizon в духе Sound Physics: преграды, ранние отражения, эхо и реверберация to [enhancement] Адаптировать акустику Sound Physics Remastered для Horizon: преграды, отражения и реверберация 2026-10-30 10:40:42 +00:00
Author
Owner

🤖 Agent: Codex — уточнение запроса пользователя.

Задача обновлена: Sound Physics Remastered теперь указан как основной референс для разбора исходников и оценки переноса/адаптации акустики в Horizon. Убрано прежнее категорическое «без переноса его кода»; добавлены сопоставление алгоритмов, проверка лицензий и прототип под AirDef. Первоначальный обзор ограничивался README, реализация SPR пока не исследована.

🤖 Agent: Codex — уточнение запроса пользователя. Задача обновлена: Sound Physics Remastered теперь указан как основной референс для разбора исходников и оценки переноса/адаптации акустики в Horizon. Убрано прежнее категорическое «без переноса его кода»; добавлены сопоставление алгоритмов, проверка лицензий и прототип под AirDef. Первоначальный обзор ограничивался README, реализация SPR пока не исследована.
Author
Owner

🤖 Agent: этапы 2 и 3 (эхо и реверберация) и кнопка в меню в https://gitea.maoniao.team/chexit/airdef/commit/57a5426. Открыта, пока не послушают в игре.

🤖 Agent: этапы 2 и 3 (эхо и реверберация) и кнопка в меню в https://gitea.maoniao.team/chexit/airdef/commit/57a5426. Открыта, пока не послушают в игре.
Author
Owner

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

На действующих стадиях акустики подтверждены отдельные проблемы: #110 (снимок/кэш не слышит lifecycle чанков), #111 (канал сохраняет старый low-pass после выхода из RANGE), #112 (смена top-8 оставляет 16 активных echo-наборов). Исходный Acoustics проверен в native harness с synthetic Geometry; полный game/GPU не запускался. Реализация стадий и сам план адаптации остаются в этой задаче.

🤖 Agent: Codex — ревью 31 октября 2026. На действующих стадиях акустики подтверждены отдельные проблемы: #110 (снимок/кэш не слышит lifecycle чанков), #111 (канал сохраняет старый low-pass после выхода из RANGE), #112 (смена top-8 оставляет 16 активных echo-наборов). Исходный Acoustics проверен в native harness с synthetic Geometry; полный game/GPU не запускался. Реализация стадий и сам план адаптации остаются в этой задаче.
Author
Owner

🤖 Agent: Codex, при участии GPT-6.1 Terra и GPT-6 Luna. Продолжение в kimi-work: код.

В документации опубликованы результаты реально выполненных синтетических fixtures на закреплённом движке. Occlusion: ниже 300 Гц −5.2 dB, 300–1500 −7.4, 1500–5000 −19.7, выше 5000 −40.0. Echo: gorge 158.9/242.1 ms, room 39.9 ms, field без отражения. Reverb RT60: gorge 0.10 s, tunnel 0.87 s, room 1.39 s; field без хвоста. Reverb прошёл текущий допуск анализатора 35%, не целевой 15%.

Echo и reverb экспортируются в разные каталоги, иначе совпадающие имена WAV перезаписывают друг друга. GPL/MIT тексты и notices исходников добавлены в игровые архивы workflow. Это процедурные тестовые сигналы без аудиоустройства: прослушивание, игровой CPU/массовые голоса и реальный MP4 пока не проверены. Issue не закрываю.

🤖 Agent: Codex, при участии GPT-6.1 Terra и GPT-6 Luna. Продолжение в `kimi-work`: [код](https://gitea.maoniao.team/chexit/airdef/commit/d4adbb1e473c94241c9b38f82bb325ba5450d67e). В [документации](https://gitea.maoniao.team/chexit/airdef/src/commit/d4adbb1e473c94241c9b38f82bb325ba5450d67e/docs/ACOUSTICS.md) опубликованы результаты реально выполненных синтетических fixtures на закреплённом движке. Occlusion: ниже 300 Гц −5.2 dB, 300–1500 −7.4, 1500–5000 −19.7, выше 5000 −40.0. Echo: gorge 158.9/242.1 ms, room 39.9 ms, field без отражения. Reverb RT60: gorge 0.10 s, tunnel 0.87 s, room 1.39 s; field без хвоста. Reverb прошёл текущий допуск анализатора 35%, не целевой 15%. Echo и reverb экспортируются в разные каталоги, иначе совпадающие имена WAV перезаписывают друг друга. GPL/MIT тексты и notices исходников добавлены в игровые архивы workflow. Это процедурные тестовые сигналы без аудиоустройства: прослушивание, игровой CPU/массовые голоса и реальный MP4 пока не проверены. Issue не закрываю.
Author
Owner

🤖 Agent: Codex, with GPT-6.1 Terra.

Published engine e44ad82a9, included in pin 57f8b2853. Added opt-in export_moving_mass_raid through production Audio::tick_acoustics and film_mix: 100 moving looping sources + up to 16 impulses, echo/reverb, listener cut, invalidation and world epoch transition. Two complete 6-second runs compare equal sample-for-sample, output must be non-silent/finite/bounded, and a new capture must contain exact silence after cleanup. No audio device or player resources used; signals/geometry synthetic.

Actual release run on Apple M5/macOS arm64: step+mix per 50 ms audio p50=3.551625 ms, p95=4.297167 ms, max=5.573375 ms; max116 sources, direct4056 cells/tick, echo36835. JSON, invocation and PCM hash. Excludes world snapshot construction, GPU and encoder. A live MP4 attempt did not produce an accepted artifact, so MP4/listening acceptance remains open; RT60 tolerance remains35%. No Windows FPS improvement claimed. Issue state unchanged.

🤖 Agent: Codex, with GPT-6.1 Terra. Published engine e44ad82a9, included in pin 57f8b2853. Added opt-in export_moving_mass_raid through production Audio::tick_acoustics and film_mix: 100 moving looping sources + up to 16 impulses, echo/reverb, listener cut, invalidation and world epoch transition. Two complete 6-second runs compare equal sample-for-sample, output must be non-silent/finite/bounded, and a new capture must contain exact silence after cleanup. No audio device or player resources used; signals/geometry synthetic. Actual release run on Apple M5/macOS arm64: step+mix per 50 ms audio p50=3.551625 ms, p95=4.297167 ms, max=5.573375 ms; max116 sources, direct4056 cells/tick, echo36835. [JSON, invocation and PCM hash](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/measurements/mass-acoustics-2026-11-04.json). Excludes world snapshot construction, GPU and encoder. A live MP4 attempt did not produce an accepted artifact, so MP4/listening acceptance remains open; RT60 tolerance remains35%. No Windows FPS improvement claimed. Issue state unchanged.
Author
Owner

🤖 Agent: Kimi Code, с участием DeepSeek.

Опубликовано в kimi-work как abf3d76fd (документация и проверки; нового DSP-кода не было).

Настоящий MP4 с акустикой проверен на парах ON/OFF одного replay без HORIZON_NO_AUDIO: acoustics/capture ready, H.264 + AAC без обрезки. В каменном дворе после вычитания масштабированного сухого сигнала измерен низкочастотный стерео-декоррелированный wet-остаток; в поле подтверждены окклюзия/поглощение. Цифры и ограничения.

Не заявляю прослушивание, отдельные ранние отражения или чистый RT60 из MP4; 10-минутный экспорт и Windows/Linux остаются. Issue открыт.

🤖 Agent: Kimi Code, с участием DeepSeek. Опубликовано в `kimi-work` как `abf3d76fd` (документация и проверки; нового DSP-кода не было). Настоящий MP4 с акустикой проверен на парах ON/OFF одного replay без `HORIZON_NO_AUDIO`: acoustics/capture `ready`, H.264 + AAC без обрезки. В каменном дворе после вычитания масштабированного сухого сигнала измерен низкочастотный стерео-декоррелированный wet-остаток; в поле подтверждены окклюзия/поглощение. [Цифры и ограничения](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/ACOUSTICS.md). Не заявляю прослушивание, отдельные ранние отражения или чистый RT60 из MP4; 10-минутный экспорт и Windows/Linux остаются. Issue открыт.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#96