Ru/Nav Mesh Editing: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (obsolete language category)
 
(35 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{lang|Nav Mesh Editing|title=Редактирование навигационной сетки}}
{{LanguageBar|title = Редактирование навигационной сетки}}
{{translate:ru}}
{{back|Navigation Meshes:ru}}
Эта страница посвящена созданию и редактированию файла [[NAV:ru|NAV]] для карты в игре.


Список команд см. в разделе [[Navigation Mesh Commands:ru|Команды навигационной сетки]].
{{translate}}
{{back|Navigation Meshes}}
Эта страница посвящена созданию и редактированию файла {{L|NAV}} для карты в игре.
 
Список команд см. в разделе {{L|Navigation Mesh Commands|Команды навигационной сетки}}.


== Автоматическая генерация навигационной сетки ==
== Автоматическая генерация навигационной сетки ==
Новый вид навигационной сетки <code><game>/maps/<mapname>.nav</code> (<code><игра>/карты/<имя карты>.nav</code>) создается с помощью команды '''<code>[[Navigation_Mesh_Commands#Mesh_generation|nav_generate]]</code>''' во время загрузки карты, которая требует {{ent:ru|sv_cheats|1}}. В зависимости от размера и сложности карты, это может занять от нескольких минут до нескольких часов. Но в основном эта операция длится5 минут. Однако большие леса являются примером структур, для которых расчет .nav может занять много времени. Затем вы можете загрузить созданный файл .nav на свой сервер.
Новый вид навигационной сетки <code><game>/maps/<mapname>.nav</code> (<code><игра>/карты/<имя карты>.nav</code>) создается с помощью команды '''<code>[[Navigation_Mesh_Commands#Mesh_generation|nav_generate]]</code>''' во время загрузки карты, которая требует {{ent|sv_cheats|1}}. В зависимости от размера и сложности карты, это может занять от нескольких минут до нескольких часов. Но в основном эта операция длится5 минут. Однако большие леса являются примером структур, для которых расчет .nav может занять много времени. Затем вы можете загрузить созданный файл .nav на свой сервер.
{{note:ru|<code>nav_quicksave 1</code> не позволяет <code>nav_generate</code> изменить сгенерированную сетку полностью проанализированными данными.}}
{{Note|<code>nav_quicksave 1</code> не позволяет <code>nav_generate</code> изменить сгенерированную сетку полностью проанализированными данными.}}


Рекомендуется, чтобы создатели карт создавали навигационные сетки, прежде чем опубликовать свою карту.
Рекомендуется, чтобы создатели карт создавали навигационные сетки, прежде чем опубликовать свою карту.


{{Note:ru|В {{css}} и {{csgo:ru}}, если [[bot|бот]]ы были добавлены при отсутсвии файла .nav, игра автоматически создаст её <code>nav_generate</code> (начиная с точек спавна). Это особенно влияет на пользовательские карты.
{{Note|В {{css}} и {{csgo}}, если {{L|bot|бот}}ы были добавлены при отсутсвии файла .nav, игра автоматически создаст <code>nav_generate</code> (начиная с точек спавна). Это особенно влияет на пользовательские карты.
Чтобы генерация .nav не занимала много времени можно убрать ботов с сервера {{ent:ru|bot_kick}} перед выбором команды.}}
Чтобы генерация .nav не занимала много времени можно убрать ботов с сервера {{ent|bot_kick}} перед выбором команды.}}


=== Что вычисляется во время генерации ===
=== Что вычисляется во время генерации ===
Во время создания навигационной сетки происходят следующие шаги:
Во время создания навигационной сетки происходят следующие шаги:
* Начиная с точки респауна игрока, ходимое пространство выбирается путем "заливки" из этой точки, ищя соседние ходимые точки.
* Начиная с точки респауна игрока, ходимое пространство выбирается путем "заливки" из этой точки, ищя соседние ходимые точки;
* Из отобранных данных строятся прямоугольные '''Навигационные области'''.
* Из отобранных данных строятся прямоугольные '''Навигационные области''';
* Вычисляются места для пряток и снайперов
* Вычисляются места для передышки и для снайперов;
* Вычисляются места встреч и точки подхода (это может занять некоторое время)
* Вычисляются места встреч и точки подхода (это может занять некоторое время);
* Вычисляются начальные области встречи
* Вычисляются начальные области встречи.


=== Просмотр навигационной сетки ===
=== Просмотр навигационной сетки ===
Чтобы просмотреть текущую навигационную сетку, введите <code>nav_edit 1</code>. Чтобы выключить редактор сетки, введите <code>nav_edit 0</code>. Для просмотра навигационной сетки вам потребуется {{ent|sv_cheats|1}}.
Чтобы просмотреть сначала вам нужно включить {{ent|sv_cheats|1}} и ввести <code>nav_edit 1</code>. Чтобы выключить редактор сетки, введите <code>nav_edit 0</code>.  


Выполните <code>tf_show_mesh_decoration 1</code>, чтобы увидеть все атрибуты {{tf2}}. Используйте <code>tf_show_mesh_decoration_manual 1</code>, чтобы скрыть автоматически создаваемые атрибуты {{tf2}}.
Чтобы увидеть все атрибуты {{tf2}} пропишите <code>tf_show_mesh_decoration 1</code>. Используйте <code>tf_show_mesh_decoration_manual 1</code>, чтобы скрыть автоматически создаваемые атрибуты {{tf2}}.


=== Явное обозначение зон, пригодных для ходьбы (например: "Наверху нет сетки") ===
=== Явное обозначение зон, пригодных для ходьбы (например: "Наверху нет сетки") ===
Некоторые карты с очень крутыми лестницами, пандусами или холмами могут запутать систему генерации, в результате чего навигационная сетка не покрывает всю карту.  Чтобы решить эту проблему, вы можете вручную разместить дополнительные ''маркеры для ходьбы'', которые будут указывать генератору на поиск в направлении от этой точки во время фазы выборки.
Некоторые карты с очень крутыми лестницами, пандусами или холмами могут запутать систему генерации, в результате чего навигационная сетка не покрывает всю карту.  Чтобы решить эту проблему, вы можете вручную разместить дополнительные ''маркеры для ходьбы'', которые будут указывать генератору на поиск в направлении от этой точки во время фазы выборки.


Чтобы добавить один или несколько маркеров, сначала направьте взгляд на известное место на карте, где можно ходить, затем введите <code>[[Navigation_Mesh_Commands:|nav_mark_walkable]]</code> в консоли. Когда вы закончите расставлять маркеры, введите <code>[[Navigation_Mesh_Commands:ru|nav_generate_incremental]]</code> (затем <code>nav_clear_selected_set</code>) или <code>nav_generate</code> для повторной генерации сетки.
Чтобы добавить один или несколько маркеров, сначала направьте взгляд на известное место на карте, где можно ходить, затем введите <code>{{L|Navigation_Mesh_Commands:|nav_mark_walkable}}</code> в консоли. Когда вы закончите расставлять маркеры, введите <code>{{L|Navigation_Mesh_Commands|nav_generate_incremental}}</code> (затем <code>nav_clear_selected_set</code>) или <code>nav_generate</code> для повторной генерации сетки.


Вы можете удалить все ранее размещенные ходовые маркеры с помощью команды <code>nav_clear_walkable_marks</code>.
Вы можете удалить все ранее размещенные ходовые маркеры с помощью команды <code>nav_clear_walkable_marks</code>.


===Быстрая генерация сеток для тестирования===
=== Быстрая генерация сеток для тестирования ===
Фаза анализа генератора может отнимать много времени.  Чтобы пропустить его, введите в консоль <code>nav_quicksave 1</code>.
Фаза анализа генератора может отнимать много времени.  Чтобы не ждать е завершения, введите в консоль <code>nav_quicksave 1</code>.
:{{note:ru|"Быстрое сохранение" пропускает фазу анализа, и в полученной навигационной сетке будут отсутствовать важные данные, необходимые системам планирования и внимания более высокого уровня CS Bots и Hostages.  Хотя это полезно для тестирования, редактирования и настройки навигационной сетки, обязательно проведите полный анализ (т.е.: <code>nav_analyze</code> с <code>nav_quicksave 0</code>), прежде чем публиковать свой навигационный файл другим.}}
:{{Note|"Быстрое сохранение" пропускает фазу анализа, и в полученной навигационной сетке будут отсутствовать важные данные, для хорошей работы CS Bots и Hostages.  Хотя это полезно для тестирования, редактирования и настройки навигационной сетки, обязательно проведите полный анализ (т.е.: <code>nav_analyze</code> с <code>nav_quicksave 0</code>), прежде чем опубликовать свой навигационный файл.}}


==Редактирование навигационной сетки==
== Редактирование навигационной сетки ==
[[Image:nav_edit.jpg|thumb|300px|right|Enabling the Navigation Mesh editor in de_dust]]
[[File:nav_edit.jpg|thumb|300px|right|Включенный редактор навигационной сетки на de_dust]]
Автоматический генератор навигационной сетки делает разумную работу по созданию сетки (даже без запуска <code>nav_quicksave 0</code>), позволяя вам легко начать использовать ботов и заложников на пользовательских картах.
Автоматический генератор навигационной сетки делает хорошую работу по созданию сетки (даже без запуска <code>nav_quicksave 0</code>), позволяя вам легко начать использовать ботов и заложников на пользовательских картах.


Однако тщательная ручная настройка навигационной сетки может заметно улучшить производительность ботов. Ручное украшение сетки ''Названиями мест'' также позволяет ботам сообщать другим, где происходят события, улучшает радар Counter-Strike и включает названия мест во все радиосообщения.
Однако тщательная ручная настройка навигационной сетки может заметно улучшить производительность ботов. Ручное редактирование сетки ''Названиями мест'' также позволяет ботам сообщать другим, где происходят события, что улучшает радар Counter-Strike и включает названия мест во все радиосообщения.


Чтобы включить редактор, введите <code>nav_edit 1</code> в консоли (для выключения введите <code>nav_edit 0</code>).
Чтобы включить редактор, введите <code>nav_edit 1</code> в консоли (для выключения введите <code>nav_edit 0</code>).
Line 52: Line 53:
* Белая линия в выделенной области обозначает место, где область будет разделена, если будет выполнена команда <code>nav_split</code>.
* Белая линия в выделенной области обозначает место, где область будет разделена, если будет выполнена команда <code>nav_split</code>.


{{Warning:ru|Редактирование навигационной сетки при активных ботах может привести к сбою игры, особенно удаление, разделение и объединение областей. Для безопасности сначала выполните <code>bot_kick</code>. Если вы закончили редактирование, <code>nav_save</code> сохраните свою работу и перезагрузите карту, прежде чем снова добавлять ботов.}}
{{Warning|Редактирование навигационной сетки при активных ботах может привести к сбою игры, особенно удаление, разделение и объединение областей. Для безопасности сначала выполните <code>bot_kick</code>. Если вы закончили редактирование, <code>nav_save</code> сохраните свою работу и перезагрузите карту, прежде чем снова добавлять ботов.}}


===Сохранить===
=== Сохранение ===
В настоящее время в системе редактирования Navigation Mesh нет команды "отменить".  Поэтому очень важно часто '''сохранять свою работу''' с помощью команды <code>nav_save</code>.
В настоящее время в системе редактирования Navigation Mesh нет команды "отменить".  Поэтому очень важно часто '''сохранять свою работу''' с помощью команды <code>nav_save</code>.


===Создание новой области===
=== Создание новой области ===
Это можно сделать с помощью команд <code>nav_begin_area</code> и <code>nav_end_area</code>.
Это можно сделать с помощью команд <code>nav_begin_area</code> и <code>nav_end_area</code>.
{|
{|
| [[Image:nav_begin_area.jpg|300px|thumb|left|Поместите курсор в то место, где должен находиться угол новой области, и выполните команду <code>nav_begin_area</code>.]]
| [[File:nav_begin_area.jpg|300px|thumb|left|Поместите курсор в то место, где должен находиться угол новой области, и выполните команду <code>nav_begin_area</code>.]]
| [[Image:nav_drag_area.jpg|300px|thumb|left|Переместите курсор, чтобы вытянуть границы области.]]
| [[File:nav_drag_area.jpg|300px|thumb|left|Переместите курсор, чтобы вытянуть границы области.]]
| [[Image:nav_end_area.jpg|300px|thumb|left|Поместите курсор в противоположный угол новой области и выполните команду <code>nav_end_area</code>.]]
| [[File:nav_end_area.jpg|300px|thumb|left|Поместите курсор в противоположный угол новой области и выполните команду <code>nav_end_area</code>.]]
|}
|}
{{Note:ru|Области, созданные таким образом, не имеют начальной связи с существующей навигационной сеткой.}}
{{Note|Области, созданные таким образом, не имеют начальной связи с существующей навигационной сеткой.}}
{{Tip:ru|Вы можете использовать <code>nav_snap_to_grid 1</code>, чтобы получить согласованные размеры прямоугольников.}}
{{Tip|Вы можете использовать <code>nav_snap_to_grid 1</code>, чтобы получить согласованные размеры прямоугольников.}}
{{Tip:ru|Четыре угла получившегося участка будут находиться на одной высоте. Если земля не ровная, начинайте новые области с самого высокого угла, чтобы предотвратить создание области под полом. Плавающую область можно легко сдвинуть вниз к земле, используя <code>nav_corner_place_on_ground</code> при наведении на нее.}}
{{Tip|Четыре угла получившегося участка будут находиться на одной высоте. Если земля не ровная, начинайте новые области с самого высокого угла, чтобы предотвратить создание области под полом. Плавающую область можно легко сдвинуть вниз к земле, используя <code>nav_corner_place_on_ground</code> при наведении на нее.}}
{{Tip:ru|A newly created area will bidirectionally connect to a marked area upon <code>nav_end_area</code> being executed.}}
=== Delete ===
To delete an area, aim your cursor at it so that it is highlighted and execute <code>nav_delete</code>. Alternatively you can mark an area or select a set of areas to delete multiple areas.


=== Connect two areas ===
{{Tip|Новая созданная область будет подключаться к выделенной области <code>nav_end_area</code>.}}
 
=== Удаление ===
Чтобы удалить область, надо навести курсор на ненужную область, выделить её и прописать <code>nav_delete</code>. Также вы можете выбрать несколько область и удалить их.
 
=== Соединение двух областей  ===
{| style="float:right;"
{| style="float:right;"
| [[Image:nav_jump_down.jpg|300px|thumb|right|'''<span style="color: rgb(80, 80, 255);">One-way connections</span>''' (marked with dark blue lines) are usually used for "jump-down" links from a ledge to the ground.]]
| [[File:nav_jump_down.jpg|300px|thumb|right|'''<span style="color: rgb(80, 80, 255);">Одностороннее соединение</span>''' (Выделено синими линиями) чаще всего используются для мест прыжков с высоты на землю.]]
| [[Image:nav_connections.jpg|300px|thumb|right|'''<span style="color: rgb(51, 204, 204);">Bidirectional (two-way) connections</span>''' (marked with light blue lines at the area edges) allow bots to freely move between the two areas.]]
| [[File:nav_connections.jpg|300px|thumb|right|'''<span style="color: rgb(51, 204, 204);">Двухстороннее соединение </span>''' (Выделено светло-синими линиями линиями у краёв) позволяет ботам проходить между двумя областями.]]
|}
|}
The connections between areas define whether one can move from one area to another.
Соединения определяют, где боты могут перемещаться из одной области в другую.


Usually these connections are ''bidirectional'', meaning one can move back and forth between two areas at will.
Обычно соединения ''Двухсторонние'', то есть боты могут свободно перемещаться между двумя областями.
However, sometimes the connection is ''one way'', as in the case of ledges that can be jumped down, but not back up.
Однако, иногда могут понадобиться ''односторонние'' соединения, например, когда нужно чтобы боты могли спрыгнуть с верхней точки вниз.
One-way links can also be useful for forcing bots to travel a specific direction, perhaps to set up for a tricky jump.
Также их можно использовать для установления направления, например, для совершения сложных прыжков.


To make a '''<span style="color: rgb(80, 80, 255);">one-way connection</span>''' from area A to area B (meaning you can move from A to B):
Дабы сделать '''<span style="color: rgb(80, 80, 255);">одностороннее движение</span>''' из точки А в точку Б (то есть передвижение из точки Ф в точку Б):
# Mark area A: Place your cursor on it and execute <code>nav_mark</code>.
# Выделите область А: На ведите курсор на неё и пропишите <code>nav_mark</code>.
# Aim at area B and execute <code>nav_connect</code>.
# Нацельтесь на точку Б и введите <code>nav_connect</code>.


To make a '''<span style="color: rgb(51, 204, 204);">bidirectional connection</span>''', repeat the above steps reversing the roles of A and B.
Чтобы сделать '''<span style="color: rgb(51, 204, 204);">Двухстороннее движение</span>''', повторите шаги выше, поменяв местами А и Б.
{{tip|In a selected set, <code>nav_connect</code> will try to bidirectionally connect the first selected area and every subsequently selected area. Use <code>nav_connect</code> and selected sets to quickly make bidirectional connections.}}
{{Tip|В выбранном наборе, <code>nav_connect</code> будет пытаться двунаправленно соединить первую выделенную область и каждую последующую выбранную область. Выберите несколько областей и используйте <code>nav_connect</code>, чтобы сразу сделать двухстороннее соединение.}}
=== Disconnect two areas ===
 
To remove '''all''' connections between the areas A and B:
=== Отсоединение двух областей ===
# Mark area A: Place your cursor on it and execute <code>nav_mark</code>.
Чтобы убрать '''все''' соединения между точками А и Б:
# Aim at area B and execute <code>nav_disconnect</code>.
# Выделите область А: На ведите на неё курсор и пропишите <code>nav_mark</code>.
{{tip|When ran with a selected set, <code>nav_disconnect</code> will try to remove connections between the first selected area and every subsequently selected area.}}
# Наведите курсор на область Б и пропишите <code>nav_disconnect</code>.
{{tip|Use <code>nav_disconnect_outgoing_oneways</code> to quickly disconnect all one-way connections. This command also works in a selected set.}}
{{Tip|Если прописать <code>nav_disconnect</code>, когда выбрано несколько областей, он будет пытаться отсоединить друг от друга первые и последующие выбранные области.}}
{{Tip|Используйте <code>nav_disconnect_outgoing_oneways</code>,чтобы удалить все односторонние соединения. Эта команда также работает с несколько выбранными областями.}}
{{clr}}
{{clr}}


=== Split ===
=== Разделение ===
Splitting divides an area into two bidirectionally connected areas.
Разделение делает из одной области две двухсторонне соединенные области.
{|
{|
| [[Image:nav_edit.jpg|300px|thumb|left|Position yourself and the cursor so that the white split line is where you want the area to be split.]]
| [[File:nav_edit.jpg|300px|thumb|left|Встаньте на нужную позицию и наведитесь курсором так, чтобы линия разделения была в нужном месте.]]
| [[Image:nav_split.jpg|300px|thumb|left|Execute <code>nav_split</code> to get two adjacent, inter-connected areas.]]
| [[File:nav_split.jpg|300px|thumb|left|Введите <code>nav_split</code> и получите две взаимосвязанные области.]]
|}
|}


=== Merge ===
=== Объединение ===
Merging two areas reduces the area count.
Объединение позволяет уменьшить количество.
 
Обе области должны быть одинакового размера по краям. Но не обязательно чтобы они были смежными.


Both areas must be the same size along the edge to be merged. It is not required that the two areas are adjacent.
Полученная область унаследует связи обоих областей и их свойства (т.е.: Названия мест и т.д.).


The resulting area will retain all of the connections of the original two areas, and inherit properties (i.e: Place Names, etc) from the marked area.
{{Tip|При перемещении из точки A в точку B боты, как правило, предпочитают маршруты с меньшим количеством областей для путешествия, поэтому теоретически маршрут можно сделать более привлекательным для ботов, объединив некоторые области.}}
{{Tip | While moving from point A to point B, bots tend to prefer routes with less areas to travel through, so a route can in theory be made more attractive to bots by merging some areas.}}
{|
{|
| [[Image:nav_mark.jpg|300px|thumb|left|Aim your cursor at the first area and execute <code>nav_mark</code>.]]
| [[File:nav_mark.jpg|300px|thumb|left|Нацельтесь на первую область и пропишите<code>nav_mark</code>.]]
| [[Image:nav_pre_merge.jpg|300px|thumb|left|Aim at second area.]]
| [[File:nav_pre_merge.jpg|300px|thumb|left|Нацельтесь на вторую область.]]
| [[Image:nav_post_merge.jpg|300px|thumb|left|Execute <code>nav_merge</code>.]]
| [[File:nav_post_merge.jpg|300px|thumb|left|Введите <code>nav_merge</code>.]]
|}
|}


=== Splice ===
=== Сращивание ===
Splicing creates a new area between two existing areas. Splicing is a powerful tool, and can be used to easily create sloped areas, as shown in the example below.
Сращивание позволяет создать новую область между двумя имеющимися. Это очень мощное орудие, которое можно использовать для легкого создания наклонных участков, как показано в примере ниже.
{{Tip | It is '''not''' required that the two areas have the same width. The width of the resulting area will be the smaller of the two.}}
{{Tip|Не обязательно, чтобы две области имели одинаковую ширину. Ширина новой области будет выбрана из самой меньшей среди двух областей.}}
{|
{|
| [[Image:nav_prep_splice.jpg|300px|thumb|left|Aim your cursor at the first area and execute <code>nav_mark</code>.]]
| [[File:nav_prep_splice.jpg|300px|thumb|left|Нацельтесь на первую область и введите <code>nav_mark</code>.]]
| [[Image:nav_pre_splice.jpg|300px|thumb|left|Aim your cursor at the second area.]]
| [[File:nav_pre_splice.jpg|300px|thumb|left|Нацельтесь на вторую область.]]
| [[Image:nav_post_splice.jpg|300px|thumb|left|Execute <code>nav_splice</code>.]]{{clr}}
| [[File:nav_post_splice.jpg|300px|thumb|left|Введите <code>nav_splice</code>.]]{{clr}}
|}
|}


=== Area Attributes ===
=== Атрибуты области ===
{| style="float:right;"
{| style="float:right"
| [[Image:nav_jump.jpg|300px|thumb|left|A jump area and a no_jump area.]]
| [[File:nav_jump.jpg|300px|thumb|left|Область с разрешением на прыжок и без.]]
| [[Image:nav_crouch.jpg|300px|thumb|left|Crouch areas.]]
| [[File:nav_crouch.jpg|300px|thumb|left|Зоны ходьбы с приседанием.]]
|}
|}
There are a bunch of attributes that each area can have which tell bots to behave in a specific way when touching it.
Имеется куча атрибутов, с помощью которых область говорит ботам, что им делать, когда они касаются её.
All attributes of an area are visible for a short amount of time when aimed at. This duration can be set with the [[ConVar]] <code>nav_show_area_info</code>.
Все атрибуты могут быть увидены на небольшой срок, когда мы нацелены на них. Длительность можно изменить с помощью {{L|ConVar}} <code>nav_show_area_info</code>.
To toggle an attribute for an area, aim at it and execute the corresponding command, e.g. <code>nav_jump</code>.
Чтобы создать атрибут надо нацелиться на нужную область и прописать команду, например <code>nav_jump</code>.
* '''Jump areas''' (marked with a <span style="color:#00FF00">green X</span>) tell bots that they must jump to reach the higher connected area, and that this area is not usable as a hiding/sniping spot.
* '''Область прыжков''' (отмечена <span style="color:#00FF00">зелёным X-ом</span>) говорит ботам, что они должны прыгнуть, дабы добраться до области выше(соединенной), но эту область нельзя использовать как место для пережидания/снайперов.
* '''Crouch areas''' (marked with a <span style="color:#6060FF">blue diagonal slash</span>) force bots to crouch when moving through this area.
* '''Область приседания'' (отмечена <span style="color:#6060FF">синей диагональной линией</span>) заставляет ботов приседать на этой области.
* '''No jump areas''' (marked with <span style="color:#FF0000">red rhombus</span>) force bots not to jump. This is useful to prevent excessive jumping. However, bots get stuck if jumping is required to keep going, as they may not jump.
* '''Область БЕЗ прыжков''' (отмечена <span style="color:#FF0000">красным ромбом</span>) заставляет ботов не прыгать. Это можно использовать для сокращения прыжков. Но боты застревают, если для продолжения движения требуется прыжок, т.к. они не могут прыгнуть.
* '''Precise areas''' (marked with a <span style="color:#00FF00">green +</span>) stops bots from avoiding obstacles. This can help in places where they can easily fall off, like catwalks with no railing.
* '''Область отступления''' (отмечена <span style="color:#00FF00">зелёным +-ом</span>) останавливает передвижение ботов к препятствиям. Это полезно для мест, где легко провалиться, как мосты без ограждений.
* '''Stop areas''' (marked with a <span style="color:#FF0000">red octagon</span>) tells bot to stand still for a short moment when entering this area. Useful to slow bots down to line up tricky jumps more accurately.
* '''Область торможения''' (отмечена <span style="color:#FF0000">красным восьмиугольником</span>) говорит ботам придержать коней, прежде чем войти в другую область. Можно использовать, чтобы сделать аккуратный и точный прыжок.
* '''Run areas''' (marked with <span style="color:#6060FF">two blue arrows</span>) tell bots explicitly to run.
* '''Область бега''' (отмечена <span style="color:#6060FF">двумя синими стрелками</span>) говорит ботам просто бежать.
* '''Walk areas''' (marked with <span style="color:#00FF00">one green arrow</span>) tell bots explicitly to walk silently.
* '''Область шага''' (отмечена <span style="color:#00FF00">одной зелёной стрелкой</span>) говорит ботам ходить бесшумно.
* '''Don't hide areas''' (no mark) tell bots not to use this area as a hiding spot.
* '''Область не для пряток''' (никак не отмечена) говорит ботам, что здесь нельзя спрятаться.
* '''Stand areas''' (no mark) tell bots not to crouch while hiding in this area.
* '''Область прямоходящих''' (никак не отмечена) говорит ботам не приседать здесь, пока они прячутся.


Apart from the above attributes, which can be set, there is the '''blocked''' attribute (marked with a <span style="color:#6060FF">blue rectangle</span>) that is set automatically in certain cases when bots can't or shouldn't use a nav area.<br>
Помимо этих атрибутов, которые можно установить, есть ещё '''запретный''' атрибут (отмечен <span style="color:#6060FF">синим прямоугольником</span>), который ставиться автоматически в определенных случаях, когда боты не могут или не должны пользоваться областью навигации.<br>
{{note|Areas can be blocked for specific teams in {{tf2}}. It is possible to see what bots the blocked attribute blocks through the <code>tf_show_blocked_areas</code> [[ConVar]].}}
{{Note|Области могут быть недоступны для определенной команде в {{tf2}}. Можно увидеть каким ботам заблокирован доступ с помощью <code>tf_show_blocked_areas</code> {{L|ConVar}}.}}
In {{csgo}}, active [[trigger_hurt]] entities, locked doors and [[func_nav_blocker]]s in particular can block nav areas.
В {{csgo}}, активный {{ent|trigger_hurt}} энтити, заблокированные двери и {{L|func_nav_blocker}} могут заблокировать навигационную область.
{{clr}}
{{clr}}


=== Using Mesh Editing Binds ===
=== Использование привязок для редактирования сетки ===
Although all of the mesh editing commands can be typed in the console, in practice it is far easier to ''[[bind]]'' these commands to keys.
Конечно эти команды можно вводить в консоль, но будет намного легче если использовать ''{{L|bind}}''.
With <code>bind del nav_delete</code> for example, pressing {{key|Del}} will delete the nav area under your cursor (in nav editing mode).
Например, если ввести <code>bind del nav_delete</code>, а затем нажать {{key|Del}}, то мы удалим область, на которую наведен прицел (в режиме редактирования сетки).


You can temporarily bind many commands at once by using a [[CFG]] file. This is useful for bot navigation editing, because there are many commands, and you will probably not want them to be permanently attached to your keys. See [[Editing Bot Navigation CFG File]] for a pre-made file and instructions on its use.
Вы можете сделать несколько временных привязок за раз с помощью {{L|CFG}} файла. Это очень удобно для редактирования сетки, т.к. здесь очень много команд и это не очень удобно привязывать их вручную. Просмотрите {{L|Editing Bot Navigation CFG File}} для того чтобы найти готовый файл и инструкцию по его использованию.


See [[Counter-Strike: Source Navigation Mesh Console Command Reference|Navigation Mesh Console Command Reference]] for a list of all commands related to bot navigation.
Просмотрите {{L|Counter-Strike: Source Navigation Mesh Console Command Reference|Navigation Mesh Console Command Reference}} для всех команд редактирования навигационной сетки в {{csgo}}.


== Place Names ==
== Выдача имён ==
Once you've generated a nav mesh, ''Place Names'' can be assigned to nav areas to label that region of the map. For instance, if there is a prominent house in the map, all of the nav areas in the house can be tagged with the "House" Place Name.
Вы можете использовать ''выдачу имён'', чтобы дать название месту на карта. скажем так, если на карте есть дома, то все области в нём можно наименовать "House".


Place Names are used by the CS Bot chatter system to announce where they are, by the radar to show the current location of the player, and they are appended to the player's name when that player uses text chat or radio commands. For example:
Названия мест используют CS боты, чтобы сказать где они, радаром, чтобы показать местонахождение игрока, а также они важны для голосовых команд и радио. Например:
:<code>ChicagoTed @ '''Apartment''' (RADIO): Fire in the hole!</code>
:<code>ChicagoTed @ '''Apartment''' (RADIO): Fire in the hole!</code>


=== Adding place names ===
=== Добавление имён к области ===
To add or change the name of a location, you need to turn on the place name editor. Make sure <code>nav_edit</code> is set to 1, then type
Чтобы дать или изменить название области нужно включить редактор имён. Убедитесь что <code>nav_edit</code> равен 1 и пропишите
:<code>nav_toggle_place_mode</code>.
:<code>nav_toggle_place_mode</code>.
When the place name editor is enabled (assuming no areas have been named) all the nav squares should turn red. To select which ''Place Name'' you want to assign to an area, type
Когда редактор имён включен (при условии, что ни одна область не была названа) все квадраты навигации станут красными. Чтобы выбрать ''Название'' нужной области пропишите
:<code>nav_use_place <name></code>,
:<code>nav_use_place <name></code>,
for example <code>nav_use_place Bedroom</code>. Next, aim your cursor at an area you want to label with that ''Place Name'' and turn on ''Place Painting Mode'' by executing
взять хоть <code>nav_use_place Bedroom</code>. Затем, чтобы дать ''Название'' прицельтесь на нужную область и включите ''Режим Изменения Названий'' с помощью
:<code>nav_toggle_place_painting</code>.
:<code>nav_toggle_place_painting</code>.
While ''Place Painting'' is active, each area you point at will be tagged with the current ''Place Name'' you selected and will turn green in color. You can change the place name you are painting with by typing <code>nav_use_place <newname></code>, notice that after changing the place name, all areas already painted with a different name will turn blue and areas painted with the name you just changed to will turn green. When you are finished using ''Place Painting Mode'', you can exit by executing <code>nav_toggle_place_painting</code> again.
Когда ''Изменение Названий'' активно каждая область на которую в нажмёте получит ''Название'', которое вы выбрали. Вы можете изменить название места с помощью <code>nav_use_place <newname></code>, запомните, что после этого, все области, которым вы дали имя до этого будут синими, а области, которым вы только дадите имя — зелёными. Чтобы выйти из ''Режима Изменения Названий'' снова пропишите <code>nav_toggle_place_painting</code>.


For a list of all available ''Place Names'', execute <code>nav_use_place</code> with no argument.
Чтобы узнать все имеющиеся ''Названия'', пропишите <code>nav_use_place</code> без аргумента.
''See also: {{css}} [[Standard Place Names for CSS]], {{csgo}} [[Standard Place Names for CS:GO]].''
''Смотрите также: {{css}} {{L|Standard Place Names for CSS}}, {{csgo}} {{L|Standard Place Names for CS:GO}}.''
<br>
<br>
There are several additional commands that provide tools for picking, flood-filling, replacing, and so on. For a complete reference, see [[Navigation_Mesh_Commands#Place_name_commands|Place Name Commands]].
Существует несколько дополнительных команд, предоставляющие такие инструменты, как: пипетка, заливка, замена и т.д.. Для получения полной справки см. [[Navigation Mesh Commands#Place_name_commands|Place Name Commands]].


== Common mesh problems and solutions ==
== Частые проблемы и их решение ==
=== Extraneous areas on stairs and ramps ===
=== Посторонние области на лестницах и пандусах ===
The automatic generation system tends to build areas that hang off the side of stairs and ramps. These should be removed to force the bots to take the stairs or ramp straight-on.
Автоматическая система генерации имеет тенденцию создавать участки, которые свисают со стороны лестниц и пандусов. Их следует удалить, чтобы заставить ботов подниматься по лестнице или пандусу прямо.


=== Railings ===
=== Перила ===
Railings can be a problem for the current bot navigation system, this includes jump-down links that must pass over railings, they should be avoided unless necessary. The bots will eventually make these jumps, but they are not terribly elegant while doing so.
Перила — большая проблема для нынешней навигационной сетки, а именно звенья, которые проходят через перила. Их следует избегать, если в этом нет необходимости. В конечном итоге боты совершают эти прыжки, но при этом они не отличаются особой элегантностью.
=== Предотвращение чрезмерных прыжков ===
Используйте <code>nav_no_jump</code> чтобы предотвратить большое количество прыжков.
{{Note|<code>NO_JUMP</code> не используется в {{tf2|4.1}}.}}


=== Preventing excessive jumping ===
=== Работа с вращающимися дверями ===
Use the <code>nav_no_jump</code> command to flag the area to discourage jumping.
Удалите навигационную область, чтобы оставить свободное место в навигационной сетке и обеспечить вращающуюся дверь. Вы можете переделать навигационные квадраты, если удаление существующей области не работает.
{{note|The <code>NO_JUMP</code> attribute is not used in {{Game link|Team Fortress 2}}.}}


=== Dealing with rotating doors ===
Иногда боты будут пытаться проходить через дверь из одной области в другую, что приведёт к их застреванию. Может быть удаление смежной области или настройка областей и связей решит эту ошибку.
Clip off the nav area to leave an empty space in the nav mesh to allow for the rotating door. You may have to remake the nav square if deleting part of an existing one doesn't work.


Bots will sometimes try to walk through the opened door brush from one nav area to another and get stuck. Either removing the adjacent nav area or configuring the areas and connections so the bots have to walk around the opened door should prevent this.
== Продвинутые методы редактирования ==
=== Лестницы ===
Лестницы можно создать на области, по которой надо взбираться. Ваш курсор станет зелёным когда вы посмотрите на лестницу.


== Advanced editing techniques ==
'''Использование <code>nav_build_ladder</code>'''
=== Ladders ===
Ladders can be manually built against climbable surfaces. Your editing cursor will turn green when pointing at a climbable surface.


'''Using <code>nav_build_ladder</code>'''
Это самый простой способ: посмотрите на лестницу и введите <code>nav_build_ladder</code>.
 
The easy way to build a ladder is to simply point at a climbable surface, and execute <code>nav_build_ladder</code>.
{|
{|
| [[Image:nav_build_ladder_before.jpg|300px|thumb|left|Point at a climbable surface]]
| [[File:nav_build_ladder_before.jpg|300px|thumb|left|Посмотрите на лестницу]]
| [[Image:nav_build_ladder_after.jpg|300px|thumb|left|Ladder created]]{{clr}}
| [[File:nav_build_ladder_after.jpg|300px|thumb|left|Лестница создана]]{{clr}}
|}
|}


'''Using <code>nav_begin_area</code> and <code>nav_end_area</code>'''
'''Использование <code>nav_begin_area</code> и <code>nav_end_area</code>'''


If <code>nav_build_ladder</code> isn't what you need, you can manually create a ladder:
Если <code>nav_build_ladder</code> не для вас, то можно создать лестницу так:
#Place your cursor at where a corner of the new ladder should be
# Поместите курсор в тот угол, с которого начнётся лестница
# Execute <code>nav_begin_area</code>
# Введите <code>nav_begin_area</code>
# Move your cursor to drag out the ladder's extent
# Переведите курсор в конец лестницы
# Execute <code>nav_end_area</code>
# Введите <code>nav_end_area</code>


This can be useful to get bots to start going up the ladder, and jump off halfway up, onto the crate:
Этот способ можно использовать, чтобы бот, например, начал взбираться по лестнице и на полпути спрыгнул на ящик:
{|
{|
| [[Image:nav_begin_ladder.jpg|300px|thumb|left|Start dragging ladder at first corner]]
| [[File:nav_begin_ladder.jpg|300px|thumb|left|Начало лестницы с одного угла]]
| [[Image:nav_drag_ladder.jpg|300px|thumb|left|Drag ladder extent]]
| [[File:nav_drag_ladder.jpg|300px|thumb|left|Конец лестницы]]
| [[Image:nav_end_ladder.jpg|300px|thumb|left|Ladder created]]{{clr}}
| [[File:nav_end_ladder.jpg|300px|thumb|left|Лестница создана]]{{clr}}
|}
|}


=== Reversing ladders ===
=== Переворот лестниц ===
Sometimes a ladder will be created facing the wrong way. If a ladder is drawn in red, you are looking at it from the back. The ladder is drawn in green if it is facing you. To change the orientation of a ladder, simply point at the ladder and use <code>nav_ladder_flip</code>.
Иногда лестница создаётся не той стороной. Если лестница выделена красным, то значит вы смотрите на неё сзади. А если зелёным, то значит вы смотрите спереди. Чтобы изменить ориентацию лестнице (''как никак 21 век на дворе''), посмотрите на неё и пропишите <code>nav_ladder_flip</code>.
{|
{|
| [[Image:nav_ladder_backward.jpg|300px|thumb|left|Ladder facing into the wall (incorrect)]]
| [[File:nav_ladder_backward.jpg|300px|thumb|left|Лестница смотрит на стену (неправильно)]]
| [[Image:nav_ladder_forward.jpg|300px|thumb|left|Ladder facing away from the wall (correct)]]{{clr}}
| [[File:nav_ladder_forward.jpg|300px|thumb|left|Лестница встала к стене задом (правильно)]]{{clr}}
|}
|}


=== Obstacle avoidance and precision movement ===
=== Избегание препятствий и точное движение ===
Using <code>nav_precise</code>, <code>nav_walk</code>, and <code>nav_stop</code> to disable local obstacle avoidance behaviors and control bot movement.
Используя <code>nav_precise</code>, <code>nav_walk</code> и <code>nav_stop</code>, можно выключить локальный алгоритм избежание препятствий и управления движением ботов.
{{note|The <code>WALK</code> and <code>STOP</code> attributes are not used in {{Game link|Team Fortress 2}}.}}
{{Note|<code>WALK</code> и <code>STOP</code> не используются в {{tf2|4.1}}.}}


=== Marking areas to avoid ===
=== Выделение областей, которых надо избегать ===
Using <code>nav_avoid</code> to tell bots to avoid the area unless the normal route has become too dangerous.
Использование <code>nav_avoid</code> говорит ботам избегать область пока обычный маршрут не станет слишком опасным.
{{note|The <code>AVOID</code> attribute is not used in {{Game link|Team Fortress 2}}.}}
{{Note|<code>AVOID</code> не использован в {{tf2|4.1}.}}


=== Controlling where bots Can hide ===
=== Удержание позиций для пряток ===
Using <code>nav_dont_hide</code> to prevent bots from hiding in that area.
Используйте <code>nav_dont_hide</code>, чтобы боты не могли прятаться в этой области.
This can be used to force the creation of hiding spots during the analysis phase.
Этим можно пользоваться, чтобы контролировать создание позиций для пряток во время фазы анализа.


=== Setting up sniper spots ===
=== Установление снайперских позиций ===
Mark an area using <code>nav_walk</code> and execute <code>nav_make_sniper_spots</code>. This will break the area into small sub-areas which are used internally by the navigation mesh to encourage sniping.
Отметьте область с помощью <code>nav_walk</code> и введите <code>nav_make_sniper_spots</code>. Это разделит область на множество маленьких, которые используются  навигационной сеткой для побуждения снайперской стрельбы.
{{note|In {{Game link|Team Fortress 2}} hiding spots only determine where TFBot Spies lurk; Sniper spots are marked by {{ent|func_tfbot_hint}}, but they are only used by Snipers in [https://wiki.teamfortress.com/wiki/Mann_vs._Machine Mann vs. Machine]; otherwise the game automatically determines Sniper spots.}}
{{Note|В {{tf2|4.1}} места для пряток определяют только области, где скрываются TFBot Spies; Позиции снайперов создаются с помощью {{ent|func_tfbot_hint}}, но они также используются снайперами в {{tfwiki|Mann vs. Machine|lang=ru}}; С другой стороны, игра сама определяет позиции для снайперов.}}


=== Lining up tricky jumps and narrow doorways ===
=== Выстраивание сложных прыжков и узких дверных проемов ===
[[Image:MaximumJumpCrouch.jpg|300px|thumb|right|Highest possible crouchjump]]
[[File:MaximumJumpCrouch.jpg|300px|thumb|right|Наивысшая возможная зона достижения с прыжком-приседом]]
Arranging nav areas to force specific paths.
Размещение областей навигации для определенных путей.


* If the bots are getting hung up on the sides of a door or window, you can carve out a narrow path through the middle of the opening.
* Если боты застревают по бокам двери или окна, вы можете проложить узкий проход через середину проема.
* The highest a bot will try to jump is 58 unitsIf the top of a jump is 59 or more units above the bottom, bots will give up as soon as they jumpIf this happens in a spot that the bots can actually jump up to, use <code>nav_corner_lower</code> to lower the upper nav area slightly.
* Самое высокое значение, на которое бот попытается прыгнуть, составляет 58 юнитовЕсли верхняя часть находится на 59 или более юнитов выше нижней, боты сдадутся сразу после прыжкаЕсли это происходит в месте, до которого боты действительно могут допрыгнуть, используйте <code>nav_corner_lower</code>, чтобы немного опустить верхнюю область навигации.
{{clr}}
{{clr}}


===Import and Exported areas===
=== Импорт и Экспорт областей ===
Nav areas can be imported and exported through {{ent|nav_save_selected}} and {{ent|nav_merge_mesh}} respectively. {{ent|nave_save_selected}} exports nav areas in a selected set to a [[KeyValues]] file, while {{ent|nav_merge_mesh}} imports nav areas from the selected file and selects them. The [[Keyvalues|KV]] file used by these commands can be edited to force custom nav area shapes and connections that otherwise would be impossible to make.
Области могут быть импортированы и экспортированы с помощью {{ent|nav_save_selected}} и {{ent|nav_merge_mesh}}. {{ent|nav_save_selected}} экспортирует область в выбранный {{L|KeyValues}} файл, когда как {{ent|nav_merge_mesh}} импортирует области из выбранного файла и выделяет их. {{L|Keyvalues|KV}} файл использует этими командами, чтобы создать отдельную область с формой и соединениями, которые невозможно создать.
{{warning|Degenerate areas are hard to select '''and (by proxy) remove''', so try not to make them!}}
{{Warning|Дегенеративные области трудно выбрать '''и (к сведению) удалить''', так что не создавайте их!}}
{{todo|Describe file syntax and info.}}
{{todo|Опишите синтаксис и информацию файла.}}


These commands can be useful for:  
Эти команды могут быть полезны, если:  
* Creating connections that are difficult or impossible to make manually with {{ent|nav_connect}}, such as a bidirectional connection between two areas in [[areaportals]].
* Создание соединений, которые трудно или невозможно создать вручную с помощью {{ent|nav_connect}}, например, двунаправленное соединение между двумя областями в {{L|areaportals}}.
* Fit areas on to skewed surfaces.
* Установление областей на наклонных поверхностях.


== See also ==
== Смотрите также ==
* [[Navigation Mesh Commands:ru|Navigation Mesh Console Command Reference]]
* {{L|Navigation Mesh Commands|Navigation Mesh Console Command Reference}}
* [[Left 4 Dead Navigation Meshes:ru]]
* {{L|Left 4 Dead Navigation Meshes}}
* [[L4D Level Design/Nav Meshes:ru]]
* {{L|L4D Level Design/Nav Meshes}}
* [[L4D Level Design/Nav Flow:ru]]
* {{L|L4D Level Design/Nav Flow}}
* [[L4D Level Design/Advanced Nav Editing:ru]]
* {{L|L4D Level Design/Advanced Nav Editing}}


== External Links ==
== Внешние ссылки ==
* Official forums for the bot system (down) - [https://web.archive.org/web/*/http://www.turtlerockstudios.com/forums/csbot/ Archived version].
* Официальные форумы для системы ботов (нерабочий) - [https://web.archive.org/web/*/http://www.turtlerockstudios.com/forums/csbot/ Archived version].
* [https://www.editlife.net/tutorial.php?tutid=60 Waypointing for CS:S Bots/Hostages (Edit Life)]
* [https://www.editlife.net/tutorial.php?tutid=60 Waypointing for CS:S Bots/Hostages (Edit Life)]


[[Category:Level Design:ru]]
{{ACategory|Level Design}}
 
{{ACategory|Source}}
 
{{ACategory|Counter-Strike: Source}}
{{ACategory|Counter-Strike: Global Offensive}}
{{ACategory|Team Fortress 2}}
{{ACategory|Left 4 Dead}}
{{ACategory|Left 4 Dead 2}}
 
{{ACategory|Level Design}}<!--Why?-->

Latest revision as of 03:53, 22 August 2024

English (en)Español (es)日本語 (ja)Русский (ru)中文 (zh)Translate (Translate)
Info content.png
This page needs to be translated.
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 complies with the alternate languages guide.(en)
Navigation Meshes

Эта страница посвящена созданию и редактированию файла NAV(en) для карты в игре.

Список команд см. в разделе Команды навигационной сетки(en).

Автоматическая генерация навигационной сетки

Новый вид навигационной сетки <game>/maps/<mapname>.nav (<игра>/карты/<имя карты>.nav) создается с помощью команды nav_generate во время загрузки карты, которая требует sv_cheats 1. В зависимости от размера и сложности карты, это может занять от нескольких минут до нескольких часов. Но в основном эта операция длится5 минут. Однако большие леса являются примером структур, для которых расчет .nav может занять много времени. Затем вы можете загрузить созданный файл .nav на свой сервер.

Note.pngПримечание:nav_quicksave 1 не позволяет nav_generate изменить сгенерированную сетку полностью проанализированными данными.

Рекомендуется, чтобы создатели карт создавали навигационные сетки, прежде чем опубликовать свою карту.

Note.pngПримечание:В Counter-Strike: Source и Counter-Strike: Global Offensive, если бот(en)ы были добавлены при отсутсвии файла .nav, игра автоматически создаст nav_generate (начиная с точек спавна). Это особенно влияет на пользовательские карты. Чтобы генерация .nav не занимала много времени можно убрать ботов с сервера bot_kick перед выбором команды.

Что вычисляется во время генерации

Во время создания навигационной сетки происходят следующие шаги:

  • Начиная с точки респауна игрока, ходимое пространство выбирается путем "заливки" из этой точки, ищя соседние ходимые точки;
  • Из отобранных данных строятся прямоугольные Навигационные области;
  • Вычисляются места для передышки и для снайперов;
  • Вычисляются места встреч и точки подхода (это может занять некоторое время);
  • Вычисляются начальные области встречи.

Просмотр навигационной сетки

Чтобы просмотреть сначала вам нужно включить sv_cheats 1 и ввести nav_edit 1. Чтобы выключить редактор сетки, введите nav_edit 0.

Чтобы увидеть все атрибуты Team Fortress 2 пропишите tf_show_mesh_decoration 1. Используйте tf_show_mesh_decoration_manual 1, чтобы скрыть автоматически создаваемые атрибуты Team Fortress 2.

Явное обозначение зон, пригодных для ходьбы (например: "Наверху нет сетки")

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

Чтобы добавить один или несколько маркеров, сначала направьте взгляд на известное место на карте, где можно ходить, затем введите nav_mark_walkable(en) в консоли. Когда вы закончите расставлять маркеры, введите nav_generate_incremental(en) (затем nav_clear_selected_set) или nav_generate для повторной генерации сетки.

Вы можете удалить все ранее размещенные ходовые маркеры с помощью команды nav_clear_walkable_marks.

Быстрая генерация сеток для тестирования

Фаза анализа генератора может отнимать много времени. Чтобы не ждать е завершения, введите в консоль nav_quicksave 1.

Note.pngПримечание:"Быстрое сохранение" пропускает фазу анализа, и в полученной навигационной сетке будут отсутствовать важные данные, для хорошей работы CS Bots и Hostages. Хотя это полезно для тестирования, редактирования и настройки навигационной сетки, обязательно проведите полный анализ (т.е.: nav_analyze с nav_quicksave 0), прежде чем опубликовать свой навигационный файл.

Редактирование навигационной сетки

Включенный редактор навигационной сетки на de_dust

Автоматический генератор навигационной сетки делает хорошую работу по созданию сетки (даже без запуска nav_quicksave 0), позволяя вам легко начать использовать ботов и заложников на пользовательских картах.

Однако тщательная ручная настройка навигационной сетки может заметно улучшить производительность ботов. Ручное редактирование сетки Названиями мест также позволяет ботам сообщать другим, где происходят события, что улучшает радар Counter-Strike и включает названия мест во все радиосообщения.

Чтобы включить редактор, введите nav_edit 1 в консоли (для выключения введите nav_edit 0).

  • Белый крест в центре экрана - это курсор.
  • Область навигации, на которую вы указываете, является выбранной областью и отображается желтым контуром.
  • Навигация Области, в которые можно попасть из выбранной области, показаны красным цветом.
  • Белая линия в выделенной области обозначает место, где область будет разделена, если будет выполнена команда nav_split.
Warning.pngПредупреждение:Редактирование навигационной сетки при активных ботах может привести к сбою игры, особенно удаление, разделение и объединение областей. Для безопасности сначала выполните bot_kick. Если вы закончили редактирование, nav_save сохраните свою работу и перезагрузите карту, прежде чем снова добавлять ботов.

Сохранение

В настоящее время в системе редактирования Navigation Mesh нет команды "отменить". Поэтому очень важно часто сохранять свою работу с помощью команды nav_save.

Создание новой области

Это можно сделать с помощью команд nav_begin_area и nav_end_area.

Поместите курсор в то место, где должен находиться угол новой области, и выполните команду nav_begin_area.
Переместите курсор, чтобы вытянуть границы области.
Поместите курсор в противоположный угол новой области и выполните команду nav_end_area.
Note.pngПримечание:Области, созданные таким образом, не имеют начальной связи с существующей навигационной сеткой.
Tip.pngСовет:Вы можете использовать nav_snap_to_grid 1, чтобы получить согласованные размеры прямоугольников.
Tip.pngСовет:Четыре угла получившегося участка будут находиться на одной высоте. Если земля не ровная, начинайте новые области с самого высокого угла, чтобы предотвратить создание области под полом. Плавающую область можно легко сдвинуть вниз к земле, используя nav_corner_place_on_ground при наведении на нее.
Tip.pngСовет:Новая созданная область будет подключаться к выделенной области nav_end_area.

Удаление

Чтобы удалить область, надо навести курсор на ненужную область, выделить её и прописать nav_delete. Также вы можете выбрать несколько область и удалить их.

Соединение двух областей

Одностороннее соединение (Выделено синими линиями) чаще всего используются для мест прыжков с высоты на землю.
Двухстороннее соединение (Выделено светло-синими линиями линиями у краёв) позволяет ботам проходить между двумя областями.

Соединения определяют, где боты могут перемещаться из одной области в другую.

Обычно соединения Двухсторонние, то есть боты могут свободно перемещаться между двумя областями. Однако, иногда могут понадобиться односторонние соединения, например, когда нужно чтобы боты могли спрыгнуть с верхней точки вниз. Также их можно использовать для установления направления, например, для совершения сложных прыжков.

Дабы сделать одностороннее движение из точки А в точку Б (то есть передвижение из точки Ф в точку Б):

  1. Выделите область А: На ведите курсор на неё и пропишите nav_mark.
  2. Нацельтесь на точку Б и введите nav_connect.

Чтобы сделать Двухстороннее движение, повторите шаги выше, поменяв местами А и Б.

Tip.pngСовет:В выбранном наборе, nav_connect будет пытаться двунаправленно соединить первую выделенную область и каждую последующую выбранную область. Выберите несколько областей и используйте nav_connect, чтобы сразу сделать двухстороннее соединение.

Отсоединение двух областей

Чтобы убрать все соединения между точками А и Б:

  1. Выделите область А: На ведите на неё курсор и пропишите nav_mark.
  2. Наведите курсор на область Б и пропишите nav_disconnect.
Tip.pngСовет:Если прописать nav_disconnect, когда выбрано несколько областей, он будет пытаться отсоединить друг от друга первые и последующие выбранные области.
Tip.pngСовет:Используйте nav_disconnect_outgoing_oneways,чтобы удалить все односторонние соединения. Эта команда также работает с несколько выбранными областями.

Разделение

Разделение делает из одной области две двухсторонне соединенные области.

Встаньте на нужную позицию и наведитесь курсором так, чтобы линия разделения была в нужном месте.
Введите nav_split и получите две взаимосвязанные области.

Объединение

Объединение позволяет уменьшить количество.

Обе области должны быть одинакового размера по краям. Но не обязательно чтобы они были смежными.

Полученная область унаследует связи обоих областей и их свойства (т.е.: Названия мест и т.д.).

Tip.pngСовет:При перемещении из точки A в точку B боты, как правило, предпочитают маршруты с меньшим количеством областей для путешествия, поэтому теоретически маршрут можно сделать более привлекательным для ботов, объединив некоторые области.
Нацельтесь на первую область и пропишитеnav_mark.
Нацельтесь на вторую область.
Введите nav_merge.

Сращивание

Сращивание позволяет создать новую область между двумя имеющимися. Это очень мощное орудие, которое можно использовать для легкого создания наклонных участков, как показано в примере ниже.

Tip.pngСовет:Не обязательно, чтобы две области имели одинаковую ширину. Ширина новой области будет выбрана из самой меньшей среди двух областей.
Нацельтесь на первую область и введите nav_mark.
Нацельтесь на вторую область.
Введите nav_splice.

Атрибуты области

Область с разрешением на прыжок и без.
Зоны ходьбы с приседанием.

Имеется куча атрибутов, с помощью которых область говорит ботам, что им делать, когда они касаются её. Все атрибуты могут быть увидены на небольшой срок, когда мы нацелены на них. Длительность можно изменить с помощью ConVar(en) nav_show_area_info. Чтобы создать атрибут надо нацелиться на нужную область и прописать команду, например nav_jump.

  • Область прыжков (отмечена зелёным X-ом) говорит ботам, что они должны прыгнуть, дабы добраться до области выше(соединенной), но эту область нельзя использовать как место для пережидания/снайперов.
  • 'Область приседания (отмечена синей диагональной линией) заставляет ботов приседать на этой области.
  • Область БЕЗ прыжков (отмечена красным ромбом) заставляет ботов не прыгать. Это можно использовать для сокращения прыжков. Но боты застревают, если для продолжения движения требуется прыжок, т.к. они не могут прыгнуть.
  • Область отступления (отмечена зелёным +-ом) останавливает передвижение ботов к препятствиям. Это полезно для мест, где легко провалиться, как мосты без ограждений.
  • Область торможения (отмечена красным восьмиугольником) говорит ботам придержать коней, прежде чем войти в другую область. Можно использовать, чтобы сделать аккуратный и точный прыжок.
  • Область бега (отмечена двумя синими стрелками) говорит ботам просто бежать.
  • Область шага (отмечена одной зелёной стрелкой) говорит ботам ходить бесшумно.
  • Область не для пряток (никак не отмечена) говорит ботам, что здесь нельзя спрятаться.
  • Область прямоходящих (никак не отмечена) говорит ботам не приседать здесь, пока они прячутся.

Помимо этих атрибутов, которые можно установить, есть ещё запретный атрибут (отмечен синим прямоугольником), который ставиться автоматически в определенных случаях, когда боты не могут или не должны пользоваться областью навигации.

Note.pngПримечание:Области могут быть недоступны для определенной команде в Team Fortress 2. Можно увидеть каким ботам заблокирован доступ с помощью tf_show_blocked_areas ConVar(en).

В Counter-Strike: Global Offensive, активный trigger_hurt энтити, заблокированные двери и func_nav_blocker(en) могут заблокировать навигационную область.

Использование привязок для редактирования сетки

Конечно эти команды можно вводить в консоль, но будет намного легче если использовать bind(en). Например, если ввести bind del nav_delete, а затем нажать Del, то мы удалим область, на которую наведен прицел (в режиме редактирования сетки).

Вы можете сделать несколько временных привязок за раз с помощью CFG(en) файла. Это очень удобно для редактирования сетки, т.к. здесь очень много команд и это не очень удобно привязывать их вручную. Просмотрите Editing Bot Navigation CFG File(en) для того чтобы найти готовый файл и инструкцию по его использованию.

Просмотрите Navigation Mesh Console Command Reference(en) для всех команд редактирования навигационной сетки в Counter-Strike: Global Offensive.

Выдача имён

Вы можете использовать выдачу имён, чтобы дать название месту на карта. скажем так, если на карте есть дома, то все области в нём можно наименовать "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 без аргумента. Смотрите также: Counter-Strike: Source Standard Place Names for CSS(en), Counter-Strike: Global Offensive Standard Place Names for CS:GO(en).
Существует несколько дополнительных команд, предоставляющие такие инструменты, как: пипетка, заливка, замена и т.д.. Для получения полной справки см. Place Name Commands.

Частые проблемы и их решение

Посторонние области на лестницах и пандусах

Автоматическая система генерации имеет тенденцию создавать участки, которые свисают со стороны лестниц и пандусов. Их следует удалить, чтобы заставить ботов подниматься по лестнице или пандусу прямо.

Перила

Перила — большая проблема для нынешней навигационной сетки, а именно звенья, которые проходят через перила. Их следует избегать, если в этом нет необходимости. В конечном итоге боты совершают эти прыжки, но при этом они не отличаются особой элегантностью.

Предотвращение чрезмерных прыжков

Используйте nav_no_jump чтобы предотвратить большое количество прыжков.

Note.pngПримечание:NO_JUMP не используется в Team Fortress 2 Team Fortress 2.

Работа с вращающимися дверями

Удалите навигационную область, чтобы оставить свободное место в навигационной сетке и обеспечить вращающуюся дверь. Вы можете переделать навигационные квадраты, если удаление существующей области не работает.

Иногда боты будут пытаться проходить через дверь из одной области в другую, что приведёт к их застреванию. Может быть удаление смежной области или настройка областей и связей решит эту ошибку.

Продвинутые методы редактирования

Лестницы

Лестницы можно создать на области, по которой надо взбираться. Ваш курсор станет зелёным когда вы посмотрите на лестницу.

Использование nav_build_ladder

Это самый простой способ: посмотрите на лестницу и введите nav_build_ladder.

Посмотрите на лестницу
Лестница создана

Использование nav_begin_area и nav_end_area

Если nav_build_ladder не для вас, то можно создать лестницу так:

  1. Поместите курсор в тот угол, с которого начнётся лестница
  2. Введите nav_begin_area
  3. Переведите курсор в конец лестницы
  4. Введите nav_end_area

Этот способ можно использовать, чтобы бот, например, начал взбираться по лестнице и на полпути спрыгнул на ящик:

Начало лестницы с одного угла
Конец лестницы
Лестница создана

Переворот лестниц

Иногда лестница создаётся не той стороной. Если лестница выделена красным, то значит вы смотрите на неё сзади. А если зелёным, то значит вы смотрите спереди. Чтобы изменить ориентацию лестнице (как никак 21 век на дворе), посмотрите на неё и пропишите nav_ladder_flip.

Лестница смотрит на стену (неправильно)
Лестница встала к стене задом (правильно)

Избегание препятствий и точное движение

Используя nav_precise, nav_walk и nav_stop, можно выключить локальный алгоритм избежание препятствий и управления движением ботов.

Note.pngПримечание:WALK и STOP не используются в Team Fortress 2 Team Fortress 2.

Выделение областей, которых надо избегать

Использование nav_avoid говорит ботам избегать область пока обычный маршрут не станет слишком опасным. {{Note|AVOID не использован в Team Fortress 2

Удержание позиций для пряток

Используйте nav_dont_hide, чтобы боты не могли прятаться в этой области. Этим можно пользоваться, чтобы контролировать создание позиций для пряток во время фазы анализа.

Установление снайперских позиций

Отметьте область с помощью nav_walk и введите nav_make_sniper_spots. Это разделит область на множество маленьких, которые используются навигационной сеткой для побуждения снайперской стрельбы.

Note.pngПримечание:В Team Fortress 2 Team Fortress 2 места для пряток определяют только области, где скрываются TFBot Spies; Позиции снайперов создаются с помощью func_tfbot_hint, но они также используются снайперами в Tfwiki favicon.png Mann vs. Machine; С другой стороны, игра сама определяет позиции для снайперов.

Выстраивание сложных прыжков и узких дверных проемов

Наивысшая возможная зона достижения с прыжком-приседом

Размещение областей навигации для определенных путей.

  • Если боты застревают по бокам двери или окна, вы можете проложить узкий проход через середину проема.
  • Самое высокое значение, на которое бот попытается прыгнуть, составляет 58 юнитов. Если верхняя часть находится на 59 или более юнитов выше нижней, боты сдадутся сразу после прыжка. Если это происходит в месте, до которого боты действительно могут допрыгнуть, используйте nav_corner_lower, чтобы немного опустить верхнюю область навигации.

Импорт и Экспорт областей

Области могут быть импортированы и экспортированы с помощью nav_save_selected и nav_merge_mesh. nav_save_selected экспортирует область в выбранный KeyValues(en) файл, когда как nav_merge_mesh импортирует области из выбранного файла и выделяет их. KV(en) файл использует этими командами, чтобы создать отдельную область с формой и соединениями, которые невозможно создать.

Warning.pngПредупреждение:Дегенеративные области трудно выбрать и (к сведению) удалить, так что не создавайте их!
Нужно сделать: Опишите синтаксис и информацию файла.

Эти команды могут быть полезны, если:

  • Создание соединений, которые трудно или невозможно создать вручную с помощью nav_connect, например, двунаправленное соединение между двумя областями в areaportals(en).
  • Установление областей на наклонных поверхностях.

Смотрите также

Внешние ссылки