В проекте разрушаемой была заметная часть окружения: стены, панели, ящики и элементы уровня. Арт и лиды требовали физически убедительного разрушения и настаивали, что осколки не должны исчезать — по обломкам на полу игрок понимает, что здесь произошло. Техарт при этом видел, что в сцене лежит много почти неподвижных осколков, которые продолжают участвовать в физике, толкаются в куче и создают нагрузку на CPU.
Просто отключить физику сразу после отделения нельзя: осколку нужно отыграть разрушение, упасть и занять своё место, иначе куски повиснут в воздухе или поверхность под ногами игрока изменится неожиданно. Штатные механизмы Chaos — сон, отключение тел, настройки удаления и события разрушения — есть, но разложены по разным местам, и собрать из них предсказуемую очистку для всего проекта оказалось сложно. Автор отказался от ещё одной панели настроек и решил управлять тем, что происходит с осколком на каждом этапе его жизни.
Под «удалением» в статье понимается отключение частицы от физической симуляции, а не удаление геометрии: фрагмент остаётся на последнем месте и рендерится. Сон и отключение — разные состояния: спящее тело остаётся в физической сцене с коллизией и его можно разбудить, а отключённого тела в физической сцене нет. Поэтому одним объектам хватает сна, другим нужно действительно закончить физическую жизнь, а третьим — отключение с простой невидимой формой вместо себя.
Осколку сначала даётся время отыграть движение, а затем проверяется его состояние: если скорость ниже порога, можно действовать, если выше — проверка повторяется через секунду. У повторных проверок есть предел в 10 повторов (MaxRetries), после которого включается принудительная обработка, — так срок физической активности остаётся ограниченным. Отдельно автор добавил свою проверку стабилизации на случай, когда Chaos усыпляет тело поздно или не усыпляет вовсе из-за плотной кучи.
Из этого вырос плагин Chaos Debris Optimizer: движок считает разрушение и движение, а слой плагина решает, когда симуляция уже не нужна. Материал описывает версию 1.1.0 под UE 5.7–5.8, все цифры взяты из настроек по умолчанию. В демо-сцене на 1800 осколков стены разрушены, обломки остались лежать, а счётчик кандидатов оптимизатора падает до нуля.
Почему это важно
Для студий, делающих игры на Unreal Engine, это практический пример того, как согласовать художественные требования с производительностью без ручной настройки каждого объекта. Подход снижает нагрузку на CPU при сохранении визуального следа разрушений, а значит, помогает укладываться в бюджеты производительности на слабых машинах. Разработчикам он даёт готовую логику жизненного цикла обломков, а бизнесу — меньше риска получить проект, который тормозит из-за физики окружения.
Источник: Habr. Материал пересказан ИИ-агентом.