Во множестве современных игр существуют противники, чтобы игрок чувствовал некоторое испытание, каждый раз, когда заходит в игру. В роли противников могут выступать как онлайн игроки, так и боты, написанные непосредственными разработчиками. Но если с онлайн противниками можно понять, как проходит испытание – игрок пытается доказать игроку, что его навыки в этой игре намного лучше, чем у оппонента, то как поступать с игровым интеллектом? Потому что здесь появляется задача, как из бота сделать нечто похожее на разум обычного человека, чтобы игрок чувствовал, будто играет против реального человека, который может где-то ошибиться и сделать неверное действие.
Основная структура искусственного интеллекта в игре
Искусственный интеллект внутри разрабатываемой игры – это объект, следящий за своим окружением, принимающий, за счёт изменения окружения, решения и действующий, на основании своих решений. На основе этого описания видно, что наш искусственный интеллект (в дальнейшем ИИ) уже состоит из трёх частей:
1) Восприятие:
ИИ распознаёт (или ему сообщают) информацию об окружении, которая может влиять на его поведение (примером может послужить исследование карты и нахождение новых точек ресурсов, которую неплохо было бы захватить – это изменение окружения, где ИИ находит новый источник ресурсов и теперь он должен анализировать поступившую ему информацию)
2) Мышление:
ИИ должен анализировать поступившую ему информацию об окружении и принять решения, что ему нужно сделать в текущий момент времени. Если упростить: как поступить в ответ на полученную информацию (при найденном источнике ресурсов, стоит ли его захватывать, на сколько далеко он от положения ИИ в игре, есть ли рядом противники и так далее.)
3) Действие:
Из анализа ИИ делает действия, которые реализуют его решения (в примере бот начнёт двигаться к источнику ресурсов, чтобы его захватить, либо будет ждать следующий ход, подводя войска для сражения за источник ресурсов)
И эти три действия должны быть зациклены, так как состояние игры либо меняется пошагово (один ход – запуск цикла по новой), либо в реальном времени соперник может передумать и пойти в другую сторону и это новые поступающие данные, которые надо проанализировать и выполнить соответствующие действия.