Перейти к содержимому

Типичные ошибки вэйпоинтинга

Большинство сломанных графов ломается по одним и тем же причинам. Пройдитесь по списку прежде чем делиться работой - а механику сначала проверьте командами yb graph check и yb graph fix, они ловят такое автоматически.

Боты в основном держатся узлов, но в бою переходят на свободное движение: погоня, отступление, падение с уступа. Когда бой заканчивается в зоне без узлов рядом, бот застревает в поисках дороги назад. Покрывайте всю играбельную карту - каждую комнату, балкон и угол, куда может зайти игрок. Единственное допустимое исключение - место, куда боты физически не попадут (тогда не ставьте там узлы вообще, включая дорогу туда).

Больше узлов - не лучше. Прямому дверному проёму нужны ровно два узла (по одному с каждой стороны) плюс соединение - цепочка из пяти узлов подряд ничего не даёт, а боты будут мешать друг другу, считая что идут «разными» путями. Если соединение уже перекрывает весь проход, промежуточные узлы - мёртвый груз: удалите их или уменьшите дистанцию автопути, чтобы редактор рисовал меньше длинных связей.

Бот считает узел достигнутым в небольшом вшитом радиусе вокруг него. Поставьте два узла ближе этого радиуса - и бот «достигнет» оба в одном кадре, не сдвинувшись, точное движение развалится, а два бота, посланные на эти узлы, столкнутся вместо того чтобы разойтись. Ориентир: держите обычные узлы минимум в ширину тела друг от друга.

Боты приседают при подходе к узлу-приседу и встают, когда следующий узел - стоячий. Одинокий узел-присед в двери означает, что бот встанет прямо в дверном проёме. Всегда завершайте проход приседом ещё одним узлом-приседом с дальней стороны, а соединения через двери рисуйте вручную - автосвязь «стоячий-к-стоячему» через дверь обходит вашу присед-цепочку стороной.

  • Одного важного узла на зону достаточно; их скопление в одной комнате ничего не даёт.
  • Не ставьте важные узлы обеих команд рядом - обе команды будут нестись в одну точку и тактика превратится в дефматч.
  • Не ставьте их поверх цели карты (заложники, зона спасения, точки закладки). Боты туда и так придут; важный узел там только искажает остальные их решения.

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

Автоматика не понимает стен: после расстановки прыжковых узлов редактор может добавить обычные пешие связи от старта/финиша прыжка к соседним узлам - боты будут вечно идти в стену. Перед рисованием прыжковых соединений выключайте автопути (0 в меню автопути или yb graph off auto), потом осмотрите окрестности на предмет жёлтых линий, которых там быть не должно. Та же история с узкими уступами: сначала полностью разметьте землю под уступом с щедрым автопутем, затем уменьшите его так, чтобы связь через разрыв стала технически невозможна, и размечайте сам уступ.

Самая частая ошибка вообще. Если связь срезает угол или жмётся к дверному косяку, боты будут биться о геометрию каждый раз. Проверяйте ногами: пройдите ровно по линии связи - если задеваете, связь плохая. Через двери ставьте узлы строго по центру с каждой стороны, чтобы связь пересекала проём под 90 градусов; за углами оставляйте видимый зазор между связью и стеной.

Цепочка узлов, где каждый связан со всеми (типично для вентиляции), загоняет ботов на «разные» маршруты, которые физически совпадают, - они блокируют друг друга. Связывайте цепочкой (1-2, 2-3, 3-4), длинные перекрывающиеся связи удаляйте. Уменьшение дистанции автопути предотвращает большинство таких случаев.

По обычной двусторонней связи боты смогут вскарабкаться на ящики - утыкаясь в препятствие и прыгая вслепую: медленно, неуклюже, иногда падая обратно. Везде, где бот должен оторваться от земли (ящики, бочки, разрывы), используйте настоящие прыжковые соединения (9. Прыговой в меню типов узлов или yb g path_create_jump).

Радиус редактор вычисляет по высоким препятствиям рядом, с потолком 128 - и ничего не знает про ямы. Узлы у пропастей, шахт и краёв мостов получают огромные радиусы, и боты бодро шагают за край, считая всё это проходимым полом. Уменьшайте такие радиусы вручную, в худших местах - до нуля. То же у узких дверей и проломов: даже «маленький» авторадиус там обычно слишком щедрый, ставьте ноль, чтобы боты шли ровно по нитке.

На картах с заложниками помечайте каждый маршрут, где заложники не пройдут: лестницы, вентиляции, окна, прыжки - и желательно кемперские точки, чтобы бот с заложниками не ушёл отсиживаться в угол пока тикает время. Сомневаетесь, пройдут ли заложники, - пройдите маршрут сами, ведя их, без ботов.

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