Ru/Nav Mesh Editing

Эта страница посвящена созданию и редактированию файла для карты в игре.
Список команд см. в разделе .
== Автоматическая генерация навигационной сетки ==
Новый вид навигационной сетки <game>/maps/<mapname>.nav (<игра>/карты/<имя карты>.nav) создается с помощью команды nav_generate во время загрузки карты, которая требует . В зависимости от размера и сложности карты, это может занять от нескольких минут до нескольких часов. Но в основном эта операция длится5 минут. Однако большие леса являются примером структур, для которых расчет .nav может занять много времени. Затем вы можете загрузить созданный файл .nav на свой сервер.
Рекомендуется, чтобы создатели карт создавали навигационные сетки, прежде чем опубликовать свою карту.
=== Что вычисляется во время генерации ===
Во время создания навигационной сетки происходят следующие шаги:
* Начиная с точки респауна игрока, ходимое пространство выбирается путем "заливки" из этой точки, ищя соседние ходимые точки;
* Из отобранных данных строятся прямоугольные Навигационные области;
* Вычисляются места для передышки и для снайперов;
* Вычисляются места встреч и точки подхода (это может занять некоторое время);
* Вычисляются начальные области встречи.
=== Просмотр навигационной сетки ===
Чтобы просмотреть сначала вам нужно включить и ввести nav_edit 1. Чтобы выключить редактор сетки, введите nav_edit 0. 
Чтобы увидеть все атрибуты пропишите tf_show_mesh_decoration 1. Используйте tf_show_mesh_decoration_manual 1, чтобы скрыть автоматически создаваемые атрибуты .
=== Явное обозначение зон, пригодных для ходьбы (например: "Наверху нет сетки") ===
Некоторые карты с очень крутыми лестницами, пандусами или холмами могут запутать систему генерации, в результате чего навигационная сетка не покрывает всю карту. Чтобы решить эту проблему, вы можете вручную разместить дополнительные маркеры для ходьбы, которые будут указывать генератору на поиск в направлении от этой точки во время фазы выборки.
Чтобы добавить один или несколько маркеров, сначала направьте взгляд на известное место на карте, где можно ходить, затем введите в консоли. Когда вы закончите расставлять маркеры, введите (затем nav_clear_selected_set) или nav_generate для повторной генерации сетки.
Вы можете удалить все ранее размещенные ходовые маркеры с помощью команды nav_clear_walkable_marks.
=== Быстрая генерация сеток для тестирования ===
Фаза анализа генератора может отнимать много времени. Чтобы не ждать е завершения, введите в консоль nav_quicksave 1.
:
== Редактирование навигационной сетки ==
Автоматический генератор навигационной сетки делает хорошую работу по созданию сетки (даже без запуска nav_quicksave 0), позволяя вам легко начать использовать ботов и заложников на пользовательских картах.
Однако тщательная ручная настройка навигационной сетки может заметно улучшить производительность ботов. Ручное редактирование сетки Названиями мест также позволяет ботам сообщать другим, где происходят события, что улучшает радар Counter-Strike и включает названия мест во все радиосообщения.
Чтобы включить редактор, введите nav_edit 1 в консоли (для выключения введите nav_edit 0).
* Белый крест в центре экрана - это курсор.
* Область навигации, на которую вы указываете, является выбранной областью и отображается желтым контуром.
* Навигация Области, в которые можно попасть из выбранной области, показаны красным цветом.
* Белая линия в выделенной области обозначает место, где область будет разделена, если будет выполнена команда nav_split.
=== Сохранение ===
В настоящее время в системе редактирования Navigation Mesh нет команды "отменить". Поэтому очень важно часто сохранять свою работу с помощью команды nav_save.
=== Создание новой области ===
Это можно сделать с помощью команд nav_begin_area и nav_end_area.
		
=== Удаление ===
Чтобы удалить область, надо навести курсор на ненужную область, выделить её и прописать nav_delete. Также вы можете выбрать несколько область и удалить их.
=== Соединение двух областей ===
	
Соединения определяют, где боты могут перемещаться из одной области в другую.
Обычно соединения Двухсторонние, то есть боты могут свободно перемещаться между двумя областями.
Однако, иногда могут понадобиться односторонние соединения, например, когда нужно чтобы боты могли спрыгнуть с верхней точки вниз.
Также их можно использовать для установления направления, например, для совершения сложных прыжков.
Дабы сделать одностороннее движение из точки А в точку Б (то есть передвижение из точки Ф в точку Б):
# Выделите область А: На ведите курсор на неё и пропишите nav_mark.
# Нацельтесь на точку Б и введите nav_connect.
Чтобы сделать Двухстороннее движение, повторите шаги выше, поменяв местами А и Б.
=== Отсоединение двух областей ===
Чтобы убрать все соединения между точками А и Б:
# Выделите область А: На ведите на неё курсор и пропишите nav_mark.
# Наведите курсор на область Б и пропишите nav_disconnect.
=== Разделение ===
Разделение делает из одной области две двухсторонне соединенные области.
	
=== Объединение ===
Объединение позволяет уменьшить количество.
Обе области должны быть одинакового размера по краям. Но не обязательно чтобы они были смежными.
Полученная область унаследует связи обоих областей и их свойства (т.е.: Названия мест и т.д.).
		
=== Сращивание ===
Сращивание позволяет создать новую область между двумя имеющимися. Это очень мощное орудие, которое можно использовать для легкого создания наклонных участков, как показано в примере ниже.
		
=== Атрибуты области ===
	
Имеется куча атрибутов, с помощью которых область говорит ботам, что им делать, когда они касаются её.
Все атрибуты могут быть увидены на небольшой срок, когда мы нацелены на них. Длительность можно изменить с помощью nav_show_area_info.
Чтобы создать атрибут надо нацелиться на нужную область и прописать команду, например nav_jump.
* Область прыжков (отмечена зелёным X-ом) говорит ботам, что они должны прыгнуть, дабы добраться до области выше(соединенной), но эту область нельзя использовать как место для пережидания/снайперов.
* 'Область приседания (отмечена синей диагональной линией) заставляет ботов приседать на этой области.
* Область БЕЗ прыжков (отмечена красным ромбом) заставляет ботов не прыгать. Это можно использовать для сокращения прыжков. Но боты застревают, если для продолжения движения требуется прыжок, т.к. они не могут прыгнуть.
* Область отступления (отмечена зелёным +-ом) останавливает передвижение ботов к препятствиям. Это полезно для мест, где легко провалиться, как мосты без ограждений.
* Область торможения (отмечена красным восьмиугольником) говорит ботам придержать коней, прежде чем войти в другую область. Можно использовать, чтобы сделать аккуратный и точный прыжок.
* Область бега (отмечена двумя синими стрелками) говорит ботам просто бежать.
* Область шага (отмечена одной зелёной стрелкой) говорит ботам ходить бесшумно.
* Область не для пряток (никак не отмечена) говорит ботам, что здесь нельзя спрятаться.
* Область прямоходящих (никак не отмечена) говорит ботам не приседать здесь, пока они прячутся.
Помимо этих атрибутов, которые можно установить, есть ещё запретный атрибут (отмечен синим прямоугольником), который ставиться автоматически в определенных случаях, когда боты не могут или не должны пользоваться областью навигации.
В , активный энтити, заблокированные двери и могут заблокировать навигационную область.
=== Использование привязок для редактирования сетки ===
Конечно эти команды можно вводить в консоль, но будет намного легче если использовать .
Например, если ввести bind del nav_delete, а затем нажать , то мы удалим область, на которую наведен прицел (в режиме редактирования сетки).
Вы можете сделать несколько временных привязок за раз с помощью файла. Это очень удобно для редактирования сетки, т.к. здесь очень много команд и это не очень удобно привязывать их вручную. Просмотрите для того чтобы найти готовый файл и инструкцию по его использованию.
Просмотрите для всех команд редактирования навигационной сетки в .
== Выдача имён ==
Вы можете использовать выдачу имён, чтобы дать название месту на карта. скажем так, если на карте есть дома, то все области в нём можно наименовать "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 без аргумента.
Смотрите также: , .
Существует несколько дополнительных команд, предоставляющие такие инструменты, как: пипетка, заливка, замена и т.д.. Для получения полной справки см. Place Name Commands.
== Частые проблемы и их решение ==
=== Посторонние области на лестницах и пандусах ===
Автоматическая система генерации имеет тенденцию создавать участки, которые свисают со стороны лестниц и пандусов. Их следует удалить, чтобы заставить ботов подниматься по лестнице или пандусу прямо.
=== Перила ===
Перила — большая проблема для нынешней навигационной сетки, а именно звенья, которые проходят через перила. Их следует избегать, если в этом нет необходимости. В конечном итоге боты совершают эти прыжки, но при этом они не отличаются особой элегантностью.
=== Предотвращение чрезмерных прыжков ===
Используйте nav_no_jump чтобы предотвратить большое количество прыжков.
=== Работа с вращающимися дверями ===
Удалите навигационную область, чтобы оставить свободное место в навигационной сетке и обеспечить вращающуюся дверь. Вы можете переделать навигационные квадраты, если удаление существующей области не работает.
Иногда боты будут пытаться проходить через дверь из одной области в другую, что приведёт к их застреванию. Может быть удаление смежной области или настройка областей и связей решит эту ошибку.
== Продвинутые методы редактирования ==
=== Лестницы ===
Лестницы можно создать на области, по которой надо взбираться. Ваш курсор станет зелёным когда вы посмотрите на лестницу.
Использование 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, можно выключить локальный алгоритм избежание препятствий и управления движением ботов.
=== Выделение областей, которых надо избегать ===
Использование nav_avoid говорит ботам избегать область пока обычный маршрут не станет слишком опасным.
{{Note|AVOID не использован в 
=== Удержание позиций для пряток ===
Используйте nav_dont_hide, чтобы боты не могли прятаться в этой области.
Этим можно пользоваться, чтобы контролировать создание позиций для пряток во время фазы анализа.
=== Установление снайперских позиций ===
Отметьте область с помощью nav_walk и введите nav_make_sniper_spots. Это разделит область на множество маленьких, которые используются навигационной сеткой для побуждения снайперской стрельбы.
=== Выстраивание сложных прыжков и узких дверных проемов ===
Размещение областей навигации для определенных путей.
* Если боты застревают по бокам двери или окна, вы можете проложить узкий проход через середину проема.
* Самое высокое значение, на которое бот попытается прыгнуть, составляет 58 юнитов. Если верхняя часть находится на 59 или более юнитов выше нижней, боты сдадутся сразу после прыжка. Если это происходит в месте, до которого боты действительно могут допрыгнуть, используйте nav_corner_lower, чтобы немного опустить верхнюю область навигации.
=== Импорт и Экспорт областей ===
Области могут быть импортированы и экспортированы с помощью и . экспортирует область в выбранный файл, когда как импортирует области из выбранного файла и выделяет их. файл использует этими командами, чтобы создать отдельную область с формой и соединениями, которые невозможно создать.
Эти команды могут быть полезны, если: 
* Создание соединений, которые трудно или невозможно создать вручную с помощью , например, двунаправленное соединение между двумя областями в .
* Установление областей на наклонных поверхностях.
== Смотрите также ==
* 
* 
* 
* 
* 
== Внешние ссылки ==
* Официальные форумы для системы ботов (нерабочий) - Archived version.
* Waypointing for CS:S Bots/Hostages (Edit Life)