Редактирование навигационной сетки
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.
Эта страница посвящена созданию и редактированию файла NAV для карты в игре.
Список команд см. в разделе Команды навигационной сетки .
Contents
Автоматическая генерация навигационной сетки
Новый вид навигационной сетки <game>/maps/<mapname>.nav
(<игра>/карты/<имя карты>.nav
) создается с помощью команды nav_generate
во время загрузки карты, которая требует sv_cheats 1
. В зависимости от размера и сложности карты, это может занять от нескольких минут до нескольких часов. Но в основном эта операция длится5 минут. Однако большие леса являются примером структур, для которых расчет .nav может занять много времени. Затем вы можете загрузить созданный файл .nav на свой сервер.
nav_quicksave 1
не позволяет nav_generate
изменить сгенерированную сетку полностью проанализированными данными.Рекомендуется, чтобы создатели карт создавали навигационные сетки, прежде чем опубликовать свою карту.
nav_generate
(начиная с точек спавна). Это особенно влияет на пользовательские карты.
Чтобы генерация .nav не занимала много времени можно убрать ботов с сервера bot_kick
перед выбором команды.Что вычисляется во время генерации
Во время создания навигационной сетки происходят следующие шаги:
- Начиная с точки респауна игрока, ходимое пространство выбирается путем "заливки" из этой точки, ищя соседние ходимые точки;
- Из отобранных данных строятся прямоугольные Навигационные области;
- Вычисляются места для передышки и для снайперов;
- Вычисляются места встреч и точки подхода (это может занять некоторое время);
- Вычисляются начальные области встречи.
Просмотр навигационной сетки
Чтобы просмотреть сначала вам нужно включить sv_cheats 1
и ввести nav_edit 1
. Чтобы выключить редактор сетки, введите nav_edit 0
.
Чтобы увидеть все атрибуты пропишите tf_show_mesh_decoration 1
. Используйте tf_show_mesh_decoration_manual 1
, чтобы скрыть автоматически создаваемые атрибуты .
Явное обозначение зон, пригодных для ходьбы (например: "Наверху нет сетки")
Некоторые карты с очень крутыми лестницами, пандусами или холмами могут запутать систему генерации, в результате чего навигационная сетка не покрывает всю карту. Чтобы решить эту проблему, вы можете вручную разместить дополнительные маркеры для ходьбы, которые будут указывать генератору на поиск в направлении от этой точки во время фазы выборки.
Чтобы добавить один или несколько маркеров, сначала направьте взгляд на известное место на карте, где можно ходить, затем введите nav_mark_walkable
в консоли. Когда вы закончите расставлять маркеры, введите nav_generate_incremental
(затем nav_clear_selected_set
) или nav_generate
для повторной генерации сетки.
Вы можете удалить все ранее размещенные ходовые маркеры с помощью команды nav_clear_walkable_marks
.
Быстрая генерация сеток для тестирования
Фаза анализа генератора может отнимать много времени. Чтобы не ждать е завершения, введите в консоль nav_quicksave 1
.
- Примечание:"Быстрое сохранение" пропускает фазу анализа, и в полученной навигационной сетке будут отсутствовать важные данные, для хорошей работы CS Bots и Hostages. Хотя это полезно для тестирования, редактирования и настройки навигационной сетки, обязательно проведите полный анализ (т.е.:
nav_analyze
сnav_quicksave 0
), прежде чем опубликовать свой навигационный файл.
Редактирование навигационной сетки
Автоматический генератор навигационной сетки делает хорошую работу по созданию сетки (даже без запуска nav_quicksave 0
), позволяя вам легко начать использовать ботов и заложников на пользовательских картах.
Однако тщательная ручная настройка навигационной сетки может заметно улучшить производительность ботов. Ручное редактирование сетки Названиями мест также позволяет ботам сообщать другим, где происходят события, что улучшает радар Counter-Strike и включает названия мест во все радиосообщения.
Чтобы включить редактор, введите nav_edit 1
в консоли (для выключения введите nav_edit 0
).
- Белый крест в центре экрана - это курсор.
- Область навигации, на которую вы указываете, является выбранной областью и отображается желтым контуром.
- Навигация Области, в которые можно попасть из выбранной области, показаны красным цветом.
- Белая линия в выделенной области обозначает место, где область будет разделена, если будет выполнена команда
nav_split
.
bot_kick
. Если вы закончили редактирование, nav_save
сохраните свою работу и перезагрузите карту, прежде чем снова добавлять ботов.Сохранение
В настоящее время в системе редактирования Navigation Mesh нет команды "отменить". Поэтому очень важно часто сохранять свою работу с помощью команды nav_save
.
Создание новой области
Это можно сделать с помощью команд nav_begin_area
и nav_end_area
.
nav_snap_to_grid 1
, чтобы получить согласованные размеры прямоугольников.nav_corner_place_on_ground
при наведении на нее.nav_end_area
.Удаление
Чтобы удалить область, надо навести курсор на ненужную область, выделить её и прописать nav_delete
. Также вы можете выбрать несколько область и удалить их.
Соединение двух областей
Соединения определяют, где боты могут перемещаться из одной области в другую.
Обычно соединения Двухсторонние, то есть боты могут свободно перемещаться между двумя областями. Однако, иногда могут понадобиться односторонние соединения, например, когда нужно чтобы боты могли спрыгнуть с верхней точки вниз. Также их можно использовать для установления направления, например, для совершения сложных прыжков.
Дабы сделать одностороннее движение из точки А в точку Б (то есть передвижение из точки Ф в точку Б):
- Выделите область А: На ведите курсор на неё и пропишите
nav_mark
. - Нацельтесь на точку Б и введите
nav_connect
.
Чтобы сделать Двухстороннее движение, повторите шаги выше, поменяв местами А и Б.
nav_connect
будет пытаться двунаправленно соединить первую выделенную область и каждую последующую выбранную область. Выберите несколько областей и используйте nav_connect
, чтобы сразу сделать двухстороннее соединение.Отсоединение двух областей
Чтобы убрать все соединения между точками А и Б:
- Выделите область А: На ведите на неё курсор и пропишите
nav_mark
. - Наведите курсор на область Б и пропишите
nav_disconnect
.
nav_disconnect
, когда выбрано несколько областей, он будет пытаться отсоединить друг от друга первые и последующие выбранные области.nav_disconnect_outgoing_oneways
,чтобы удалить все односторонние соединения. Эта команда также работает с несколько выбранными областями.Разделение
Разделение делает из одной области две двухсторонне соединенные области.
Объединение
Объединение позволяет уменьшить количество.
Обе области должны быть одинакового размера по краям. Но не обязательно чтобы они были смежными.
Полученная область унаследует связи обоих областей и их свойства (т.е.: Названия мест и т.д.).
Сращивание
Сращивание позволяет создать новую область между двумя имеющимися. Это очень мощное орудие, которое можно использовать для легкого создания наклонных участков, как показано в примере ниже.
Атрибуты области
Имеется куча атрибутов, с помощью которых область говорит ботам, что им делать, когда они касаются её.
Все атрибуты могут быть увидены на небольшой срок, когда мы нацелены на них. Длительность можно изменить с помощью ConVar nav_show_area_info
.
Чтобы создать атрибут надо нацелиться на нужную область и прописать команду, например nav_jump
.
- Область прыжков (отмечена зелёным X-ом) говорит ботам, что они должны прыгнуть, дабы добраться до области выше(соединенной), но эту область нельзя использовать как место для пережидания/снайперов.
- 'Область приседания (отмечена синей диагональной линией) заставляет ботов приседать на этой области.
- Область БЕЗ прыжков (отмечена красным ромбом) заставляет ботов не прыгать. Это можно использовать для сокращения прыжков. Но боты застревают, если для продолжения движения требуется прыжок, т.к. они не могут прыгнуть.
- Область отступления (отмечена зелёным +-ом) останавливает передвижение ботов к препятствиям. Это полезно для мест, где легко провалиться, как мосты без ограждений.
- Область торможения (отмечена красным восьмиугольником) говорит ботам придержать коней, прежде чем войти в другую область. Можно использовать, чтобы сделать аккуратный и точный прыжок.
- Область бега (отмечена двумя синими стрелками) говорит ботам просто бежать.
- Область шага (отмечена одной зелёной стрелкой) говорит ботам ходить бесшумно.
- Область не для пряток (никак не отмечена) говорит ботам, что здесь нельзя спрятаться.
- Область прямоходящих (никак не отмечена) говорит ботам не приседать здесь, пока они прячутся.
Помимо этих атрибутов, которые можно установить, есть ещё запретный атрибут (отмечен синим прямоугольником), который ставиться автоматически в определенных случаях, когда боты не могут или не должны пользоваться областью навигации.
tf_show_blocked_areas
ConVar .В , активный trigger_hurt
энтити, заблокированные двери и func_nav_blocker могут заблокировать навигационную область.
Использование привязок для редактирования сетки
Конечно эти команды можно вводить в консоль, но будет намного легче если использовать bind .
Например, если ввести bind del nav_delete
, а затем нажать Del, то мы удалим область, на которую наведен прицел (в режиме редактирования сетки).
Вы можете сделать несколько временных привязок за раз с помощью CFG файла. Это очень удобно для редактирования сетки, т.к. здесь очень много команд и это не очень удобно привязывать их вручную. Просмотрите Editing Bot Navigation CFG File для того чтобы найти готовый файл и инструкцию по его использованию.
Просмотрите Navigation Mesh Console Command Reference для всех команд редактирования навигационной сетки в .
Выдача имён
Вы можете использовать выдачу имён, чтобы дать название месту на карта. скажем так, если на карте есть дома, то все области в нём можно наименовать "House".
Названия мест используют CS боты, чтобы сказать где они, радаром, чтобы показать местонахождение игрока, а также они важны для голосовых команд и радио. Например:
ChicagoTed @ Apartment (RADIO): Fire in the hole!
Добавление имён к области
Чтобы дать или изменить название области нужно включить редактор имён. Убедитесь что nav_edit
равен 1 и пропишите
nav_toggle_place_mode
.
Когда редактор имён включен (при условии, что ни одна область не была названа) все квадраты навигации станут красными. Чтобы выбрать Название нужной области пропишите
nav_use_place <name>
,
взять хоть nav_use_place Bedroom
. Затем, чтобы дать Название прицельтесь на нужную область и включите Режим Изменения Названий с помощью
nav_toggle_place_painting
.
Когда Изменение Названий активно каждая область на которую в нажмёте получит Название, которое вы выбрали. Вы можете изменить название места с помощью nav_use_place <newname>
, запомните, что после этого, все области, которым вы дали имя до этого будут синими, а области, которым вы только дадите имя — зелёными. Чтобы выйти из Режима Изменения Названий снова пропишите nav_toggle_place_painting
.
Чтобы узнать все имеющиеся Названия, пропишите nav_use_place
без аргумента.
Смотрите также: Standard Place Names for CSS , Standard Place Names for CS:GO .
Существует несколько дополнительных команд, предоставляющие такие инструменты, как: пипетка, заливка, замена и т.д.. Для получения полной справки см. Place Name Commands.
Частые проблемы и их решение
Посторонние области на лестницах и пандусах
Автоматическая система генерации имеет тенденцию создавать участки, которые свисают со стороны лестниц и пандусов. Их следует удалить, чтобы заставить ботов подниматься по лестнице или пандусу прямо.
Перила
Перила — большая проблема для нынешней навигационной сетки, а именно звенья, которые проходят через перила. Их следует избегать, если в этом нет необходимости. В конечном итоге боты совершают эти прыжки, но при этом они не отличаются особой элегантностью.
Предотвращение чрезмерных прыжков
Используйте nav_no_jump
чтобы предотвратить большое количество прыжков.
NO_JUMP
не используется в Team Fortress 2.Работа с вращающимися дверями
Удалите навигационную область, чтобы оставить свободное место в навигационной сетке и обеспечить вращающуюся дверь. Вы можете переделать навигационные квадраты, если удаление существующей области не работает.
Иногда боты будут пытаться проходить через дверь из одной области в другую, что приведёт к их застреванию. Может быть удаление смежной области или настройка областей и связей решит эту ошибку.
Продвинутые методы редактирования
Лестницы
Лестницы можно создать на области, по которой надо взбираться. Ваш курсор станет зелёным когда вы посмотрите на лестницу.
Использование nav_build_ladder
Это самый простой способ: посмотрите на лестницу и введите nav_build_ladder
.
Использование nav_begin_area
и nav_end_area
Если nav_build_ladder
не для вас, то можно создать лестницу так:
- Поместите курсор в тот угол, с которого начнётся лестница
- Введите
nav_begin_area
- Переведите курсор в конец лестницы
- Введите
nav_end_area
Этот способ можно использовать, чтобы бот, например, начал взбираться по лестнице и на полпути спрыгнул на ящик:
Переворот лестниц
Иногда лестница создаётся не той стороной. Если лестница выделена красным, то значит вы смотрите на неё сзади. А если зелёным, то значит вы смотрите спереди. Чтобы изменить ориентацию лестнице (как никак 21 век на дворе), посмотрите на неё и пропишите nav_ladder_flip
.
Избегание препятствий и точное движение
Используя nav_precise
, nav_walk
и nav_stop
, можно выключить локальный алгоритм избежание препятствий и управления движением ботов.
WALK
и STOP
не используются в Team Fortress 2.Выделение областей, которых надо избегать
Использование nav_avoid
говорит ботам избегать область пока обычный маршрут не станет слишком опасным.
{{Note|AVOID
не использован в
Удержание позиций для пряток
Используйте nav_dont_hide
, чтобы боты не могли прятаться в этой области.
Этим можно пользоваться, чтобы контролировать создание позиций для пряток во время фазы анализа.
Установление снайперских позиций
Отметьте область с помощью nav_walk
и введите nav_make_sniper_spots
. Это разделит область на множество маленьких, которые используются навигационной сеткой для побуждения снайперской стрельбы.
func_tfbot_hint
, но они также используются снайперами в Mann vs. Machine; С другой стороны, игра сама определяет позиции для снайперов.Выстраивание сложных прыжков и узких дверных проемов
Размещение областей навигации для определенных путей.
- Если боты застревают по бокам двери или окна, вы можете проложить узкий проход через середину проема.
- Самое высокое значение, на которое бот попытается прыгнуть, составляет 58 юнитов. Если верхняя часть находится на 59 или более юнитов выше нижней, боты сдадутся сразу после прыжка. Если это происходит в месте, до которого боты действительно могут допрыгнуть, используйте
nav_corner_lower
, чтобы немного опустить верхнюю область навигации.
Импорт и Экспорт областей
Области могут быть импортированы и экспортированы с помощью nav_save_selected
и nav_merge_mesh
. nav_save_selected
экспортирует область в выбранный KeyValues файл, когда как nav_merge_mesh
импортирует области из выбранного файла и выделяет их. KV файл использует этими командами, чтобы создать отдельную область с формой и соединениями, которые невозможно создать.
Эти команды могут быть полезны, если:
- Создание соединений, которые трудно или невозможно создать вручную с помощью
nav_connect
, например, двунаправленное соединение между двумя областями в areaportals . - Установление областей на наклонных поверхностях.
Смотрите также
- Navigation Mesh Console Command Reference
- Left 4 Dead Navigation Meshes
- L4D Level Design/Nav Meshes
- L4D Level Design/Nav Flow
- L4D Level Design/Advanced Nav Editing
Внешние ссылки
- Официальные форумы для системы ботов (нерабочий) - Archived version.
- Waypointing for CS:S Bots/Hostages (Edit Life)