Чтобы игра стала интересной и успешной, она должна быть в состоянии бросить игроку вызов. Игрок должен чувствовать, что он преодолевает нечто, идя к победе. Один из способов для вашей игры добиться этого — учиться на действиях игрока. Пусть игра анализирует то, что делает игрок, и пытается производить контратаки, что обеспечит игроку вызов и создаст иллюзию интеллектуального оппонента.

Совпадение с шаблоном

Есть достаточно много алгоритмов ИИ для поиска закономерностей в поступающих данных и нахождения соответствующей шаблонной реакции на них. Однако для классического геймдизайна многие из этих алгоритмов абсолютно излишни и, что более важно, не подходят под необходимый масштаб.

Вам не нужен идеальный механизм реакций для игровой армии, вам нужно всего лишь обеспечить вызов игроку. Сама по себе игра — уже большой плюс для вас как для её создателя; и вы знаете всё о ней, включая достаточные для ИИ ограничения. Поэтому вы можете создать собственные готовые шаблоны и проверять действия игрока на совпадение с ними.

Например в файтингах, таких, как Street Fighter 2, игрок имеет на выбор 6 кнопок. Замечая, дистанцию или положение игрока, когда он нажимает эти кнопки, вы можете найти закономерности. Игрок может проводить серию быстрых ударов а затем провести бросок, если достаточно сблизился. Либо всегда стараться провести апперкот, когда враг прыгнул. Запоминая различные действия игрока и игровую ситуацию в момент этих действий, вы можете создать «карту» возможных действий, которую затем сможет использовать ИИ игры и противостоять типичным действиям игрока.

Стратегии в реальном времени (RTS) обычно имеют гораздо более сложные системы атаки, потому что сам по себе щелчек мышью мало что значит. Чтобы понимать, что делает игрок, вам придется абстрагировать данные от конкретных действий игрока, чтобы найти общий шаблон. Детали полностью зависят от конкретной игры, но в качестве примера мы будем использовать Comand & Conquer (C&C;).

В C&C; стандартными целями миссии являются создание базы и войск для самозащиты, а затем уничтожение войск противника и его базы. Есть две необходимых точки обучения: как игрок взаимодействует с вражескими юнитами и как он строит свою базу. Рассмотрим взаимодействие игрока с врагом.

Контакты между юнитами в C&C; весьма ограничены. Когда они находятся достаточно близко друг от друга, они начнут драться друг с другом. Первые данные, которые можно получить — это предпочитаемый игроком тип юнитов. Игрок может предпочитать устраивать танковые раши, в этом случае ИИ должен строить оборону, нацеленную на борьбу с танками. Если он предпочитает пулеметчиков, нужна защита именно от них.

Если игрок предпочитает нападать на харвестеры, а не на базы, это может быть учтено и использовано — можно послать больше войск для охраны комбайнов.
В целом, для создания хорошей самообучающейся системы вам нужно будет предусмотреть наиболее распространённые способы атаки и определить критерии, обозначающие их проявление.

Поиск и хранение информации

Система обучения, как и любая база данных, хороша ровно настолько, насколько способна найти полезную информацию. Содержание любой самообучающейся системы всегда зависит от особенностей конкретной игры, но есть и некоторые общие основы, универсальные для любых небольших баз данных.

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

Другой способ — хранить все данные в одной таблице в виде коэффициентов важности. Например, атака на комбайн по отношению к атаке на базу. Коэффициент преимущества использования одного юнита над другим, или то же — но и учитывая тип противника.

Обзор

Создание обучающегося на действиях игрока AI, как и любого другого, займёт очень много времени на планирование и обдумывание. А также на тестирование и обкатку. Игроки могут придумать новые стратегии игры, и вы должны предусмотреть базу данных достаточно гибкую, чтобы могла покрыть шаблонами их все.

Изучение стилей и предпочтений игрока — это не способ создания идеального AI, а способ игры стать сложной и интересной задачей для игрока. Не позволив игрокам придумать тактику, которая всегда будет приводить к выигрышу у компьютера, вы в конечном итоге продлите жизнь своей игре, сохраняя её свежей и сложной.