Инструменты отладки навигации
Примечание
Инструменты отладки, свойства и функции доступны только в отладочных сборках Godot. Не используйте их в коде, который будет частью релизной сборки.
Включение отладки навигации
Визуализация отладочной навигации включена по умолчанию в редакторе. Чтобы визуализировать навигационные сетки и соединения во время выполнения, включите опцию Visible Navigation в меню Debug редактора.
В отладочных сборках Godot отладку навигации также можно переключать через синглтоны NavigationServer из скриптов.
NavigationServer2D.set_debug_enabled(false)
NavigationServer3D.set_debug_enabled(true)
NavigationServer2D.SetDebugEnabled(false);
NavigationServer3D.SetDebugEnabled(true);
Визуализация отладки в настоящее время основана на узлах в SceneTree. Если API NavigationServer2D или NavigationServer3D используются исключительно, то изменения не будут отражены инструментами навигации отладки.
Настройки Отладки Навигации
Внешний вид "отладки навигации" можно изменить в настройках проекта в разделе debug/shapes/navigation. Некоторые функции отладки также можно включать и отключать по желанию, но для их вступления в силу может потребоваться перезапуск сцены.
Отладка полигонов навигационной сетки
Если включено enable_edge_lines, края полигонов навигационной сетки будут подсвечены. Если также включено enable_edge_lines_xray, края полигонов навигационной сетки будут видны сквозь геометрию.
Если включено enable_geometry_face_random_color, цвет каждой грани навигационной сетки будет смешан со случайным цветом, который, в свою очередь, смешан с цветом, указанным в geometry_face_color.
Отладка граничных соединений
При соединении двух навигационных сеток на расстоянии edge_connection_margin соединение накладывается. Цвет наложения определяется параметром edge_connection_color. Соединения можно сделать видимыми через геометрию с помощью параметра enable_edge_connections_xray.
Примечание
Соединения Edge видны только тогда, когда активен NavigationServer.
Производительность отладки
Для измерения производительности NavigationServer существует специальный монитор, который можно найти в отладчике редактора в разделе Debugger->Monitors->Navigation Process.
Navigation Process показывает, сколько времени NavigationServer тратит на обновление своих внутренних данных в этом кадре обновления (в миллисекундах). Navigation Process работает аналогично Process для визуального рендеринга кадров и Physics Process для столкновений и фиксированных обновлений.
Navigation Process учитывает все обновления навигационных карт, навигационных регионов и навигационных агентов, а также все расчеты уклонения для кадра обновления.
Примечание
Navigation Process НЕ включает в себя производительность поиска пути, поскольку поиск пути выполняется на основе данных навигационной карты независимо от обновления процесса сервера.
В целом, для обеспечения производительности во время выполнения следует поддерживать максимально низкий уровень и стабильность Navigation Process, чтобы избежать проблем с частотой кадров. Обратите внимание, что, поскольку обновление процесса NavigationServer происходит в середине обновления физики, увеличение значения Navigation Process автоматически увеличит значение Physics Process на ту же величину.
Навигация также предоставляет более подробную статистику о текущих объектах, связанных с навигацией, и составе навигационной карты на NavigationServer.
Приведенную здесь статистику навигации нельзя оценить как хорошую или плохую с точки зрения производительности, поскольку все зависит от проекта: что можно считать разумным, а что — ужасно чрезмерным.
Статистика навигации помогает выявить узкие места производительности, которые менее очевидны, поскольку их источник не всегда может быть наглядно представлен. Например, проблемы с производительностью поиска пути, вызванные чрезмерно подробными навигационными сетками с тысячами рёбер/полигонов, или проблемы, вызванные сбоями в процедурной навигации.