[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-229719-0", "render_to": "inpage_VI-229719-0-952491735", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&fmt=1&pr=" } } ]
{ "author_name": "Станислав Минасов", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 18, "likes": 35, "favorites": 12, "is_advertisement": false, "section_name": "gamedev" }
Станислав Минасов
3 938
Gamedev

По следам машины: как создавалась система квестов в Horizon Zero Dawn

Подробный рассказ геймдизайнера Guerilla Games с DevGAMM 2017.

Поделиться

В избранное

В избранном

На прошедшей в Москве DevGAMM 2017 одним из самых интересных выступлений стал рассказ Лешека Щепаньски, игрового программиста и дизайнера Guerilla Games.

Длинноволосый худощавый Лешек в футболке немецкой металл-группы рассказывал о поиске идеальной системы квестов, о том, какими хотели их видеть создатели и об итогах работы команды.

DTF послушал лекцию Лешека и пообщался с ним лично.

Примечание: Об играх с DevGAMM 2017, которые нам особенно понравились, можно почитать тут.

Что такого в жанре «RPG с открытым миром»? Почему мы, Guerilla Games, которые раньше в основном занимались шутерами (серия Killzone — прим. автора), внезапно решили делать ролевую игру? И почему это так сложно?

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

И встретить кого угодно. Или сделать (почти) что угодно. RPG с открытым миром требуют системных мощностей, чтобы просчитывать все взаимодействия NPC, физику, систему квестов и так далее. Причём зачастую за каждый блок отвечает своя система. Их сочетания и создают «непредсказуемый геймплей» (emergent gameplay) и интересное повествование.

Наконец, открытый мир требует большого объёма контента, часть которого генерируется процедурно.

Что такое квест

Квесты — очень интересная концепция. Как возможно знают некоторые из вас, есть две основные точки зрения на игры. С первой, повествовательной, игра воспринимается, как история. Для второй, игровой, важен набор правил.

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

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

Джефф Ховард, «Квесты: дизайн, теория и история в играх и повествованиях»

И слово «значимо» здесь крайне важно! Оно сразу отсылает нас к понятию «значимый выбор», а это один из самых важных терминов в хорошем геймдизайне.

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

Структуры и системы квестов

Квесты обычно состоят из многочисленных отдельных фаз или шагов. У них всегда есть чёткие начало, середина и конец. Кроме того, каждый шаг — часть глобального квестового повествования. Зачастую он описывается в «Журнале», а игрок должен достигнуть одной или нескольких целей.

Наконец, успешное выполнение квеста приводит к заслуженной награде — ценной в контексте игры.

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

Студия была хорошо знакома с особенностями разработки под PlayStation 4. Её предыдущий проект, Killzone: Shadow Fall, тоже был эксклюзивом для этой платформы.

Как я уже упоминал, Guerilla Games специализировалась на создании шутеров от первого лица и экшенов, поэтому в начале работы над Horizon Zero Dawn у нас не было ничего. Никаких наработок, предыдущих проектов, которые могли бы нам помочь.

Мы около года изучали другие студии и RPG самых разных типов и видов, вплоть до 1980-х годов. В процессе мы сталкивались с разными подходами, но через какое-то время смогли выделить общие черты.

Расслабленные и строгие системы

Все квестовые системы можно расположить на шкале «гибкости и строгости», крайние точки которой — «расслабленная» и «строгая», соответственно.

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

В теории, в таких системах можно рассказывать и показывать истории любой степени запутанности и глубины. Однако эта свобода даётся большой ценой — высокой сложностью и длительным временем создания отдельных квестов.

​Хорошие примеры игр с подобным подходом: серии Might & Magic, Wizardy и другие RPG, созданные преимущественно до середины 1990-х.

Кроме Vampire the Masquerade: Redemption и Gothic к «расслабленным» RPG относятся многие проекты, созданные в RPG Maker

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

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

Отличные примеры — Titan Quest, Sacred и другие игры жанра hack'n'slash.

Titan Quest, перебравшаяся в прошлом году на мобильные платформы — отличный пример «строгой» ролевой игры с открытым миром

Впрочем, сейчас большинство студий ищут баланс между «расслабленными» и «строгими» системами, потому что сюжетные истории усложняются, а процесс разработки удорожается. Удачный пример промежуточного решения — «Ведьмак 3».

Ведущие и ведомые системы

​Также квестовые системы можно разделить на те, что сами ведут игру, и те, что следуют за ней.

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

Таким образом, квесты можно легко добавлять и убирать, ведь они автономны, но все неквестовые элементы игры нужно программировать по-другому.

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

В Elder Scrolls Online квесты следуют за игровым процессом. Впрочем, на практике внутри одной игры тяжело разграничить квесты на «ведущие» и «ведомые».

Подход Guerilla Games

Затем мы сели и сформулировали требования к квестовой системе в Horizon Zero Dawn. В играх с открытым миром нужно быстро добавлять и убирать часто встречающийся контент, поэтому однотипные квесты должны создаваться просто.

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

Наконец, мы хотели, чтобы наша система была чётко структурирована, но не влияла бы напрямую на состояние игры. Поэтому мы выбрали более строгий подход с отдельными гибкими элементами. Что-то между Skyrim и Sacred и Titan Quest по «шкале строгости».

По словам самого Лёшека, Horizon Zero Dawn находится где-то в правой половине шкалы.

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

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

Поэтому я вспомнил времена, когда мечтал стать автором комиксов, и предложил стену стикеров. Что это такое? Ну, как бы странно это ни звучало, это обычная стена со стикерами — и крайне удобный способ рассказывать истории.

Одна стена — один квест

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

Пространство вероятностей

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

Предположим, наш герой заходит в деревню. К нему тут же подбегает испуганный староста и просит уничтожить ужасную заразу, заполонившую окрестные поля. Это стартовое событие — «Разговор со старостой».

Затем мы можем прийти на поле, стреляя направо-налево, и уничтожить всех насекомых. Это шаг «А» — «Игрок уничтожает врагов», открывающий шаг «Б» — «Игрок убивает Королеву Улья».

Доска стикеров для нашего простого квеста. Игрок мог как отправиться уничтожать монстров, так и пообщаться с Королевой.

Однако, после разговора со старостой игрок мог мирно пройти через поле и поговорить с Королевой Улья, что стало бы шагом «В» — «Игрок говорит с Королевой Улья». Альтернативная ветка событий. Причём игрок вполне мог бы после разговора с ней достать оружие и вероломно отстрелить ей голову — что вернуло бы нас к шагу Б!

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

Вне зависимости от выбранного пути, в конце игрок возвращается в деревню и снова говорит со старостой. Это конец нашей истории, последний пункт. Как и стартовая точка, «Разговор со старостой», она однозначно определена. Но всё, что происходило между этими точками, зависело от игрока и могло разниться от прохождения к прохождению.

Квестовые глаголы, скрипты и прогресс

Чтобы перевести стены стикеров на игровой язык, мы использовали систему глаголов. Каждый шаг квеста привязан к особому глаголу. Он определяет действие, которое должен совершить игрок, чтобы продвинуться дальше. Также при необходимости мы задаём цель действия.

Естественно, количество поддерживаемых глаголов ограничено — «получить», «убить», «поговорить» и так далее.

Например, игрок после длительных поисков в куче щебня находит и подбирает амулет Йендора. Шаг описывается как «получить» и «амулет Йендора», то есть подходящим глаголом и целью действия.

Другой пример — на арене игрок побеждает всех шестерых противников. Для нас произошедшее будет выглядеть как «убить» (нужный глагол) и «гладиаторы» (цель действия) с дополнением «шесть» (необходимое значение для действия).

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

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

Это могли быть скрипты исполнения, состояния или обработчики событий. Первые срабатывают по мере прохождения квеста (например, по достижению какого-то этапа появляется NPC). Обработчики событий влияют на состояние игры, пока квест в процессе — убийство какого-то монстра может повлиять на вероятность выпадения предмета.

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

Успех...

Таким образом, квесты в Horizon Zero Dawn выстроены как граф шагов (возможных точек сюжета), соединённых причинно-следственной связью и определяются действиями, которые должен совершить игрок.

Сама квестовая система «слушает» остальные системы и управляет всей игрой.

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

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

Кастомные квесты, которые могут создавать игроки самостоятельно, персонализируют игровой процесс. Но, как сказал нам Лёшек в личной беседе, Guerilla Games не планируют развивать такие задания во что-то более серьёзное.

...и проблемы путешествий во времени

Впрочем, у этой системы есть ряд недостатков, которые пытаемся решить. Например, проблема «путешествий во времени». В книгах или фильмах, когда событие случилось, его нельзя «отмотать» назад. Изменения в повествовании необратимы.

Но в игровом процессе, чтобы точно определять состояние квеста, порой нам надо «стирать» событие из временной линии и самого квеста. Предположим, игроку нужно прийти в лагерь и перебить всех бандитов. Но никто не мешает ему прийти в лагерь и тут же уйти, никого не тронув.

В этом случае состояние квеста вначале поменяется на выполненное (ведь игрок зашёл в лагерь), а затем откатится назад. Поэтому в журнале снова будет висеть задание «Зайдите в лагерь», хотя игрок формально уже выполнил его. Естественно, такие нюансы порой ломают историю и разрушают атмосферу.

Откровенно говоря, проблему путешествий во времени мне удалось решить только на прошлой неделе.

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

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

#опыт #геймдизайн

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться