Шаблоны для поведения гоночного ИИ

9

Допустим, у вас есть сплайновый гоночный AI. Предположим, он уже может справиться с основами торможения и рулевого управления по трассе.

Как бы вы структурировали и внедрили способы предотвращения столкновений, обгонов, составления, блокировки и других действий, чтобы ваши машины оставались конкурентоспособными, но участвовали в интересных гонках?

Ссылки на документы / реализации будут отличными.

tenpn
источник
какой тип двигателя вы используете,
Харшал Бенаке

Ответы:

7

Вы видели поведение рулевого управления для автономных персонажей ? Я бы рассмотрел алгоритм « CrowdPathFollowing» , чтобы оставаться на трассе и избегать столкновений. Вы могли бы быть в состоянии смешать поведение «Flow Field Follow» для черчения, прохождения и блокирования - заставить поле потока следовать прошлому и спроецированному пути игрока, но разделить его текущее местоположение.

      /-------------\
 ----<  [playerCar]  >-----
      \-------------/

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

AShelly
источник
1
Я знаю о boids, но это хорошая ссылка. Я немного боюсь многих видов поведения (оставаться на гоночной трассе, избегать автомобилей, блокировать, тяги и т. Д.), Взаимодействуя слишком сложными для настройки способами и заканчивая случайным столкновением с крайним случаем. Это хорошо для пешеходов, но катастрофично для гоночных автомобилей, которые должны продолжать движение.
Tenpn
Я работал с OpenSteer API, который реализует многие из этих вещей. Я нашел это довольно легко настроить. В вашем случае я бы сделал вес "SteerToAvoidCollision" очень высоким. Я не знаю, на каких транспортных средствах вы гоняетесь, но я думаю, что если вы сделаете это правильно в подавляющем большинстве случаев, то оставшийся случайный удар или удар из-за крайнего случая, вероятно, довольно реалистичен ...
AShelly
Это было рулевое управление или что-то еще? Я боюсь ситуаций, вызывающих проблемы, например, две машины впереди слева и одна впереди справа. Средний вектор может привести к движению вправо, хотя это может привести к контакту с правосторонним транспортным средством.
Tenpn
Я работал в основном с пешеходами, поэтому не могу поклясться, что это сработает. Следует помнить одну вещь: это не должно быть смесь поведения - это может быть иерархия. Таким образом, вы можете избежать столкновения с более высоким приоритетом. В случае, если вы описываете, автомобиль будет двигаться прямо до тех пор, пока предсказанный путь не пересечет путь правого автомобиля, и в этот момент предотвращение столкновения становится главной силой. Вы также можете добавить специальные условия: например, если в N кадрах не найден безопасный путь, добавьте жесткое торможение.
AShelly
2

Частично об этом говорилось на конференции AI Game Dev в Париже в этом году. Вы можете найти слайды и резюме здесь:

http://aigamedev.com/open/coverage/paris10-report/#session9

slicedlime
источник
1
Ссылка на ppt 404.> _ <
tenpn
да, его подход интересен, но код, с которым я сейчас работаю, на самом деле более продвинутый!
Tenpn
1

Anti-Pattern: противники приспосабливаются к своей скорости

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

Однако то, что звучит хорошо на бумаге, на практике оказывается ужасным, и серия MotoGP с треском провалилась при реализации этого поведения. Это привело к тому, что противники ехали со скоростью 5 миль / ч, когда вы остановились на пару секунд, и невозможность определить, улучшились ли вы в игре (очень плохие отзывы)

Дейв О.
источник
Спасибо. Я говорю конкретно об интересном гоночном поведении здесь, а не об уравновешивании или уровнях сложности, но я буду иметь это в виду.
Tenpn
5
Практически все гоночные игры включают в себя некоторую форму резиновых полос, чтобы держать игрока в действии, или держать ИИ рядом с хорошим игроком. Хитрость заключается в том, чтобы быть тонким с этим и знать, когда его выключить. Как только игрок замечает, они чувствуют себя обманутыми.
wkerslake
Ситуация с MotoGP звучит скорее как проблема зайти слишком далеко, чем как проблема с резиновой лентой в целом. Водители спереди нередко ездят с большей осторожностью, а автомобили сзади - более отчаянно пытаться сократить разрыв, и я думаю, что есть смысл в его моделировании и прозрачном представлении игроку.
Джибб Смарт
Это интересный пост на эту тему: gamasutra.com/view/feature/3920/… По сути, они помещают вас в 3 группы ИИ-гонщиков и позволяют вам переходить из группы в группу по ходу гонки.
Felsir