Навигация для ИИ на ландшафте, который меняется во время игры. Система пересобирает NavMesh по коллизиям мешей и сшивает его островки переходами разных типов - прыжок, подъём на уступ, спуск, преодоление любого препятствия и каждый со своим весом. НПС продолжает искать маршрут, даже когда игрок только что построил или снёс объект у него под ногами.
Стандартный NavMesh знает только ровный пол и заранее известную геометрию. Стоит игроку что-то построить - и ИИ упирается в стену, которой ещё минуту назад не было.
Я делал сцену, где игрок свободно ставит и убирает объекты. Но как только захотел ввести в игру ботов - все посыпалось. НПС либо баговался, либо шёл по маршруту, который перестал существовать. Пересборка навигации целиком стоила слишком дорого, а вручную расставленные точки прыжков не выживали ни одного изменения.
Ровные поверхности остаются обычным NavMesh — по ним ИИ ходит как всегда. Всё остальное система добавляет сверху: она ищет края островков и проверяет, можно ли попасть с одного на другой действием, а не шагом. Так появляются швы — прыжок, подъём, спуск, — и разорванный мир снова становится связным графом.
Каждый шов получает вес: перепрыгнуть пропасть дороже, чем обойти по полу, а забраться на высокий уступ дороже, чем на низкий. Поиск пути сравнивает не расстояние, а стоимость — и ИИ выбирает маршрут так, как выбрал бы игрок.
Система работает не с ассетами, а с коллизиями мешей: любой объект, у которого есть форма, автоматически участвует в навигации. Гейм-дизайнеру или левел-дизайнеру не нужно ничего размечать — достаточно поставить предмет в мир.
На ровных площадках строится обычный NavMesh. Ключевое отличие в том, что он больше не обязан быть единым: система принимает мир как набор несвязанных островков и работает с их краями.
Между краями островков проверяются возможные действия: подняться на уступ, спрыгнуть, перепрыгнуть разрыв. Прошедшая проверку пара краёв становится швом с указанным типом действия — ИИ знает не только «куда», но и «как».
Каждому шву считается вес по высоте, дистанции и риску исполнения. Далее поиск пути через стандартный алгоритм Дейкстры складывает эти веса, поэтому один и тот же переход может быть выгодным на пустой карте и невыгодным, когда рядом появился удобный обход.
Изменение мира затрагивает только свою область: пересчитываются островки и швы вокруг объекта, остальная карта не трогается. НПС в этот момент не замирает — он получает новый маршрут прямо в движении.
Система собрана как модуль поверх штатной навигации: её можно включить в проект, где мир меняется руками игрока. Это может быть песочница, строительство, разрушаемые уровни. Следующий шаг создать набор профилей движения, чтобы разные типы НПС читали одни и те же швы по-своему.