reckfellENGINE

Отладка навигации

Найти причину пустого пути, неверного соединения и расхождения с физикой.

На этой странице

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

Порядок диагностики

  1. Проверьте, что регион содержит полигоны, назначен нужной карте и включён. Ненулевой MapGetIterationId означает наличие опубликованной итерации, а не завершение всех последних изменений.
  2. Сравните карту и маску слоёв запроса с регионом. Для перехода через ссылку должны подходить также её слои и направление.
  3. Получите путь и проверьте обе крайние точки относительно начала и цели. Непустой путь может быть частичным; окончание маршрута не означает достижение цели.
  4. Если путь правильный, проверяйте движение родителя: скорость, вызов MoveAndSlide(), коллайдер и физические слои. Агент сам тело не перемещает.
  5. При скачках времени разделите разбор геометрии, запекание, обновление карты, поиск пути и избегание. Измерение и оптимизация.

Отладочное отображение

В отладочной сборке NavigationServer2D.SetDebugEnabled(true) и NavigationServer3D.SetDebugEnabled(true) включают серверные флаги. GetDebugEnabled() читает их. Это не команда создания геометрии отладочного отображения.

Штатное отображение регионов строят соответствующие Entity. Если создавать только серверные RID, не рассчитывайте, что они автоматически появятся на экране. Для собственного серверного решения рисуйте контуры опубликованных данных и фактический результат запроса отдельно.

Параметры оформления находятся в настройках проекта под debug/shapes/navigation: линии рёбер, цвет поверхности и отображение соединений. Просмотр сквозь геометрию помогает увидеть наложение поверхностей, но не делает невидимое соединение проходимым. Отладочное отображение используйте для разработки, а не как часть игровой логики: реализация переключателя ограничена DEBUG_ENABLED.

Что означают счётчики

ДанныеИнтерпретация
GetProcessInfo(ProcessInfo.ActiveMaps)Число активных карт данного 2D- или 3D-сервера.
RegionCount, PolygonCountСводка по активным картам после обработки сервером. Это не число всех когда-либо созданных RID.
Performance.Monitor.NavigationPolygonCountСумма 2D и 3D. Для одного измерения используйте Navigation2DPolygonCount или Navigation3DPolygonCount.
EdgeMergeCount, EdgeConnectionCount, EdgeFreeCountДанные о способах соединения и оставшихся рёбрах. Не складывайте их как три независимых вида проходимости.
Performance.Monitor.TimeNavigationProcessВремя серверной обработки навигации в секундах; не длительность вашего отдельного вызова поиска пути.

Отключённый регион остаётся назначенным карте и учитывается в RegionCount, хотя запрос через него не проходит. Не трактуйте счётчик регионов как число доступных игровых участков. После деактивации карты её вклад исчезает из сводки; это само по себе не освобождает её RID.

Симптом → следующая проверка

СимптомЧто проверить
Путь пуст сразу после созданияДождитесь публикации нужной геометрии; проверьте карту, полигоны и ненулевую маску.
Два видимых участка не соединяютсяСвязи рёбер: сетка карты, зазор, разрешение соединений.
Ссылка не даёт переходСсылки: направление, радиус привязки, слои и ограничение IncludedRegions в 1.0.0.
Агент закончил маршрут вдали от целиЧастичный путь; сравните конечную точку и исходную цель, затем IsTargetReached().
Персонаж упирается в стенуКоллизия и навигация расходятся. Физический пример 3D.
Счётчик не уменьшился после отключения регионаРегион остался на активной карте; отключение не равно удалению.

Счётчики, суммы 2D/3D и переключение флагов выполнены на установленной версии 1.0.0. Вид отладочного отображения, действия в редакторе и экспорт release этой проверкой не оценивались.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.