Как сделать waypoints

1. Waypoint'ы - что это такое ?

Waypoint'ы - это точки на карте, которые использует бот для навигации. Они позволяют боту двигаться по карте, не сталкиваясь с препятствиями, находить места для установки бомбы, заложников. Эти точки не отображаются во время игры.

Боты знают, по какому пути идти, используя соединения между этими точками.

Для того, чтобы боты могли бегать по всем закоулкам карты, waypoint'ы должны быть расположены повсюду на карте. Без них боты будут просто стоять на месте либо выбирать направление движения случайно, при этом натыкаясь на стены и другие препятствия. Waypoint'ы также позволяют боту "знать" где на данной карте находятся цели - заложники, места для установки бомб.

Этот документ описывает команды, необходимые для создания или изменения файла путей (для POD-бота). При создании или редактировании путей необходимо, чтобы НЕ БЫЛО подключенных к текущей игре ботов, иначе могут произойти фатальные ошибки (с потерей всех не сохраненных данных). Создайте LAN Game, подключитесь к игре, расположите точки и их соединения на карте с помощью команд, приведенных ниже. Далее сохраните файл путей, отсоединитесь от сервера, затем опять создайте игру, на этот раз с ботами, для того, чтобы проверить, насколько хорошо (или плохо) они двигаются по только что созданным точкам.

2. Как точки путей выглядят на карте ?

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

Waypoint'ы хранятся в файле с таким же именем, как и у названия карты, но с расширением ".pwf" вместо ".bsp" для карт. Например, для карты de_dust файл путей будет иметь имя de_dust.pwf и будет хранится в папке Half-LifecstrikePODBotWPTDefault.

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

3. Кратко о консольных командах для редактирования путей.

Доступны следующие консольные команды (ЧУВСТВИТЕЛЬНЫЕ к регистру):

"waypoint on" - Включает отображение Waypoint'ов
"waypoint on noclip" - Включает редактирование путей с читом Noclip, который позволяет проходить сквозь стены
"waypoint off" -Выключает отображение Waypoint'ов.
"waypoint add" - Добавляет точку в место, где в это время расположен игрок (т.е. Вы). После выбора команды появляется всплывающее меню, позволяющее указать различные типы точек.
"waypoint delete" -Удаляет точку, ближайшую к игроку.
"waypoint find x" - Показывает направление к точке номер x
"waypoint showflags" -Показывает все флаги, установленные для точки
"waypoint addflag" - Позволяет вручную добавить флаг к точке.
"waypoint delflag" - Позволяет выбрать флаг текущей точки, подлежащий удалению.
"waypoint setradius x" - Выставляет радиус зоны для текущей точки равным х
"waypoint stats" - Отображает статистику о количестве точек различных типов, поставленных на карте.
"waypoint check" - Проверяет правильность установки точек (осуществляется автоматически при сохранении)
"wayzone calcall" - Вычисляет радиус зоны для всех точек на карте (не нужен для бота версии 1.4х и выше)
"waypoint save" - Сохраняет текущие пути в файл (с проверкой точек и соединений)
"waypoint save nocheck" - То же самое, но сохраняет даже при наличии ошибок.
"waypoint load" - Загружает Waypoint'ы из файла (без сохранения текущих изменений)
"autowaypoint" - Отображает статус режима autowaypoint.
"autowaypoint on" - Включает автоматическую расстановку точек (при движении игрока по карте) .
"autowaypoint off" -Выключает режим автоматической расстановки точек.

"pathwaypoint" - Отображает статуй режима pathwaypoint.
"pathwaypoint on" - Включает режим отображения соединений между точками.
"pathwaypoint off" - Выключает режим соединений.
"pathwaypoint add x" - Соединяет ближайшую к вам точку с той, номер которой вы укажете в команде
"pathwaypoint delete x" - Рассоединяет ближайшую к вам точку и ту точку, номер которой вы укажете в команде

"debuggoal x" - Заставляет ботов использовать точку номер х в качестве Точки Назначения

Для того, чтобы использовать команды, приведенные выше, необходимо использовать консоль. Вы должны начать игру с включенной консолью (используйте строку "hl.exe -console" для запуска игры). Для открытия консоли нажмите клавишу "~", введите команду и нажмите "~" для возвращения к игре.

Вы можете упростить все дело, если назначите горячие клавиши для команд с помощью команды bind. Например, перед редактированием введите:

bind a "waypoint add"
bind d "waypoint delete"
bind l "waypoint load"
bind w "waypoint save"

Тогда клавиша a будет служить для добавления точки, d - для удаления, l - для загрузки и w - для сохранения файла путей. Кроме того, эти команды можно сохранить в файле скрипта, и потом только вызывать его при необходимости редактирования командой exec.

Командой "waypoint add" можно добавить waypoint в то место, где расположен игрок. Точки waypoint'ов могут быть поставлены везде, где может пройти игрок. При установке точки вы услышите звук, подтверждающий действие. После ввода команды на экран будет выведено меню, позволяющее выбрать тип точки.

"Normal Waypoint" (Обычная точка) - Ставит точку, которая используется для обычного передвижения по карте от одной точки к другой. Необходимо ставить такие очки повсюду на карте (но придерживаясь определенной дистанции между ними), так как боты используют их для того, чтобы прятаться и варьировать пути движения. Цвет точек зеленый.

Обычная точка

"Terrorist Important Waypoint" и "Counter Important Waypoint" (Точка, важная для террористов и Точка, важная для контров) Это стратегические точки для каждой из команд. Боты используют их для патрулирования по карте. Как они это делают, зависит от типа карты. На DE_ картах необходимо поставить много таких точек для контр-террористов вокруг места, где устанавливается бомба и только 2-3 стратегические точки для террористов. Контр-террористы будут почти всегда выбирать в качестве цели точки, важные для CT и только иногда пойдут к точкам, важным для террористов. Террористам разрешено идти к точкам, важным для любой из команд. Система выбора важных точек меняется в зависимости от типа карты, например для CS_ карт все наоборот. Точка для террористов красная, для контров синяя.

Стратегическая точка для контр-террористов

"Ladder "("Лестница")
Эти точки необходимо ставить на лестнице, если вы хотите, чтобы боты ее использовали. Нижнюю точку поставьте, когда вы уже подошли вплотную к лестнице. Наверху лестницы необходимо поставить вторую точку. Ставьте ее когда вы уже находитесь над лестницей. Если лестница очень длинная, можно поставить несколько таких точек межу этими крайними. В большинстве случаев этот тип точек необходимо соединять вручную с помощью команды pathwaypoint add . Если между точками не будет соединения, боты НЕ БУДУТ использовать лестницу. Цвет фиолетовый.

Лестница

"Rescue Point" ("Точка спасения")
Данная точка должна быть установлена только на cs_ картах. Это место, куда контр-террористы должны вести заложников. Обычно ставится только 1 штука (в зависимости от того, сколько Зон Спасения есть на карте). Цвет белый.

Точка спасения

"Goal Point" ("Цель карты")
Поставьте ее там, где расположены цели карты. На DE_ картах это место установки бомбы, на cs картах - это место, откуда надо уводить заложников. Для AS карт это точка, куда надо двигаться VIP'ам. Цвет фиолетовый (как и для лестниц)

Целевая точка

"Camp Start" ("Кемперское место")
Это точка, где боты будут кемперить. Для того, чтобы ее поставить, смотрите туда же, куда должен смотреть бот, когда начнет кемперить. Для того, чтобы он присел при этом, просто держите кнопку приседания, когда добавляете точку.

Также надо указать:
"Camp End" ("Направление взгляда")
Выбрав это вы установите конечную точку, в которую будет смотреть бот во время того, как будет кемперить. Смотрите прямо по направлению, куда должен смотреть бот и добавьте точку.

Замечание: Вы не можете добавить этот тип точки до того, как поставите точку типа "Кемперское место".

Обычный цвет - голубой, если вы установите флаг для точки, она будет с красным или синим оттенком.

"Jump" ("Прыжок")
Это одна из первых возможностей обучения в POD (планируется значительное расширение таких возможностей). После выбора этого ваши движения будут контролироваться и если вы прыгнете, нормальная точка будет поставлена в месте начала прыжка, другая - в месте приземления. Т.е. тип точек является стандартным, но красная линия связи между точками покажет, что это соединение типа "Прыжок". Также можно создать такое соединение между уже существующими точками. Для этого необходимо, чтобы в месте прыжка и приземления уже были ранее созданы точки. При этом позиция точек будет модифицирована с учетом ее начального положения и места прыжка.

Точки, соединенные связью "Прыжок"

Замечание:

Для установки точки, где необходимо присесть, просто держите кнопку приседания во время добавления точки.

Как вы заметили, не существует отдельных путей для разных команд. Это уменьшает время создания файла путей.

Командой "waypoint delete" можно удалить точку, ближайшую к игроку. Точка должна быть на расстоянии максимум 40 юнитов от игрока (1/2 высоты игрока). Вам необходимо стоять вплотную к точки для ее удаления. Это позволяет избежать случайного удаления точки, которая находится далеко от вас. При успешном удалении вы услышите подтвержающий звук.

"waypoint addflag/deleteflag" дает возможность добавить некоторые дополнительные параметры для точки. Первый, "Block with hostage" используется редко. Если вы установите этот параметр для точки, Бот не будет использовать его, если за ним следуют заложники. Два других параметра необходимы для того, чтобы сделать снайперскую точку специфической для команды.

С помощью "waypoint save" можно сохранить информацию о точках в файл. Перед сохранением (если вы не добавите аргумент "nocheck"), точки и пути будут проверены на наличие грубых ошибок и если что-либо не так, вам будет об этом сообщено и ничего не будет сохранено. Во время проверки CS "подвиснет" на некоторое время, поэтому не волнуйтесь, игра не зависла, просто подождите! Файл waypoint'ов будет иметь такое же имя, как и текущая карта, с расширением "*.pwf". Файл будет сохранен в папку "cstrike/PODBot". Текущее имя игрока будет сохранено в качестве имя создателя путей.

Команда "waypoint load" очистит все waypoint'ы на текущей карте и загрузит их из файла waypoint'ов. Это хороший способ для того, чтобы отменить те изменения, которые вы сделали после последнего сохранения.

Замечание: не существует способа отмены изменения одной последней точки. Вы должны использовать "waypoint delete" для удаления точек по одной.

Команда "autowaypoint" позволяет автоматически устанавливать точки, когда вы ходите по карте. Для включения этой функции введите: "autowaypoint on". Когда вы перемещаетесь по карте, новая точка будет установлена автоматически на расстоянии 200 юнитов от уже установленных. Если другая точка установлена в радиусе 200 юнитов, новая тока установлена не будет. Поэтому если вы хотите установить несколько точек близко одна к другой, необходимо пользоваться командой "waypoint add".
Если вам не нравится, как была установлена точка автоматически, вы можете удалить ее с помощью команды "waypoint delete", предварительно отключив функцию "autowaypoint".

Когда используете функцию автоматической расстановки точек, старайтесь держатся центра проходов и всегда ставить точки по ОБЕ стороны дверей. Для этого вам придется поставить некоторые точки вручную с помощью команды "waypoint add".

Не используйте функцию авторасстановки точек для лестниц или прыжков!

Команда "pathwaypoint" позволяет отобразить соединения между точками (соединения, по которым боты будут двигаться от одной точки к другой). Включите эту функцию с помощью команды "pathwaypoint on". Когда вы подойдете вплотную к точке, вы увидите белые или желтые линии, соединяющие эту точку с некоторыми другими, которые бот будет считать "достижимыми" при движении из нее. Если соединение двустороннее, линия будет желтая, белая линия соответствует одностороннему соединению. "Достижимыми" точками считаются точки, между которыми нет препятствий. Некоторые точки не будут считаться достижимыми по разным причинам. Например, точки, висящие в воздухе над ботом не будут считаться достижимыми, так как не может подпрыгнуть достаточно высоко. Также точки, находящиеся слишком далеко от текущего местоположения, не будут достижимыми.

Боты будут двигаться от одной точки к другой ТОЛЬКО если межу точками существует соединение. Поэтому при создании путей к карте очень рекомендую включать режим Pathwaypoint для того, чтобы вы могли всегда видеть соединения между точками. Также необходимо проверять, существуют ли соединения между точками в ОБЕИХ НАПРАВЛЕНИЯХ. Если существует соединение от точки А к точке В, это не значит что существует соединения от В к А.

Команда "pathwaypoint add" позволяет вручную создать соединения между двумя точками. Это необходимо в тех случаях, когда путь между точками блокирован каким либо препятствием (например, дверью) и вы хотите создать соединение между этими точками. Также точки типа "лестница" в большинстве случаев должны быть соединены вручную. Подойдите близко к точке, ОТ которой необходимо создать соединение и используйте команду "pathwaypoint add x", причем х должно быть заменено на номер точки, К которой необходимо создать соединение. Номер точки выводится в левый верхний угол экрана когда вы находитесь рядом с точкой.

Например, если вы хотите создать соединение между точками номер 250 и 251, сначала необходимо стать рядом с точкой номер 250. После этого ввести в консоли: "pathwaypoint add 251". После этого вы должны видеть белую линию соединения между этими точками. Обратите внимание, что это ОДНОСТОРОННЕЕ соединение. Ели вы хотите, чтобы боты бегали и в обратном направлении, необходимо стать рядом со второй точкой и добавить соединение к первой.

Двустороннее соединение

Команда "pathwaypoint delete x" похожа на "add" команду. Только она не добавляет, а удаляет соединение от начальной точки до конечной. Это может понадобится в некоторых случаях, например для дверей, которые открываются только с одной стороны.

После добавления точек проверьте, используя режим pathwaypoint on, реальную достижимость точек. Иногда случается, что вы добавляете точку вроде бы близко от другой и также вроде бы между этими точками нет препятствий, однако ядро Half-Life не считает точку достижимой. Поэтому необходимо проверить соединения для точек в ОБЕИХ направлениях. Обычно нет необходимости следить за этим, однако в некоторых ситуациях необходимо потратить некоторое время соединяя точки вручную (например, для лестниц).

Для того, чтобы поставить точку, где бот должен присесть, просто присядьте сами во время добавления точки. Боты будут автоматически приседать при приближении к точке (если это не кемперское место).

4. Что такое WayZone?

Боты будут выбирать точку в пределах этого радиуса, как точку куда следует идти, это просто делает движение не таким "статическим". Точки типа "Лестница", "Кемперское место" и "Цель карты" всегда имеют радиус 0. Не пытайтесь изменить его. После того, как POD-бот вычислил все Зоны, необходимо проверить для всех точек, являются ли они действительно достижимыми в радиусе WayZone. Старайтесь быть внимательными при установке радиуса. Возле углов лучше уменьшить радиус. Также желательно поставить радиус 0 для некоторых узких дверных проемов. Для того, чтобы вручную установить радиус зоны, необходимо, находясь возле точки, ввести в консоли "waypoint setradius x", где x - значение радиуса, которое требуется присвоить точке. Допускаются значения от 0 до 128. Чем больше, тем больше радиус. Также заметьте, что если включен режим pathwaypoints, радиус будет показан синими линиями (если он не равен 0)