Сверху вниз игровой AI - PullRequest
7 голосов
/ 15 августа 2011

Я создаю игру, которая требует, чтобы юниты на экране сражались друг с другом, основываясь на командах и назначенных врагах для каждой команды. Игрок не контролирует танки или команды.

Проблема в том, что битва между отрядами (танками на данный момент) должна быть достаточно интересной для игрока, чтобы он мог наблюдать и веселиться, ничего не делая.

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

Какие типы алгоритмов ai и ai мне следует рассмотреть? Все идеи приветствуются, я просто хочу сделать каждую битву интересной.

Ответы [ 2 ]

9 голосов
/ 16 августа 2011

Для стратегий и тактик ваш ИИ, вероятно, должен принять какое-то рациональное решение, чтобы он выглядел умнее.Есть много способов для этого, самый простой способ - записать пару правил условного действия для ваших танков и реализовать их как конечный автомат.FSM просты в реализации и легко отлаживаются, но это становится утомительным позже, когда вы хотите пересмотреть правила условий или добавить / удалить любые состояния.Вы также можете использовать служебных агентов - ИИ периодически проверяет полезность каждой потенциальной цели (например, захват, отступление, перезагрузка / дозаправка, укрытие, ремонт и т. Д.) На основе текущей статистики (боеприпасы, здоровье, количество врагов и локации) изатем выбирает наиболее предпочтительную цель.Это требует больше времени для реализации по сравнению с FSM, но он более гибкий, так что вам не нужно менять поток решений, когда вам нужно добавить или удалить поведение.Это заставляет ИИ выглядеть так, как будто оно следует общему правилу, но не всегда предсказуемо.Служебный агент также сложнее отлаживать и контролировать, потому что у вас нет жестких правил условного действия, которые можно было бы отследить, как вы делаете с FSM, когда ваш ИИ сходит с ума.Другой популярный метод - это дерево поведения.Последовательности действий реализованы в виде древовидной структуры.Для написания заранее требуется больше кода, но обычно он обеспечивает лучший баланс между управлением и гибкостью, чем FSM и служебный агент.Эти процессы принятия решений не являются взаимоисключающими - вы можете использовать любой метод для стратегий высокого уровня и другой метод для тактики низкого уровня.

Какой бы процесс принятия решений вы ни выбрали, вам понадобится некоторая информация для подачи в ИИ.Вы можете использовать карту влияния, чтобы помочь AI определить, где на поле битвы считается враждебным, а где - безопасным.Карта влияния распределяется среди команды, поэтому она также может помочь в групповой тактике.Когда ваш ИИ поражает нескольких врагов, важно выбрать правильную цель.Если ваши ИИ выберут цель, которую не сможет сделать большинство людей, игрок почувствует, что ИИ «глуп», даже если иногда выбранная цель на самом деле лучшая.Вы можете выполнить проверку расстояния на вражеских юнитах и ​​отфильтровать / расставить приоритеты для цели по линии прямой видимости, текущему радиусу действия оружия, уровню угрозы и т. Д. Некоторые тесты стоят дороже, чем другие (проверка прямой видимости, как правило, является одним из худших нарушителей), поэтомуесли у вас есть много вражеских юнитов в радиусе действия, вы хотите выполнить эти более медленные тесты в последний раз.

Для движения танков, посмотрите на поведение руля.Он охватывает множество способов передвижения автомобилей, но вам больше всего нужно преследовать и уклоняться.Также посмотрите на A * для поиска пути, если ваши танки должны перемещаться по сложной местности.Существуют и другие хорошие решения для маршрутизации, которые дают вам самый короткий / быстрый путь, но в игре самый короткий / быстрый путь не всегда является оптимальным.Если ваш кратчайший путь открыт, но слишком близко к линии противника, вы хотите дать своему танку некоторую эвристику, чтобы выбрать другой маршрут.Вы можете легко настроить предпочтения пути с помощью A *.

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

2 голосов
/ 15 августа 2011

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

Если вы ищете алгоритмы, A * («A-Star») - это общий алгоритм поиска пути, который может помочь вашим танкам перемещаться, но я не знаю каких-либо общих алгоритмов для управления битвами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...