Говорят, без разнообразия жизнь уныла. Не знаю, что насчет всей жизни, но в играх это совершенно точно так – монотонность навевает на игроков скуку. Размер врагов влияет в том числе и на эмоции. Побеждаешь большого врага – чувствуешь себя героем; побеждаешь маленького – и можешь почувствовать злым грубияном.
Итак, с размером разобрались. Теперь спросите себя: каково поведение (behavior) врага?
• Как он двигается?
• Что делает в бою?
• Как реагирует, когда получает урон?
Ответив на эти вопросы, вы заложите фундамент разнообразного поведения. Главное тут – не повторяться. Более того, подбирайте модели поведения так, чтобы они друг друга дополняли.
Патрульный (patroller) механически ходит туда-сюда. Маршрут его может быть сложным, но движение всегда предсказуемо.
Преследователь (chaser) погонится за игроком, если тот к нему приблизится (или если будет выполнено какое-то еще условие). Во многих играх патрульные превращаются в ловцов и начинают гоняться за игровым персонажем, если заметят его или если он на них нападет.
Стрелок (shooter) – это враг, способный вести дальний бой. Заметив героя, стрелок-патрульный или ловец атакует его. При этом, в отличие от других, он стремится не приблизиться к игроку, а, наоборот, держать дистанцию.
Охранник (guard) – это враг, у которого в приоритете стеречь предмет или точку на карте (например, дверь), а не активно преследовать героя. Если игроку удастся украсть предмет или миновать ключевую точку, охранное поведение можно заменить погоней или стрельбой.
Летун (flyer) умеет, не поверите, летать. По сути, это воздушные патрульные, но они заслуживают отдельного пункта в списке, поскольку полет добавляет происходящему новое измерение (в прямом смысле). Летун может пикировать на героя или стрелять с безопасного расстояния. Такие враги более продвинутые, потому что игроку сложнее предсказывать их движения и атаки. Чтобы по ним попасть, обычно приходится останавливаться и целиться – либо атаковать в прыжке.
Бомбардировщик (bomber) – это летающий враг, нападающий не сбоку, а сверху. Чаще встречаются в 2D-играх, потому что в 3D-пространстве игроку подчас сложно развернуть камеру и посмотреть в точку прямо над собой.
Зарывающийся враг (burrower) становится неуязвимым, когда прячется под землю в поисках хорошей позиции для атаки. Игрок вынужден ждать, пока такой враг выскочит наружу – только тогда они смогут подраться.
Телепортирующийся враг (teleporter) способен менять свое положение на поле боя. Игроку необходимо быстро его ударить, иначе он снова телепортируется прочь. Телепортация отличается от зарывания тем, что она мгновенна и не оставляет игроку времени для атаки. Дайте ему возможность как-то помешать телепортации, например оглушив врага (или использовав иной подобный прием).
Щитоносец (blocker) защищается щитом или его аналогом. Можно обойти щит, ударив сбоку, сверху или снизу, либо выбить его особой атакой. Иногда щит временно делает противника неуязвимым – тогда игроку придется либо пробивать оборону специальным ударом, либо просто ждать, пока враг из этого состояние выйдет.
Двойник (doppelganger) – противник, который выглядит как игровой персонаж, использует его приемы и атаки, а ИИ для него моделирует поведение, напоминающее поведение игрока. Враги-двойники принуждают нетривиально использовать приемы и оружие, требуя победить «самого себя».
Зачем столько разных моделей поведения? Они друг друга дополняют. Враги должны «жить в гармонии» – так вы создадите интересные боевые головоломки. Когда противники станут действовать слаженно, возникнет геймплей. А это заставит игрока анализировать угрозы. Он будет вынужден спросить себя: «Кто из этих врагов для меня опаснее? Его мне надо убить первым – и понять, как я буду обороняться от остальных, пока этого не сделал».
Вот несколько интересных комбинаций врагов, которые, по моему опыту, хорошо сочетаются:
• Стрелок за щитоносцем. Игрок пытается пробить блок, а стрелок тем временем палит по нему напропалую.
• Большой ловец в сопровождении кучки летунов. Пока игрок дерется с громилой, летуны его атакуют. Если же бросить громилу и сфокусироваться на летунах, вас растопчут.
• Телепортирующийся враг в паре с ловцом. Игрок будет гоняться за телепортирующимся, и ему станет сложно уворачиваться от ловца.
• Охранник и бомбардировщик. Пока игрок занят охранником, бомбардировщик бьет сверху.
Опаснее и страшнее врага делают также его скорость (speed) и тип движения (movement style). От них зависит, насколько сложно будет взять противника на мушку. Используйте разную скорость, чтобы враг получился стационарным, медленным, средней скорости, быстрым и стремительным.
Разница между угрозой и врагом – в мобильности и в том, что у врага есть ИИ, но из каждого правила найдутся исключения. Если враг стационарный, это еще не значит, что он неподвижен. Движение равно его индивидуальности, живому поведению. Огромное ктулхуобразное существо с тентаклями, может, и неспособно ходить из-за габаритов или даже технологических ограничений, но игрок будет воспринимать его как врага, а не угрозу. А стационарные противники вроде висящих на стене роботов-пулеметов с лазерными прицелами иногда имеют ИИ, усложняющий игроку жизнь. Ищите способы сделать так, чтобы драка со стационарными врагами оставалась интересной: например, их может отделять от героя препятствие, требующее точного тайминга. Или же это препятствие – часть самого врага?
Скорость, размер и сила врага обратно пропорциональны: маленькие враги быстрые, но не сильные; большие – сильные, но не быстрые. Враги среднего размера могут быть либо сильными, либо быстрыми, но если вы наградите их обоими свойствами, то игрок сочтет их читерскими, потому что им дали преимущества, из-за которых с ними не совладать. Когда враг слишком силен или идеально наносит атаки, игрок чувствует, что дерется с компьютером, а не с настоящим живым существом.
Но я ушел от темы.
Медленные враги работают эффективнее всего, когда их много. Один зомби не слишком-то страшен, но при виде десятка едва бредущих мертвяков вздрогнет даже сильный духом. У медленных врагов часто тяжелая рука: если уж игрок попал под их удар, то сам, черт возьми, виноват! А еще можно внезапно дать медленному врагу быструю атаку, чтобы игрок не расслаблялся. У медленных врагов часто есть естественная или встроенная защита, позволяющая снизить получаемый урон или даже полностью от него отмахнуться. Если хотите, чтобы враг казался мощным, пусть движется медленно – как Тиран, Немезис или Доктор Сальвадор из серии Resident Evil. Неотвратимое приближение злодея заставит игрока запаниковать и наделать смертельных ошибок.
Средняя скорость средняя и есть – по скорости движения и атак такой враг, скорее всего, соизмерим с героем. Может, это чуточку предсказуемо, но в большинстве ситуаций вполне уместно. По моему опыту, врагам со средней скоростью лучше все равно двигаться чуть медленнее героя, особенно при погоне. Это позволит игроку при необходимости отбежать, не опасаясь, что его зарубят со спины, а потом ему хватит времени развернуться и нанести удар или эффективно защититься. Чтобы добиться желаемого эффекта, допустимо немного подкрутить показатели скорости. Тут нет универсальных правил – ищите вариант, который покажется вам правильным и честным.
Быстрые враги либо быстро налетают и отскакивают, либо носятся вокруг, а потом набрасываются и наносят череду ударов. Такие противники крайне эффективны в хоррорах и экшенах. На действия быстрого врага игроку сложнее отреагировать, так что если он не научится держать себя в руках, то может запаниковать и наделать глупых ошибок. Но не позволяйте бить героя постоянно: раздражает, когда тебя много атакует тот, кому ты не способен ответить (если только вы не стремитесь произвести такой эффект). Чем меньше враг, тем он быстрее. Чтобы действительно усложнить игроку жизнь, дайте быстрым врагам хаотичную манеру двигаться.
Стремительные враги двигаются и бьют рывками. Рывок может быть чрезвычайно быстрым – почти читерским; чтобы сбалансировать это, ограничьте для него количество атак. Анимация поможет предупредить игрока, что враг сейчас использует стремительный прием; так у него будет шанс увернуться, заблокировать удар или нанести упреждающий.
А что насчет типа движения врага? Бежит ли он на героя по прямой, будто за ним черти гонятся? Носится ли хаотичными зигзагами, уворачиваясь от огня? Мчится ли к цели стрелой, чтобы тут же отскочить? Прыгает ли из укрытия в укрытие? Ползает ли по стенам, нападая из засады сверху? А может, убегает и вообще не дерется?[204] Тип движения врага не только определяет доступные атаки, но и показывает характер.
Решите, насколько случайно или предсказуемо двигается враг. Избегайте крайностей, стремитесь к разнообразию. Если сделать движение слишком хаотичным, игрок потеряется; если слишком предсказуемым – оно будет выглядеть искусственно.
Полностью непредсказуемое движение – не лучшее решение. Для Crash Bandicoot 2 Naughty Dog пробовали «живые» ИИ со сложными моделями поведения, но фокус-группам они не понравились: игрокам интереснее было вычислять паттерны движений врагов. С другой стороны, в спортивных играх непредсказуемость уместна. Слишком простые модели становятся «дырами», которые можно эксплуатировать, а это портит удовольствие.
Ситуация усложняется, когда необходимо скоординировать действия нескольких врагов с разными типами движения. Проанализируйте, как они кооперируются в драке, как сочетаются их модели поведения. Возможно, некоторым стоит двигаться сообща, стаей – это выглядит правдоподобно.