1234
ИНТЕРАКТИВНЫЕ РАССКАЗЫ
Fahrengeit
 МОДЕРАТОР 
24 марта 2017, 02:05
Интерактивное Вступление

Интерактивное вступление очень рекомендуется к прочтению, потому что я это всё-таки зачем-то писал, не пропадать же творению она довольно быстро введёт в курс дела и, что самое главное, покажет примерный результат стараний того, кто за написание интерактивного рассказа возьмётся.
Итак, с чего же нам, собственно, начать? С установки соответствующего редактора, конечно же. Его можно найти, пройдя по этой ссылке. Там мы берём свеженькую версию редактора Inky для той операционной системы, что у вас есть.
А можно не заморачиваться и пока что зайти на сделанный добрыми людьми сайт, где всё точно так же можно создавать, тестить и выдавать даже готовый результат.

Дальше надо всё-таки разобраться, как что-то написать, не так ли? Ну тогда идите сюда и освободите меня от лишней писанины! Сработало? Нет? В общем, точного ответа я сейчас вряд ли получу, так что всё же начну объяснить начальные принципы всего этого дела. И, разумеется, отвечу на любые возникающие вопросы)

Как я уже говорил, Ink это скриптовый язык, главное преимущество которого невероятная простота написания интерактивного рассказа на уровне написания обыкновенного. Всё это потому что скрипт и есть сам по себе текст, размеченный определённым образом, чтобы на выходе получалась интерактивная история. Конечно, я юлю, и что-то сложнее обычной Choose Your Own Adventure книжки без всяких условий и переменных не получится, но и это не так сложно, как может показаться. А пока что давайте посмотрим, как получается самый банальный CYOA (всё представленное в цитатах спокойно запихивается в браузерную версию, но по началу результаты я продублирую и здесь)

Текст и выборы

Первое, что должно появиться в интерактивном рассказе, это выборы. Не так ли?
* Ты соглашаешься.

Результат выбора

Как можно догадаться, маркировка со «звёздочкой» в начале строки отвечает за создание выбора. Количество выборов зависит лишь от того, как много последует строчек со звёздочкой в дальнейшем.
При этом текст выбора необязательно должен показываться именно так, как в выборе он обозначен. Ведь можно сделать так:

Первое, что должно появиться в интерактивном рассказе, это выборы. Не так ли?
* [Ты соглашаешься.]Разумеется, это так.

До выбора

Результат выбора

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

Первое, что должно появиться в интерактивном рассказе, это выборы. Не так ли?
* — Разумеется, это так[.], — отвечаешь ты.

До нажатия

Результат выбора

И вот вам вдогонку пример с несколькими выборами.

— Что такое? — спросил мой мастер.
* — Я немного устал[.], — повторил я.
— Вот оно что, — ответил он. — Какая неприятность.
* — Ничего, Месье[.], — ответил я.
— Очень хорошо.
* — Я говорю, что наше путешествие ужасное[.], и я уже хочу с ним покончить.
— Вот оно что, — недобро ответил он. — Я вижу, что вы расстроены. Ничего, завтра всё будет лучше.

До выбора

После выбора 3го варианта ответа

Узлы/Knots
Конечно, выборы и последующие реакции это хорошо, но на этом интерактивный рассказ не сделаешь — а как же ветви в приключении? Разумеется, такая структура, которая как раз из себя может представлять стандартную книгу-игру, есть. В Ink они называются узлами и являются точками, на которые можно переходить.
Узел это вот это (и обратите внимание, что содержимое пишется на английском, а так же запомните, что любые программы вообще редко любят отличные от английского языки):

=== top_knot ===

А вот переход к нему:

-> top_knot.

Если всё соединить, то получится как-то так:

Куда мы сегодня пойдём?
* Я бы сказал, но пускай это останется тайной.
-> nowhere

=== nowhere ===
Никуда. Мог бы так и сказать.
-> END

Прозаичный результат

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

Переход к узлу необязательно привязывается к выборам, он может использоваться и прямо в тексте:

Куда мы сегодня пойдём? Хотя постой, я уже знаю ответ. -> nowhere

Только стоит учитывать, что если вы напишите переход в строку, то и текст выведется в строку. И наоборот, если переход окажется на другой строке, то в рассказе будет перенос.
А в ситуациях, когда кровь из носа переход должен оказаться на другой строке, но хочется, чтобы текст был в одну, используется оператор glue:

<>

С ним следующий пример будет идентичен предыдущему.

Куда мы сегодня пойдём? Хотя постой, я уже знаю ответ. <>
-> nowhere

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

Я читаю книгу, но эта страница мне абсолютно не нравится.
* [Перелистнуть на страницу 28.]
-> page_28
* [Ужаснуться повороту сюжета на странице 13.]
-> page_13
* [Посмеяться над страницой 69.]
-> page_69

=== page_28 ===
А вот эта страница уже ничего такая.
->END
=== page_13 ===
Бу! Не ожидал, правда?
->END
=== page_69 ===
Здесь ты прочитал пошлый и несмешной анекдот. Но тем не менее посмеялся.
->END

Результат этого взгляните уж сами, попробуйте.

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

P.S. А ещё настало время узнать, что такое тире.
Тире выглядит так: —
Не путать с дефисом: -
Почему это важно, кроме банального правильного написания знаков препинания? В Ink это ещё один символ маркировки, который в начале строки будет восприниматься совершенно иначе.
Если вас всегда останавливало от правильного написания то, что обычная раскладка клавиатуры не позволяет это сделать без дополнительной боли, то всегда есть Типографская Раскладка Ильи Бирмана. Полезная штука в хозяйстве, правда.
obsidian
24 марта 2017, 13:02
Я хочу в этом квесте участвовать. Достаточно скопипастнуть содержимое из ката Фари прямо в сайт-редактор для более наглядного понимания как это работает. Привыкнуть бы)

Исправлено: obsidian, 24 марта 2017, 13:05
Rem
24 марта 2017, 18:15
 Fahrengeit @ 24 марта 2017, 02:05 
Главное сейчас понять, насколько интересно делать что-то дальше, а то может уже на этом моменте у всех до этого заинтересованных скука или абсолютное непонимание, что вообще происходит. Поэтому я пока что оставляю здесь пост, ожидаю ваших комментариев, чтобы понять, стоит ли что-то ещё писать на эту тему дальше.
Ну или вы действительно скажете, что выложенного туториала от самих inkle более чем достаточно, что как минимум упростит жизнь мне)

Я бы предложил не затягивать и сразу массово замутить какое-нибудь литзадание для пробы. Скажем сделать небольшой пролог за неделю. И в этой теме разбираться, если что непонятно и обмениваться опытом.
Я пока выборочно почитал полный мануал, переменные очень сильно порадовали. А вот как нормальный процентный рандом замутить пока не понятно, нашёл только шафл, но через него какой-то топорный рандом выходит.
~
Fahrengeit
 МОДЕРАТОР 
24 марта 2017, 18:23
 Rem @ 24 марта 2017, 18:15 
Я бы предложил не затягивать и сразу массово замутить какое-нибудь литзадание для пробы. Скажем сделать небольшой пролог за неделю. И в этой теме разбираться, если что непонятно и обмениваться опытом.

Тоже хороший вариант, потому что без практики далеко не уйдёшь.

 Rem @ 24 марта 2017, 18:15 
А вот как нормальный процентный рандом замутить пока не понятно, нашёл только шафл, но через него какой-то топорный рандом выходит.

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

 obsidian @ 24 марта 2017, 13:02 
Я хочу в этом квесте участвовать. Достаточно скопипастнуть содержимое из ката Фари прямо в сайт-редактор для более наглядного понимания как это работает. Привыкнуть бы)

Ну тут стоит потренироваться как раз-таки, и по поводу любых мыслей задавать вопросы. Так что можно попробовать действительно тестовое литзадание запустить в ближайшие дни, чтобы банально все могли поэкспериментировать.
Esper
24 марта 2017, 18:32
А можно не изучать новый движок а юзать юнити если что то будете делать? >_>
Я играю в игры в которые никто не играет. Я смотрю аниме которое никто не смотрит. Я делаю сабы которые никто не читает. Я разговариваю с людьми которых не существует. ~
Rem
24 марта 2017, 18:32
 Fahrengeit @ 24 марта 2017, 18:23 
Ну на самом деле просто, два раза по d10, первый шаффл выберет десятки, второй шаффл выберет единицы. И вот тебе процент.

Стоп, если там есть d10, то почему бы не быть сразу d100? о_О
~
Fahrengeit
 МОДЕРАТОР 
24 марта 2017, 18:49
 Rem @ 24 марта 2017, 18:32 
Стоп, если там есть d10, то почему бы не быть сразу d100? о_О

Ну это я упростил для понимания. d10 ты там делаешь ручками, функцией. Где у тебя функция будет выбирать от 1 до 10. Я для вступления сделал топорный d20, выглядит дико, но задачу свою выполняет всё же.

Топорный d20


 Esper @ 24 марта 2017, 18:32 
А можно не изучать новый движок а юзать юнити если что то будете делать? >_>

Да пожалуйста)
Хотя я бы всё равно предложил на досуге поизучать, потому что возможностей по работе с историей там куча (отслеживание всех параметров и удобное введение вариативности), и всё прекрасно встраивается в Unity.
Но как бы понятно, что я предложил Ink для тех, кто осваивает это с нуля. Литзадания будут в принципе на написание интерактивного рассказа, а платформа значения не имеет.

Исправлено: Fahrengeit, 24 марта 2017, 18:50
Esper
25 марта 2017, 11:04
Fahrengeit
Когда начинаем?
Я играю в игры в которые никто не играет. Я смотрю аниме которое никто не смотрит. Я делаю сабы которые никто не читает. Я разговариваю с людьми которых не существует. ~
Dangaard
 МОДЕРАТОР 
25 марта 2017, 19:09
 Fahrengeit @ 24 марта 2017, 04:05 
Главное сейчас понять, насколько интересно делать что-то дальше, а то может уже на этом моменте у всех до этого заинтересованных скука или абсолютное непонимание, что вообще происходит. Поэтому я пока что оставляю здесь пост, ожидаю ваших комментариев, чтобы понять, стоит ли что-то ещё писать на эту тему дальше.

Чтобы ты не думал, что мне неинтересно: мне очень даже интересно. Я давно питаю интерес к IF, и у меня есть старые задумки, которую я давно хочу воплотить именно в этом формате. Об Ink я раньше не слышал, но он действительно выглядит проще и доступнее, чем все, что я до сих пор смотрел на эту тему.
Rem
26 марта 2017, 02:46
Клиент гораздо удобнее сайта, там все изменения происходят в реальном времени, не нужно каждый раз тыкать на кнопку аплода. А ещё там реально крутая документация с понятными примерами. Но вашу ж мать, этот редактор жутко мелкий на моём разрешении и никаких настроек для масштабирования. ><
~
Fahrengeit
 МОДЕРАТОР 
26 марта 2017, 14:42
 Dangaard @ 25 марта 2017, 19:09 
Чтобы ты не думал, что мне неинтересно: мне очень даже интересно. Я давно питаю интерес к IF, и у меня есть старые задумки, которую я давно хочу воплотить именно в этом формате. Об Ink я раньше не слышал, но он действительно выглядит проще и доступнее, чем все, что я до сих пор смотрел на эту тему.

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

 Rem @ 26 марта 2017, 02:46 
Клиент гораздо удобнее сайта, там все изменения происходят в реальном времени, не нужно каждый раз тыкать на кнопку аплода

Ну клиент делали сами разработчики, сайт — творение народа, причём я даже не уверен, что оно до сих пор поддерживается. Для потестить и поиграться хороший вариант, но, конечно, с клиентом будет удобнее — он и html генерирует (который, правда, придется заливать куда-нибудь на сервер)

 Rem @ 26 марта 2017, 02:46 
А ещё там реально крутая документация с понятными примерами.

Это абсолютно та же документация, что я скидывал по ссылке) К тому же неполная — там нет последней добавленной функции Lists, которая там с этими листами что только не творит.

 Esper @ 25 марта 2017, 11:04 
Когда начинаем?

Да когда угодно, сроки я думаю надо сделать не очень маленькие, чтобы все смогли время отыскать, может, 2-3 недели.
Я вот только думаю, в каком формате лучше давать задание — банально тему, или ещё приправить всё деталями, типа "у игрока должна быть возможность убить одного из персонажей", или "в одной из концовок обязательно должны появиться инопланетяне" и т.д.?
Ну и как тему выбирать будем - рандомом, кому-то одному доверим или решим совместными усилиями, мм?
P.S. Долго будем думать, организую по своему желанию, так что взываю к тем, у кого есть предложения :)
Esper
26 марта 2017, 14:46
Раз уж формат другой, то может и задания давать соответствующие формату - например наличие того или иного интерактивного элемента, а то тема и правда банально звучит.
Я играю в игры в которые никто не играет. Я смотрю аниме которое никто не смотрит. Я делаю сабы которые никто не читает. Я разговариваю с людьми которых не существует. ~
warm summer rain
26 марта 2017, 18:25
Добавлю свои пять пенсов: что, если собрать со всех участников варианты развития сюжета, обязательные элементы, темы et cetera, а дальше распределить рандомом?

Исправлено: warm summer rain, 26 марта 2017, 18:26
Head Hunter
27 марта 2017, 08:01
Мне не нравится. Я пас =\
Ом Мани Падме Хум.
Fahrengeit
 МОДЕРАТОР 
27 марта 2017, 14:04
 warm summer rain @ 26 марта 2017, 18:25 
что, если собрать со всех участников варианты развития сюжета, обязательные элементы, темы et cetera, а дальше распределить рандомом?

Ну как вариант, конечно. Надо только собрать :)

Добавлено (через 49 мин. и 12 сек.):

Я подумаю над заданием уже после работы, но если у кого какие варианты есть — кидайте к вечеру. Просто если вариантов и не будет, то тогда и распределять рандомом нечего.
FFF Форум » ТВОРЧЕСТВО » Интерактивные рассказы (И с чем их готовить)
СООБЩЕНИЕ НОВАЯ ТЕМА ГОЛОСОВАНИЕ
1234
(c) 2002-2019 Final Fantasy Forever
Powered by Ikonboard 3.1.2a © 2003 Ikonboard
Дизайн и модификации (c) 2019 EvilSpider