Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Каким образом создается искусственный интеллект в компьютерных играх, который реагирует на действия персонажа?

ТехнологииПрограммирование+3
Artem Sinev
  ·   · 1,3 K
Программист, гейм-девелопер, дизайнер, художник  · 25 нояб 2015

Мне хорошо запомнилась одна фраза, которую нам давали на водительских курсах под запись. В том варианте она прозвучала так: «Задача водителя — выбирать скорость и направление движения, исходя из дорожной ситуации». С бытовой точки зрения это, разумеется, бесполезная ерунда, потому что люди так не мыслят и не действуют, но ведь именно так «мыслят» и действуют компьютеры.

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

Любой объект со сложным поведением можно упростить, ответив на вопрос «что именно здесь происходит, в чем его основная задача?» Теперь все, что остается сделать, чтобы создать искусственный интеллект, имитирующий водителя — это объяснить компьютеру, как выбрать скорость и направление, зная дорожную ситуацию.

Вот так ИИ работает на уровне «черного ящика» — мы пока не знаем, что именно творится у него в «мозгу», но мы знаем это:

Водитель(ситуация) = [скорость, направление]

Где-то в самом фундаменте архитектуры любой игры существует так называемый главный цикл — участок кода, который выполняется в каждый «момент» жизни игрового мира. Мир населен игровыми объектами, и каждому из них в каждый момент предоставляются нужные данные о мире и дается возможность сделать с миром все, что необходимо. Объект главного персонажа попытается отреагировать на нажатые игроком клавиши — сделать шаг, прыгнуть, выстрелить; объекты врагов постараются выстрелить в игрока, перекрыть ему путь или как-нибудь еще навредить; объекты снарядов переместятся вдоль своей траектории и учинят разрушения, если во что-нибудь врежутся. Ситуация в мире изменится, игра подведет итоги (вдруг игрок умер, например) и перейдет в следующий «момент» — и так, скажем, 60 раз в секунду.

Что же внутри «черного ящика»? Это очень сильно зависит от того, как устроен игровой мир, как именно выглядит «игровая ситуация» и какого поведения мы ожидаем от ИИ. Наш «водитель», допустим, может запрашивать координаты всех препятствий и вычислять, где он окажется через пару секунд; если предсказано столкновение, меняем скорость и направление случайным образом! Такой ИИ будет дергано и забавно избегать аварии — возможно, для победы в этой игре нужно спровоцировать ДТП, расставляя на дороге препятствия?..

Конечно, ИИ бывают очень разными, но у них всегда есть простая цель на уровне черного ящика: зная ситуацию, принять решение. Зная позиции фигур на доске, указать следующий ход; зная координаты Пэкмена, выбрать следующий поворот; зная расположение машины игрока на дороге, выбрать направление и скорость; и так далее. Внутренность «мозга» ИИ может варьироваться от одной проверки до необъятных систем космической сложности, но «снаружи» картина почти всегда одинакова — главное, что действия игрока отражаются на игровом мире, а ИИ знает об этом мире все, что ему интересно.

Первый
ИИ например враждебного или нейтрального персонажа пишется одним скриптом, который задается условиями действия ГГ, и допустим если ГГ приблизится к враждебному персонажу на дистанцию в 10 м., то врагу задается условие типа:... Читать далее

О боже заминусовали дцп, которые ни разу не работали со скриптами