И снова здравствуйте, это Кит Шулер, один из главных дизайнеров Borderlands 2. Совсем недавно я написал про то, как мы создавали одну из ключевых игровых миссий «Охоту на Огненного Ястреба», но остановился на самом интересном месте – совместной с Лилит битве. В этот раз особое внимание мы уделим наступающим противникам и, собственно, самой Лилит.
Возможно, вы удивитесь, узнав, что первоначально мы не планировали добавлять компьютерных напарников в игру. Под «компьютерными напарниками» я подразумеваю игровых персонажей, дружелюбных по отношению к игроку и агрессивных по отношению к его врагам. Это совсем не то, как, например, ведет себя Клэптреп, который только и делает, что движется по проложенному пути, произносит нужные фразы и, иногда, проигрывает анимацию. Мы вполне были способны реализовать таких напарников в игре, но времени для того, чтобы изучить, как эта идея приживется в игре, у нас не было. Излишний риск разработчикам ни в коем случае не нужен.
Лилит была моим первым шагом к реализации компьютерных напарников, что, в конечном итоге, вылилось к немаленьким изменениям в дальнейшей разработке. А еще Энтони Барчу пришлось переписать кучу диалогов.
Встречаем Лилит
На самом деле, до «Охоты на Огненного Ястреба» я работал над совсем другим проектом, так что именно эта миссия стала для меня моей первой работой в рамках Borderlands 2. Как я уже упоминал в первой статье, уровень, на котором развивалась миссия, был практически полностью готов, что уже облегчало мое задание по полировке миссии. «Охота на Огненного Ястреба» также не была так сложна, как, например, «Где Ангел Не Решится Сделать Шаг». Все это делало для меня прекрасную обстановку, чтобы познакомиться с остальной командой разработчиков и разобраться с инструментарием, которым мы пользовались на протяжение всей разработки.
Наш первоначальный сценарий отводил Лилит уж совсем скромную роль, в отличие от того, что у нас вышло в финальном варианте, который и увидел свет вместе с игрой. Наш план был таков: Лилит появлялась с Фазовым Сдвигом в самом начале боя (все демонстрировалось игроку в ролике) и в самом конце схватки, также с Фазовым Сдвигом. Вот так оно и было! Все остальное время она прохлаждалась где-то на заднем плане. На самом деле, этого плана мы и хотели придерживаться: у нас уже были заготовлены строчки диалогов, а Райан Хитон, наш дизайнер уровней, к тому времени набросал заготовки к поведению противников при таком раскладе, а также разработал эффекты двух Фазовых Сдвигов, которые должна была использовать Лилит.
Сценарий ролика, представляющий Лилит, был таков: группа бандитов стреляют в воздух и проклинают каких-то невидимых дьяволов, атакующих их. Затем, прямо посреди бандитов возникает Лилит, использует Фазовый Сдвиг и убивает всех негодяев. После этого показывается ее вводный экран, знакомящий нас с Лилит, и наша милая сирена падает в обморок от истощения. Прежде, чем приступать к полировке самого боя, я решил разобраться с этой вступительной сценой.
Некоторые бандиты уже были нацелены на несуществующую невидимую цель, располагающуюся в задней части логова Огненного Ястреба. Цель эту бандиты ненавидели всем сердцем и стремились уничтожить, но, так как они были привязаны к своим определенным местам и не могли с него сдвинуться, то им оставалось только неустанно стрелять. Проблема с такими условиями заключалась в том, что игрок выстрелы-то слышал, а понять, откуда они доносятся он не мог. Я беспокоился, что игрок, возможно, решит, будто стреляют где-нибудь в стороне или сзади, тем самым, дезориентируя себя.
Первым делом, я перенес невидимую цель чуточку повыше, на лестницу, отходящую от главной платформе. Таким образом, игрок обязательно должен был увидеть источник звуков.
Я помог игроку обнаружить верное направление, но у меня все еще оставались нерешенные проблемы. Каждый раз бандиты генерируются с новым случайным оружием, поэтому их выстрелы могли и прекращаться на некоторое время. Еще игрок до сих пор даже догадываться не мог, в кого же они там стреляют. Я подумал, что в сценарий не помещает добавить чего-нибудь яркого и привлекающего внимание, чтобы сделать встречу более запоминающейся. В качестве «привлекающего внимание» я выбрал фиолетовый эффект плавающих частиц, предназначенный немного для других целей. С эффектом игрок уже чувствовал себя намного увереннее: он знал, что где-то впереди идет ожесточенная схватка. Теперь он уж точно не собьется с пути.
У меня оставалось еще две проблемы, которые обязательно надо было разрешить. Первая заключалась в том, что фиолетовый эффект располагался прямо на пути игрока и блокировал его продвижение. Со второй было сложнее: бандиты стреляли прямо в сторону игрока, а у этих ребят был достаточно высокий уровень, чтобы размазать его одной пулей (большой уровень мы им прописали, чтобы показать, насколько Лилит сильна, раз может убить врагов, которые игроку не под силам).
Чтобы разобраться одновременно с двумя проблемами, я сделал так, чтобы фиолетовый эффект переносился в заднюю часть Логова Огненного Ястреба, когда игрок приближался. Теперь пройти игроку ничего не мешало, а противники целились туда, где находился эффект, тем самым, не впутывая игрока в ненужную перестрелку. Думаете, одним лишь эффектом я ограничился? Эксперимента ради, я решил к бандитам и саму Лилит подставить. Я раскрасил ее в причудливый фиолетовый цвет (под стать эффекту) и написал ей скрипты, следуя которым она убегала внутрь своего Логова. Вышло все очень здорово! Когда игрок подходит на достаточное близкое расстояние, чтобы разглядеть сирену, она становиться невидимой. В этот самым момент берет свое начало ролик, в котором она внезапно использует Фазовый Сдвиг прямо перед бандитами, тем самым, превращая их в фарш. Вся эта вводная сцена выглядела просто прекрасно.
Вот вам занятная история: изначально, надписи «aka The Firehawk» («...Она же Огненный Ястреб») не было. Добавили мы ее после того, как тестеры, первыми проходившие уровень, заявили, что так и не встретили Огненного Ястреба. Еще Энтони Барчу пришлось добавить несколько фраз, уточняющих, что именно Лилит является Огненным Ястребом. |
Лилит Вступает в Бой
Я провел немного времени в работе над противниками, нападающими на Логово Огненного Ястреба, но рассказывать об этом особо нечего. Это довольно простая схватка с психами, мародерами и парочкой безбашенных, наступающих волнами, каждая из которых труднее предыдущей. Как Райан их всех расставил, так они и остались стоять – я мало чего поменял.
Одна вещь продолжала беспокоить меня – Лилит совершенно не участвовала в схватке. Мои коллеги тоже были недовольны таким раскладом дел. Нами предполагалось, что Лилит в этой миссии будет представляться игроку этакой крутой пацанкой, надирающей задницы злодеям, но на деле она сразу же делала ноги после ролика для того, чтобы появиться в конце боя. Хуже того, ее Фазовый Сдвиг был заскриптован таким образом, чтобы разрывать на части каждого врага, попавшего в радиус его действия, поэтому Лилит самым наглым образом воровала у игрока убийство, заслуженное им по праву, а, вместе с ним, и весь полагающийся опыт. Она была самым худшим напарником на свете: не сыщите вы ее, когда она вам нужна, зато ворует всю славу в конце.
Вспоминая то, как я присоединил Лилит к тому фиолетовому эффекту, я решил реализовать такие появления в течение всего боя. Мне не надо было делать ее полезной в схватке – я всего-то хотел создать видимость того, будто она хоть как-то пытается помочь игроку. Я подумал, что игрокам будет достаточно увидеть ее пару раз для того, чтобы создалась иллюзия ее помощи. Видеоигры часто злоупотребляют такого рода магией, когда то, о чем думает и что чувствует игрок, разительно отличается от того, что есть на самом деле. (Умным волшебникам вовсе не обязательно прилагать большие усилия, чтобы заставить город летать. Иногда им хватает обычной ловкости рук без всякого мошенничества).
На деле, Лилит обыкновенный игровой персонаж, не обладающий каким-либо особым искусственным интеллектом, заточенным под боевые действия. Так же, как и Клэптреп, она способна лишь на то, чтобы двигаться по проложенному пути, говорить заранее записанные фразы и проигрывать в нужный момент анимацию. К счастью, я запросто мог позволить ей использовать все свои способности сирены во время боя. В первом Borderlands она использовала свой Фазовый Сдвиг для того, чтобы становиться быстрой и невидимой, а в «реальный мир», в котором ее удивительные способности пропадают, она возвращалась с разрушительным взрывом. Эта способность мне и была нужна: я мог телепортировать ее на поле боя, затем отправить куда-нибудь еще, а потом вернуть обратно. Под управлением моего скрипта, Лилит исчезала на пару секунд, а затем снова возвращалась к нам. Повторялась эта ситуация снова и снова до тех пор, пока бой не будет закончен. И не нужен мне был никакой искусственный интеллект: скриптов для Лилит было вполне достаточно.
Вот где оказывается Лилит, когда она исчезает во время боя. Это небольшая платформа неподалеку от Логова. Места этого вы не увидите, и не попадете туда. Также нам не потребовалось переделывать уровень, чтобы спрятать Лилит куда-нибудь. Еще, во время разработки, держать здесь Лилит было очень удобно - она всегда было под рукой. |
Теперь Лилит принимала самое активное участие в схватке. Вроде бы. Однако, тут я в очередной раз столкнулся с незапланированной проблемой. Так как скрипт подразумевал появление Лилит абсолютно в любом месте в ее логове, то двигалась и сражалась она без всякой логики. Ей было плевать на бандитов: перемещалась она куда угодно, но только не к ним. Бандитам, кстати, на нее тоже было плевать. Вот вам еще одна «классическая проблема», с которой можно столкнуться при разработке игры: неработающие или плохо работающие игровые элементы воспринимаются намного хуже, чем их простое отсутствие. Добавив Лилит, я сделал бой намного хуже.
Меня начал душить нарастающий страх, когда я осознал, что моя работа может пойти насмарку. Я всеми силами стал искать выход из сложившейся ситуации. Все игралось просто прелестно, когда Лилит удавалось пересечься с каким-нибудь бандитом. Мне срочно нужно было создать для Лилит искусственный интеллект, хотя мы и сказали «компьютерным напарникам в Borderlands 2» решительное нет. Итак, одной поздней ночью я снова решился на эксперимент. На экране редактора это выглядело так:
Видите зеленые ящики? Мы называем их «Триггерными Зонами». Каждый раз, когда кто-нибудь из бандитов касается их, игра отслеживает это перемещение. Каждый такой ящик связан с определенным местом, в котором появиться Лилит. Заготовив свой Фазовый Сдвиг, переместиться она именно к тому ящику, которого совсем недавно касался один из бандитов. Я всего-то ввел в бой окружение, следящее за всеми вашими действиями, и – вуаля! – у нас готов «искусственный» искусственный интеллект и без всякого программирования! Теперь Лилит точно знала, где находятся враги, и направляла свой Фазовый Сдвиг прямо на них.
Однако, бандиты все так же упорно не замечали Лилит. Кроме того, как вы помните, ее Фазовый Сдвиг был реализован дрянным образом: он просто воровал врагов у игрока. Еще Лилит уж очень эффективно уничтожала противников. Настолько, что игрок просто не поспевал за ней! Он мог простой отойти в сторону и посмотреть на то, как Лилит превращает в фарш ваших врагов сутки напролет. Это было недопустимо. Мы хотим, чтобы игрок чувствовал себя безбашенным!
Для того, чтобы разрешить эту проблему, я поменял принцип работы Фазового Сдвига: вместо того, чтобы автоматически убивать всех врагов рядом с появившейся Лилит, он создавал невидимый взрыв в месте, где возникала сирена. С этим изменением я убил двух зайцев одним выстрелом. Теперь я мог регулировать силу взрыва как душе угодно, так что игроку еще приходилось добивать врагов после Фазового Сдвига. Лилит же теперь наносила по врагам удар своим взрывом, и, если они оставались живы после него, то они начинали преследовать сирену до тех пор, пока она не исчезнет.
После этого Лилилт стала настоящим участником боя, и при этом она оставалась такой же безбашенной и не воровала у игрока законного права добивать врагов. После этого, я попросил Энтони Барча написать кучу новых диалогов для Лилит, в которых она предупреждала вас об опасности, насмехалась над врагами и хвалила игрока. Теперь схватка в Логове Огненного Ястреба была действительно хороша.
После битвы игрок может поговорить с Лилит, не собрав свой лут. Тогда она перенесет его в место, откуда сокровища не достать. Чтобы исправить это небольшое недоразумение, я добавил эффект «Землетрясения Война» (который использует одноименный босс). Вместе с этим эффектом игрок запросто мог спрыгнуть вниз и вернуться за своими пушками. |
Приостанавливаем битву
Оставалась еще одна последняя проблема. Если игрок умирает в течение битвы или просто решает отойти к торговым автоматам, то Лилит, не замечая его отсутствия, преспокойно продолжает драться и болтать с врагами. Тогда «интеллектуальность» Лилит сошла бы на нет, и игра продолжала играть в саму себя до конца боя.
Поэтому я поставил еще одну Триггерную Зону, располагающуюся на всем Логове Огненного Ястреба. Каждый раз, когда Лилит решает вернуться в схватку, она сначала проверяет, находиться ли игрок в этой Зоне. Если игрока нет, то она будет стоять в запрятанном месте (как на одном из скринов выше). Бой приостановиться, и только некоторые из бандитов побегут в вашем направление, ибо другой цели у них теперь нет.
Тьфу ты, пора бы уже закругляться. У нас тут разработчик из студии, названной в честь «Коробки Передач», рассказывает о «коробках», в которые мы засовываем игрока. Это ж надо. Что ж, спасибо за внимание. Хоть и на чуть-чуть, но вам удалось заглянуть за занавес, за которым скрывается разработка нашей игры. Бывайте!