Комментарии 25
Для квестов уровня Косморейнджеров там должны быть параметры, которые от выбора могут рандомно меняться в заданных пределах.
А пока все слишком просто и напоминает литературный квест, где от выбора зависит только на какую страницу попадешь.
Сходил на гитхаб-там есть переменные, можно пистаь логику, хотя синтаксис своеобразный
=== function changingOfTheGuard
{!GuardsOnDuty: // "is GuardsOnDuty empty right now?"
~ GuardsOnDuty = LIST_ALL(Smith)
- else:
~ GuardsOnDuty = LIST_INVERT(GuardsOnDuty)
}
LIST ChargeState = uncharged, charging, charged
VAR PhoneState = (off, uncharged)
* {PhoneState !? uncharged } [Plug in phone]
~ PhoneState -= LIST_ALL(ChargeState)
~ PhoneState += charging
You plug the phone into charge.
* { PhoneState ? (on, charged) } [ Call my mother ]
Вот здесь возможности движка описаны чуть подробнее.
Тема интерактивной литературы, на самом деле, весьма обширна, и русское сообщество тут не исключение. И движков много, и сайты тематические есть.
Сам бы порекомендовал INSTEAD, весьма обширный по возможностям, да и существующая библиотека игр весьма неплохая. Небольшую выборку можно пощупать онлайн, т.к. движок компилируется и под emscripen. Код игр из себя представляет полноценный Lua, но при этом синтаксис большинства вещей достаточно прост.
И дико раздражает, когда при печати текста буквально через слово туда-сюда раскладку переключать приходится.
Проблема непосредственно самопальных IDE этих текстовых квестов — они хорошо работают на приключениях уровня Hello World, которые создаются одним человеком за выходные, но откровенно плохи там, где у вас количество текста переваливает за мегабайт. Потому что банально начинаются проблемы с навигацией и ориентированием в этой текстовой куче. Нужно, как минимум, тегирование текстовых фрагментов (с фильтрацией по тегам), всплывающие подсказки при подстановке ссылок, проверка корректности всех имеющихся ссылок (и поиск висячих фрагментов, на которые ничего не ссылается), элементы рефакторинга (начиная с банального переименования текстового фрагмента) плюс поддержка нескольких языков, когда указывается, какие фрагменты всё ещё не переведены.
Проблема с раскладкой решается на уровне системы (на маке 99% можно ввести без переключения используя option). На Винде я в свое время биндил на определенные сочетания клавиш ручками пол клавиатуры — когда верстаешь страничку в html переключаться приходятся мама не горюй сколько.
Второй вопрос решается комментами в собственной нотации типа // TODO — check state #someday #scenario-line-1-18 и поиск по ним. Если учесть что это тестовый файл то можно в нем работать и в VSCode и тогда вся сила самописных скриптов вам в помощь.
Третья проблема вроде как в части этих систем была решена, но может не во всех и не полностью, тут не могу точно сказать.
Вон в текстовых редакторах все стремятся упрощать процесс верстки. А тут типа «сиди и впечатывай, тебе что, сложно»… Это не позволяет признать ни один из инструментов удобным для интересующихся и энтузиастов. Напротив, может даже отбить желание и вернуть экспериментирующих писателей к обычным книжкам.
//Лично моему мозгу ГОРАЗДО удобнее работать с такими вещами (когда много реплик, ветвлений, переходов...) вообще не в сплошном поле и само собой отнюдь не в картинках (пузыри со стрелками), а в таблицах. Свойства, адреса вариативных переходов, опции — все в отдельных столбиках. А в текстовых — ничего, кроме текста.//
Тема текстовых парсеров (Z-machine, Glulx, TADS, Hugo etc.) не раскрыта, несмотря на то, что именно на них пишут такие столпы IF как Andrew Plotkin, Emily Short и т.д.
Эмили Шорт написала об этом хорошую статью, кстати: ifhub.club/2018/01/18/ischezayuschee-iskusstvo-parsernoy-il.html
К тому же, именно игры с текстовым (хоть и зачастую ограниченным) парсером до сих пор выигрывают XYZZY Awards за самые интересные идеи в IF (Eat Me, The Wizard Sniffer, Toby's Nose, TAKE, Subrosa и т.д).
Ну и наконец, в прошлом году не-парсерная игра впервые взяла 1 место на IFComp (справедливости ради — разделив его с парсерной, поскольку набрали одинаковое количество баллов)
Например, Spider and Web не была бы и вполовину столь гениальна, если бы она не была написана на парсере (несмотря на то, что там парсер, честно говоря, весьма неуклюжий).
Кстати, у Джона Ингольда, одного из авторов этого самого Ink, есть интересная статья с провокационным заявлением, что парсерные игры — лишь прототипы для игр не-парсерных :) И да, Джон тоже когда-то писал парсерные игры, и весьма неплохие (XYZZY Award 2001 за Best Game, Best Story и Best Setting)
threeedgedsword.wordpress.com/2013/12/05/parser-as-prototype-why-choice-based-games-are-more-interesting
Если вдруг кому нужно решение для задач посложнее и с интеграцией с юнити, мне вот понравился Articy: Draft. Он довольно гибкий
Кстати говоря, в Fallout (2) диалоги тоже пишутся таким же образом — это просто скрипт, вызывающий функции node (для реплик NPC) и функции option (для вариантов ответов).
Ink: инструмент для создания текстовых квестов как из лучших воспоминаний детства