Нужен совет по ИИ для пошаговой игры

Форум для всего, что связано с ИИ.

Нужен совет по ИИ для пошаговой игры

Сообщение bwolf88 02 ноя 2014, 08:22

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

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

На картинке синий кружок - бот который будет ходить, красные - целевые боты, зеленые квадраты - доступные очки передвижений.

Изображение

Собственно в чем загвоздка: как правильно выбрать приоритет между двумя целевыми ботами, имея в распоряжении информацию о наличии пути только в области отмеченной зелеными квадратами. Вообще как в таких случаях происходит поиск нужной цели если игровое поле размерами скажем 100х100, не все же точки проверяются каждый ход и не до всех ботов проверяется достпность пути.
Или для всех ... ?
Допустим можно сделать это простой проверкой на разницу в координатах по Х,У,Z, но это не даст информации о том можно ли дойти до целевого бота.

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

Кто разбирается подскажите ^:)^
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Нужен совет по ИИ для пошаговой игры

Сообщение Nicloay 02 ноя 2014, 10:11

Поиск пути у тебя уже есть.

Почитай про min-max. тут важно оценочные функции настроить, насколько ценно приблизится к противнику, произвести удар, не дать противнику приблизится к определенной точке, и еще куча параметров.

Но в твоем случае я бы не заморачивался, и сделал несколько ключевых состоянии, без общего ИИ, для всех ботов.
1 Если достаточно здоровья и виден противник -> преследовать
2 достоаточно здоровья можно атаковать -> атаковать
3 Мало здоровья -> убегать
4 Противник не виден -> патрулировать.
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Нужен совет по ИИ для пошаговой игры

Сообщение bwolf88 02 ноя 2014, 10:28

1 Если достаточно здоровья и виден противник -> преследовать

Ключевое слово - если противник виден :), возможно сделаю так. но это будет не то.

Игрался в Incubation, так там противник может, что называется видеть сквозь стены и целенаправленно идти к ближайшему противнику, если к нему возможно вообще дойти. Дело в том, что размеры карты попадаются довольно большие и противники весьма целенонаправленно преследуют персонажей, даже если они далеко и вне пределов видимости. Пусть персонажей там немного (3-6), но все равно каждый ход каждому противнику просчитывать доступность каждого персонажа, выявлять ближайшего. Учитывая, что это 1997 год, и ход противника довольно быстро проходит, как то вот сомнения закрадываются :-?.
Еще сюда плюсануть что они умеют на лифтах кататься (то есть проникать в недоступные зоны) если противник выше/ниже, так вообще...
Да, и интересует только алгоритм перемещения к целевому противнику с неизвестной доступностью, остальная логика не сложная. Либо какая то проверка большой области карты.

Не думал, что пошаговый алгоритм сделать настолько сложнее реал тайма.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Нужен совет по ИИ для пошаговой игры

Сообщение bwolf88 02 ноя 2014, 10:44

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

Так вот интересно: каким образом организована такая проверка больших территорий в пошаговых тактических играх.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: Нужен совет по ИИ для пошаговой игры

Сообщение Nicloay 02 ноя 2014, 16:52

Проблема "видит/не видит" - самое простое использовать физику юнити (вешать коллайдеры на стены и на противника. дальше пускать луч в сторону противника и смотреть, не было бы препятсвий.

В другом случае нужно реализовывать эту часть физического движка, начинать нужно с чего то типа bps-tree ochre и т.п., но опять же, в случае 1й версии лучше не заморачивайся и используй то что есть, а то уйдешь в дебри оптимизации и таких внутренностей движка, что сразу поймешь, почему большая часть(включая юнити) предпочитают использовать physX и т.п., чем писать свой велосипед
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Нужен совет по ИИ для пошаговой игры

Сообщение bwolf88 02 ноя 2014, 17:03

Кстати сейчас пытался прикрутить физику к ботам при передвижении, они вечно застревают на наклонных поверхностях... нужно как то отрезки по другому прокладывать, типа кривых Безье. Но возникает вопрос, как бота привести точно в точку, если у него будет гравитация :-?, короче полная (полная Ж) с этим 3Д.

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


Вобщем сделаю так: боты компьютера будут считать путь чисто A* до каждого персонажа, а игрок - той смесью волнового и A*, что пилю.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331


Вернуться в Искуственный Интеллект

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1