Gamedev Александр Гинзбург
9 930

Из жизни игрового сценариста: текстовые квесты спешат на помощь!

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

В закладки
Аудио

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

Именно так и поступил ваш покорный слуга, когда замыслил ввести в игру Day R текстовые квесты. Что из этого вышло — читайте ниже.

Это четвёртая часть повествования о работе игрового сценариста. Предыдущие части.

Разработка идеи

Итак, в ходе скайп-совещания я предложил моему начальнику, геймдизайнеру, добавить в игру текстовые квесты. «Ты ведь помнишь „Космических рейнджеров“, было ведь круто, да?». Начальник поделился этой идеей с руководством, задумка понравилась и немедленно пошла в работу. Мне сильно отодвинули дедлайн и, более того, сделали специальную программу-редактор для написания и тестирования таких квестов.

И только тогда я осознал, что, кроме голой идеи, у меня ничего и нет.

Квесты «как в „Рейнджерах“» не годились по определению. Во-первых, большинство из них структурно и математически сложны, а у меня давно выветрились из головы остатки технического образования. Да и времени на один квест выходило не так чтобы много. Кроме того, функции у нашего редактора были весьма ограниченны.

Во-вторых, каждый квест в «Рейнджерах» — это цельная, законченная история (от маленького «Фараона» до гигантского «Мастера Иике-Бааны»), а наши квесты должны были быть составными частями «В поисках истины». В-третьих, в большинстве своём квесты из «Рейнджеров» комедийны (помните, как персонаж работал злым гением?), а у нас тут постапокалипсис и вообще всё грустно.

Методом проб и ошибок я пришёл к любопытному гибриду текстового квеста из «Рейнджеров» и интерактивной новеллы.

Технология создания такого квеста во всех случаях выглядела примерно так.

  • Я выбирал сюжетно насыщенный кусок «Поиска истины» (например, обыск Института вирусологии или охоту на волков-мутантов)
  • Расписывал себе, какие сюжетные задачи должен решить конкретный квест, а также точки входа и выхода. Другими словами, с каким «багажом» (информация, чувства, цели, имущество протагониста и прочее) персонаж входит в квест, а с каким выходит.
  • Придумывал главные идеи квеста: первая — идея квеста как законченной истории (например, «не лезь на рожон»), вторая — идея квеста как части глобальной истории (например, «правда легко не достаётся»).
  • Придумывал способ донести обе идеи: так рождался принцип квеста. Например, персонаж осматривает комнаты Института, за каждой из которых его ждёт некое событие. Ключ к прохождению квеста — верный порядок осмотра.
  • Писал вариативный аутлайн (простите за кальку) квеста: магистральная линия прохождения с основными ветвлениями, часть из которых потом вливается в магистраль.
  • Рисовал схему в draw.io (смотреть картинку ниже)
  • Добавлял побочные ветвления, отсекал лишнее, усиливал перспективные ветки, прописывал условия ветвлений, причины и последствия выборов игрока и так далее
  • Писал сам квест в редакторе
  • Тестировал квест в редакторе и вносил правки (в том числе в схему).
  • Сажал играть в квест супругу.

Так как я не знал точно, какие именно квесты придутся игрокам по душе, решил сделать их максимально разными. В первую очередь, жанрово: «Просьба матери» — это драма, «Незваные гости» — стелс-боевик, а «Скотобойня» — боевик-триллер. Однако все три хорошо укладывались в жанр глобального «Поиска истины» и игры в целом.

С другой стороны, мне хотелось прогрессии квестов не только в геймплейном смысле (например, герою встречаются всё более сильные противники), но и в сюжетном. Поэтому я ввёл «прогрессию ответственности»: в «Просьбе» протагонист отвечает за других, а ему самому практически ничего не грозит, в «Гостях» — герою постоянно угрожает опасность, зато и отвечает он только за самого себя, а в «Скотобойне» он в ответе и за себя, и за окружающих. А главный конфликт постоянно вращается вокруг дилеммы «рискнуть ли своей жизнью ради других?».

К сожалению, из-за ограниченного времени мне не удалось добиться желаемого уровня сюжетной вариативности. Поэтому я активно использовал геймплейную вариативность: выбор игрока не ветвит квест, зато по-разному влияет на характеристики героя, опционально вызывает травмы или награждает дополнительными предметами. Например, в квесте «Институт вирусологии» бандита можно убить сразу, а можно медлить и дождаться, когда он нападёт сам. Сюжет от этого не изменится, зато во втором случае герой получит пулю в бедро.

Проблемы реализации

При создании квестов всплыло несколько технических проблем. Во-первых, что происходит с игроком, провалившим квест, или героем, погибшим в процессе выполнения квеста?

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

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

Во-вторых, проблему создавали характеристики персонажа и инвентарь. Было невозможно предугадать, с какими параметрами игрок начнёт квест. Он может приехать на велосипеде с револьвером, а может, если до этого долго путешествовал в открытом мире, на танке. Это потенциально приводило к абсурдным ситуациям: героя защищает броня в 50 мм, а ему предлагают играть с четырьмя бандитами в стелс!

Нас спасли «требования к квесту»: теперь квест не может начаться, если, например, у героя есть травмы, он устал, облучён, он на транспорте (или наоборот, без транспорта) и так далее. Кроме того, в тексте самих квестов оружие персонажа дежурно именуется «моя пушка» и считается адекватным сложности квеста огнестрелом.

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

Всего в «Поиске истины» шесть текстовых квестов. О первых трёх рассказывать не буду: они сюжетно и структурно просты. А на «Просьбе матери», «Незваных гостях» и «Скотобойне» остановлюсь подробнее. Будут спойлеры!

Просьба матери

Краткое содержание. В тульском поселении герой встречает Надежду Кулик, вдову учёного из Института вирусологии. Рассчитывая получить от неё нужную информацию, герой отправляется в Новомосковск, чтобы вытащить из-под завала тело её сына Гены, привезти и похоронить.

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

Всё.

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

Варианты исходов (итоговая версия).

  • Герой приехал слишком поздно, Гена мёртв, герой откопал тело, привёз матери
  • Герой не защитил Гену от рыси, Гена убит, герой привёз тело матери
  • Герой притащил Гену домой силой, Ваню на встречу не звал
  • Герой привёз Гену домой, не смог убедить Ваню прийти на встречу
  • Встреча состоялась, Гена жив, Ваня изгнан в Пустошь
  • Встреча состоялась, Гена жив, Ваня убит Геной
  • Встреча состоялась, Ваня убил Гену и сбежал
  • Встреча состоялась, Ваня убил Гену, герой убил Ваню

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

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

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

Кроме того, квест ставит перед игроком вопрос об ответственности, которую тот готов на себя взять. Нельзя вмешиваться в ситуацию слишком грубо и прямолинейно: если, вопреки просьбам, силой тащить Гену в лагерь, их конфликт с Ваней и смерть Гены лишь отложатся и произойдут уже после отъезда героя. С другой стороны, нельзя делать всё, о чём просят: если герой оставит Гене пистолет, позовёт Ваню и уйдёт гулять, всё закончится двумя трупами.

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

Квест получился самым вариативным из всех, но и самым запутанным. В первую очередь — для меня.

Многочисленные ветки периодически перекрещивались, в результате требовалось отслеживать предысторию каждого конкретного события, ведь к нему могли приводить разные решения. Для этого пришлось вводить специальные переменные, комбинации которых вызывали ту или иную концовку. Схема в Draw.io поражала воображение, но не было никаких шансов воплотить её в реальный квест в разумные сроки. Пришлось срочно резать: сначала ветки, а потом и точки ветвлений.

Уже в ходе бета-тестирования вылезла ещё проблема: для спасения Гены игроку требовался мотоцикл с тележкой или машина, в результате между получением задания и его выполнением проходили месяцы. А квест отслеживал время. В итоге большинство игроков находили под завалом уже мёртвого Гену, то есть квест заканчивался, едва начавшись. К релизу отслеживание времени вырезали, и теперь Гена может прожить под завалом без еды и воды долгие годы...

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

А о них — в следующей статье.

Пост написан участником Сообщества Независимых Авторов DTF

Есть идеи для крутых статей? Присоединяйся!
Наш дискорд-сервер и телеграм-чат

#dtf_gang #опыт #геймдизайн #лонг #разбор #нарратив

Материал дополнен редакцией

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Александр Гинзбург", "author_type": "self", "tags": ["long","dtf_gang","\u043b\u043e\u043d\u0433","\u0440\u0430\u0437\u0431\u043e\u0440","\u043d\u0430\u0440\u0440\u0430\u0442\u0438\u0432","\u043e\u043f\u044b\u0442","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 15, "likes": 78, "favorites": 189, "is_advertisement": false, "subsite_label": "gamedev", "id": 45283, "is_wide": false, "is_ugc": true, "date": "Tue, 02 Apr 2019 21:12:25 +0300" }
{ "id": 45283, "author_id": 107128, "diff_limit": 1000, "urls": {"diff":"\/comments\/45283\/get","add":"\/comments\/45283\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/45283"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }

15 комментариев 15 комм.

Популярные

По порядку

Написать комментарий...
3

Сложно писать комментарий с критикой. Спасибо за работу.

Ответить

Комментарий удален

1

Иногда пользуются) Но вообще сюжет в большинстве игр - вещь вторичная, значит, на нём можно и сэкономить)

Ответить
1

Я возможно озвучу весьма не популярную точку зрения, но одна из вещей, которая для меня важна в играх это сюжет. А он, когда ты прожил на земле условно 4 десятка лет, в большинстве игр (не стесняясь в 99%) прост, как 5 копеек. Я не хочу критиковать труд автора, как написал выше, благодарю за работу. Но персонажи и сюжет здесь незамысловатые и прямые. Ни тебе конфликта внешнего, внутреннего, ни какой то высшей идеи, ни откровения... Как решить? Поучиться драматургии (здесь можно даже сказать, игродрамотургии, ибо от театра и кино повествование несколько отличается) и больше читать, даже без таланта, но при усердии можно выжить свой магнум опус. Я понимаю, что целевая аудитория предполагает упрощенность, но даже под простым соусом можно подавать шедевры.

Ответить
2

К сожалению, я не знаю эффективного способа сделать полноценный сюжет для мобильной игры. Даже у интерактивного кино с этим пока проблемы. Однако я сделал всё, что мог. С точки зрения драматургии (а я режиссёр драмы по образованию) у протагониста есть и внутренний конфликт, и внешний, да и идея обоих основных сюжетов совсем не тривиальная для игропрома. )

Ответить
2

Та норм, люди играют, и оценка хорошая, как игра текст редкая вещь.

Ответить
1

А я знаю.
Закладывать сценарий с самого начала в игру и писать его долго и тщательно.

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

Ответить
1

В принципе, да, общая мораль такая) Если бы с самого начала ориентировались ещё и на интересный сюжет, всем было бы проще)

Максим, удачи в вашей работе. Несколько линий персонажей и порционность - всегда хорошие решения для мобильного геймдева. А часто и для большого)

Ответить
0

Какой внешний и внутренний конфликт?

Ответить
1

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

Ответить
1

К сожалению, нет. Предоставить редактор не имею права. Единственное что, можно посмотреть прохождения текстовых квестов на Youtube, их там много разных (хотя смотреть и играть самому, конечно, разные вещи)

Ответить
1

К релизу отслеживание времени вырезали, и теперь Гена может прожить под завалом без еды и воды долгие годы...

"Синдром Беседки" весьма распространён в игропроме.

Ответить
1

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

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

Ответить
0

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

Ответить
0

Спасибо за коммент) В целом да, кольцевую структуру делать сложнее. Так же, как и открытый мир требует больше усилий, чем "коридоры".

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

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "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" ], "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" ], "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": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
В Steam появилась функция продажи
подержанных цифровых копий игр
Подписаться на push-уведомления