Мне любопытно, как я могу управлять машинами в гоночной игре.
Должен ли мой агент ИИ управлять своим автомобилем с помощью таких команд, как «газ на 0,35, рулевое колесо на 0,5 вправо, тормоз на 0,0»? Или мне лучше предварительно рассчитать кривую, к которой придерживается автомобиль, а визуальные элементы, такие как поворот передних колес, просто для того, чтобы все выглядело согласованно? Или есть другой способ?
game-design
ai
dargemir
источник
источник
Ответы:
Можно сказать, что на каком-то уровне игра идет по заранее рассчитанному пути. Так как трассы гоночной игры в любом случае (как правило) предварительно рассчитаны.
Даже если мы говорим о генерации треков случайным образом, игра должна была вычислить текущую часть треков на момент, когда машина туда доберется.
Ну, это было легко. Что-нибудь еще об этом?
Оба, следуя заранее рассчитанному пути и систематически управляя автомобилем, находят применение в игровой индустрии. Ответ должен использовать оба типа.
Прежде всего, я хочу отметить, что «вычисление кривой» может означать две вещи:
Создание функций, которые будут выводить позицию на кривой, имея в качестве параметра, насколько далеко вы хотите выполнить запрос.
Создание пути, понимаемого как список точек (или инструкций и другой управляющей информации), которым нужно следовать.
Первый может быть полезен для предсказания или в некоторых физических симуляциях. Тем не менее, когда мы говорим об управлении объектом, последний является рекомендуемым подходом.
Примечание: для более старых игр (1980-х годов) другие машины больше похожи на движущиеся препятствия. Они были там для вас, чтобы избежать их и превзойти их. Мы не говорим о них.
Следующий предварительно вычисленный путь: Это полезно для кинематографических или повторяемых сцен. Например, в GTA San Andreas преследование преследует цель преследования, и все машины следуют по заранее определенному пути (это гарантирует, что цель преследования может избежать движения traffic). Тем не менее, как только вы возмущаете их, они возвращаются к контролю ИИ, в этом случае ИИ должен будет найти путь, чтобы добраться туда, куда он должен идти своим обычным путем.
※: На самом деле, это было записано заранее. Запись и воспроизведение были одной из новых функций игрового движка GTA SA.
Контролируется AI:
ИИ в простейшем виде - это конечный автомат. Он проверяет, в каком он состоянии, и выполняет некоторые действия в зависимости от этого. Я буду ссылаться на эти комбинации состояния и действия как на поведение. Действия не должны соответствовать геймпаду игрока. Ни один не делает поведения.
Для простой игры вам, вероятно, понадобятся только два заметных поведения: 1) если он находится на трассе, то следуйте по трассе, избегая других машин и любых препятствий, и 2) если она не на трассе, возвращайтесь на дорожки.
На данном этапе это не далеко от следования пути (треки). Тем не менее, поскольку трассы на самом деле не являются линией, мы не говорим о том, чтобы следовать по пути, а о том, чтобы оставаться рядом с ним (избегая при этом других машин и любых препятствий). Это означает, что AI должен решать «рулевое управление, торможение и ускорение».
Для современной игры автомобиль также будет подвергаться физическому моделированию (чтобы разрешить столкновение и сохранить реалистичность). Из-за этого каждую итерацию игрового цикла автомобиль будет обновлять в зависимости от его скорости и ускорения, а также будет применяться «рулевое управление, торможение и ускорение» (настройки скорости) для отслеживания текущего поведения.
Я также хочу упомянуть, что современные игры могут иметь более сложное поведение, например, ИИ может выбрать другой автомобиль или заблокировать их путь. На самом деле, ИИ может даже выбрать, какой из них применить, основываясь на некоторой форме машинного обучения, но я отвлекся.
Наконец, учтите, что может быть полезно иметь более простое управление машинами ИИ вне поля зрения игрока. Либо для производительности, либо для Rubber Banding (который в этом случае держит машины ИИ рядом с игроком, чтобы сделать гонку интересной, это можно рассматривать как мошенничество ИИ, когда вы не можете оставить позади любого противника).
Что касается анимации, обычно не очень хорошая идея симулировать физику колес самостоятельно. Если вы сделаете это, это может добавить реалистичности в игру, но будет стоить производительности. Обычно игра будет анимировать колеса на основе поведения, а не выражать поведение с точки зрения движения колес и имитировать последствия.
Конечно, вам может потребоваться уделить дополнительное внимание тому, что колеса находятся в контакте с землей. И возможно оживление подвески.
источник
Я настоятельно рекомендую отделить модель физики / состояния автомобиля от контроллера автомобиля и сделать агент ИИ и контроллер игрока двумя сменными контроллерами с командами высокого уровня, подобными тем, которые вы предложили в своем вопросе.
Это имеет ряд приятных эффектов:
Кстати, это частный случай отделения MVC .
источник