Доброй ночи.
Очередной отчёт по проделанной над игрой работе. А конкретно, я занимался созданием первых врагов и написанием ИИ для них.

Враги

Долго не задумываясь, решил выбрать что попроще. А конкретно — робота. Набросок его — слева. Написание структуры для врага не составили проблем для меня, потому что я спокойно представлял, что в них нужно хранить, а конкретно:
  • Скорость атаки - время перезарядки
  • Атака (Минимальная - Максимальная)
  • Радиус атаки
  • Запас жизней
Тут всё понятно. После этого врага можно было разместить на игровое поле, но всё же он стоял и ничего не делал. Поэтому надо было писать ИИ.

Искусственный Интеллект

А вот с какой стороны к нему подходить, я и не знал, ибо не имел опыта в этом деле вообще ни разу. Появилась одна забавная идейка, и реализовать её получилось достаточно быстро.
Суть вот в чём. У врага есть список его моделей поведения (ObjectAIModel), где есть метод step(...), который вызывается каждый раз, когда идёт его отрисовка. При создании врага мы назначаем ему нужные нам модели поведения, например для робота я создал две модели поведения: WalkingAI и AttackingAI. Первая отвечает за настойчивое передвижение юнита в указанную точку, которую мы задаём изначально. Вторая отвечает за атаку врага, тут я просто проверяю, находится ли юнит в пригодной точке для атаки, и если он там, то передаю управления классу юнита для атаки. И тут уже поведение зависит от реализации класса юнита.

Про атаку

Робот в своем вооружении имеет две ракетницы, которые пускают две небольшие протонные ракеты. Но как же всё это организовать? Тоже не очень-то простой вопрос. Надо понимать, что робот уже может выстрелить, и следить за каждой ракетой. Тут я вдруг вспомнил про дамми-юнитов =)
Вот как я сделал. Робот у нас имеет нулевой урон, а ракеты.... Ставим им маленький радиус урона, урон в районе 50 (многовато, но для теста в самый раз), присваиваем им две модели поведения (WalkingAI и AttackingAI) и готово! Да-да, это работает, и, как ни странно, даже с первого раза.
Теперь у меня есть стреляющие роботы =) Для теста поставил пять штук и доволен. Вы можете насладиться скриншотом того, как роботы пытаются уничтожить башню игрока.
Скоро праздники, а это значит, что будет больше ресурсов, поэтому подписывайтесь, дабы их не пропустить.
Удачи и доброй ночи, господа!
`
ОЖИДАНИЕ РЕКЛАМЫ...