У ИИ тоже есть чувства: как устроена система реакций NPC в Watch Dogs 2
У каждого персонажа есть уникальная личность и несколько типов состояний, из-за чего их поведение отличается.
Исследователь ИИ и блогер Томми Томпсон опубликовал текст, в котором разобрал принципы, лежащие в основе поведения NPC в Watch Dogs 2. У каждого персонажа есть четыре эмоциональных состояния и пять черт личности. За формирование поведения горожан ответственны две системы и огромная база данных, которая содержит полное досье на каждого из них. Мы выбрали из текста главное.
Мир Watch Dogs 2 наполнен множеством NPC, поэтому разработчикам было важно сделать их правдоподобными и максимально «живыми». Личность персонажей выражается через анимации, повседневные действия, реакции на происходящие события, профили в телефонах и так далее.
Чтобы согласовать между собой все эти условия, используются обычные таблицы. С их помощью разработчики систематизируют информацию, что позволяет быстро вносить изменения и тестировать поведение ИИ. Также такой способ организации данных помогает экономить вычислительные ресурсы.
Основная задача разработчиков ИИ в Watch Dogs 2 заключалась в создании «фабрики историй» — системы, которая генерирует небольшие сюжетные эпизоды на улицах Сан-Франциско. При этом «фабрика» не должна была выглядеть как набор скриптов: такие сцены создавались на основе эмергентных принципов (когда разные элементы системы могут влиять друг на друга).
Также разработчикам было важно добиться согласованности между действиями персонажей и окружающими условиями. Если в таких микроисториях не учитывается контекст происходящего, то они выглядят неправдоподобными и заскриптованными. Чтобы избежать этого, команда уделила много времени тестированию и экспериментам — это помогло самим разработчикам определить границы и особенности поведения ИИ.
В результате команда создала две системы, которые в совокупности позволили добиться нужных результатов. Первая — система реакций, использующая сотни уникальных правил и комбинаций, чтобы диктовать, как персонаж реагирует на события в мире. Вторая — аттракторная система, создающая события, на которые реагируют NPC.
Система реакций
Система реакций управляет не только тем, как персонажи реагируют на стимулы, но и учитывает контекст происходящего. К примеру, если главный герой совершит какое-то шокирующее действие, то у окружающих персонажей увеличится показатель раздражения. Это повлияет на то, как они отреагируют на следующий раздражающий стимул. Со временем эмоциональное напряжение снижается, NPC успокаивается и возвращается к своим делам.
Тем не менее разработчики не хотели, чтобы эмоциональное состояние героев было биполярным и менялось только от гнева к спокойствию. Чтобы сделать поведение NPC более правдоподобным, команда добавила в игру несколько эмоциональных состояний. Персонажи могут быть: расслабленными, радостными, тревожными или разгневанными.
На диаграмме видно, что эта система очень похожа на конечный автомат: персонаж переходит из расслабленного состояния в любое другое при определённых условиях. Но есть некоторые правила: например, NPC может переходить от радости к гневу, но не наоборот. Благодаря кулдаунам персонаж со временем переходит из любого состояния в расслабленное.
Также тип реакции зависит от расстояния до события.
Стоит учитывать, что поведение персонажей не всегда соответствует их эмоциональному состоянию. Например, NPC может сперва накричать на игрока, а потом вернуться к своим делам. При этом он всё ещё будет в раздражённом состоянии некоторое время.
Но это ещё не всё: на поведение персонажей влияет их индивидуальность. Есть пять черт, определяющих личность NPC: жестокость, пессимизм, оптимизм, нейтральность и героизм. Эти черты определяют, как персонажи реагируют на события в мире.
Для согласования всей этой информации используется таблица, которая называется «матрица реакций» — она содержит все правила поведения NPC и контекст ситуации:
- что делал персонаж, когда произошло событие;
- в каком эмоциональном состоянии он находился;
- какой у него тип личности;
- какое событие произошло;
- как далеко от события находился NPC;
- и многое другое.
Существует более 700 различных правил, определяющих реакции NPC, более 200 правил для звуковых сигналов и около 200 условий для воспроизведения анимации.
Все эти правила учитывают конкретные черты личности и эмоциональные состояния. Но у каждого персонажа есть несколько особенностей личности, поэтому система должна каждый раз выбирать что-то одно для определения реакции.
Для принятия этих решений игра использует нечёткую логику: система считывает входные данные на основе правил матрицы реакций и взвешивает их в соответствии с силой личностных черт. Затем входные данные передаются в систему вывода, и она решает, как лучше реагировать. Учитывая количество вариантов, есть миллионы возможных результатов, которые могут возникнуть в системе реакций NPC.
Аттракторная система
Игрок — это не единственный источник проблем в игровом мире Watch Dogs 2. Сама система создаёт условия для разных ситуаций и генерирует интересные события. Для этого используются специальные NPC-провокаторы: их цель заключается в том, чтобы вызывать реакцию у других персонажей.
Провокаторы применяют разные интерактивные объекты для создания ситуаций: машины, лестницы и так далее. Такие элементы называются аттракторами — разработчики размещают их вручную в игровом мире. Также провокаторы могут участвовать в небольших сценах: играть на гитаре, заниматься йогой. Эти события привлекают внимание других NPC и подталкивают их к выражению эмоций.
Существуют ещё и динамические аттракторы: свидания, случайные встречи и разговоры на улице, ссоры, драки, ограбления. За их размещение в игровом мире ответственен менеджер событий.
Дополнительные особенности системы
Все вышеперечисленные принципы поведения относятся в первую очередь к открытому миру. В миссиях всё устроено иначе: случайное поведение NPC может помешать выполнению задачи, поэтому эти системы отключены.
Во время миссий героя окружает особый тип горожан — они обладают теми же системами восприятия мира, что и обычные враги, но не используют их, чтобы нанести прямой вред игроку. Вместо этого они вызывают охрану, если видят подозрительное поведение. Также эти NPC более стрессоустойчивы к потасовкам: если они видят драку, то не будут бежать от неё. Конечно, это не относится к перестрелкам.