Gamedev Андрей Верещагин
6 099

Настоящая нелинейность: особенности интересного принятия решений в играх

Опыт автора «КингСим».

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

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

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

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

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

Цена ветвистого качества

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

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

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

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

Для ААА-рынка в наше время даже незначительное ухудшение визуального качества означает почти прямое ухудшение продаж. Поэтому даже трейлеры часто обгоняют по качеству не поспевающие за ними игры, и всё реже встречается вариативность первых двух Fallout. На замену ей приходят кинематографичные приключения, вроде Uncharted, новой Tomb Raider и Detroit: Become Human.

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

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

Генерация событий против прописанных веток

В моём понимании игры с вариативностью сюжета можно разделить на две большие группы: заранее прописанный сценарий, в котором разработчик изначально знает, как может повернуться сюжет; и сюжетный генератор событий. Игры со сценарием легче контролировать разработчику — они тщательно проработаны, а взаимоотношения персонажей ощущаются настоящими (если сценарист не лентяй).

Генерируемые события в играх встречаются даже чаще. Хороший пример — это Rimworld. Геймдизайнер не прописал и строчки диалога, но сами параметры мира и персонажей созданы достаточно тонко, чтобы создавать в голове пользователя сюжеты. «Муж моей раненой после битвы героини случайно обнаружил себя пироманьяком и поджёг дом. Он потерял руку от ожогов, пытаясь её спасти. А потом после гибели жены совсем сошёл с катушек и пошёл мочить рейдеров в сортирах» — это уже довольно сложный ветвистый сюжет, который потребовал бы много сценарной работы, если бы создавался руками.

На самом деле, любую игру можно рассмотреть через призму принятия решений игроком. Играя за Марио, пользователь каждую секунду принимает с десяток различных решений. Когда мне прыгнуть? Как высоко? Попытаться убить гриб или обойти его? Многие скажут, что сравнивать геймплейные решения и сюжетные нельзя. Но я не совсем с этим согласен. Разница между решениями игрока в Super Mario Bros. и каким-нибудь текстовым квестом — в их важности и восприятии игроком.

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

Поэтому чаще всего игры стараются компоновать «глобальный» ветвистый сюжет и сиюминутные решения с их локальными последствиями, генерируемые игровым миром. Так делают, к примеру, в Dragon Age, Mass Effect и десятках других игр, в которых присутствует ролевая составляющая.

Несмотря на просьбы в группе ВКонтакте добавить рандом, я решил ограничить свой симулятор принятия решений короля только заранее прописанными ветками событий. Часто «КингСим» сравнивают с Reigns, но мне не очень нравится это сравнение.

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

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

Поэтому для своей игры я во многом пробую подход, как в легендарной Long Live The Queen. Её можно пройти два раза подряд, приняв абсолютно одинаковые решения. Практически никакой случайности нет. И это прекрасно! Почему? Потому что, отбросив рандом, подобно хорошему левелдизайнеру, рассуждающему о том, куда и как по локации может пойти игрок, хороший геймдизайнер сидел и чесал репу: «А что если пользователь примет вот такое решение, а затем вот такое? Нужно создать под такое стечение событий свой диалог, последствия и новый вариант для выбора!».

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

Можно заготовить 100500 уникальных коротких событий, выдавать их пользователю случайно и добиться невероятной реиграбельности. Но в этом случае вы не сможете связать события вместе в единый клубок. Ситуаций слишком много, чтобы они красиво влияли друг на друга. Просто физически невозможно прописать, каким будет «А», если до этого одновременно происходили или не происходили в разных вариациях «Б», «В», «Г»… «Э», «Ю», «Я».

Какие решения должны иметь последствия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В случае с KingSim, игра выходит про сложный «день сурка», в котором игрок ищет лазейки, чтобы прожить в этот раз хоть немного подольше, чем раньше. Соответственно моя ЦА — игроки, «въедающиеся» в игры, способные терпеть поражение, идти на жертвы, не ленящиеся задавать себе вопрос: «А что было бы, если?».

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

Тем не менее не могу сказать, что сам преуспел в балансе сложности. Новопришедшая большая ЦА, требующая билд игры под смартфоны, также настаивает на упрощении сложности «КингСим». При этом им игра на удивление интересна, хоть и создавалась под совсем другую аудиторию. Кроме того, фидбек часто негативный из-за «внезапности» поражений. То есть информации о том, что для игрока хорошо, а что плохо — недостаточно. Так что ещё нужно работать и работать!

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

{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043d\u0430\u0440\u0440\u0430\u0442\u0438\u0432","\u043e\u043f\u044b\u0442","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 14, "likes": 74, "favorites": 188, "is_advertisement": false, "subsite_label": "gamedev", "id": 51144, "is_wide": false, "is_ugc": false, "date": "Tue, 21 May 2019 17:10:33 +0300" }
Подкаст «Жиза ГД»:
Press X to win
Слушать фоном🎧
{ "id": 51144, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/51144\/get","add":"\/comments\/51144\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/51144"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }

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

Популярные

По порядку

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

Простите, понимаю, что доеб не по адресу, но качество текста удручает

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

Ответить
2

Не сразу заметил, добавлю - "помилывания". Он, наверное, и не пробывал

Ответить
1

Может с телефона пишет...

Ответить
1

Лол.

Там же дано разъяснение:

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

Какой выход из ситуации? Либо делать небольшое количество значимых сюжетных решений, либо понижать планку качества, чтобы за то же количество человекочасов успеть сделать много-много всего

Планку качества занизили что бы все успеть же

Ответить
1

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

Гораздо важнее, что у автора порядок с юмором и образностью :) Их недостаток уже никакие редактора не восполнят.

Ответить
1

Вот ещё:
"После предложения ему сделки, Калахар Аро вдоволь посмеялся" - может всё-таки сделку предлагал король, а не наоборот?

Ответить
5

Мне кажется, что следующий месяц можно объявить месяцем симуляторов поселений, а то много новостей связанных с Dwarf Fortress и Rimworld. Да и почитать было бы интересно.

Ответить
0

Рим, это который бесплатно?

Ответить
1

Неа, наоборот, Dwarf Fortress бесплатный, а Rimworld платный.

Ответить
0

Вполне может быть. Если их начали разрабатывать несколько лет назад...

Ответить
4

Большое колличество неясных последствий имеет минимальное отличие от малого количества рандомных последствий.

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

Ответить
0

Автор ведь написал, что старается давать игроку информацию перед тем, как дать ему выбор.

Ответить
1

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

Ответить
0

А чего целых 189Мб? как-то боязно такое качать

Ответить
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" } } } ]
Гейб Ньюэлл наконец-то анонсировал то,
чего все так долго ждали
Подписаться на push-уведомления