Если вы впервые разрабатываете ИИ, вам не нужно беспокоиться о таких вещах, как паттерн состояния, поведенческая математика или даже получить книгу на эту тему.
Вы можете буквально сойти с рук что-то вроде этого:
if( targetInRange == true )
{
FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
MoveAwayFromBullet();
}
else
{
WanderAroundAimlessly();
}
Главный аспект правильного ИИ заключается в том, чтобы подумать о том, какое поведение вы хотите, чтобы персонаж обладал, и как этого можно добиться реалистично. Таким образом, для обычного врага космического корабля, я бы предположил, что возможные действия, которые он мог бы выполнить, были бы:
- Передвигаться
- Пожар
- Убегать
И когда могли произойти эти действия?
- Передвигаться - больше нечего делать
- Огонь - когда я замечаю врага
- Беги - когда у меня мало здоровья / когда я плачу / т. Д.
После того как вы сделали это из-за небольшого количества «состояний», в которых может находиться ваш персонаж, вы можете использовать простое выражение if, подобное приведенному выше. Затем я бы порекомендовал вам взглянуть на поведение рулевого управления, поскольку это очень простое поведение, которое может быть реализовано и может привести к действительно хорошему движению.
Более подробную информацию можно найти здесь: http://www.red3d.com/cwr/steer/
И я определенно рекомендую книгу Мэта Бакленда « Программирование игры AI на примере» , особенно когда вы только начинаете.
Когда вам действительно это удобно, я бы посоветовал взглянуть на паттерны состояния и стратегии.
Дело в том, чтобы начать с малого и просто. Не беспокойтесь обо всех этих терминах, о которых все говорят, о FSM, шаблонах проектирования и прочем. Спроектируйте и постройте прежде всего, затем подумайте, как вы можете улучшить его, используя существующие методы или стандарты.
Надеюсь, это поможет!