О развилках, вводе и выводе
Обо всех командах Редактора можно прочитать тут \Команды
О принципах работы переменных - тут \Переменные
О листах - тут \Листы
Развилки в Мейконе реализованы в виде таблиц, в которых вы записываете развитие событий параллельно. Таких таблиц, символизирующих развилку в истории, глобально есть 2 типа. С кнопками выбора (1 шт) и без (3 шт).
Команда \выбор
Чтобы создать сюжетную развилку с кнопками выбора, напишите команду \выбор (или сокращенно \в) и цифру количества ответов(=развилок). В нашем Редакторе их может быть максимум 6 за раз, но вы также можете делать выборы в выборе, продолжая разветвление сюжета до бесконечности. Команда \выбор2 вызывает таблицу 2 на 2, где шапка столбца – это текст, который будет на кнопке ответа, а под ней – последствие этого ответа. В шапке столбца (=кнопке ответа) можно применить команды \вывод().
Последняя строка перед таблицей выводится не самостоятельно, а в текстовом фрейме над ответами. В ней вы можете написать вопрос, на который отвечает игрок или «…», если не хотите, чтобы в текстовом фрейме над ответами было что-то конкретное.
Пример 1: Четыре варианта ответа
- Как только таблица заканчивается, последующий текст становится единым для любого развития событий.
Пример 2: Выбор в выборе
Пример 3: Выбор с переменной (=с последствием)
- Более подробное объяснение принципов работы переменных описано здесь.
- Если значение переменной не меняется, т.е. \п(психолог+0), то мы можем не писать об этом вообще.
- Переменную нельзя прописывать в «шапках» (желтых полях таблицы), только в основном тексте и развилках
Команда \если
Чтобы применить результат ранее совершенного нами выбора, мы используем логическую операцию «если», которая «вспоминает» принятое ранее решение. Предположим, мы дали игроку выбор, на какую картину посмотреть Олегу:
Дальше у нас идет длинный общий текст, после которого мы хотим снова вернуться к тому, какую картину выбрал игрок: «если переменная картина=1, то» и выводится текст, где с Олегом беседуют о большой картине. «Если переменная картина=2, то» выводится текст, где с Олегом говорят о «возлюбленных».
В нашем Редакторе это можно реализовать с помощью команды \если (или сокращенно \е) и цифры количества развилок. Их также, как и в случае с функцией \выбор, может быть максимум 6 за раз. Разница между \выбор и \если в наличии (при \в) или отсутствии (при \е) кнопок с выбором. \если направляет игрока по той или иной развилке согласно уже сделанным ранее выборам с помощью указания в шапке столбца одного единственного условия для этой развилки (только одна переменная; про несколько условий - ниже).
Важно! Команда \если нужна в случае, когда мы ВСПОМИНАЕМ прошлый выбор или сверяем актуальное значение накопленных статов. Если у вас развилска моментальная, то и прописывайте ее полнотсью в столбцах таблицы \выбор, а не делайте после выбора сразу таблицу \если!!!
Пример 1:
Пример 2: Условие также можно поставить с помощью сравнения значения переменной игрока с нужным для определенного исхода:
Важно! Если вы ошиблись и неправильно посчитали условие для прохождения по какому-то из пути — то есть игрок дошел до момента с развилкой и для него не выполняется ни одно из условий, указанных в шапке, или выполняются несколько/все — игра не остановится. Программа автоматически продолжит повествование, как если бы выполнялась условие первого столбца.
Что делать, когда в одном случае что-то должно происходить, а в другом - нет?
Если есть условие (а команда \если - это условие), значит есть выбор, когда:
- 1) оно выполняется и
- 2) оно не выполняется
Проще говоря, программа не понимает недосказанностей. Она понимает только «да» - когда условие выполнено и «нет» - когда не выполнено. Поэтому даже если ничего не должно происходить, мы должны ей об этом сообщить:
Пример 3:
Стоит отметить, что первый вариант «не дарил» —это несуществующее значение переменной (мы ее нигде не объявляли ранее, существует только «подарокГостя=подарил»). То есть получается,что это невыполнимое, невозможное условие. Но! Благодаря свойству таблицы:
«Если не выполняет ни одно из условий, то собития идут по первому столбцу» -
- мы реализуем механику «не равно», когда в одном случае (при равенстве) собитие есть, а при отсутствии — нет (или оно просто может быть другим).
Также доступен вариант, когда шапка первого столбца остается пустой — эффект тот же самый (ничего не написано = невозможное условие)
И все-таки! Мы просим вас следовать четкой логике, то есть когда переменная «равна» чему-то, а не «не равна». А значит контролировать все события переменными самостоятельно, а не оставлять его на вольное решение программы!
Что делать, когда у меня есть несколько условий?
Сколько условий в одновременно должно быть выполнено, столько таблиц и должно быть.
Как можно делать «выбор в выборе», так можно и делать «если в если», то есть «условие в условии»
Пример 4:
Соответственно, таких вложений может быть столько, сколько вам нужно для наиболее точной развилки (в том числе в таблицах \если можно прописывать условия \макс и \мин, о них ниже)
Условие: определененное количество статов
У нас пока нет команды выбора, в которую можно отдельно прописать конкретное требование переменной, но она появится.
Сейчас эту функцию можно реализовать так:
Или с помощью Листов (подробнее об их работе тут) и команды \если:
Получается: выбор «за стат» и обычный ➡ если «хватает» - то фрагмент истории за стат; если «нет» - то уведомление «у вас недостаточно статов для этого действия!» ➡ возврат на начало листа командой \лист() ➡ повторный выбор
Проверка работы команды
Если вы хотите проверить, правильно ли работают условия, но не хотите проходить всю историю заново (в тестовой читалке набранные вами переменные не сохраняются, если не проходить игру через «Перейти к следующей главе», создавая эффект единого чтения), вам нужно просто объявить нужное вам значение переменнойгде-нибудь перед этой развилкой, имитируя ситуацию, когда этот стат набран в конкретном количестве.
Команды \макс и \мин
Данные команды работают по такому же принципу, что и \если, только позволяют сравнивать значения не с каким-то числом, а между собой. Чаще всего это применяется в случаях, когда игроку доступно несколько любовных линий и мы должны дать ветвь истории с фаворитом с наибольшим показателем; или разные способности и иные статы, которые можно определить как «путь», по которому идет игрок. Условие (шапка столбца) для перехода по данной развилке устанавливается автоматически. Если вы хотите, чтобы помимо выбора определенного пути игроку был доступен путь «равенства» или «баланса» статов, то вдобавок ко всем перечисленным переменным допишите знак = также через запятую. Он станет заголовком дополнительного столбца.
Пример 1. Максимальное значение
Пример 2. Максимальное значение или равенство
Пример 3. Минимальное значение
Пример 4. Минимальное значение или равенство
Важно: Если при применении команд \макс и \мин два или более значений переменных равны, то для читателя развитие историй идет по пути, описанным под первой наибольшей/наименьшей переменной соответственно (первому столбцу - как и в других таблицах).
Команды \ввод() и \вывод()
Они используются, когда мы хотим персонализировать игровой процесс и/или добавить в него небольшой интерактивности.
Каждый раз, когда вы будете писать команду \ввод(), то для игрока будет выводиться поле для ввода любой информации, и, как в случае с выбором, он будет видеть самую последнюю строчку, в которой вы можете объяснить, что вводит игрок.
В нашем Редакторе таким образом можно добавлять обращения в текст (\вывод(кличка_друга), как жизнь?), но не менять имена над диалоговым фреймом (имя папки персонажа в Библиотеке). То есть если вы создадите переменную и скажете ввести ее значение игроку \ввод(имя_Питомца), то каждый раз при обращении к зверьку (\вывод(имя_Питомца), малыш, будь умницей.) будет выводится введенное значение, но имя персонажа над диалоговым фреймом (= имя его папки в Библиотеке) не изменится.
Помимо обращений и посланий, командами \ввод и \вывод можно давать загадки, открывать и закрывать доступ к информации по «паролю» и так далее.
Пример 1. Обращение
Небольшое пояснение:
- Как назвать монстра? — строчка над командой - короткий уточняющий текст в блоке над полем ввода
- \ввод(имя_монстра, Чебурек) — открывает поле для ввода информации; после запятой - ваш пример; если запятой не будет, в поле будет пусто
- …ты будешь зваться \вывод(имя_монстра) —вместо команды будет введенное игроком значение переменной
Важно понимать, что если в одной из развилок вы применили команду \ввод(), а в другой нет – то при применении «вывода» по этой переменной в дальнейшей истории возникают трудности: в 50% случаев игрок будет видеть там 0 (так как изначальное значение всех переменных равно нулю). Чтобы избежать такие ситуации, можно:
- Строить историю так, чтобы аналогичная команда ввода использовалась во всех развилках
- Самостоятельно присвоить переменной нужное значение вне зависимости от пожеланий игрока
Пример 2:
- Каждый раз проверять игрока на ввод этой переменной с помощью команды \если:
Пример 3:
Внимание – делаем загадки!
Вновь вспоминаем негласное правило таблиц \если: если не выполняется ни одно из условий перехода, то игроку предоставляется первый вариант. Это правило можно также использовать во всех случаях, когда есть развилка с неправильным ответом: укажите в шапке первого столбца значение переменной, которое отлично от правильного ответа (или оставьте пустым) – и все: если ответ неправильный, то история пойдет по этому пути.
В случае же с «правильным» мы должны учитывать регистр: важно ли вам, в каком регистре написан текст? Если вы загадываете загадку, то игрок может написать правильный ответ с маленькой или большой буквы. Чтобы не портить впечатление игрокам, советуем вам предусматривать все возможные варианты:
Пример: Загадка с правильным и неправильным ответом
\вывод в уведомлениях
У нас также есть возможность выводить значение переменной в уведомлении. Для этого выполняем 2 простых шага:
1) Временно где-нибудь пишем команду \вывод() с нужным статом и копируем ее (как использовали - удаляем)
2) Вставляем скопированную команду в нужный фрагмент уже внутри команды \уведомление() (до нажатия Enter`а или после - не важно)
Готово!
Работает только копирование, просто прописать команду не получится, так как иначе внутри команды нарушается логика скобок!
Обо всех командах Редактора можно прочитать тут \Команды
О принципах работы переменных - тут \Переменные
