Создадим вейпоинт для POD-Bot'a.

Что такое вейпоинт?

Вейпоинт (waypoint) - это специальный файл, объясняющий боту где он может бегать, а где нет, а также заставляет бота в определенном месте карты совершать определенное действие.
Нет общих вейпоинтов для всех карт, для каждой карты необходимо создавать отдельный вейпоинт. Насколько мне известно, пока нет ни одного бота, который может нормально ориентироваться на карте без вейпоинтов вообще.

Что нужно чтобы создать вейпоинт?

Для создания вейпоинта нам не понадобится никаких дополнительных программ кроме подбота и собственно игры counter-strike.

А как он выглядит то?

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

Файл вейпоинта называется точно так же как и файл карты, но имеет расширение .pwf. Например вейпоинт для карты de_aztec называется de_aztec.pwf. Все вейпоинты по умолчанию находятся в папке ..\Half-Life\cstrike\PODBot\WPTDefault\ и загружаются автоматически при загрузке карты, если вейпоинт для карты отсутствует боты не появятся. Вот в чем причина того, что боты не играют на новой карте, а не в глюке подбота или устаревшей версии как ты думал :))

Процесс создания.

Прежде всего следует отметить что создание\редактирование произвотится при помощи консоли. Так что исправьте свои ярлыки для CS, если еще не исправили, а именно добавьте в командную строку параметр -console, чтобы получилось примерно следующее C:\Sierra\Half-Life\hl.exe -game cstrike -console. Ярлык исправили, теперь можно приступить собственно к созданию.
Как я говорил создание вейпоинта производится при помощи консоли, так что есть смысл объяснить команды которыми мы будем пользоваться. Вот полный список:
waypoint on \ off - Включить \ выключить отображение вейпоинтов.
waypoint on noclip - Включить редактирование вейпоинтов в режиме noclip (прохождение сквозь стены). Полезно при создании водных вейпоинтов.
waypoint add - Поставить вейпоинт на текущей позиции игрока. Появляется меню из которого нужно выбрать тип вейпоинта.
waypoint delete - Удалить ближайший к игроку вейпоинт.
waypoint find x - Показывает направление к вейпоинту номер x
waypoint showflags - Показывает все флаги вручную установленные на данный вейпоинт.
waypoint addflag - Пославить вручную флаг на вейпоинт.
waypoint delflag - Удалить флаг с вейпоинта.
waypoint setradius x - Вручную изменить радиус действия вейпоинта на x.
waypoint stats - Показвть число различных вейпоинтов которые вы уже поставили.
waypoint check - Проверяет все вейпоинты на предмет содержания ошибок (тоже самое делается автоматически при сохранении вейпоинта)
wayzone calcall - Вычисляет радиусы действия для всех вейпоинтов на карте. (устарело т.к. с версии бота 1.3 радиусы вычисляются автоматически при создании вейпоинта)
waypoint save - Сохраняет список вейпоинтов в файл (предварительно проверив все вейпоинты и пути)
waypoint save nocheck - Тоже что и выше, только без проверки на ошибки. Сохраняет даже если ошибки присутствуют.
waypoint load - Загрузить вейпоинты из файла.

autowaypoint - Показывает состояние автовейпоинта.
autowaypoint on \ off - Включить \ выключить автовейпоинт.

pathwaypoint - Показывает состояние соединения вейпоинтов между собой.
pathwaypoint on \ off - Включить \ выключить соединение вейпоинтов между собой.
pathwaypoint add x - Соединить ближайший к тебе вейпоинт с вейпоинтом номер x.
pathwaypoint delete x - Разъединить ближайший к тебе вейпоинт с вейпоинтом номер x.

debuggoal x - заставить бота бежать к вейпоинту номер x. Используется для отладки вейпоинта.

Теперь можно приступать собственно к созданию. Запускаем CS, загружаем карту на которой не играют боты. Открываем консоль, кнопка "~" по умолчанию. И набираем следующие команды:
mp_roundtime 9
sv_restart 1
waypoint on
pathwaypoint on
autowaypoint on

После этого должно получиться следующее: карта рестартует, время раунда изменяется на 9 минут, по пути твоего движения появляются вейпоинты.
Начинай бегать по карте НЕ используя лестницы и НЕ используя прыжок. Только бег по тем местам на карте, где можно пробежать без использования вышеупомянутого. Как только вся карта покроется обычными вейпоинтами, можно начинать расставлять специальные вейпоинты. Отключим автоматическую установку вейпоинтов через консоль командой autowaypoint off и после этого установим вейпоинты на цели миссии.

Goal Waypoint.

На DE_ картах.
Бежим к каждому месту закладки бомбы и на месте закладки в консоль пишем следующую команду
waypoint add
Убираем консоль и видим меню выбора специальных вейпоинтов в котором выбираем пункт "Goal Waypoint".
На CS_ картах.
"Goal Waypoint" ставится на месте спасения заложников. Плюс к этому необходимо на месте спасения, на каждом если их много, также поставить вейпоинт под названием "Rescue Waypoint",


чтобы боты знали куда выводить заложников.
На AS_ картах.
"Goal Waypoint" ставится в месте спасения ViP'а.

Important Waypoint.


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

Ladder Waypoint.

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

Прокладываем пути к вейпоинтам.
Когда мы пользуемся командой autowaypoint, то как ты уже заметил вейпоинты соединяются между собой горизонтальными линиями - это и есть пути, по ним боты бегают от вейпоинта к вейпоинту, но когда мы ставим лестничные вейпоинты автоматически они не соединяются. Соединить их придется вручную. Итак мы поставили 2 Ladder Waypoint'а но от них не отходят горизонтальные линии как от других вейпоинтов, они не соединены между собой, в чем дело? Между ними не прокладываются пути по умолчанию или прокладываются только односторонние пути.

Что нам нужно? Нужно чтобы между двумя в нашем случае лестничными вейпоинтами были двусторонние пути и оба вейпоинта были связаны с обычными вейпоинтами так же двусторонними путями.

В чем отличае между путями? Односторонний путь говорит боту что через эти два вейпоинта можно пройти только в одном направлении. Отображается это как видно из скриншота белой линией. т.е. если вы видите белую линию то двигаться можно только от ближайшего вейпоинта до того к которому эта белая линия идет, но никогда наоборот. От того вейпоинта к которому эта белая линия идет вы не увидите никаких линий идущих в обратном направлении. Применяются эти односторонние пути например для определения мест на карте с которых можно спрыгнуть, но нельзя запрыгнуть обратно. Двусторонние же пути - это самые обычные пути двигаемся куда угодно, в обоих направлениях. Обозначается как видно из скриншота желтыми линиями. Для лестницы нам нужны двусторонние пути так как по лестнице мы можем и подниматься и спускаться.
Для этого подходим к ближайшему, расположенному перпендикулярно лестничному, вейпоинту и через консоль набираем следующую команду:
pathwaypoint add x,
где х - это номер лестничного вейпоинта который показывается в левом верхнем углу. Например если лестничный вейпоинт имеет номер 251, то мы пишем pathwaypoint add 251 стоя на вейпоинте расположенном перпендикулярно и наиболее близко к лестничному. Если появилась белая линия то мы сделали односторонний путь и нам следует повторить операцию добавления пути, только стоять надо уже на лестничном вейпоинте, а писать номер того вейпоинта на котором стояли до этого. Проделываем эти фокусы для всех четырех вейпоинтов, тоесть для лестницы на которой мы поставили 2 лестничных вейпоинта нужно сделать 3 двусторонних пути. Один между землей и нижним вейпоинтом, второй между крышей и верхним вейпоинтом и третий между двумя лестничными вейпоинтами. Кстати между верхним лестничным вейпоинтом и крышей на крыше вейпоинт так же должен располагаться строго перпендикулярно верхнему лестничному вейпоинту, иначе боты будут падать с крыши или с лестницы при попытке выбраться на крышу.

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

Основные вейпоинты расставили, теперь можно сохранить вейпоинт консольной командой waypoint save. Если после ввода команды появилась надпись Waypoint saved, значит все впорядке, ошибок нет, если же другая, ищем несодиненные вейпоинты командой waypoint find x, где x - это номер несоединенного вейпоинта и исправляем. Предположим что все в порядке и вейпоинт сохранился. Можно начинать его тестировать.

Отключаем режим редактирования вейпоинтов waypoint off, перезапускаем карту, загружаем ботов и смотрим в режиме спектатора за их игрой. В каких местах они не могут пройти, в каких падают вниз, в каких не могут преодолеть препятствие.

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

1. Ненужный вейпоинт.

Как видно на картинке, создатель поставил вейпоинт в окне, для того чтобы помоч боту через него пробраться - это ошибка. Боту не нужна допольнительная помощь, если он видит вейпоинт находящийся за препятствием, он найдет способ, как до него добраться. Вейпоинт в окне нужно удалить командой waypoint delete, предварительно встав на него (вейпоинт) и соединить вейпоинт перед окном напрямую с вейпоинтом за окном.

2. Неправильный радиус вейпоинта

Смотрите какой здоровый радиус действия, на таком узеньком мостике. Если бот попытается пройти по мосту он 100% упадет вниз и переломает ноги, т.к. будет думать что в пространстве по бокам от моста можно спокойно ходить. Исправляется ошибка изменением радиуса действия вейпоинта на 0 (ноль), командой waypoint setradius 0 и изменением положения вейпоинтов таким образом, чтобы бот заходил на мостик строго прямо, а не под углом к краю пропасти. Очень часто эта ошибка втречается также в местах где боту нужно пройти сквозь дверь. Он застревает и прыгает уткнувшись в косяк.

3. Не соединенные между собой и плохие лестничные вейпоинты.

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

Так и есть, даже еще хуже, у нас здесь снова соединение с лестничным вейпоинтом под углом явно не в 90 градусов и одностороннее соединение, да еще и с двумя вейпоинтами, лестничный и нижним. Ужас, бот полюбому сломает ноги или разобъется при попытке пройти этим вейпоинтом сверху, или залезет на лестницу и начнет крутиться на месте при попытке пройти этим вейпоинтом снизу.
Удаляем верхний и нижний вейпоинты и делаем нормальный лестничный вейпоинт. Способ описывается выше в параграфе Ladder Waypoint.

4. Неправильно расставленные важные вейпоинты.

Смотрите как мирно сосуществуют важный для терроров, важный для контров и обычный вейпоинты в одном месте. Нет не мирно! На данной карте, cs_galleon, карта - спасение заложников, терроры появляются на корабле, а контры появляются гдето в другом месте за пределами корабля. Установка выжных вейпоинтов в одном месте превращает весь геймплей на карте в десматч, если это можно вообще назвать геймплеем. Необходимо удалить выжный для контров вейпоинт и пересоздать его в месте появления контертеррористов или рядом с ним, в месте спасения заложников. К тому же важный для контров вейпоинт находится слишком близко к обычному вейпоинту. Подробнее об этом ниже.

5. Неправильные пути к лестничному вейпоинту

Норамальный вейпоинт присоединен к лестничному на картинке под таким углом что боты скорее всего будут пытаться поднятся по лестнице с обратной стороны или упрутся в лестницу с боку и застрянут. Кроме того обычный вейпоинт справа тоже соединен с лестничным (на картинке этого не видно). 100% боты застрянут на этой лестнице, т.к. они не знают с какой стороны на нее нужно правильно взбираться. Чтобы исправить, необходимо удалить путь до лестничного вейпоинта командой pathwaypoint delete x, где x - это номер лестничного вейпоинта, от всех вейпоинтов которые расположены не с той стороны и чей угол больше или меньше чем 90 градусом относительно лестницы. На картинке необходимо поставить обычный вейпоинт слева от лестницы и соединить его двусторонним путем с лестничным.

6. Вейпоинты расположены слишком близко друг к другу

На картинке вейпоинты расположены слишком близко друг к другу, так делать не нужно, так как во-первых большое количество вейпоинтов на карте замедлит бота, а во-вторых может привести к ошибке в навигации бота. Попытаюсь объяснить:
внутри DLL'ки бота все вейпоинты имеют жесткие радиусы, находясь внутри которогых бот считает что он достиг данного вейпоинта. На данной картинке изображены два обычных вейпоинта их радиус "посещения" ровняется 50 юнитам. Для наглядного примера встаньте на один из нормальных вейпоинтов и измените его радиус на 50 командой waypoint setradius 50, теперь можно наглядно видеть, что бот будет думать что он добрался до этого вейпоинта, если окажется в таком радиусе. На нашей же картинке расстояние между вейпоинтами составляет примерно 16 юнитов и бот добежав только до одного вейпоинта будет думать, что он одновременно уже добежал и до второго. И что из этого? А то что два бота, бегущих друг за другом, застрянут в этом месте, сцепятся и будут прыгать на одном месте. Вы наверное видели такие моменты на некоторых картах. Так что избегайте подобного расположения вейпоинтов любой ценой. Не ставьте вейпоинты слишком близко друг к другу!

7. Вообще нет вейпоинтов

Глядя на картинку можно предположить, что вейтпоинтер думал: "Боты всеравно сюда не бегают, так что я не буду ставить здесь вейпоинты". Неверное рассуждение. Это правда боты не будут сюда бегать, так как они бегут к цели миссии обычно самым коротким путем, НО это только тогда, когда нет опасности для их жизни. Во время же боя, боты не используют вейпоинты для передвижения. Они используют специальное передаижение для боя (combat move). Так что бот легко может забежать на территорию не покрытую вейпоинтами во время боя и убив противника будут стоять не зная куда идти или прыгать судорожно ища выход из этой ловушки. Отсюда правило, покрывай простыми вейпоинтами всю поаерхность карты, а бот сам разберется будет он сюда бегать или нет.

На этом вроди все. И помни если боты где-то застряли - это на 90% ошибка вейпоинтера.

При создании статьи использавались материалы создателя POD-Bot'a Каунт Флойда (Count Floyd), How to do Waypoints for POD-Bot.

 

 



Hosted by uCoz