Войти
ПрограммированиеФорумОбщее

Искусственный интеллект для корабля

#0
13:23, 4 янв. 2015

Здравствуйте.

+ Показать


Как создаются такие сложные модели поведения? Если разобрать частный случай охоты за игроком:
корабль противника считает что он сильнее, и не против обменяться залпами. У обоих кораблей есть только боковые пушки, а из параметров только здоровье и скорость перезарядки, скорость поворота и скорость движения.
Как противник должен решать когда ему стрелять? Как ему решать, что выгоднее после залпа, подстроиться под более точный выстрел после перезарядки, или попытаться зайти с другого бока?
Посмотрев на работы мастеров с Russian AI Cup, стало понятно, что единственное решение это дискретное поле отображающее привлекательность каждой конкретной точки в нем. Для бегства такая система отлично подходит
но как это соотнести со стрельбой, ведь когда герой будет поворачиваться боком на противника, уровень опасности заставит противника убегать. Вот такие дела, ИИ сложная штука, ожидаемая обратная связь - книги, советы и флейм.
Спасибо за внимание!


#1
15:06, 4 янв. 2015

dred112
> но как это соотнести со стрельбой, ведь когда герой будет поворачиваться боком
> на противника, уровень опасности заставит противника убегать. Вот такие дела,
> ИИ сложная штука, ожидаемая обратная связь - книги, советы и флейм.

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

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

#2
15:28, 4 янв. 2015

Osiris
Да наверное так и есть, хотелось романтики, сражений 1 на 1, обманных маневров. получается бои были такими: один догоняет, они выравнивают скорости и бьют пока один не решает идти на абордаж, или просто топит. так?

#3
16:15, 4 янв. 2015

Посмотрите игру pirates! gold :) Там как раз Ваш случай.
Правда, там решало всё в основном точность стрельбы, и было время для уворота от снарядов противника.
Я думаю, Вам будет более интересна система боя как в Star Control 2. Поиграйтесь, поймите, какой логикой пользуется компьютер. Там, правда, в основном корабли бьют прямо а боковые орудия - экзотика.
Впрочем, обратите внимание, что без разнообразия кораблей бой в стиле Star Control 2 сразу станет неинтересным. На данный момент я вижу только несколько простых стратегий:
1. Маневрирование и точные залпы с большой дистацнии (если компьютер имеет возможность увернуться - снаряды летят медленно).
2. Ближний бой.
3. Отступление.
Можете приписать каждому кораблю свой стиль ведения боя - агрессивный (больше стреляет), остоожный (больше маневрирует) и сбалансированный.
Тут в общем не очень интересно пока, как мне кажется... Будет всего несколько вариантов как может разиваться бой - и, соответственно, относительно простой ИИ состоящий из трёх компонент: поиск выгодной позиции (включая угол корабля + время на достижение позиции), алгоритм сближения, алгоритм расхождения, алгоритм прицеливания. Очень приблизительно представляю себе где тут могут взяться отвлекающие манёвры.
Это нужно разнообразить а) с помощью сложных препятствий на карте, рифы-водовороты например и б) с помощью категорически разнообразных кораблей, в) с помощью 100500 приспособлений, как самонаводящиеся торпеды, г) бой с группами противников с различными задачами, например, один корабль из вашей группы (эскортируемый) должен обязательно выжить кроме корабля игрока, д) битвы с подводными, плавающими и летающими драконами, чудищами всякими, корабли призраки, имеющие совершенно иные характеристики и подходы к бою. И т.д. и т.п.

#4
16:34, 4 янв. 2015

dred112
> Да наверное так и есть, хотелось романтики, сражений 1 на 1, обманных маневров.
> получается бои были такими: один догоняет, они выравнивают скорости и бьют пока
> один не решает идти на абордаж, или просто топит. так?

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

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

ПрограммированиеФорумОбщее

Тема в архиве.