Как сделать текстовый квест

от admin

Опыт разработки текстового квеста под мобайл

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

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

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

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

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

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

set: $shotgun to 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как написать текстовую игру (для чайников)

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

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

Может, и вам захочется написать что-то свое?

Я люблю текстовые игры. Я очень люблю текстовые игры. В основном, играю-читаю новеллы Choice of Games, но видела всякое. И вот причина того, что я решила написать что-то свое как раз была в том, что хотелось «как у чойсов», но на русском и свое. Не в обиду ру-сегменту, но лично мне просто как правило всегда чего-то не хватало в проходимых русскоязычных квестах — то длины, то вариантов, то какой-никакой кастомизации главного героя. Да и тот факт, что главгерой там обычно мужчина, малость поднадоел — я хочу играть за свой пол Т__Т

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

В общем, что делать.

1. Сначала скачиваем Twine — бесплатно с оффсайта.

Это такая прога, в которой можно легко делать собственные текстовые квесты. Открываем ее, выбираем язык, жмем +История и. в принципе, это все.

Для того, чтобы написать текстовый квест, вам достаточно знать одну вещь — ссылки на новый параграф делаются так:

[[название параграфа<-Какой-то текст]]

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

Если это вас не устраивает и хочется чего-то посложнее, то смотрим дальше.

2. В окне своей истории смотрим вниз, в выпадающий список — и выбираем «сменить формат истории». Там знакомимся с форматами и выбираем подходящий.

Я лично пишу на SugarCube 2, потому что там уже была встроена система сейвов. Возможно, если вы хотите делать не квест, а просто загнать свою историю в программу и побаловаться, то вам больше подойдет другой формат (например, относительно новый Chapbook).

Там же есть ссылки на документации по выбранному формату — очень подробные, поверьте. Проблема может быть в английском языке, но тогда — гугл в помощь. Гайды как минимум по SugarCube и Harlowe я точно видела и на русском.

Читать:
Как удалить максимальный элемент из списка python

Далее, третий пункт пишу с прицелом на SugarCube 2, в остальных форматах, возможно, все делается иначе.

3. Создаем параграф StoryInit, куда записываем наши переменные по умолчанию. Например, вы хотите, чтобы в игре главгерой сходил в магаз за хлебом, но на старте он находится дома и хлеба у него нет. Пишем в стори-инит что-то вроде:

Посылаем ГГ в магазин за хлебом, через ссылку из пункта один:

[[magaz<-И я пошел за хлебом]]

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

Переменные $ нельзя называть кириллицей, но значения можно.

Если хотите, чтоб был вариант не купить хлеба, убираем <<set $hleb to ‘есть’>> и пишем новые ссылки на новые параграфы и уже в них ставим <<set $hleb to ‘est’>> — если купил; ничего не ставим, если не купил. Этот момент можно упростить, если следующий параграф у вас планируется одинаковым — тогда можем сразу перейти к нему и привязать хлеб к выборам. Выглядеть это будет как-то так:

[[Я купил хлеба|passage2][$hleb to ‘est’]]

[[Я не купил хлеба|passage2][$hleb to ‘net’]]

или так, чтобы не повторять значение ‘net’, тк оно у нас и так по умолчанию:

[[Я купил хлеба|passage2][$hleb to ‘est’]]

[[passage2<-Я не купил хлеба]]

Тогда мы в любом случае переходим в один и тот же параграф passage2, но в одном варианте переменная меняется, а в другом остается прежней.

А потом на магаз нападают инопланетяне! Герой бежит и скрывается в бункере! Или не бежит и остается в магазе!

Пишем в стори-инит дефолтное значение:

А в своем новом параграфе про нападение инопланетян:

<<set $gde to ‘бункер’>> — если он в бункере; если все еще в магазине, то ничего не пишем, это значение сохранилось с прошлого параграфа.

Ну и так далее: если у ГГ есть хлеб в бункере, то он не умрет от голодной смерти —

<<if $hleb is ‘est’ and $gde is ‘бункер’>>Пишем текст про то, как ГГ выжил в бункере на буханке бородинского.<</if>>

<<if $hleb is ‘net’ and $gde is ‘бункер’>>Пишем текст про то, как ГГ умер с голода в бункере.<</if>>

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

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

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

Я <<if $male is «женщина»>>пошла<<else>>пошел<</if>> в магаз за хлебом.

Как только закончили, жмем «опубликовать историю в файл» — и получаем html-страничку со своей игрой. В процессе ее можно запускать через Twine и смотреть, все ли идет правильно. В итоге, если вы дойдете до конца и сделаете свой квест, — эту страничку можно где-нибудь опубликовать. Например, на itch.io, сайте для инди-разработчиков, где есть отдельный жанр interactive fiction. Или еще где, я пока не думала над этим вопросом.

В общем, подводя итоги, для написания текстового квеста в Twine требуется три умения:

1. Писать (думаю, на писательском сайте с этим проблем нет)

2. Читать (уже сложнее, но, подозреваю, начальные скиллы есть у каждого)

3. Гуглить (эй, это необходимый навык в современном мире!)

И все. Удачи Мне пора идти писать про то, как ГГ прячется от монстра в ночном клубе.

Придумываем текстовую ролевую квест игру

Привет! Не имея опыта в программировании, я решил придумать текстовую ролевую квест игру.

Что уже сделано:

Команда разработчиков из Канады — done

Выбор тематики ролевой — done

Определение ядра сюжета — done

Первые прочерки сюжета (начало) — done

Как это было сделано

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

Я только вступил, и чтобы получить ответ быстрее, я написал в личку некому «Валерию», он был в сети.

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

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

Как окажется в будущем, это возможно, но не прям с первого раза и не всегда.

Валерий терпеливо объяснял пару сообщений, а затем скинул ссылку на созвон.
Я подключился и он лаконично объяснял, что ChatGPT это словно ребёнок, и что я хочу от ребёнка, если я сам 11 лет отучился в школе, а он только пару дней.

Это взорвало мне мозг. И правда, я ж его только начал юзать.

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

— В первом чате сообщите боту своё имя и чем вы занимаетесь
— Во втором чате спросите бота как вас зову и чем вы занимаетесь

Мы пообщались где-то час, может больше, и поняли, что можем быть полезны друг другу.
У Валерия огромный, просто гигантский опыт, в разработке и программировании. А у меня знания маркетинга, идеи, новый взгляд (ему всё же 65) и опыт, которого у Валерия нет.

Следующим шагом стала реализация первой идеи

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

И спустя 10 минут я выдал 3 идеи, которые потенциально могут быть интересны общей массе людей.

Бот для озвучки голосами героев фильмов, игр и знаменитостей. Например, озвучка текста голосом Тони Старка, он же Робер Дауни джуниор.

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

Бот для ежемесячных автоплатежей. Также не раскрываем детали, быть может в будущем к нему вернёмся.

Мы взялись за третий бот «Автоплатёж», и через три созвона бросили его.

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

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

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

В созвоне обсудили детали, он объяснил мне как пользоваться сервисом «ClickUp», чтобы я туда писал все задачи и идеи, а не записал по 5 голосов по 1-2 минуты)

Теперь осталось выбрать о чём будет сюжет

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

С ядром определились, осталось сесть и начать писать

Если тут есть те, кто связан с писательством, то вы меня поймёте.

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

А что потом? Ну вот нельзя же написать: «И как только вагон отъехал от станции, по рации прошлась новость «Внимание всем пассажирам, просьба оставаться на своих местах до следующей станции! В вагоне №9 обнаружен труп. Повторяю, в вагоне №9 обнаружен труп!«».

Нужно как-то подвести к этому. Суть в том, что дорога далёкая, дней на 7-12. А значит, что убийство должно произойти на день 2-3, чтобы оставшееся время игрок шёл по сюжету и пытался выяснить, кто же на самом деле убийца.

Как создать текстовую игру

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 24 человек(а).

Количество источников, использованных в этой статье: 8. Вы найдете их список внизу страницы.

Количество просмотров этой статьи: 40 245.

Текстовая адвенчура или же интерактивная беллетристика (interactive fiction, для краткости – IF) является старейшим жанром компьютерных игр, имеющая в наши дни относительно небольшую, но преданную фанатскую базу. Они, как правило, находятся в свободном доступе, используют незначительный объем вычислительной мощности, а, лучше всего то, что вы можете создать такую игру, без необходимости осваивать навыки программирования.

Похожие статьи