[bug] Запросы рельефа голодают: часть направлений РЛС никогда не получает высоты #1
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проверено на
90379f6.При повторном построении горизонта обход всегда начинается с первого луча.
Ground::at()кладёт обновления старых известных колонок и новые колонки в одну очередь на 256 записей. При достаточном числе РЛС ранние колонки успевают устареть (>200 тиков) до полного обхода, вновь занимают бюджет и бесконечно вытесняют ещё неизвестные направления.В изолированном тесте: 10 разнесённых РЛС дальнего обнаружения, 2500 тиков (125 игровых секунд), ответ высоты 200 на каждый запрос уже на следующем цикле. У каждой РЛС данные появляются только по 17 из 48 направлений; остальные остаются неизвестными. Неизвестный рельеф по текущей логике ничего не скрывает, поэтому это влияет на обнаружение целей за препятствиями.
Предложение: разделить очередь первичных запросов и обновлений, зарезервировать бюджет для неизвестных колонок и/или продолжать обход с сохранённого курсора. Проверить также конкуренцию с запросами высоты летящих дронов.
Код:
Воспроизведено на настоящем коде
simиwaveв отдельном native Rust crate (edition=2024,glam=0.30.10,cargo test --release). Движок и GPU не участвовали. Тест ниже проверяет ожидаемое исправленное поведение и сейчас падает; поместить в дочерний#[cfg(test)]-модуль соответствующего файла сuse super::*;.🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/e08fc65 (запушено в main).