Что за баг: NPC идут в стену

Вы точно хотя бы раз видели, как персонажи в играх упираются в препятствия, но продолжают идти. Например, как на этой гифке:

Embedded Image

В игровой разработке есть понятие «поиск пути» (pathfinding) — это процесс определения оптимального пути для персонажа из точки А в точку Б. Для определения пути алгоритму поиска нужны данные:

Начальная точка

Конечная точка

Пространство, в котором ищется путь. Ещё его называют навмеш (navmesh) — навигационный меш, то есть навигационная сетка

Прочие данные. Например, размер сущности, для которой определяется путь

Баг с идущими в препятствие NPC связан с навмешем. Навмеш представляет из себя расположенную на карте сетку с точками, по которым проходит путь. Обычно навмеш подготавливается на этапе сборки игры — для этого алгоритм подготовки навмеша анализирует все объекты на карте и её ландшафт. Объекты на карте влияют на навмеш несколькими способами:

Преграждают путь. Обычно подобное влияние на навмеш настраивается в самих объектах. Например, свойство для столба блокировать дорогу персонажу

Удлиняют или укорачивают путь. В зависимости от ландшафта у одного и того же пути может быть разная длина: например, в гору или по ровной поверхности

Либо никак не влияют — обычно это мелкие объекты, например, невысокий бордюр. Персонаж может ходить через них и наступать на них.

Хождение в столб на гифке связано с первым пунктом: столб должен преграждать путь персонажу, но не помечен как блокирующий, поэтому персонаж пытается пройти сквозь него, а не построить путь в обход.

Комментарии: 0