[enhancement] Реальные циклы обзора РЛС и стареющие треки вместо всеведения 360° каждый тик #46

Closed
opened 2026-10-29 17:51:19 +00:00 by chexit · 3 comments
Owner

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

Сформировано по прямому запросу автора проекта; текущий код просмотрен на f443f0a. Автор заметил, что одна РЛС словно знает точные координаты всех целей постоянно. По коду это подтверждается как текущая упрощённая модель: sight.rs::update_sight каждый тик очищает own/seen и проверяет все живые цели во всех направлениях. radar.rs рисует текущие d.pos/d.vel; вращающийся луч влияет на яркость, но не на момент измерения.

Желаемое поведение: обзорный луч обнаружил объект → сохранилась последняя измеренная отметка; до следующего посещения сектора точное положение неизвестно. Качество информации должно влиять и на решения ПВО, не только на внешний вид радара.

Модель

  • Профили датчиков: механический обзор с периодом/шириной луча; секторный/электронный обзор с revisit interval; отдельное сопровождение выбранной цели; пассивная оптика. Не навязывать вращающийся механический луч каждому комплексу.
  • Измерения при прохождении луча/очередном посещении сектора. Корректно обрабатывать переход через 0/2π и быстро движущуюся цель между тиками.
  • Track: last_measurement, last_seen_tick, оценка скорости/высоты/класса и confidence, источник. Между измерениями — последняя позиция или отмеченный прогноз с растущей неопределённостью; затем потерянный трек и удаление по TTL.
  • Сетевая передача сохраняет возраст/качество исходного измерения. Новая РЛС может обновить трек, но ретрансляция сама не превращает старые данные в точные.
  • Обзор и fire-control tracking разделить: выделенный канал сопровождения может обновляться чаще обзора, если это предусмотрено профилем; учитывать LOS, доступность и потерю канала. Не превращать это в запрет нормально сопровождать уже захваченную цель.
  • Агрегация, выбор целей, упреждение, HUD/монитор и объяснения /why используют доступные сведения. Не брать скрыто текущую истинную позицию вместо устаревшего измерения. Собственный seeker перехватчика моделируется отдельно.
  • Идентификация «неизвестная/предположительно дрон/подтверждённая» понятна игроку, а не маскирует случайность.

Приёмка

Цель меняет курс после прохода обзорного луча: отметка не следует за реальной целью до нового измерения; прогноз обозначен отдельно. Проверить две РЛС с разными фазами обзора, сеть, укрытие за рельефом, отдельное сопровождение, уничтожение РЛС и переход через границу сектора. В sandbox/разборе можно включить явный слой истинных данных, не вмешивающийся в боевую логику.

🤖 Filed by Codex, AI-агент Владимира (chexit). Сформировано по прямому запросу автора проекта; текущий код просмотрен на `f443f0a`. Автор заметил, что одна РЛС словно знает точные координаты всех целей постоянно. По коду это подтверждается как текущая упрощённая модель: [`sight.rs::update_sight`](https://gitea.maoniao.team/chexit/airdef/src/commit/f443f0a94a71eb2d446792f1829146f9563aaf5d/airdef-mod/src/sim/sight.rs) каждый тик очищает own/seen и проверяет все живые цели во всех направлениях. [`radar.rs`](https://gitea.maoniao.team/chexit/airdef/src/commit/f443f0a94a71eb2d446792f1829146f9563aaf5d/airdef-mod/src/radar.rs) рисует текущие `d.pos`/`d.vel`; вращающийся луч влияет на яркость, но не на момент измерения. Желаемое поведение: обзорный луч обнаружил объект → сохранилась последняя измеренная отметка; до следующего посещения сектора точное положение неизвестно. Качество информации должно влиять и на решения ПВО, не только на внешний вид радара. ### Модель - Профили датчиков: механический обзор с периодом/шириной луча; секторный/электронный обзор с revisit interval; отдельное сопровождение выбранной цели; пассивная оптика. Не навязывать вращающийся механический луч каждому комплексу. - Измерения при прохождении луча/очередном посещении сектора. Корректно обрабатывать переход через 0/2π и быстро движущуюся цель между тиками. - Track: last_measurement, last_seen_tick, оценка скорости/высоты/класса и confidence, источник. Между измерениями — последняя позиция или отмеченный прогноз с растущей неопределённостью; затем потерянный трек и удаление по TTL. - Сетевая передача сохраняет возраст/качество исходного измерения. Новая РЛС может обновить трек, но ретрансляция сама не превращает старые данные в точные. - Обзор и fire-control tracking разделить: выделенный канал сопровождения может обновляться чаще обзора, если это предусмотрено профилем; учитывать LOS, доступность и потерю канала. Не превращать это в запрет нормально сопровождать уже захваченную цель. - Агрегация, выбор целей, упреждение, HUD/монитор и объяснения /why используют доступные сведения. Не брать скрыто текущую истинную позицию вместо устаревшего измерения. Собственный seeker перехватчика моделируется отдельно. - Идентификация «неизвестная/предположительно дрон/подтверждённая» понятна игроку, а не маскирует случайность. ### Приёмка Цель меняет курс после прохода обзорного луча: отметка не следует за реальной целью до нового измерения; прогноз обозначен отдельно. Проверить две РЛС с разными фазами обзора, сеть, укрытие за рельефом, отдельное сопровождение, уничтожение РЛС и переход через границу сектора. В sandbox/разборе можно включить явный слой истинных данных, не вмешивающийся в боевую логику.
chexit added the area:uipriority:P2area:simulationtype:enhancement labels 2026-10-29 17:51:19 +00:00
Author
Owner

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

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

🤖 Agent: Codex — дополнительное уточнение ночного радарного огня по разбору реалистичности: 733dc07, опубликовано в kimi-work.

Штраф темноты больше не уменьшает меткость пушек с исправной собственной РЛС и свежим own track в пределах GUN_AGE. Проверки наведения/дальности/свежести трека сохранены; новый оптический fallback не добавлен, значение DARK_HITS не изменялось. README исправлен: прежнее утверждение про общий ночной штраф больше не действует.

Добавлена сравнительная регрессия на 32 seed: радарный Gepard стреляет и поражает одинаково днём и ночью. Прожекторы, осветительные ракеты и художественное освещение сохранены. Это развитие выполненного этапа датчиков, а не заявление о повторном выполнении всей исходной задачи.

Проверка всего набора после объединения: 173 unit + 4 scenario tests passed, 7 ignored; WASM release build и git diff --check прошли. GUI/прослушивание звука в этом проходе не выполнялись. Статус issue не меняю.

🤖 Agent: Codex — дополнительное уточнение ночного радарного огня по разбору реалистичности: [733dc07](https://gitea.maoniao.team/chexit/airdef/commit/733dc07), опубликовано в `kimi-work`. Штраф темноты больше не уменьшает меткость пушек с исправной собственной РЛС и свежим own track в пределах GUN_AGE. Проверки наведения/дальности/свежести трека сохранены; новый оптический fallback не добавлен, значение DARK_HITS не изменялось. README исправлен: прежнее утверждение про общий ночной штраф больше не действует. Добавлена сравнительная регрессия на 32 seed: радарный Gepard стреляет и поражает одинаково днём и ночью. Прожекторы, осветительные ракеты и художественное освещение сохранены. Это развитие выполненного этапа датчиков, а не заявление о повторном выполнении всей исходной задачи. Проверка всего набора после объединения: 173 unit + 4 scenario tests passed, 7 ignored; WASM release build и git diff --check прошли. GUI/прослушивание звука в этом проходе не выполнялись. Статус issue не меняю.
Author
Owner

🤖 Agent: Codex — работа Владимира (chexit).

Повторная проверка оставшейся части прежней приёмки, kimi-work ac866d6; состояние issue оставляю прежним, отдельного дубля нет.

Циклы обзора и стареющая позиция реализованы, но первое успешное измерение всё ещё записывает kind: d.kind и vel: d.vel. Track::ident (:286–291) меняет Unknown/Probable/Confirmed по числу попаданий, не ограничивая доступность точного kind; panel группирует по нему. То есть Unknown-трек уже несёт истинный тип/скорость, хотя исходное требование говорит об оценке скорости/класса и осмысленной идентификации.

Предлагаемый тест: фиксированный seed, одна РЛС, один аппарат с ненулевой скоростью; дождаться hits==1. Проверить Unknown одновременно с точными kind/vel и UI-группировкой. Имеющийся тест sensor_tests.rs::a_radar_measures_once_a_turn_and_the_track_stays_put_between проверяет цикл/старение позиции, но не эту границу знания. Здесь это статическая проверка, нового runtime-fixture не запускалось. #75 касается отдельного seeker LOS/coast и не заменяет классификацию радара.

Ещё в новом ревью предложено убрать рентген ближней зоны. Сейчас NEAR<=24 намеренно документирован как видимый независимо от укрытия (sight.rs:33–34, :401/:412, low_sees). Не объявляю это случайным багом: для честного режима стоит явно решить LOS-политику и согласовать карту. Утверждение отчёта об обратной дальности в шуме не подтвердилось: текущая sigma=0.8+dist*0.004 (или 0.3 при lock).

🤖 Agent: Codex — работа Владимира (chexit). Повторная проверка оставшейся части прежней приёмки, kimi-work `ac866d6`; состояние issue оставляю прежним, отдельного дубля нет. Циклы обзора и стареющая позиция реализованы, но [первое успешное измерение](https://gitea.maoniao.team/chexit/airdef/src/commit/ac866d64a092be1c4716ba9f50eab1d4fe1531f2/airdef-mod/src/sim/sight.rs#L417) всё ещё записывает `kind: d.kind` и `vel: d.vel`. `Track::ident` (:286–291) меняет Unknown/Probable/Confirmed по числу попаданий, не ограничивая доступность точного kind; panel группирует по нему. То есть Unknown-трек уже несёт истинный тип/скорость, хотя исходное требование говорит об оценке скорости/класса и осмысленной идентификации. Предлагаемый тест: фиксированный seed, одна РЛС, один аппарат с ненулевой скоростью; дождаться hits==1. Проверить Unknown одновременно с точными kind/vel и UI-группировкой. Имеющийся тест sensor_tests.rs::a_radar_measures_once_a_turn_and_the_track_stays_put_between проверяет цикл/старение позиции, но не эту границу знания. Здесь это статическая проверка, нового runtime-fixture не запускалось. #75 касается отдельного seeker LOS/coast и не заменяет классификацию радара. Ещё в новом ревью предложено убрать рентген ближней зоны. Сейчас NEAR<=24 **намеренно документирован** как видимый независимо от укрытия (sight.rs:33–34, :401/:412, low_sees). Не объявляю это случайным багом: для честного режима стоит явно решить LOS-политику и согласовать карту. Утверждение отчёта об обратной дальности в шуме не подтвердилось: текущая sigma=0.8+dist*0.004 (или 0.3 при lock).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#46