Gamedev Sergey Konstantinov
2 918

Опыт разработки текстового квеста для мобильных платформ

Когда 10 — дольше, чем 90.

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

В этой статье я расскажу, как разработать и опубликовать игру в жанре текстовый квест. Всё изложенное в материале основано на опыте работы над Mr. President — сатирическим симулятором президента Африканской республики.

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

С чего начать?

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

Рекомендую прочитать книгу, которая лично мне помогла написать сценарий игры. Это «Анатомия истории» Джона Труби.

Я изучил и протестировал наиболее распространенные программы для создания диалогов, и лучшей, на мой взгляд, является Twine. Она позволяет использовать переменные и экспортировать диалоги в JSON.

Интерфейс Twine

Twine позволяет создавать простые формулы типа

set: $shotgun to 1

И проверять условия:

if: $shotgun is 1 go-to: «B50»

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

Талант или мастерство: что важнее?

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

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

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

Рекомендую прочитать книгу замечательного литературоведа Норы Галь «Слово живое и мертвое». Это по-настоящему полезная книга, изучить которую должен каждый уважающий себя автор.

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

Порядок превыше всего

При работе в одиночку я допускаю некий творческий беспорядок, но в команде с материалами должен быть полный порядок. Приучите себя и других автоматически синхронизировать рабочие файлы в облаке. Для этого подойдет Google Disc с установленным на компьютере Google Sync. Это позволит избежать ситуации, когда макеты накроются медным тазом после того, как дочка дизайнера прольет молоко на ноутбук (да, увы, был такой печальный опыт).

Я писал дизайн-документ, используя Google Docs. Возможно, что для более сложных проектов вы захотите использовать вики-сервисы. Как вариант: бесплатный движок Dokuwiki, который можно развернуть на собственном веб-сервере. Дизайн-документ, а также другие полезные ссылки вы найдёте в конце статьи. Надеюсь, кому-то они помогут начать собственный проект.

На этапе программирования синхронизируйте проект с Git — например, Bitbucket. Опытным разработчикам мои советы покажутся очевидными, но я уверен, многие пилят проекты локально, а потом обмениваются исходниками через файлообменник. Или я ошибаюсь? Напишите в комментариях, кто как работает с файлами проекта.

Где искать художника?

Самый очевидный вариант: опубликовать объявление на фриланс. Максимально сузив категорию проекта до «Рисунки и иллюстрации», я ждал что мне начнут писать художники, но нет. Откликнулись видеодизайнер, проект-менеджер и даже веб-программист.

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

Эскизы Splash Screen

Выбор движка

Очень долго я рассматривал в качестве кандидата Corona. Из плюсов: движок кросс-платформенный. Минус: не самая дружелюбная среда разработки. Обсудив вопрос с программистом, мы решили разрабатывать на HTML5, а потом с помощью PhoneGap портировать на мобилки. Спорное решение, но конкретно в нашем случае мы сумели нивелировать недостатки этого фреймворка.

Написанные в Twine диалоги можно экспортировать в JSON. Для этого есть готовые скрипты (ссылка в конце статьи), но нам пришлось доработать обработчик, чтобы он корректно форматировал формулы и переменные.

При публикации игры в Google Play мы использовали новый формат Android App Bundle (с расширением .aab). С его помощью можно существенно уменьшить размер приложения. При установке игры на телефон загружается только то, что нужно конкретному устройству.

Этапы принятия игры

Этап новых фич. Когда игра готова на 90% и вам кажется, что осталось «вот совсем чуть-чуть», возникает неотвратимое желание добавить в игру новую фичу (ведь без неё игроки точно не поймут всей крутизны задумки).

В этот момент ответственный за релиз должен проявить себя как супер-адекватный человек. В начале разработки мы закладываем 10-15% на введение новых функций. Это нормально. Но лучше сто раз подумайте, прежде чем переписать одну из ключевых механик.

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

Этап багов. Если после предыдущей стадии от игры ещё хоть что-то осталось, то добро пожаловать на этап багов.

Наша стопка тестовых девайсов

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

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

Инди-разработчик идёт к успеху

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

Кстати, вот такая интересная особенность регионального рейтинга.

Рейтинг Mr. President по регионам

Если Австралия дала нам «18+» за намёки с сексуальным подтекстом, то для Европы и России это «12+».

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

Как обещал, вот перечень полезных ссылок:

#опыт #мобайл

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

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

Написать
{ "author_name": "Sergey Konstantinov", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442","\u043c\u043e\u0431\u0430\u0439\u043b"], "comments": 35, "likes": 63, "favorites": 85, "is_advertisement": false, "subsite_label": "gamedev", "id": 26402, "is_wide": false, "is_ugc": true, "date": "Tue, 30 Oct 2018 17:20:37 +0300" }
{ "id": 26402, "author_id": 52186, "diff_limit": 1000, "urls": {"diff":"\/comments\/26402\/get","add":"\/comments\/26402\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/26402"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954 }

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

Популярные

По порядку

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

"Инди-разработчик, как сперматозоид, движется в потоке ему подобных." ©
Платиновая цитата.

Ответить
1

И только один из миллиона попадает в цель.

Ответить
22

или вся работа в жопу

Ответить
5

Поделюсь и я своим опытом (автор Lost Crew) - делать текстовую игру под мобильные смысла нет вообще (во всяком случае на гугл плей). Немного перспективнее делать под ПК. Как ни странно, аудитория того же, например, стима гораздо лояльнее к такому жанру как текстовая игра. Как бы это ни казалось странным. Наверное, причина в том, что чтение игры, как и чтение книжки, не терпит суеты. Что до технической части - совершенно неважно на чем делать. Мне, например, не подошел ни один существующий узкоспециализированный движок для разработки текстовых игр. Хотя мне, программисту, проще. Многим авторам приходится втискиваться в рамки движков для разработки текстовых игр, но вообще стоит сразу задумываться над разработкой на универсальном движке, если программирование по плечу.

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

Ответить
1

Не согласен. По большему счету рецепт успеха на мобайле это функция от 3х переменных - качественный продукт, наличие аудитории которая готова играть и самое сложное - user acquisition (в народе так-же известный под словом "маркетинг"). Проект может быть успешным, только когда все 3 составляющие работают. И чтобы подкрепить мои доводы, скажу что в прошлом году мы выпустили текстовый квест, набрали 3М установок и прилично заработали.

Ответить
3

Поделись опытом продвижения)

Ответить
0

Если сделать игру с хорошим удержанием, гугловые роботы ее сами подкинут наверх (на иос не так, там люди решают).

Другие способы "продвижения", кроме покупки траффика, на мобилах неэффективны, по нашему опыту.

Ответить
0

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

Ответить
0

Lifeline вышла в Steam, но как-то не зашла игрокам. Там все писали, что это мобильная тема)

Ответить
0

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

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

Ответить
0

Если даже не скачиваете, то как можете судить, что качество ужасно? Я сам признаю, что отечественные писатели-фантасты пишут лютую графомань, но, справедливости ради, периодически почитываю (пытаюсь) самых популярных, т.к. мое мнение в любой момент могло устареть. И даже тут бывают исключения - например, Олди с их Ойкуменой. Если говорить про квесты, чем плох, например, Lost Crew?

Ответить
0

Вопрос - отсутствие 99% мобильных игр на ПК (без эму) и игровых платформах - это сложность переноса, отсутствие веры в фин успех или глобальный заговор?

Ответить
10

Это благословение господне!

Ответить
0

Холодный финансовый рассчет.

Ответить
0

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

Ответить
0

а почему статья написана не в разделе Инди, а в Геймдеве?

Ответить
0

Для тех кто интересуется инструментами по созданию разветвленного нарратива. Самый продвинутый инструмент, imho, это ink - https://www.inklestudios.com/ink/

Ответить
0

Зависит от типа игры и от целевой платформы. Диалоги в ink писать легко и приятно, а игры целиком — не очень. Чтобы воспроизвести на ink, например, Seedship или Voyageur, придется залезть в движок очень глубоко и написать массу служебного кода — ну или делать игру сразу на Unity, но это уже совсем другой уровень компетенций.

Ответить
0

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

Ответить
0

Почему после нескольких диалогов приходится ждать минут 10? Это просто худшее что вы могли добавить в текстовый квест.

Ответить
0

Типа реализм)

Ответить
0

а если главного персонажа убили?

Ответить
0

тогда включается турбо-режим

Ответить
0

нужно было сделать что бы телефон превращался в кирпич, типа умер ))))))))

Ответить
0

если игрок проходит одну игровую ветку, то переиграть он может уже без пауз

Ответить
0

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

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

Ответить
0

Мне практически в самом начале попался момент где никак не оправдано ожидание

Ответить
0

Эх, люблю писать под Corona, но пока дальше прототипов дело не шло.
Автор, если возникнут идеи для простых игр, пиши.

Ответить
0

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

Ответить
0

ну сори тогда, вы реально думаете что в хорошую игру нужно что-то вкладывать чтоб в нее играли? (Именно играли а не чтобы заработать)

Ответить
0

Мы тоже решили попробовать себя в текстовых квестах на андроиде. Если кому-то будет интересно, то ищите "Остаться в живых - текстовый квест". Правда за основу взяли движок LibGdx, он тоже кроссплатформенный.

Ответить
0

Сергей, привет! В чем именно была недружелюбность среды разработки Corona и как давно? Если дело в том, что Corona не поставляет IDE, то этому есть объяснение. Мы не ограничиваем пользователя в выборе своего любимого редактора. Но если совет нужен: наиболее функциональные это Sublime Text 3 с официальным плагином от Corona, а также ZeroBrane Studio неплох. Это может выглядеть как недостаток среды разработки, потому что в документации так сразу не найдешь, но на деле – не минус

Ответить
0

Редактор уровней тоже отдельно ставится)

Ответить
–1

Самое недружелюбное, это lua в 2018. Ладно там лет 10-15 назад ещё более-менее, но явно не сейчас.

Ответить
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-уведомления