Задать вопрос

Как работает ИИ в играх?

Всем привет. Возможно я неправильно задал вопрос.
Подскажите как реализуется ИИ в играх. Например в том же SIMS или например CS с ботами?
Каждый отдельный персонаж это отдельный поток или они рассчитывают свои действия последовательно?
Хочу попробовать написать для себя маленькую игру с простым ИИ, но не знаю как это правильно реализовать.
Не нашел где бы почитать об этом.
  • Вопрос задан
  • 1312 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 8
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Подходов к разработке ИИ много, конкретная реализация зависит от конкретной игры, где-то достаточно двух правил, которые реагируют на события, где-то нужно городить поведенческие деревья. Начинают обычно с конечных автоматов, как самых простых в реализации, далее по степени сложности идут поведенческие деревья и Utility AI, про все три можно почитать в статье на гамасутре. Помимо этого, можете почитать pdf-ки со статьями на сайте Game AI Pro. Если больше любите смотреть презентации, то можете заглянуть на канал GDC.

Выполняется код в отдельных потоках или нет к разработке ИИ не относится, это просто оптимизация, которая используется по ситуации.
Ответ написан
Комментировать
@DepictWeb
Web Developer
Для новичка сойдет:
"game maker"
Гуглите и найдете тонну примеров
Изучайте, а после создавайте уже свои игры)
Удачи!
Ответ написан
Griboks
@Griboks
На хабре была статья про ИИ недавно.
Ну, а если серьёзно, то ИИ абсолютно полностью зависят от игры. Далее идет движок. Ну а потом уже все остальное. Например, в покере ИИ вообще нет.
Ответ написан
Комментировать
@awdemme
AI (ИИ) это называется чисто по традиции.
Никаким AI настоящим там и не пахнет, как правило.

Полноценным ИИ в играх можно назвать разве что такое https://habrahabr.ru/post/319518/

А обычно просто зашивают в программу опеределенные правила, четко повязанные логикой игры.
Ну например, для PacMan (надеюсь вы знаете правила игры) - монстр на каждом повороте просто выбирает кратчайший путь до героя. Путь строится просто тупым перебором. Выбор кратчайшего - тоже.
Ответ написан
@asd111
Для простого ИИ достаточно switch case или кучу if then else
https://habrahabr.ru/company/intel/blog/265679/
Ответ написан
Комментировать
@loysob
Вопрос скорее про "скриптовую игровую логику в играх". Следует подумать о ключевом примере (псевдокод):
monster1.walkTo(level.homepointA); // идет из текущей точки в точку A, длится минуты
monster1.walkTo(level.coverpointD); // идет из точки A в точку D, длится минуты
monster1.fireAt(enemy, 5.0); //  стрелять по врагу 5 минут
monster1.walkTo(level.homepointA); // идти обратно в точку A

Входные данные:
- Статические: Разметка карты невидимыми объектами с именами. Их использует скрипт. У объектов могут быть свойства (высота укрытия например)
- Времени выполнения: enemy - ссылка на объект врага. Обычно монстр получает уведомление о появлении игрока в радиусе видимости. (Думать о реализации событий и нотификаций)
Императивные действия, "глаголы":
Вы правильно заметили про потоки и последовательности. Хотелось бы чтобы действия "длились" и выполнялись последовательно и параллельно для разных ботов. В mainstream языках это невозможно стандартными методами. И поэтому там каждой строчке будет соответствовать состояние в стейт-машине. (Читать про FSM).
В идеале же для работы в "последовательном стиле" можно воспользоваться coroutines. Это псевдо-потоки как раз для описанного случая. Разумеется, все описанные выше действия можно дополнять стандартными ветками if/else, циклами for/while и т.д.
Вот пример интеграции Lua и C++: https://github.com/loyso/LuaCSP

Для начинающего лучше конечно реализовать подход 1 бот = 1 стейт-машина.
Ответ написан
Комментировать
@Batlab
PHP Senior | Python Middle | JS Junior
Это нельзя назвать ИИ, это просто бот, который управляется игровым движком в зависимости от ситуации. Он анализирует получаемую информацию и в зависимости от нее предпринимает действие, на которое запрограммирован.
Ответ написан
Комментировать
EnDeRJaY
@EnDeRJaY
cout >> "Hello World!" >> endl;
Представляешь, просто берёт и работает!
А на самом деле это не ИИ.Это просто наборы решений под каждое действие игрока.ИИ сейчас слабые и способные сделать только одну или несколько целей одного характера.Сделайте бота для крестиков-ноликов и месяц будете залипать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы