[performance] Лимит 12 пожаров не ограничивает число активных эффектов при массовом ударе #69
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?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Ревью
6f3fc644bc5194311a86baba722bc340215306b7. Новая система пожаров #52 имеет мягкий fade, но не bounded бюджет активных эффектов. Во время массового удара это отдельный источник просадок CPU/WASM, particle output и lights.Причина
sim/fires.rs::igniteвсегда добавляет Fire. Еслиlist.len()>MAX, только одному старому пожару сокращаетсяlifeдо age+160. Его не убирают из списка/из отрисовки и не снижают текущий уровень огня. При одновременных попаданиях age=0 и life=160;levelпервые 45% этого срока оставляет обычные сильные flames.step_fires,lib.rs::lightsи вывод частиц продолжают проходить по всем таким fires, пока не истекут 8 секунд.Штатный
fires_start_merge_and_are_limitedпроверяет только число fires с большим остатком life, не число отображаемых пожаров, частиц и lights.Выполненное воспроизведение
100 вызовов ignite в один тик, точки разнесены на 10 блоков (не merge); через 40 тиков:
Это нативный тест реальных ignite/step_fires,
damage=false. GPU-время здесь не измерялось: доказано превышение заявленного бюджета, не конкретное падение FPS.Нужно
Развести логические места пожаров и жёсткий бюджет визуализации/реальных fire-block команд. Ограничить число fade-out slots либо агрегировать дальние/близкие пожары; плавно перераспределять качество и приоритеты без сотен одновременных полноценных эффектов. Не возвращать прежнюю проблему взрывов/ракет, теряющих критические эффекты из-за общей
.takeочереди. Задать понятный максимум list/particles/lights и учитывать replay.Приёмка
100 и более одновременных пространственно разнесённых попаданий, повторные удары и длительный поток; реальный верхний предел стоимости и памяти, отсечение вдали, корректное завершение и очистка fire-blocks. Профиль GPU/CPU на Mac до/после без молчаливого отключения всей сцены.
🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/5f8bff3 (запушено в main).