Vampire: The Masquerade – Bloodlines 2: Скрипты миссий и Ink

Перевод шестого выпуска дневников разработчиков игры Vampire: The Masquerade – Bloodlines 2.

Vampire: The Masquerade – Bloodlines 2: Скрипты миссий и Ink

На этой неделе с нами на связи технический руководитель Ник Славен (Nick Slaven). Он расскажет о тех важных инструментах, разработанных нами для реализации всего того, что нужно для повествования — катсцены, миссии и диалоги:

Квесты, принцессы и беседы, господи ты боже мой.

Мы в The Chinese Room специализируемся на историях и их подаче. Наши игры отличаются богатым нарративом и тем, как мы подаём истории, а чтобы та или иная история работала, мы должны озадачить игроков не одной только ходьбой.

Меня зовут Ник и я отвечаю за то, чтобы наша команда рассказывала истории и снабжала игроков интересными занятиями.

Так как наша студия работает над двумя крупными проектами, мы должны пользоваться своими ресурсами с умом. Мы разрабатываем системы, которые используются и в Vampire the Masquerade: Bloodlines 2, и в Still Wakes the Deep, удовлетворяют нуждам обеих команд и упрощают всем работу. Так как студия у нас нарративная, то речь идет об инструментах для повествования.

Повествование не ограничивается одним лишь авторским текстом. Например, нам нужно пересечь некие земли для получения магического артефакта, который откроет ворота замка принцессы. Дальше не буду продолжать, чтобы окончательно не позориться своим неумением рассказывать истории. Но суть от этого не меняется — при помощи нескольких слов я набросал историю, которая материализуется у вас в воображении.

Давайте немного притормозим — нам-то всё понятно, а вот как игре понять, что у вас есть магический артефакт, и как его получение и открытие с его помощью ворот поможет вам в выполнении квеста? Как этого добиться? Мы разработали способ представления истории в виде цепочки событий, которая понятна движку игры — это скрипты миссий.

Скрипты миссий являются высокоуровневым методом представления цепочки событий, через которые игроку следует пройти для продвижения дальше по игре. Например, надо найти ключ от двери. Мы задаём это состоянием игровой истории и соответствующим событием, которое продвинет историю вперед. В данном случае это открытие двери - ищем ключ, а когда найдём, то можем открыть дверь и столкнуться с тем, что таится в комнате.

Вот скриншот того, как всё это выглядит в нашей системе скриптов миссий.

Пример описания миссии в терминах скриптов.<br />
Пример описания миссии в терминах скриптов.

В полноценной игровой истории сотни различных состояний, множество сюжетных линий – вот кусочек одной из миссий в одной из разрабатываемых нами игр.

Vampire: The Masquerade – Bloodlines 2: Скрипты миссий и Ink

Событий куча, но благодаря простому способу задания структуры миссии наша команда дизайнеров быстро перебирает различные варианты миссий и делает их максимально интересными.

Так, это всё про действия, а где разговоры?

Ветвление повествования – дело непростое. Каждое решение может стать отправной точкой множества вариантов развития истории. Мы решили не писать свой собственный софт, а воспользоваться Ink – это нарративный скриптовый язык с открытым исходным кодом от студии Inkle. Для того, чтобы он работал с Unreal, нам пришлось портировать его из C# в C++, но это куда быстрее, чем писать собственную нарративную скриптовую систему с нуля.

Визуальный пример того, как выглядит текст в Ink. Это не из Bloodlines 2.
Визуальный пример того, как выглядит текст в Ink. Это не из Bloodlines 2.

Благодяр Ink, наша команда по нарративу создаёт авторский текст, который вместе со скриптами миссий вёдет повествование. Пишется он как нарративный скрипт, сильно напоминающий сценарии для кино и телевидения. Сейчас Арон, наш основной нарративный дизайнер, расскажет вам об использовании Ink в своей работе.

Арон ле Брэй (Arone Le Bray): «Интересная это штука... Мне очень много чего нравится в этой системе, причем главным образом это вытекает из того, как мы интегрировали систему в наш проект. При помощи встроенного базового скриптого языка мы можем создавать нелинейные сцены и проверять, как они работают, при этом не переписывая одну и ту же сцену по многу раз.

Или, например, можно взять файл одной беседы и вставить его в срабатывающий в игре блок, при этом не заморачиваясь с кучей скриптов. Тоже здорово.

И да, даже новички могут освоить этот инструмент без особых проблем, а ещё нашими наработками можно поделиться с другими командами, работающими над игрой. Это, по сути своей, текстовый документ, но форматирование Ink позволяет нам превратить этот текстовый документ (который понятен большинству людей) в функциональный, практически полноценный инструмент разработки игр. Это просто СУПЕР».

Как превратить всё это в анимацию и звук?

Мы решили этот вопрос посредством «экспозиционного листа» [в оригинале dope sheet]. Название украдено из анимационной индустрии, но по сути дела для каждой написанной авторами строки диалога мы задаём звуковое событие, а также анимации лица, тела и много чего ещё. Экспозиционный лист напоминает лист в Excel, но со всякими прибамбасами, благодаря которым мы можем слушать отдельные кусочки аудио и просматривать фрагменты анимации во время работы над сценами диалогов игры.

Vampire: The Masquerade – Bloodlines 2: Скрипты миссий и Ink

Когда игрок делает выбор в игре в пользу той или иной строки диалога, система передаёт этот выбор в среду выполнения Ink, откуда мы в свою очередь получаем текстовый ответ, с которым лезем в экспозиционный лист для анимаций и аудио, которые формируют отклик на действие пользователя.

Скрипты миссий в сочетании с Ink представляют собой очень гибкую и мощную систему, благодаря которой мы и можем вести повествование. Мы пользуемся этими инструментами во всех играх, над которыми работаем.

Ink так сильно помог нам в нашей работе, что мы решили отплатить за добро добром и сделали Inkpot – лёгкую, блюпринтовую [~ нодовую, блоковую] обёртку нашего C++ порта среды выполнения Ink. Она абсолютно бесплатная и находится у нас на GitHub. Так что можете качать её и пользоваться при работе с Unreal. Кстати, если воспользуетесь ею, сообщите нам! Очень интересно посмотреть, что же у вас получится.

А что же дальше?

В этом месяце выйдет долгожданный расширенный геймплейный ролик. А через две недели опубликуем ещё один дневник разработчиков.

1212
2 комментария

Наши игры отличаются богатым нарративомСильное заявление от мододелов

Ответить

"Мы разработали способ представления истории в виде цепочки событий, которая понятна движку игры — это скрипты миссий."
А разве такая тема не используется чуть ли не во всех играх, где сюжет сложнее сказки про колобка?

Ответить