Как сделать текстовую игру
Как создать текстовую игру?
Бен Сервисс (Ben Serviss), программист, геймдизайнер и игровой продюсер из Нью-Йорка, в своем блоге описал этапы создания текстовой игры. Мы с его разрешения перевели текст и делимся им с вами.
Сочинять тексты — сложно. Сочинять тексты для интерактивной игры со множеством вариантов ответов — еще сложнее.
Умеете грамотно построить фразу? Отлично. Постройте семь. При этом каждая должна быть хорошо написана, подходить трем разным персонажам и встраиваться в четыре разных контекста. Сочинять сюжет и диалоги к нелинейной текстовой игре — означает упражняться в упорстве, изворотливости и трудолюбии.
Скажем, у вас есть описание текстовой игры. Вы знаете, о чем она, кто главные персонажи, какие основные события происходят в каждой главе и что за способности есть у игрока. Все составные части игры у вас на руках. Время начать писать — но вы в ступоре. Как написать историю, в которой может случиться что угодно? С чего вообще начать?
Я недавно выпустил свою первую полноценную текстовую игру для Choice of Games под названием The Last Monster Master (в ней примерно 250 000 (!) слов). В процессе я пришел к определенным базовым схемам, — они помогли написать игру глава за главой. Я использовал отличный (и бесплатный) Chat Mapper, чтобы создать каждую нелинейную главу. Затем я перевел окончательный вариант текста в ChoiceScript, собственный язык программирования Choice of Games, удобный для создания текстовых игр.
Скриншот из игры The Last Monster Master
Я упростил процесс, разбив работу над каждой главой на шесть этапов. В Chat Mapper есть очень удобная функция — она позволяет присваивать свой цвет каждому текстовому блоку. Я использовал эту фичу, чтобы отслеживать ключевые моменты работы с текстом, — изменял цвет каждый раз, как заканчивал этап (это можно увидеть на приведенных ниже скриншотах)
Этап 1. Текстовые заготовки (без цветового маркера)
На первом этапе нужно создать общую структуру главы. Не пишите настоящие диалоги или описания, — вместо этого используйте текстовые заготовки, чтобы обозначить, кто и что скажет, когда он это скажет и какие будут возможности выбора у игрока.
Если возникают сюжетные ответвления, которые зависят от статуса игрока или от других условий, обозначьте этот статус или условия в вопросах и опишите варианты ответа в самых простых выражениях. Не нужно переживать о внутренней логике. Это придет позже.
На этом этапе избегайте чрезмерных правок (или вообще любых правок, — если получится). Главная цель — описать структуру главы так, чтобы это было читабельно. Когда вы закончите, у вас должна получиться карта того, над чем вы потом будете работать — в первом приближении.
В приведенной ниже схеме из The Last Monster Master один из монстров игрока застрял в дереве во время атаки. Игрок может использовать телепатию или навык чтения языка тела, чтобы помочь монстру отразить атаку, или подбежать и помочь напрямую.
Этап 2. Ревизия текстовых заготовок (цвет — желтый)
На этом этапе сконцентрируйтесь на проверке того, что уже создали. Пока что вас должно волновать только то, как расположены диалоги — не переживайте насчет грамотности или красоты текста, поскольку все, что вы написали, еще не раз может подвергнуться переделке.
Нужно в первую очередь искать варианты выбора, которые не имеют смысла или противоречат сюжету, спорные повороты и тупиковые сюжетные ветки, которые не связаны с основной историей.
Затем убедитесь, что в получившейся схеме задействованы все варианты статуса игрока и его возможностей, которые вы планировали использовать в данной главе. Если вы не применили все, что намеревались, — либо пересмотрите первоначальный план и добавьте дополнительные опции, либо оставьте себе напоминание задействовать эти возможности в будущих главах.
Этап 3. Текст в первом приближении (цвет — оранжевый)
Теперь, когда структура игры улучшена и реорганизована, можно наконец-то заняться тем самым текстом, который увидит игрок. Этот этап — не особенно сложный, но и тут важно не терять из вида конечную цель.
Не заботьтесь о том, что не имеет отношения непосредственно к тексту. На этом этапе вас не должны волновать варианты выбора, структура этапов и так далее. Именно эта часть самая интересная — и она же отнимает больше всего времени.
Этап 4. Проверка текста (цвет — фиолетовый)
Выжили после того, как написали целую главу? Отлично! Дальше все пойдет быстрее. Включаем режим беспощадного редактора.
Прочитайте написанный вами текст. Будьте безжалостны. Проверьте все, что относится к тесту — грамматику, пунктуацию, будьте точны в выборе слов, описании персонажей или мест и так далее. Повторюсь: сосредоточьтесь на тексте. Заставьте его зазвучать.
Этап 5. Варианты (цвет — голубой)
Со структурой разобрались, текст выглядит пристойно. Теперь пройдитесь по всей главе еще раз. Ищите все места, где возникает вариативность, особенно те, где меняется статус игрока или где от него зависит поворот сюжета. Возможно, на этом этапе придется добавить варианты взаимодействия с уникальными артефактами, персонажами, появляющимися только один раз — и так далее.
Оцените повороты сюжета с точки зрения их уместности и влияния на игровой баланс.
Если заведете отдельный документ, в котором отражено, насколько статус игрока задействован в главе или в важном сюжетном повороте, — это вам здорово поможет.
Например, если сила игрока должна быть на уровне в 45 единиц, чтобы вышибить деревянную дверь в четвертой главе, то логично, что в шестой главе ему понадобится 65 единиц, чтобы выбить металлическую дверь (то есть, соответственно, статус реквизитов должен расти вместе со статусом игрока).
Этап 6. Экспорт и игровая логика (цвет — зеленый)
Время поместить почти готовую главу в программу, которую вы используете непосредственно для разработки игры. К счастью, Chat Mapper экспортирует файлы в формате XML, JSON, Excel и Rich Text, — что дает вам возможность выбирать. В случае с The Last Monster Master я просто скопировал каждый ключевой элемент в файл ChoiceScript, видоизменив их по мере необходимости.
Если вам необходимо дописать игровую логику, то нужно начать это делать сразу, как только вы вставите текст в игру. К счастью, поскольку вы уже решили, что, когда и где произойдет, создание каждого отдельного скрипта происходит отдельно от основного контента, — что упрощает решение проблемы.
Другие методы
Представленный вариант — не единственный подходящий для создания нелинейных текстовых игр, однако в случае с моим проектом он сработал. В зависимости от того, какого стиля разработки вы придерживаетесь и тех программ, которые вы используете, можно попробовать экспортировать текст в игру на более ранних этапах — чтобы в нее можно было сыграть как можно раньше. Добавлю, скрипты для Chat Mapper можно писать с помощью Lua, — а значит, игровую логику можно задавать прямо в программе.
Вне зависимости от того, что вы выберете, выполняйте по одной задаче за раз, хвалите себя за каждый пройденный этап и старайтесь записывать в процессе, что можно улучшить. Разобраться с нелинейным сюжетом не так-то просто — почему бы и из этого не сделать игру?
6 оупенсорсных средств создания текстовых игр
Joshua Kormik
Read more posts by this author.
Joshua Kormik
С каждым годом графика в играх становится все более и более реалистичной. К сожалению, это зачастую означает, что сюжет отходит на задний план. С другой стороны есть текстовые игры, в которых история – это самая важная составляющая. Не смотря на то, что этот жанр существует уже очень и очень давно в последние годы наблюдается все повышающийся к нему интерес.
Вот вам пять оупенсорсных средств, с помощью которых можно написать свою собственную текстовую игру. Но до того как мы начнем, позвольте мне объяснить, что такое текстовая игра.
Интерактивная проза – категория компьютерных игр, в которых игрок может контролировать персонажа посредством текстовых команд. Одной из самых известных игр в этом жанре является Zork.
Более богатой на изображения версией текстовых игр является книга-игра. Книги-игры позволяют так же прокликать себе дорогу до финала. Графика, тем не менее, и в них особо сильного значения не имеет. Все фокусируется на тексте и сюжете. Отличным примером книги-игры является серия “Выбери себе приключение”.
Подыскать хорошую текстоую игрушку на английском языке можно здесь и здесь; на русском здесь, например.
Лучшие средства с открытым кодом для создания интерактивной прозы
Сегодня я покажу вам средства, с помощью которых можно создать интерактивную прозу на Linux. Программы не проставлены в каком-то определенном порядке.
1.Twine
Twine – это простая в освоении программа, для создания текстовых игр, для которой не требуется навыков программирования. Все что вам понадобится для этого, так это создать серию отрывков, а потом их соединить. Twine дает возможность использовать карту для навигации по течению повествования, где видны сами отрывки, а также связи между ними.
Если вы еще хотите чего-то добавить в свою игру, то есть возможность облагородить творение переменными, условной логикой, изображениями, CSS и javascript. Результат Twine экспортирует в формате HTML. Такой подход дает возможность с легкостью делиться своими творениями.
На данный момент последняя версия Twine это 2.1.3, которая доступна для Linux, Windows, и Mac OS. Она лицензирована под GPL v3.
2.Quest
Quest – еще один вариант для тех, кто не умеет программировать. Приложение сопровождается визуальным редактором скрипта. Последний позволяет выбирать определенные команды из списка без необходимости их запоминать. Quest позволяет создавать как текстовые адвенчуры, так и книги-игры.
Как и Twine Quest можно расширить с помощью изображений, музыки, и звуковых эффектов. У вас даже есть возможность вставки роликов с YouTube или Vimeo и модификации интерфейса финальной версии игры с помощью HTML или javascript.
Последняя версия для Windows 5.7.0. Если у вас Linux или Mac, то можете использовать онлайн редактор. Он лицензирован под MIT. Исходный код доступен здесь.
3.Squiffy
Squiffy – это еще одно средство для создания текстовых игр от разработчиков Quest. Его отмечают как “простой способ создания интерактивной прозы”. Squiffy не сильно отличается от предыдущих вариантов, так как позволяет выводить результат в HTML и javascript, как и Twine, чтобы можно было сыграть в браузере. Для превращения игры в приложение можно использовать PhoneGap.
Самый актуальный релиз Squiffy 5.0. Его можно запускать на Linux, Mac и Windows; можно использовать в браузере. Она лицензирована под MIT. Исходный код здесь.
4.TADS
TADS или Text Adventure Development System – это “прототипный предметно-ориентированный язык программирования и набор стандартных библиотек” для создания интерактивной прозы. Наиболее свежая версия языка TADS основана на C++ и javascript. Она предоставляет компилятор как для создания игр, так и для самой игры.
TADS вне всяких сомнений самый сложный вариант из представленных в этом списке. Не уверен какая у него лицензия, но если верить официальному сайту, то любая созданная на нем игра может быть распространена и продана без ограничений.
5.Inform
Как и предыдущие варианты, Inform – это более чем простая программа для создания интерактивной прозы. Inform представляет собой целую “систему оформления интерактивной прозы на основе естественного языка”. Широкий перечень средств, включенных в нее, позволяет создавать “адвенчуры, исторические симуляторы, захватывающие истории или экспериментальное цифровое искусство”. Завершенный исходный код “читается как предложение на английском языке, что делает работу со средством более доступной для не-программистов”.
У Inform есть библиотека созданных пользователями расширений, которые могут добавить возможностей вашим историям. Авторы написали электронную книгу, призванную помочь писателям в освоении программы. Inform можно запускать на Linux, Mac и Windows. Linux версия использует фреймворк GNOME. Наиболее актуальный релиз Inform 7.0.
6.Ren’Py
Ren’Py – средство для создания графических романов. Я даже хотел не включать его в этот список, так как оно слишком лаконично для упоминания. Если верить сайту, то он является “бесплатным и кроссплатформенным движком для цифровых рассказов. Он позволяет с легкостью комбинировать слова, изображения и звуки для создания визуального повествования и игр, симулирующих жизнь”.
Как и несколько ранее уже упомянутых вариантов, Ren’Py работает со своим собственным языком, но при этом предоставляет поддержку кода на скриптовом языке программирования Python. Ren’Py предлагает поддержку Linux, Windows и Mac. В игры, созданные на нем, так же можно играть на iOS и Android. Вы даже можете создать версию игры для загрузки в Steam. Большая часть Ren’Py лицензирована под MIT. На исходный код можно взглянуть здесь. Актуальная версия 6.99.12.
Интерактивная проза была первой попыткой программистов познать еще зарождавшийся мир компьютерных игр. Сегодня они до сих пор не потеряли актуальности, так как в них можно играть где угодно, да и средств для их создания достаточно.
Когда я был моложе, то прочел много книг из серии “Выбери свое приключение”, так что мне понятна притягательность такого рода игр. Замечательно, что сегодня сделать что-то подобное не представляет особых сложностей.
Вы когда-нибудь играли в/создавали интерактивную прозу? Есть ли у вас любимые представители жанра? Может я не упомянул какие-то средства? Вы вольны оставить любые замечания, так как они будут очень полезны.
Если статья показалась вам интересной, пожалуйста, поделитесь ей с другими. Спасибо!
Создай свою текстовую игру онлайн за 5 минут!
Создать текстовую игру онлайн стало просто как никогда.
Не надо обладать навыками программирования, чтобы написать свою первую простенькую игрушку уже через 5 минут!
Не будем тянуть кота за хвост, приступим к созданию своей новой текстовой игры!
Структура языка очень похожа на URQL, а значит тем, кто знаком с “уркой”, разобраться будет проще некуда. Но синтаксис языка построен таким образом, что все символы базовых конструкций можно набирать не меняя раскладки клавиатуры на русском языке. Это очень удобно, когда, что называется, нашло вдохновение, и нет времени спотыкаться об англоязычные операторы.
Урок 1. Создаем текстовую игру онлайн с полного нуля.
Итак, от простейшего к простому.
Написать Аперо-игру – это значит написать “код”, который понимает платформа Аперо.
Что же из себя представляет “код” для Аперо?
Не пугайся слова код, никаких “010010” из матрицы здесь не будет.
Код для Аперо – это обычный текст, размеченный особым образом.
В процессе обучения сразу пробуйте выполнять примеры, которые мы будем разбирать.
Для этого создай тестовую онлайн игру для обучения здесь, назови например “Обучение” и описание, например: “Это моя игра, в ней я научусь создавать свои текстовые игры онлайн на платформе Аперо”. (Доступно только зарегистрированным пользователям)
Нажми кнопку “Создать!”, и игра появится в твоем списке разработки здесь. После этого появится блок для редактирования исходного кода, туда ты будешь вводить свой код. Там уже есть базовый исходный код для примера, но его можно удалить.
После этого ты можешь нажать кнопку “Тестовый запуск игры!”, и откроется страница твоей только что созданной новой текстовой онлайн игры, на ней ты можешь посмотреть, как будет выглядеть игра для игрока.
Таким образом происходит создание текстовой игры прямо здесь на сайте онлайн. Теперь вернись в редактирование кода и удали весь базовый исходный код для примера, сейчас мы будем создавать текстовую онлайн игру с полного нуля.
Вывод текста
Давай напишем текст. Просто введи любое слово или предложение в форму для ввода исходного кода. Можешь в несколько строк (через enter). Например так:
После этого нажми кнопку “Тестовый запуск игры!” и узнаем, что же увидел бы игрок после начала этой текстовой игры.
Как видишь, в правом блоке появился точно такой же текст.
Платформа действует так: Начиная с первой строчки перебирает все по очереди и выводит их пользователю.
Но мы не пишем книги, мы учимся создавать текстовые игры, и поэтому показывать весь текст игроку сразу мы не хотим.
Чтобы остановить платформу нужно написать так:
Обрати внимание на первый символ в строке “” – это косая черта, наклоненная влево. Ее так же называют “обратный слэш”.
Это специальный символ для платформы, чтобы она понимала, что это команда, а не обычный текст. Если слово “СТОП” в коде было бы написано без обратного слэша, то платформа просто вывела бы его пользователю на экран как обычный текст.
Чтобы понять, как работает команда стоп, выполним следующий пример:
После этого нажми кнопку “Тестовый запуск игры!” и посмотри на результат выполнения.
Платформа показывает игроку первую строчку, потом встречает команду СТОП и прекращает выполнение. Все просто.
Само слово “СТОП” тоже не будет видно пользователю в процессе игры, это служебная информация.
Локации
Теперь нам нужно научиться переходить от выполнения одного куска кода к другому. Для этого надо разбить код на отдельные участки, или по-другому “локации”.
Чтобы различать локации между собой, они должны иметь свои названия. Причем уникальные, то есть названия локаций не должны повторяться.
Если хочешь быть уверен, что имя локации задано правильно, используй только кириллические и латинские символы в нижнем регистре и знак “_” для разделения слов в имени переменной.
Название локаций не будет видно пользователю в процессе игры, это служебная информация для автора.
Не забывай в конце каждой локации писать строчку с командой СТОП.
Напишем парочку локаций:
В коде выше есть две локации с именами “Первая локация” и “Вторая локация”.
Сначала код выполняется начиная с Первая локация и до команды СТОП
После запуска мы убедимся, что выполнился только код первой локации. А как же игроку попасть на вторую локацию? Для этого есть кнопки.
КНОПКА
Кнопка создается так:
Что же произойдет после запуска? На экране появится кнопка с текстом “Перейти на вторую локацию“, которая будет видна игроку. А если он на нее нажмет, то попадет на локацию с именем “Вторая локация“, которая должна быть объявлена ниже.
Добавляй хотя бы одну кнопку на каждой локации. Учти, если локация с именем, указанной в кнопке не объявлена в исходном коде, то появится ошибка. Поэтому для каждой кнопки должна существовать локация, на которую ведет эта кнопка.
А теперь вспомним, чему мы научились в этом уроке, и закрепим все это в следущем примере.
Запустим и посмотрим, что получится!
Кнопки работают, при нажатии мы можем перемещаться по локациям.
Уже даже этого достаточно, чтобы создавать свои простенькие текстовые онлайн игры! А теперь попробуй сам! Потренируйся, создай несколько локаций, создай в них по несколько кнопок, а не одну! На этом первый урок заканчивается, спасибо! В следующем уроке мы научимся создавать переменные и условия для развилок! [Урок 2. Создаем развилки в текстовых играх в разработке]
Источники:
https://app2top.ru/game_development/kak-sozdat-tekstovuyu-igru-50013.html
https://omgubuntu.ru/6-oupiensorsnykh-sriedstv-sozdaniia-tiekstovykh-ighr/
https://apero.ru/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C-%D0%B8%D0%B3%D1%80%D1%83