Gamedev
Andrey Popov
3271

Miro как инструмент нарративного дизайна

Когда я поставил себе задачу сделать игру, в которой у игрока будет огромное количество различных решений, то встал вопрос «как это держать в голове». Обычно основная документация для любой игры проходит такой всем известный путь: питч, концепт-документ, дизайн-документ. Остальное зависит от размера команды, жанра и фич и механик, свойственных жанру. В случае с очень ветвистой диалоговой системой, подразумевающей конкретную реакцию NPC на целый комплекс произошедших ранее событий, нужен был инструмент, в котором можно будет легко визуализировать все взаимосвязи сюжетных цепочек и решений игрока. Более того, нужно, чтобы в этом было потом легко разобраться. Чем больше времени ты тратишь на разбор собственного сюжета, тем меньше занят непосредственно разработкой. Поэтому работая над своим КингСим’ом я стал изучать различные варианты.

В закладки
Аудио
​Вот так решили изобразить разнообразие решений в трейлере. Игрок нажимает на одну из трёх кнопок и выбирается один из трёх вариантов дальнейших событий.

Как соло-геймдизайнер я многое могу держать в голове. Например, сама концепция игры для меня всегда ясна, делиться мне ей не с кем, а поэтому дизайн-документ почти отсутствует. В условиях инди-апокалипсиса (от 30 до 60 ежедневно выходящих игр в Steam) моё внимание больше уделено своему маркетинговому документу и тому, что в голове удержать невозможно — схеме сюжета. Когда-то давно я приобрёл Articy Draft SE — инструмент как раз для проектирования сценария, диалогов, инвентаря персонажа и взаимодействий персонажей. Его использовали такие студии как Ubisoft, Daedalic Entratainment, Fictiorama Studios, Osmotic Studios, Grimlore Games и другие студии, специализирующиеся на играх "про сюжет".

​Вот так выглядят сюжетные "блоки" и связи в Articy Draft

Изначально Articy Draft показался мне весьма недурной программой: в каждый информационный блок можно вставить связанное с ним изображение (например, локацию), а также указать какой персонаж говорит какую реплику, с какими предметами связан диалог и т.д. Кроме того сам интерфейс выглядит красиво и профессионально. Работая в Articy Draft ты словно сам играешь в какую-то инди-игру, основанную на взаимодействии с интерфейсом (вроде Orwell: Ignorance is Strength или Need to know). Всё красиво, четко и функционально. Отдельно есть меню, в котором можно заполнять BIO персонажей, отдельно меню для локаций, отдельно для инвентаря. Это может быть полезно, если вы делаете point-&-click квест. Каждый из этих элементов можно потом использовать в информационных блоках.

В Articy можно даже загружать изображения локаций и намечать зоны для интеракции; это похоже на прототипирование

Но оказалось, что для меня лично Articy обладал рядом серьезных ограничений. К примеру, стоило на одном «полотне» сюжета разместить 50 и более сюжетных блоков как программа начинала адово лагать (даже на моём весьма не слабом PC). Судя по всему разработчики Articy планировали, что сценаристы будут разбивать весь сюжет на под-блоки: используя дабл-клик можно войти внутрь сюжетного блока и внутри него делать свои собственные сюжетные развилки. Это такой нарративный Inception. Вот только держать всё перед глазами, выходит, нельзя. А это значит, что чтобы посмотреть «а что там было у меня в сюжете вот на том моменте» нужно найти нужный сюжетный блок, зайти в него, найти ещё один блок, зайти в него... И так продолжать в зависимости от того, насколько у вас часто дробится сюжет. Это отнимает время и попросту не удобно в использовании.

Кит Сценарист, другая программа ​с относительно схожим функионалом

Когда я понял, что с Articy Draft у меня не задалось и дальше будет только хуже, я решил, что надо срочно менять "паровоз". Игру я делал параллельно разработке сюжета, а потому пришлось перестраиваться на другие рельсы уже во время работы с игровым движком. Я начал пробовать самые разные аналоги для хранения и визуализации сценарной информации. Draw.io (google-диаграммы), Кит Сценарист и ещё несколько разных вариантов, всё уже не упомнишь. У большинства возникали всё те же проблемы: либо сама программа была страшно неудобной, либо при превышении определенного небольшого лимита связей на экране всё представление превращалось в слайд-шоу. Однако в один день товарищ с прошлой работы посоветовал мне попробовать программу RealtimeBoard, которая сейчас переименовалась в Miro.

В Miro можно создавать блоки и связи, майндмэпы, графики, канбан-доски вроде Trello, добавлять ​картинки, записки, комментарии, "рамки" и другое.

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

Примерно так сейчас выглядит "доска"​ сюжета КингСим

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

Каждое такое "событие" я решил поместить в отдельный "frame" (на картинке - синие большие блоки), в рамку, которую можно легко перемещать по доске вместе со всем содержимым внутри. У каждой рамки есть своё название, показывающее какой сейчас игровой день и как называется само событие (названия замазал, чтобы не спойлерить сюжет неигравшим). Для простоты восприятия я решил сделать так, что визуально каждое событие начинается сразу после другого, не зависимо от того произойдет ли оно в игре или нет. Уже внутри события, в самом начале, происходит проверка "а событие вообще должно произойти?" и, если ответ отрицательный, всё событие пропускается. Это сделано для того, чтобы мне как сценаристу было проще понимать какой сюжетный блок будет идти за каким, что облегчает работу с игровым движком. При этом игрок этого не заметит, ведь часть событий не будет с ним происходить, что сделает каждое прохождение уникальным в зависимости от его решений.

Внутри сюжетного события уже происходят различные выборы игрока и последствия его решений. При этом удобно использовать цветовую дифференциацию сюжетных блоков. Зелёными квадратами я обычно отображаю Outcome, то есть определённое последствие событий (а также блоки "начало" и "конец" всего игрового события). Серые блоки - это условия, которые проверяют какую-либо переменную в игре. Например, рейтинг отношений игрока с определённым персонажем, ранее совершенные игроком действия и решения, наличие или отсутствие определённой постройки и т.д. Фиолетовые блоки - это вопросы игроку, на которые он сюжетно может дать несколько вариантов ответов, а маленькие синие блоки - это, собственно, и есть эти варианты. Ну и, наконец, красные квадраты - это сюжетная гибель игрока, то есть конец игры. Один неправильный ответ игрока в неправильном месте может служить причиной гибели Короля. Но обычно я стараюсь давать игроку намёки на то или иное событие, чтобы игровые смерти не казались такими внезапными и не зависящими от логики принятия решений.

​Одна из 80-ти "смертельных" концовок в КингСим на данный момент.

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

Также вы можете следить за информацией о разработке в группе ВК или даже помочь проекту на Patreon'е.

Успехов всем начинающим и не очень разработчикам!

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

Написать
{ "author_name": "Andrey Popov", "author_type": "self", "tags": [], "comments": 16, "likes": 103, "favorites": 317, "is_advertisement": false, "subsite_label": "gamedev", "id": 104597, "is_wide": false, "is_ugc": true, "date": "Wed, 19 Feb 2020 20:14:02 +0300", "is_special": false }
0
16 комментариев
Популярные
По порядку
Написать комментарий...
12

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

Вот этот пункт можно было бы расписать боее подробно. Хотя бы с точки зрения того, на какие из имеющихся на рынке решений не стоит тратить время. Я например за 20 минут нагуглил следующее:
Из платных специализированных вариантов:
www.chatmapper.com
https://www.articy.com/en/
https://store.steampowered.com/app/570090/articydraft_3/

Опенсорсные проекты
http://twinery.org/
https://github.com/YarnSpinnerTool/YarnEditor
https://github.com/steffendx/GoNorth
https://github.com/etodd/Lemma/tree/master/Dialogger
http://etodd.io/2014/05/16/the-poor-mans-dialogue-tree/
https://forums.unrealengine.com/community/community-content-tools-and-tutorials/1424923-open-source-dialogue-system-plugin

Платные плагины под Unity (можно найти на торрентах для  ознакомления)
https://assetstore.unity.com/packages/tools/level-design/dialoguer-14854
https://assetstore.unity.com/packages/tools/ai/dialogue-system-for-unity-11672

Платные плагины UE4
https://www.unrealengine.com/marketplace/en-US/product/not-yet-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/extreme-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/modular-quest-and-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/npc-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/blueprint-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/simple-dialogue-system
https://www.unrealengine.com/marketplace/en-US/product/ultimate-dialogue
https://www.unrealengine.com/marketplace/en-US/product/quest-and-dialogue-system

Немного не в тему, но вот еще одна действительно хорошая программа для создания майнд мапов Mindjet MindManager

Ответить
0

Спасибо, полезный список. Ток плагины для Unity и UE, судя по всему, для встраивания самих диалогов в игру (то есть уже непосредственно работы с диалогами в движке), а никак не для их проектирования.

Ответить
4

О, а мы с друзьями с помощью неё играем в киберпанк 2020, находясь в 10 тысячах км друг от друга)
Там карта, импровизированный стол и все такое.

Ответить
2

И всё это бесплатно. 

Ну вот неправда, бесплатная версия всё-таки порезана и команде может быть тесновато. Хотя если ты один, то должно быть норм. Да и ценник в принципе неплохой :) 

Ответить
1

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

Ответить
2

И всё это бесплатно.

Ага конечно. Примерно пол года  назад, тут один товарищ тоже рекламировал это Miro, и тоже очень «скромно» забыл рассказать про ограничения бесплатной версии.
Проекты, шаблоны, сохранение бэкапа, сохранение в PDF (в нормальном качестве) и сохранение в виде JPG (тоже в нормальном качестве) становится доступным только после оформления подписки

Ответить
1

Повторюсь, для команд, возможно, экспорт в разные форматы нужен и полезен. Для инди в 1-2 человека, как мне кажется, абсолютно бесполезно.

Ответить
0

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

Ответить
1

Ну вот например товарищи из Lesser Evil Games, которые делали недавний The Executioner, использовали Articy Draft и автоматический экспорт в Unity, а потом долго плевались на миллион всяких ошибок. Тянуть ещё больше с релизом ребята не могли. Как результат - игра вышла с багами в диалогах. Из-за чего оценки у игры первую неделю были крайне низкие. Ошибки, судя по комментам, были не из-за неправильной логики дизайнеров, а из-за ошибок в ходе экспорта. Так что не соглашусь. Очень сильно зависит от конкретной тулзы. Мне руками вбивать потом сюжет в движок кажется надежней. Да, дольше, но местами получается очень клёво оптимизировать всё.

Ответить
0

Ну на один неудачный пример, всегда найдется сотня-другая удачных. Само собой если использовать какую-либо  систему не понимая как она работает или не учитывая её особенностей (а такое встречается очень часто) можно получить целый ворох ошибок. Такие вещи как перенос диалогов в игру нужно тестировать на стадии подготовки, а не в самом конце разработки.
P.S. Если в игре хоть сколько-нибудь сложная система диалогов, ты просто двинешься переносить всё в ручную. Правильно написанный скрипт всегда надёжней мешка с костями.

Ответить
0

Может "поставил себе задачу"?
Upd. Fixed

Ответить
1

Да, спасибо, исправил. Устал видимо)

Ответить
0

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

Ответить
1

Я и не собирался писать мастер-класс, это ознакомительная статья. Сомневаюсь, что по Miro вообще можно писать мастер-классы: во-первых всё очень сильно зависит от проекта. Во-вторых, он очень прост в освоении, это не фотошоп изучать.
Сожалею, если текст был для вас бесполезен.

Ответить
0

Кстати, что интересно ломаный Articy Draft 2.3 работает раза в 2-3 быстрее чем 3 версия со стима. ChatMapper по функционалу намного проще чем Articy Draft но работает в разы быстрей.

Ответить
0

Видимо денуво вырезали и сливание данных создателю доски , 

Ответить

Прямой эфир

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }