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

Добавил пользователь Валентин П.
Обновлено: 19.09.2024

Люди подскажите как и через какую программу можно создать текстовую онлайн игру типо легенда наследие драконов

Game Maker — один из самых известных конструкторов игр.
Создавать игры в нём достаточно просто, это не требует предварительного знакомства с каким либо из языков программирования.

Игра в GameMaker строится как набор игровых объектов, поведение которых задаётся путём программирования реакции на события. Программировать можно, используя графическое представление программ (близкое к блок-схемам) в режиме drag-n-drop. Например, для того чтобы начать условный оператор, нужно перетащить на панель действия восьмиугольник с иконкой, обозначающей тип проверки, а затем, возможно, ввести какие-либо значения в появившуюся форму. Имеется в нём и скриптовый язык GML похожий на JavaScript.

команда=get_integer('Вопрос',0 (это кол-во по умолчанию)) — выводит на экран строку, в которую игрок должен вписать число. "Команда" проверяет вписанное число. К примеру:

zub_number=32
zub=get_integer('Сколько зубов тебе выбить?',0)
zub_number-=zub

команда=get_string('Вопрос','' (это вписанное по умолчанию)) — выводит на экран строку, в которую игрок должен вписать любые символы. "Команда" проверяет вписанное. К примеру:

name=get_string('Как вас зовут?','Безымянный')
show_message('Что ж, привет, '+string(name))

Также может пригодиться:
команда=show_menu('',0) — выводит список возможных вариантов (разделяются символом |). Команда — выбранный вариант. В отличии от show_message_ext, начинается с нуля! К примеру:
show_message('Выбери оружие!')
otvet=show_menu('Пистолет|АК|Дробовик',0)
if otvet=0
if otvet=0
if otvet=0

И, наконец, вот команды для окраски вашей текстовой игры:
message_button(спрайт) — кнопка ответа теперь — ваш спрайт
message_size(width,height) — ваш размер окна (стандартный размер — 400 на 300)
message_background(фон) — фон окна меняется на ваш.

Надеюсь, этот урок поможет вам в создании текстовой игры. Желаю удачи!


What is Ren’Py?

Ren’Py is a visual novel engine – used by thousands of creators from around the world – that helps you use words, images, and sounds to tell interactive stories that run on computers and mobile devices. These can be both visual novels and life simulation games. The easy to learn script language allows anyone to efficiently write large visual novels, while its Python scripting is enough for complex simulation games.

Ren’Py is open source and free for commercial use.

Where does it run?

Where do I get it?

Who is it sponsored by?

To ask questions that aren’t appropriate for a public forum, or to find a speaker for your visual novel-related conference or con, please contact us via email.

How do I keep in touch?

We make news about Ren’Py available on a number of social platforms:

Twitter: You can follow Ren’Py’s lead developer @renpytom for release announcements, development news, and general commentary on life.

Создание текстовых игр — есть ли простые инструменты?

Facebook: We announce new releases on our Facebook page.

Featured Games

Ren’Py has been used to create over 1,500 visual novels, games, and other works. You can find them at the official Ren’Py Games List, and the list of Games made with Ren’Py on itch.io.

Here are just a few of the games made with Ren’Py.

RenPy.

Создание текстовой игры

Урок 1. Базовые команды


Прочее renpy

Курс посвящен не столько Ren'Py вообще, сколько моддингу everlasting_summer-1.2. Однако данные знания будут полезны и при создании игр на данном движке.

Целевая аудитория: желающие попробовать себя на роль сценариста и/или редактора.

Требуемые навыки: уметь редактировать текстовые файлы, обладать зачатками разума.

Что нам понадобится?Текстовый редактор, поддерживающий:
— Unicode, в частности UTF-8
UTF-8 — многобайтная кодировка, стандарт юникода de facto. Русские символы кодируются 2 байтами, что хорошо видно ниже.


Если поддержки нет, вы скорее всего увидите что-то такое:

— Как CR/LF, так и Unix end of line
В разных ОС разные традиции кодирования переноса строк. В DOS и Windows используются 2 байта — CR и LF, в Linux — 1 байт LF.


Если поддержки нет, вы скорее всего увидите что-то такое:

— (желательно) замену табуляции на 4 пробела
Под Windows я использую AkelPad, под Linux — Kate

Как грузится Ren'Py?1. Компилирует все файлы *.rpy в папке /game/. Результат = *.rpyc-файлы
2. Загружает все *.rpyc-файлы из папки /game/
Вывод: если подложить .rpy-файл в любое место в папке /game/, то он подгрузится
Кстати, имя файла ни на что не влияет.

Структура rpy-файла- Текстовый, человекочитаемый файл
— 1 команда = 1 непустая строка файла
— Исключение — блоки
— Блок имеет команду-шапку на первой строке.
— А также команды-строки, входящие в него
— Которые тоже могут быть блоками
— Вложенные команды — на 4 пробела правее

Базовые команды label, jump и returnlabel — единственный в этом уроке блок
Команды внутри него выполняются сверху вниз
jump — переход к 1-й команде соответствующего блока
return — возврат к главному меню игры.

Базовые команды: описания и реплики"Вот так оформляется текст от имени автора"
th "Вот так оформляются мысли Семёна, те самые, которые с ~ по краям"
me "Реплика вслух от имени Семёна"

ОСТОРОЖНО: длинная строка не поместится в отведенную в игре рамочку.

Формат имя "Текст"

un — Лена (Уныл-тян)
dv — Алиса (Двач-тян)
us — Ульяна (CCCР-тян)
sl — Славя
mi — Мику
uv — Юля (ЮВАО-тян)
el — Электроник
sh — Шурик
mz — Женя (Мицгёл)
mt — Ольга Дмитриевна (Мод-тян)
cs — Виола (Коллайдер-сама)
pi — Пионер


play music — начать играть музыку.
Список музыки
stop music — прекратить играть музыку.

Возможные ошибки
Tab characters are not allowed in Ren'Py scripts. — где-то табуляция вместо пробелов.
is not terminated with a newline. (Check strings and parenthesis.) — не закрыта кавычка
intendation mismatch — проверьте, всегда ли отступаете по 4 пробела
expexted statement — неправильная команда
При передаче show/scene необъяленного изображения предупреждение возникнет лишь во время игры. Сверху появится надпись "Undefined images" и имя изображения.

При попытке передать play неправильную музыку, ошибка возникнет во время игры. Игра упадет с ошибкой KeyError: ' '

$регистрация модификации
Для того, чтобы появилась возможность запуска модификаций, нужно зарегистрировать ваш мод. Вставляем следующий код в начало rpy-файла:
init:
$ mods [" __ "] = u" "

Для запуска нужно перейти в меню "Моды и сценарии" и выбрать , после чего произойдет переход к метке .
Например:
init:
$ mods ["student1__lesson2_task1"] = u"Сцена 1"
label student1__lesson2_task1:

Обратите внимание, ник нужно отсекать ДВУМЯ подчеркиваниями __

.rpy с заданиями сохраняем в %gamedir%\game

Подсистема для их запуска
— Версия 1.1: требуется скачать и установить мод-пак.

Далее: Новая игра -> Моды и пользовательские сценарии
— Версия 1.2: modloader встроен в игру. Настройки -> Моды и пользовательские сценарии

Вы — Азунян. Напишите что-нибудь интересное!
Примерная тема: одна из девочек решила пригласить Семёна посмотреть на свою комнату.
Задача: результатом должен быть гру-файл, начинающийся с метки lesson1_task3
Минимальный размер файла: 50 строк.

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

Напротив, ink изначально создавался не для веба. Он был создан как как подключаемый компонент для интеграции в классический игровой движок. В компании inkle мы используем его почти для всех наших игр — от 80 Days (изначально для мобильных платформ) до ещё не вышедшей Heaven’s Vault для PS4 и PC. Поскольку мы открыли исходный код ink, множество инди-разработчиков использовали его в своих играх, в частности, в Bury Me My Love и Where the Water Tastes Like Wine, номинантах IGF 2018 года.

На самом деле, писать истории для веба на ink просто! Это пошаговое руководство продемонстрирует вам, как написать простую игру на Ink, экспортировать её в виде веб-страницы, и опубликовать её в интернете.

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

  • Как начать работу с ink: скачиваем инструменты и пишем простой ветвящийся сюжет.
  • Как экспортировать игру для веба: создаем веб-страницу с вашей игрой
  • По желанию: Как поменять внешний вид страницы: изучаем основы CSS.
  • Как загрузить на itch.io: идеальное место, куда можно загрузить вашу игру, чтобы в неё могли поиграть другие люди.
Начинаем работу с ink

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

Мы будем использовать Inky — официальный редактор для создания игр на Ink. Итак, вперёд — давайте его скачаем!

Запустив редактор, вы увидите окно с двумя колонками. Слева — поле текстового редактора, где вы будете писать код игры, а справа — окно предварительного просмотра, в котором можно в вашу игру поиграть.

Первое, что стоит знать про ink — это просто текст, но со специальной разметкой, которая делает его интерактивным.

Итак, давайте напишем предложение в редакторе слева, и оно появится в окне справа. Можно добавить несколько абзацев.


Анатомия ink-сценария

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


Полный текст ink-сценария — под спойлером.

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

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

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

1. Узлы (knots)


История состоит из множества связанных фрагментов, которые в терминологии ink называются узлами. Начало узла обозначается как минимум двумя знаками “равно” слева от имени узла, и по желанию — справа (например, === london ===). Синяя подсветка в Inky означает, что разметка Ink распознана и написана синтаксически корректно.

Весь текст под заголовком узла относится к этому узлу.

Имя узла (в котором не может быть пробелов) не отображается в самой игре; оно используется для ссылок на фрагменты нашего интерактивного повествования.

2. Переходы (diverts)

Раз уж мы заговорили о ссылках, вот как выглядит переход:
Используя стрелку перехода (вводится как “минус” и “знак больше”), мы даём указание перейти на другой узел. При воспроизведении истории переход произойдёт автоматически и незаметно для игрока. Например, в самом начале нашей истории, после отображения вступительного параграфа, у нас есть переход “-> london”, который переносит игрока к узлу с этим именем.

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

3. Выборы (choices)

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

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

Вы можете добавить дополнительный текст после выбора, и он отобразится после выбора этого варианта. Например:

выдаст тот же текст, что и:

Ink очень гибок — он предлагает множество способов структурировать игровой текст.

И последняя заметка по структуре ink-сценария: воспроизведение всегда начинается с самого начала файла и идёт вниз. Однако если весь ваш контент разбит на узлы, необходимо, чтобы в самом начале скрипта у вас был переход на стартовый узел (например -> intro).

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

Если желаете: условное содержимое

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

Движок ink запоминает посещения каждого узла, и вы можете проверять это позже. Например, вот как можно определить, видел ли игрок узел под названием “catacombs”:
В фигурных скобках вы можете написать несколько строк текста, а также вставлять переходы и варианты выбора.

Однако есть более простой способ создания вариантов выбора, отображаемых при определенных условиях. В примере ниже мы показываем вариант выбора, только если игрок уже посещал определенный узел:
Если вы хотите инвертировать условие — убедиться, что игрок НЕ посещал катакомбы — вы можете просто приписать “not”:
Наконец, можно использовать “and”, “or” и круглые скобки для создания сложных условий. Вот несколько примеров:

Другие возможности ink
  • Как в любом языке программирования, вы можете объявлять переменные и выполнять математические операции.
  • Мы использовали "+" для вариантов выбора, хотя обычно рекомендуется использовать "*". Разница в том, что вариант выбора с "*" не появляется повторно после того, как был выбран. Это удобно для неоднократно посещаемых узлов, где вы не хотели бы утомлять игрока повторением одних и тех же вариантов.
  • Есть более сложный в изучении, но более простой в написании способ создания сложного ветвления под названием “плетение” (weave), который не требует указания заголовка каждой секции. Большая часть нашей игры “80 days” написана таким образом.
  • Внутри узлов можно создавать под-секции, которые называются “стежки” (stitches).
  • Можно писать текст, который меняется в зависимости от условий или с переходами прямо посреди предложения, и это довольно просто.
  • Вы можете разбить ваш ink-файл на несколько маленьких и связать их.
  • И многое-многое другое!
Экспорт для веба

Следующий шаг — сохраним нашу игру в виде файлов, которые можно загрузить на какой-нибудь хостинг. Чтобы сделать это в Inky, выберите File, потом “Export for web. ”, и введите название вашей игры. Оно будет использовано для видимого заголовка страницы (поэтому смело используйте пробелы и заглавные буквы!), и для имени папки, куда будут сохранены файлы игры.

Когда вы будете в дальнейшем редактировать игру, и в особенности если вы будете менять внешний вид игры (см. ниже), используйте “Export story.js only. ” и сохраните файл в ту же папку, перезаписывая “yourStoryName.js”. Это единственный файл, который нужно обновлять, когда вы меняете содержимое ink-сценария. Все остальные файлы — это часть веб-шаблона, и если вы изменили его внешний вид, вряд ли вы хотите потерять ваши изменения, перезаписав все файлы при экспорте.

Ну вот, почти всё готово. Вы можете перейти к шагу “Загрузить на itch.io”, если хотите. Однако, если вы хотите добавить картинки, вставить подпись, или изменить внешний вид вашей игры, читайте дальше!

Специальные функции для веба

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

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

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

Изображения

Вот как можно вставить изображение:
Файл изображения должен быть в той же папке, что и другие файлы игры. Вы можете положить его в подпапку и указать путь:
Вы можете добавить тег IMAGE и в конец строки. Изображение всегда будет показано над игровым текстом.
Это потому, что все теги связаны с определенными строками текста, и если в строке всего один тег, он будет ассоциирован со строчкой текста под ним.

Очистка экрана

Ещё одна функция веб-шаблона Inky — тег clear:
Эта команда удалит весь текст из игровой области, после чего новый текст будет добавляться с верха страницы. Убедитесь, что вы вставляете этот тег сразу после варианта выбора! Если вы вставите его посреди текста, та его часть, что перед тегом, будет удалена до того, как игрок успеет его прочесть.

Глобальные теги: темная тема и автор

Чтобы использовать тёмную тему оформления, поставьте это в самом начале вашего ink-сценария:
Веб-шаблон прочитает этот глобальный тег и включит встроенную тёмную тему. (Для этого он использует класс “dark”, применяющийся для всей страницы. Селектор “.dark” в CSS-файле описывает настройки тёмной темы, которые перекрывают основную.)

Чтобы указать имя автора, укажите это в начале вашего ink-сценария:
Веб-шаблон найдёт эту строку и вставит подзаголовок с вашим именем под названием игры.

Собственные CSS классы
Пример собственного CSS: Концовка
Перезапуск игры
Меняем внешний вид
  • index.html — HTML-файл, который связывает все остальные. Именно его нужно открыть, чтобы запустить игру. Он сообщает браузеру базовую структуру страницы и указывает ему загрузить другие файлы.
  • main.js — основной JavaScript-файл, который содержит инструкции по воспроизведению ink-сценария, обработке тэгов и анимации.
  • style.css — это основной CSS-файл, описывающий внешний вид игры — цвета, шрифты, размеры, отступы и поля абзацев. Также здесь можно описать CSS-преобразования, например, чтобы текст проявлялся постепенно.
  • yourStoryName.js — это содержимое вашего ink-файла, экспортированного с помощью Inky. Этот файл уникален для вашей игры, в отличие от всех остальных, которые являются частью веб-шаблона Inky. Не нужно редактировать этот файл напрямую.
  • ink.js — это JavaScript-порт движка Ink.
Как менять шрифты и цвета

Шрифты в параметре font-family указаны в порядке приоритета, и браузер выберет из них первый доступный. В примере выше Open Sans — это веб-шрифт, который импортирован в самом начале CSS-файла. Если по какой-то причине этот шрифт не может быть загружен, браузер перейдёт к следующей позиции списка — “sans-serif”, шрифту без засечек по умолчанию.

Примечание переводчика:
Шаблон Inky по умолчанию использует для заголовков шрифт Quattrocento, в котором нет русских букв. Поэтому я бы порекомендовал отредактировать style.css, заменив первую строчку файла на
и заменить Quattrocento на Lora в 16-й строке, в стиле для h1, h2.

Базовые варианты шрифтов могут быть заданы как serif (шрифт с засечками по умолчанию) и sans-serif (шрифт без засечек по умолчанию).

Вот некоторые из CSS-селекторов и правил в файле:

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

Это селектор для ссылок, по которым можно кликать (в HTML терминологии это тег гиперссылки). Ссылки используются на нашей странице для оформления вариантов выбора, но это не единственное возможное их применение.

Здесь :hover — это псевдо-класс, и он используется для выбора элемента, когда на этот элемент наведен указатель мыши.

CSS применяет стили в соответствии с их приоритетами, которые зависят от того, насколько специфичен селектор (чем выше специфичность, тем выше приоритет) и положения в файле (чем ближе к концу файла, тем выше приоритет). Это позволяет вам определять начальные стили в общих чертах, а затем постепенно переопределять их. Например, сначала мы определяем стиль для h2, а затем с помощью селектора .dark h2 переопределить часть стиля для h2: мы меняем цвет, когда тёмная тема активна (т.е. когда класс .dark применен ко всей странице)

Пример: Большой красивый заголовок


Выберите шрифт на Google Fonts, и вставьте строку @import в самое начало вашего CSS-файла, например:
Затем измените стиль для заголовка:

Примечание переводчика:
Не все шрифты на Google Fonts содержат русские буквы! Сначала выберите Languages: Cyrillic в панели справа, а уже потом выбирайте шрифт.

Загружаем на itch.io

Вот вы и закончили создание вашего шедевра! Пора поделиться им с миром.

Конечно, вы можете загрузить вашу игру на любой хостинг для веб-страниц. Мы рекомендуем itch.io по ряду причин — там хорошее сообщество инди-разработчиков, это одно из немногих мест, куда можно загружать игры в веб-формате, а главное, бесплатно. Если захотите, вы даже можете продавать вашу игру.

Также itch.io позволяет загрузить черновую версию вашей игры, чтобы вы могли протестировать её перед выпуском. Ну и наконец, на itch.io скоро состоится ink jam, и если ваша игра уже загружена на эту платформу, вы легко сможете принять участие.

Примечание переводчика:
Несмотря на то, что на ink jam принимаются игры на любом языке, оцениваться будут только игры на английском.

Когда вы будете готовы выпустить игру в свет, измените этот параметр на Public.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

> - если он в бункере; если все еще в магазине, то ничего не пишем, это значение сохранилось с прошлого параграфа.

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

>Пишем текст про то, как ГГ выжил в бункере на буханке бородинского. >

>Пишем текст про то, как ГГ умер с голода в бункере. >

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

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

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

Я >пошла >пошел > в магаз за хлебом.

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

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

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

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

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

✌

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


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

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

Спрашивать, как создать текстовую игру, по сути, значит спрашивать, как программировать. Научитесь программировать.

Изучите программирование

Написание текстовых игр - хороший способ учиться.

Это самая сложная часть. Это займет время.

Первое, что нужно любой игре, - это цикл, ввод, вывод и что-то, что преобразует ввод в вывод. Вот как это будет выглядеть в Lua:

Выясните, что он делает и почему.

Когда вы понимаете, что вам нужно штат, изучите назначение переменных.

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

К тому времени вы уже знаете, как программировать.

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

То же самое в JS

Поскольку вы знакомы с JS, вот аналогичное семя для текстового приключения на основе JS:

JSFiddle удобен для разработки эскизов HTML / CSS / JS и обмена ими. MDN и WebPlatform - мои любимые ресурсы для веб-разработчиков.

Читайте также: