Статья «Radiant AI» специально для TESALL.RU
Radiant AI
Первым делом, заполучив в руки игровой конструктор, пытливые игроки раскурочили искусственный интеллект — тот самый RAI, который замышлялся как революция в игровом ИИ. Щедрые обещания в свое время подкреплялись видеороликами, в которых NPC творили совершенно невероятные вещи.
Вот престарелая хозяйка книжного магазина тренируется в стрельбе по мишени прямо в доме. Вокруг прыгает ее верный пес. Хозяйка начала промахиваться и выпила зелье меткости. Голодный пес получил кусок оленины, а потом, разбушевавшись, был успокоен заклятием парализации. После этого тетушка попыталась было уснуть, но собака очнулась и радостным тявканьем помешала ей спать. Недолго думая, библиотекарша подожгла огненным шаром несчастную псинку.
Неудивительно, что после такого ролика только и разговоров было, что про революционный ИИ. А как обстоят дела на самом деле?
Действительность оказалась куда прозаичнее.
У каждого NPC есть параметры агрессивности, доверия, энергии и ответственности. Самые ответственные воровать еду или убивать за нее не будут ни при каких обстоятельствах. Решения принимаются очень просто — при определенных ситуациях активизируются шаблоны поведения, намертво вшитые в игру (конструктор не позволяет менять или дополнять шаблоны).
Например:
Шаблон сопровождения. NPC следит за тем, не отстает ли герой. Если отстает — NPC останавливается, делает нетерпеливые жесты или возвращается. Критическая дистанция определяется двумя переменными — одна для улицы, другая для дома.
Шаблон питания. Чтобы поесть, NPC должен иметь при себе ингредиент, восстанавливающий параметр усталости. Если его нет, NPC добывает его, покупая, воруя, подбирая или снимая с трупа. Те, у кого параметр ответственности выше 30, убивать за еду будут только зверей. Если еду найти невозможно, персонаж не умирает, а просто начинает бродить туда-сюда, время от времени проверяя, нет ли поблизости чего перекусить.
Сон. NPC идет в заданную точку (обычно это его собственная кровать) и ложится спать. Если своей кровати под рукой нет, NPC ляжет в любую доступную постель (а безответственные могут еще и в чужую). Если кровати нет вообще, персонаж начнет бесцельно бродить, время от времени пытаясь отыскать ее.
Поиск. NPC ищет объекты в определенном радиусе, делая запрос. Затем выстраивает в уме их список и обходит все в поисках нужной вещи.
Цель. NPC идет к цели до расстояния, на котором он может ее достать, а потом активирует. Если цель — зверь или бандит, начинается атака и включается боевой ИИ. Если цель — мирный NPC, то начинается разговор. Если цель — объект, он подбирается. Контейнер — открывается. Дверь — открывается (забавный баг — если NPC попробует пройти через открытую калитку, он сначала закроет ее, а потом откроет снова и пройдет). Если цель — диванчик или стул, NPC сядет на него.
Бегство. NPC убегает от цели. Если цели нет, персонаж просто побежит, а потом начнет изображать сильный испуг. Так он и будет стоять, пока не проголодается, не захочет спать и так далее.
Прогулка. NPC гуляет в определенном радиусе, время от времени пытаясь заговорить с теми, кто проходит рядом. Если поблизости есть стул, персонаж может присесть на него.
Программист дает каждому NPC определенный комплект шаблонов и условий, при которых эти шаблоны выполняются. Самые простые персонажи имеют по три-четыре шаблона на все случаи жизни («Есть», «Гулять», «Спать»). Более сложные могут выполнять сложное расписание — идти на работу, в церковь, в бар, общаться и ложиться спать. Radiant AI — это просто очень удобный способ задать эти шаблоны и условия. Копаясь с ИИ, исследователи быстро выяснили, что интеллект персонажей сильно ограничен и сделать его эвристичным нельзя, потому что все шаблоны поведения заданы заранее. Деньги у NPC есть всегда, еда тоже. Можно, конечно, забраться в конструктор, вызвать искусственный дефицит еды, чтобы понаблюдать за сражениями на улицах за корку хлеба — но на этом возможности кончаются. Даже алгоритм поиска настолько примитивен, что NPC не всегда обнаружит вещь, которая находится в одной с ним комнате.
Но как же насчет библиотекарей и горящих собак? Заставить персонажа парализовать собственного пса можно, выпить усиливающее зелье — можно, и поджечь собаку — тоже. Но реализуется это все при большом количестве условий, практически на уровне скриптовой сценки. И разработчики, показывая нам этот ролик, не могли не знать, что все эти чудеса — не поведение свободного ИИ, а жестко заданные действия, прописанные скрипты.
Но что поделаешь — бизнес есть бизнес.
Комментарии