Правдоподобный ИИ животных на примере theHunter: Call of the Wild
Эта статья – перевод записи из личного блога Кэрин И. Скуг (Karin E. Skoog), ранее работавшей младшим ИИ-дизайнером в Avalanche Studios над симулятором охоты theHunter: Call of the Wild.
До работы над theHunter: CotW моим ближайшим охотничьим опытом была стрельба по тарелочкам вместе с родственниками (я имею в виду оранжевые диски, запускаемые в воздух специальной машиной).
Я присоединилась к команде theHunter: CotW, потому что этот проект сулил невероятную возможность целиком сосредоточиться на дизайне ИИ. Теперь, когда игра уже на прилавках, я могу спокойно сесть и записать свои соображения о разработке игры (с позиции человека, работавшего над ИИ). Возможно, то, чему я научилась, окажется полезным и для кого-то еще.
Набраться знаний
Несмотря на то, что до работы над проектом я пересекалась с охотой крайне редко, я очень быстро стала экспертом в поведении более 10 видов животных.
Набраться знаний об охоте и поведении животных было крайне важно, поскольку theHunter – это франшиза, целью которой является создание самого реалистичного симулятора охоты.
Вообще, многие фанаты игр theHunter – это настоящие охотники и есть. И это значит, что…
- Игроки прекрасно знают, когда поведение животного реализованы абы как
- В отличие от FPS (и аркадных симуляторов охоты), здешние игроки не открывают бездумный огонь по всему, что движется. Наоборот, они иногда по несколько минут следят за животным (или группой животных), выжидая подходящего момента. Более того, есть категория игроков, которые просто наслаждаются местными красотами, вместо выстрелов делая фотоснимки.
В общем, игроки проводят уйму времени, наблюдая за животными и их поведением, поэтому то, как ведут себя виртуальные зверушки – это один из главных компонентов, добавляющих игре правдоподобности.
Краткое введение: Чем вообще занимаются дизайнеры ИИ?
Я начала работать над theHunter: CotW, когда в игру уже добавили несколько животных, но пока без моделей поведения. В процессе приходилось сотрудничать с самыми разными специалистами (саунд-дизайнерами, аниматорами, программистами, художниками окружения и т.д.), потому что требовалось, чтобы ИИ, с одной стороны, оправдывал ожидания настоящих охотников, а с другой, хорошо встраивался в геймплей.
Моя работа заключалась в следующем:
- Исследование поведения и потребностей животных
- Заселение заповедников, включая локации, где животные едят, спят, пьют и ходят, а также работа над размерами стад, гендерным соотношением в стадах, «распорядком дня» и т.д.
- Определение дополнительных элементов (вроде зон обитания)
- Разработка и внедрение ИИ поведения животных с учетом того, что каждый вид (включая разные виды оленей) должен вести себя по-разному
Плюсом работы в Avalanche Studios был их собственный движок Apex Engine (к слову, его ранние версии использовались в Mad Max и Just Cause 3). Он оснащен так называемым «деревом поведения» – технологией для реализации поведения ИИ.
(Картинка выше взята из презентации Роберта Майера (Robert Mayer) о дизайне ИИ в Just Cause 3, которую он показывал на GDC).
Как дизайн ИИ улучшает правдоподобность поведения животного?
Поскольку главная цель франшизы theHunter – создание самого правдоподобного симулятора охоты всех времен и народов, то перед разработкой ИИ нужно как следует углубиться в тему, изучив самые мельчайшие подробности жизни животных. Например…
Популяция – размер стада, гендерный состав и т.д.
Что это значит для игры? Разве недостаточно просто сделать несколько стад разного размера, а затем поместить их в игру? Нет. В поведении животных очень много нюансов и сложностей, влияющих на то, как животные организуются в группы. Вот несколько примеров:
Большое стадо самок (с одним случайным самцом)
Многие олени большую часть года (не считая брачного периода, который также называют «гоном») живут в больших и очень заметных стадах, состоящих лишь из особей одного пола. Я тоже создала такие стада, но добавила в них одного-двух самцов.
Почему это важно? Поскольку самки мельче самцов, а охотники, как правило, хотят подстрелить кого-нибудь покрупнее, это подталкивает игроков к тому, чтобы остановиться и понаблюдать за таким стадом в поисках «тайного» самца. Моей личной целью было сделать самцов достаточно вариативными, чтобы игрок был приятно удивлен, найдя, наконец, высокорангового самца.
(Я буду писать в основном об оленях, но в финальную версию игры вошли также зубр, рыжая лиса, вепрь и черный медведь. За каждым видом, включая разные виды оленей, стоит доскональное исследование и детальная разработка.)
Маленькое стадо самцов (как правило, в густых зарослях)
Создавая стада и их места обитания, я сделала так, чтобы стада самцов находились, как правило, в дремучем лесу. Благодаря этому, во-первых, самцов труднее найти, а во-вторых, густая листва плюс чуткий олений слух – это серьезное испытание для охотника, желающего подкрасться поближе, чтобы сделать хороший выстрел.
«Топовые» животные – старые самцы (очень чуткие, живут в густых зарослях)
Стада и зоны обитания создавались с особой тщательностью, чтобы уравновесить сложность, чуткость и «уровневость» животных. В результате в theHunter можно встретить и большие стада низкоранговых животных, гуляющих по открытым равнинам, и «топовых» самцов-одиночек, живущих в самых труднопроходимых зонах заповедника. Я вернусь к этой теме чуть ниже – в разделе «Среда обитания».
На этом месте хотелось бы поблагодарить Бьорна Эйля (Björn Öjlert), ведущего дизайнера проекта, работавшего над оригинальной theHunter, а по совместительству – фантастического учителя, который наставлял меня все время, что я работала в Avalanche Studios. Его опыт работы над первой theHunter и знание того, чего хотят игроки, серьезно повлияли на дизайн theHunter: Call of the Wild. Он отлично понимает, какие гейм-дизайнерские решения (вроде рангов животных) важны игрокам больше всего, и что нужно было улучшить, чтобы выставить CotW особняком.
Мы также каждую неделю встречались с создателями оригинальной theHunter – для разговоров на профессиональные темы и чтобы всегда быть в курсе новых гейм-дизайнерских решений.
Среда обитания
При разработке среды обитания нужно определиться с ее размером, а также с тем, как на нее влияют отличия в поле/возрасте животных и т.д.
Редкость и сложность локаций с высокоранговыми самцами
Я чуть затронула эту тему выше, но теперь хочу рассказать о ней поподробней. Моей работой было, повторюсь, задать размер зоны обитания для каждого вида в заповеднике, и делалось это очень просто – при помощи раскрашивающего инструмента.
Изучая распределение животных по территории (и то, как критерии вроде пола или возраста влияют на размер индивидуальной и общей зон обитания), я решила, что это проще реализовать через создание нового слоя (как в «фотошопе»). В частности, я сделала для высокоранговых самцов специальный слой и наложила его поверх общей популяционной карты. При этом я стремилась…
- …дать высокоранговым самцам маленькую индивидуальную зону обитания. Для игрока, забравшегося на какую-нибудь возвышенность, будет настоящей наградой найти пастбище или зону отдыха, т.к. это значит, что где-то рядом бродит высокоранговый самец! (Игроки, к слову, сразу приседают или даже ложатся, когда видят поблизости высокорангового самца, начиная двигаться более осторожно, чтобы не спугнуть добычу.)
- …расположить индивидуальные зоны в местах с густыми зарослями, чтобы снизить шансы игрока на обретение преимущества
Двигаясь по густому лесу, игрок волей-неволей издает шум, а если он вдобавок движется с подветренной стороны, зверь бросится наутек еще до того, как игрок поймет, что где-то впереди есть потенциальная добыча. Это делает охоту на высокоранговых самцов очень сложным (но и вознаграждающим!) занятием, потому что у высокоранговых зверей чутье намного острее, чем у других животных того же вида (взять, к примеру, благородного оленя, который пасется в одном из самых дальних и гористых уголков европейского заповедника).
Работа с окружением и засадные точки
Еще одно занятие, которое мне очень нравилось при разработке ИИ – это создание мест, где животные ходят, едят, пьют и спят. Я плотно сотрудничала с художниками окружения, чтобы обеспечить заповедники достаточным количеством источников воды, пастбищ и мест отдыха (с учетом зоны обитания), а также достаточным количеством холмов и равнинных областей вокруг холмов, чтобы создать засадные точки. Это было очень важным геймплейным решением:
- Концепт засадных точек (т.е. точек для засады) интересен не только охотникам, но и с точки зрения гейм-дизайна. По сути, это место в игре жанра FPS или tower-defense, которое является для противника бутылочным горлышком. Советую, в частности, почитать эту статью из журнала Bowhunting Magazine – там замечательные картинки, отлично иллюстрирующие концепт засадных точек, а также подробное описание того, как охотник может их использовать.
- Как правило, охотники приходят к засадной точке утром, строят лабаз или охотничью будку, а затем ждут животных, которые на рассвете идут через это бутылочное горлышко на пастбище. Они строят свое прикрытие таким образом, чтобы между ним и пастбищем была линия видимости, а также чтобы ветер не дул от них в сторону животных. Засадные точки формируются, как правило, естественным путем в равнинах между холмами или вдоль водных источников, давая отличную точку для стрельбы по оленю, идущему к пастбищу или месту отдыха.
- Работая над зонами, где животные ходят и удовлетворяют свои потребности (едят, отдыхают и пьют), я получила массу удовольствия, выискивая места, где игрок может установить охотничью будку, чтобы подождать проходящего мимо оленя. Было очень приятно видеть, как игроки используют эти места по их прямому назначению!
- Это видео показывает, как игрок находит засадную точку, а затем просто наблюдает, как животные занимаются своими обычными делами.
«Распорядок дня»
Для меня было важно исследовать то, как проходит день реального животного – когда именно оно ест, пьет и отдыхает – а затем реализовать этот «график» в игре. В конце концов, было бы очень странно, будь у ночного животного такой же «ритм жизни», как и у дневного (т.е. бодрствующего большую часть дня).
В распорядок дня была добавлена некоторая вариативность, т.к. я старалась делать, чтобы в заповеднике всегда было какое-то движение! Можете представить себе лес, который вроде как должен дышать жизнью, но на самом деле тих и спокоен, потому что все животные решили, что с часу до двух у них тихий час!?
- «Распорядок дня» животного как геймплейная механика. Геймплей предусматривает изучение «графиков» животных, чтобы затем использовать эти знания в своих охотничьих целях. Это вознаграждающий геймплейный элемент, т.к. разузнав о том, как олень проводит свой день, игрок может предугадать, в каком месте его можно встретить. Как и в реальной жизни.
Все это – результат исследований, связанных с добавлением в игру новых видов животных… уже не говоря о бесчисленных часах, проведенных за исследованием того, как животные выглядят и двигаются!
Реалистичное поведение животного – что это?
Чтобы создать правдоподобный ИИ, нам нужны…
Базовые потребности
Включая еду, питье, сон и хождение между зонами, где все это происходит.
Чтобы сделать поведение животного менее роботизированным, оно не создается по принципу «Олень! Встань тут и ешь траву, пока не завершится твой поедательный алгоритм!» (Думаю, всякий работавший с деревом поведения может по праву называться «Дрессировщиком Оленей».)
Чтобы сделать прием пищи более правдоподобным, я добавила в дерево поведения несколько дополнительных ветвей, включая:
- Поиск новой позиции, находящейся на случайном расстоянии (но по-прежнему в пределах пастбища)
- Перемещение вперед с одновременным поеданием травы (как газонокосилка!)
- Простое опускание головы, чтобы пощипать траву случайное количество секунд, а затем ее поднятие
В промежутке между этими поведениями у животного может запуститься анимация бездействия (вроде тряски головы, смотрения влево/вправо, чесания/кусания самого себя и т.д.). В результате все это выглядит очень здорово, даже в больших группах, т.к. действия животного предусматривают достаточную случайность, благодаря чему поведение выглядит более естественным.
Я также добавила еще несколько ветвей, чтобы разнообразить время, когда животные покидают одну «зону потребности» (еды, питья, сна) и выдвигаются в сторону другой. Было бы странно, если бы все члены стада внезапно перестали есть, а потом одновременно куда-то пошли. Я сделала так, что «лидер» группы «решает», что пришла пора выдвигаться, после чего другие члены группы, постепенно заканчивая со своими делами, двигают следом. Это как раз одно их таких поведений, которые игроки просто не замечают, т.к. оно выглядит очень естественно… Но если бы олени, словно кучка роботов, одновременно делали одно и тоже, об этом наверняка написал бы каждый второй рецензент!
Приманивание
Охотники часто пользуются так называемыми «манками», чтобы животное подошло ближе… и каждое виртуальное животное реагирует на зов по-разному.
Как и в шутерах, где у врагов есть поведение типа «занять укрытие» (перекатиться, перебежать к позиции X и т.д.), в theHunter есть поведение типа «приближение». Поскольку игроки видят этот элемент ИИ очень часто, было крайне важно сделать реакцию на манок максимально правдоподобной.
- Это видео демонстрирует, как в theHunter: Call of the Wild на манок реагирует европейская лань. (Игрок видит, когда именно сработала «сигнальная система» лани, переключив поведение животного с «приближения» на «тревогу», а также то, какой именно орган чувств отправил сигнал тревоги – зрение, нюх или слух). Вот то же самое, но в реальной жизни. (Лань бежит чуть быстрее, т.к. это самый разгар брачного сезона – самец думает, что кто-то вторгся на его территорию!).
- В дереве поведения делать такие вещи одно удовольствие, т.к. разработчик ИИ может задать разные углы подхода и скорости передвижения. В результате получается большая вариативность в том, как разные виды отвечают на приманивание, поэтому игрок никогда не уверен на 100%, какой именно способ выберет животное. («Побежит рысью? Просто пойдет? С какого угла? Остановится? Пойдет прямо на меня? Сделает ответный зов и раскроет свою позицию?».)
- Поскольку животное может подойти к охотнику с любой стороны, игроку может потребоваться просто сидеть, наблюдать и ждать момента для хорошего выстрела. (Я расскажу об этом подробней в главе о поведении «боль», но игроки, как правило, целятся животному в спину, сердце или легкие, поэтому угол обзора имеет важное значение.)
Тревога
Геймплей должен быть выстроен так, чтобы игрок сразу понимал, что он вспугнул животное, а также то, как именно он его вспугнул. Бьорн повторял это на протяжении всей разработки CotW: «Для реакции животного должна быть какая-то причина». Если животное реагирует просто так (с точки зрения игрока), игрок может посчитать, что дело в плохом ИИ, и бросит игру.
В реальной жизни многие виды оленей (и другие виды, включая рыжую лису), издают звук, чтобы предупредить об опасности другого оленя. Мы использовали это, чтобы показать игроку, что животное было потревожено (аналогичным образом в стелсах и шутерах противник, почуяв неладное, может сказать «Кто здесь?»). На этом моменте игроки, как правило, замедляют скорость и меняют стойку (приседают или ложатся), чтобы животное их не обнаружило.
Изучив то, как работают органы чувств у разных животных, я поняла, что тревожное поведение можно использовать, чтобы показать уникальные характеристики вида. К примеру, лишь некоторые виды оленей могут определять неподвижные и двигающиеся объекты – у большинства сигнальная система «урезана» до обнаружения только тех объектов, что двигаются. Кроме того, некоторые виды оленей имеют отличное чутье (вдобавок к хорошему зрению). Поэтому на них сложно охотиться, особенно если они живут у себя дома, т.е. в гористо-лесной местности (как благородный олень).
Уровни «сигнальной системы» у лани и косули отличаются, поэтому игроку нужно подбирать разные тактики для охоты на них. Лань была сделана более «простым» животным, т.е. если она вас заметит, то вы можете продолжать двигаться в ее сторону, и она с большой вероятностью не подаст никаких признаков тревоги. Но косуля в такой ситуации начнет «лаять» (издавать предупреждающий звук). Это значит, что игрок, будучи замеченным косулей, должен изменить метод приближения – отступить, сделать круг и подойти к животному с другой стороны. Отступая, игрок выходит из зоны слышимости, а затем и «очищается» от запахового следа.
Разумеется, манок дает охотнику преимущество. Однако эта механика была сбалансирована путем добавления сложности для более старых (и имеющих более высокий ранг) животных. Игроки/охотники, как правило, хотят подстрелить дичь покрупнее… но в нашей игре для этого придется хорошенько постараться! Ниже я расскажу об этом чуть подробней, но старые животные реагируют на манок реже, чем обычные. Кроме того, как я уже говорила, они живут в более сложных локациях и имеют более чуткие органы чувств.
Когда игрок настораживает животное, у него активируется анимация для сработавшего органа чувств – оно начинает принюхиваться, присматриваться или прислушиваться. Таким образом игроку дается подсказка, какое именно действие потревожило животное.
Боль и попадание в разные части тела
Поскольку игрок не знает, в какой орган попал (а, следовательно, как долго нужно следить за животным), «болевое» поведение должно быть очень детальным, ведь оно содержит важную информацию для игрока. Кстати, вот пример болевого поведения. Анимационная команда CotW проделала фантастическую работу – благодаря им каждая анимация читается как открытая книга.
Главный элемент франшизы theHunter – это этичная охота, суть которой в том, что игроков поощряют убивать животных как можно гуманней. Для тех, кто не охотится, понятие «этичной охоты» кажется странным (мне тоже пришлось хорошенько разобраться, что это такое), но в нем много правил – которые разные охотники понимают по-разному – направленных на то, чтобы минимизировать страдание животного. Читать об этом было очень интересно. Изучая тематику охоты, я прониклась огромным уважением к охоте и тому, как разные охотники подходят к этике (в частности, эти различия хорошо видны между охотниками из стран и регионов).
В играх, где врагами выступают люди, как правило, в большом почете хедшоты, но в охоте все не так однозначно. В охоте хедшоты – причина для споров, и охотник может не выстрелить животному в голову как раз из-за соображений гуманности (здесь важную роль играют факторы вроде ветра и размера/толщины черепа).
Охотники/игроки, как правило, пытаются попасть в спину, сердце или легкое, поэтому важно, чтобы у модели животного при попадании в определенную часть тела включалась соответствующая анимация, не говоря уже об изменении других аспектов ИИ вроде дистанции бега.
Углубленный ИИ
Теперь, когда мы разобрались с основами дизайна ИИ для новых видов животных, давайте рассмотрим, как этот ИИ можно усовершенствовать.
Как я уже говорила, игроки (особенно настоящие охотники) сразу понимают, когда ИИ животного сделан кое как. Это как с хорошей локализацией, интерфейсом или программой – игроки просто не замечают, когда продукт сделан хорошо. Но то, что сделано плохо, бросается в глаза сию же секунду.
Исследование
Я также упоминала, что в процессе разработки мне пришлось перелопатить целую кучу материалов об охоте. Кроме шуток. Я пересмотрела уйму видео о поведении животных. Наши утренние стокгольмские совещания начинались звуком настоящего манка, а вскоре после этого некоторые из нас прилипали к монитору, вещающему картинку откуда-то из США, где олени начинали потихоньку собираться на пастбище.
(В конце концов дошло до того, что мне начали сниться сны об оленях, весело резвящихся в зеленых полях. Абсолютно не скучаю по этим снам! То же самое было, когда я в колледже учила китайский – мне снились странные китайцы, смешно болтающиеся в космосе.)
Смотреть столько видео о поведении животных было, конечно, необязательно… но оно того стоило! Я нашла много такого, чего в руководствах по охоте и поведению животных не было и в помине. Я часами смотрела видео, изучая поведение разных видов, а затем пыталась найти наилучший способ для внедрения своих находок в игру. Я находила в видео такие особенности поведения, которые не смогла найти больше нигде.
Детали, делающие вид уникальным
К примеру, если вбить в поиске «как косуля приближается к источнику звука от манка», вы вряд ли найдете детальную информацию об паттернах ее поведения вроде S-образного перемещения (у лани паттерн перемещения напоминает зигзаг), скорости приближения и других странных деталей, которые охотник запоминает со временем, приманивая настоящих косуль.
Влияние человека на природу
Работая над ИИ для theHunter: Call of the Wild, я внезапно для себя поняла, что люди тоже влияют на поведение животных. В итоге я решила добавить в ИИ соответствующие поправки.
К примеру, чем больше люди вторгаются на территорию животных, тем сильнее животные привыкают к людям, в конце концов все чаще заглядывая в окрестности городов. До 1981 года в США не было ни одного зарегистрированного нападения койота со смертельным исходом, а до 2009 года в мире не было ни одного зарегистрированного нападения койотов на взрослого человека со смертельным исходом. Если интересно, вот ссылка на документалку о нападении (к сожалению, фатальном) койота на молодую канадскую фолк-певицу Тейлор Митчелл (Taylor Mitchell).
Хотя многие животные от природы боятся человека, эксперты считают, что хищники постепенно забывают этот страх, поэтому его нужно снова внушить, чтобы остановить атаки на людей. (К слову, коренные американцы, как говорят, пугали диких животных, тем самым поддерживая свое доминирующее положение).
И это одна из многих деталей, реализованных в игре, однако я вместо того, чтобы убрать жертв и хищников с человеческих территорий (точек интереса), наоборот, совместила места обитания человека и животных, чтобы показать, что животные привыкли к людскому присутствию.
(Если вы работаете над ИИ инопланетного животного, то этот подход можно использовать для добавления нарративных элементов. Зону обитания одного вида можно совместить с зоной обитания другого, но сделать так, чтобы животные за километр обходили места, где когда-то проигрывали в конфликтах.)
Созданный мной ИИ имеет еще уйму других аспектов, о которых можно было бы рассказать, но лучше, если вы опробуете их сами, поиграв в theHunter: Call of the Wild.
Хотя обычный игрок, не разбирающийся в поведении животных, может упустить массу нюансов, их сочетание формирует правдоподобный ИИ, способный постоянно преподносить игроку приятные сюрпризы. Конечно, игроку нужно наиграть много часов в theHunter: CotW прежде, чем он поймет разницу, к примеру, в приманивании разных видов оленей, но все эти маленькие детали, повторюсь, вносят ощутимый вклад во впечатления от игры.
В заключение
Если судить с точки зрения ИИ-дизайнера, theHunter: Call of the Wild был по-настоящему фантастическим проектом! Передо мной стояла задача в реализации правдоподобного поведения животных, но в то же время оставался простор для творческой свободы (например, при работе над приближением животного к охотнику).
Играя в другие игры и изучая, как создается ИИ в играх других жанров, я поняла, что мои знания о том, как реализовать реалистичное поведение животных, применимы и в других типах ИИ-дизайна.
Во-первых, мои методы можно применить к реализации поведения первобытных людей, а также инопланетян и других видов научно-фантастических и фэнтезийных существ. (Если вы следили за разработкой Horizon Zero Dawn, то наверняка видели, что они тоже использовали видео с животными в качестве референсов для своих «анималистических машин».)
Работая над CotW, я также научилась другим техникам, хорошо помогающим в реализации ИИ. Взять, к примеру, ту же работу с игровым окружением (имеются в виду засадные точки и то, как реализовать их на игровой карте), которая стопроцентно применима в играх другого жанра.
Признаться, было очень трудно (и я еще преуменьшаю) создать действительно реалистичное поведение животных в игре, которая должна быть для игрока одновременно сложной и интересной. Однако видеть, как мои находки и дизайн ИИ собираются воедино, было безумно приятно. Также очень благотворным фактором было то, что многие разработчики работали над оригиналом theHunter и обогатили создание игры многими вещами, которым они научились при создании первой части.
Гейм-дизайнеры и ИИ-дизайнеры CotW сообща трудились над множеством разных аспектов игры, чтобы дать фанатам theHunter детальный и реалистичный охотничий опыт. Некоторые игроки заметили разницу между поведениями разных видов животных, и им даже понравилось!
Спасибо командам Avalanche Studios, Expansive Worlds и theHunter! Работать над theHunter: Call of the Wild было потрясающе. Также отдельное спасибо Патрику Энцу (Patrick Enz) и Дэну Пику (Dan Peake), работавшими над дополнительными видами и поведением хищников.