Десять видов на Лихой город

Небольшой пост-мортем к моему вагону на «Паровозик-9».

Интерактивная

Текст в ИЛ не должен быть статичным. Раз уж в названии приняли слово «интерактивная» — автор, будь добр, пиши так, чтобы читатель видел реакцию текста на свои действия.

Движки и системы помогают, конечно, как могут, в формировании динамичного текста, отражают текущее состояние мира («Здесь вы видите дверь, сундук и серебряный ключ»). Но литература штука такая — любая механичность сразу видна и сразу сбивает погружение. Автор, будь добр, позаботься…

И это только про описание одномоментного состояния мира — описание с точки зрения главного героя и, может быть, рассказчика. А ведь ещё есть сам читатель. У нас не визуальное медиа, нам приходится описывать то, что «видит» читатель. И это описание тоже должно быть динамичным и не механичным. Если читатель может «увидеть» объект в двух разных контекстах, описание объекта должно учитывать, сталкивался ли с ним читатель раньше. Автор, будь добр?

«Поход за покупками в Лихой Город» — моя попытка решить такую задачу. Все фотографии представляются читателю в случайном порядке, да и сам читатель может выбрать любую из них. Поэтому описания тех объектов, которые присутствуют в нескольких фотографиях, учитывают, видел ли их читатель до этого. И описания собираются максимально бесшовно.

Если вы не заметили этого, значит, я справился.

Atrament

Atrament — отличный фреймворк и js-плеер поверх ink для написания браузерной ИЛ, не в пример тому, что предлагают сами inkle. Рекомендую.

Но при этом, мне было сложно решать задачу с динамическими «читательскими» описателями в ink. Хотя, казалось бы, это самый подходящий для ИЛ язык. Может быть, не нашёл нужный подход, но тот, что придумал — с флагами, отслеживанием «памяти» читателя — был сплошным мучением. Последующее переписывание на Python с Textual было лёгкой прогулкой в сравнении.

Вдохновение

«Тринадцать видов картонного города» Ульяма Гибсона. Стабильно перечитываю раз в пару лет.

Отсюда и формат фотографий, и рубленые предложения, и стиль, больше подразумевающий, чем описывающий. Каждое фото — это мини-диорама с историей, увидеть которую — задача читателя.
Не откажите себе в удовольствии, прочитайте, там всего пара страниц: ссылка на RoylaLib.com.

А если понравится, то там же, такая же небольшая и в том же сеттинге «Комната Скиннера».

Дзен

Завёл себе канал на Дзене, как будто сейчас всё ещё 2017 год:

https://dzen.ru/klockwerkkat

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

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

Берегите себя и близких.

13 лет

IFВики напоминает, что прошло уже 13 лет с моего дебюта в интерактивной литераутре:

Это… Обескураживает.

Искры. Полвека парсера

Согласимся, что в плохие парсеры играть трудно.

А всё потому, что написать хороший парсер — на порядки труднее, чем плохой. На такое способны лишь седые аскетичные мужчины и женщины, годами медитирующие у мониторов. Или бессмертные юнцы, для которых ещё не существует такого понятия как время. Одни они готовы своими крошечными скарпелями и иглами вырезать из скалы очередной храм.

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

Не знаю. Но не оставляю попыток выяснить.

Читать далее «Искры. Полвека парсера»

Искры. Неслучайный случайный текст

Когда я, исполняя роль жюри на ЗОК2021, запустил «С улицы Бассейной», то сразу увидел в инвентаре предмет «чужие мысли», который при каждом использовании выводит случайную фразу. Забавный ход, да и в целом у игры всё в порядке с юмором. Но хочу написать о другом.

Случайный текст в IF — неотъемлемая часть и один из краеугольных камней, что отличают литературу интерактивную от неинтерактивной. Однако, этот приём, использованный «в лоб», имеет и недостатки: какие-то фразы повторяются чаще других, а какие-то могут вообще не показаться игроку. И это сразу раскрывает всю механистичность происходящего и рушит иллюзию погружения.

Более того, если мне нравится произведение, то я (и уверен, я не один такой) стараюсь увидеть максимум его контента, и всё заканчивается тем, что я на несколько раз прокручиваю один и тот же набор случайных текстов, чтобы убедиться, что ничего не пропустил. О каком погружении вообще может идти речь?

Один из вариантов решения проблемы — не использовать рандом вообще. Составить список выводимых текстов и показывать их циклом, когда после демонстрации последней фразы выводится первая и так по кругу. Но приём одноразовый. Игрок уже на втором-третьем круге распознает, что ему показывают один и тот же упорядоченный список.


Я же рекомендую комбинировать оба этих подхода.

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

Увидеть реализацию приёма можно в моём «Субботнем утре»: нужно кликнуть на объект главного героя и выбрать действие «Поговорить с самим собой», которое каждый раз будет выводить случайную фразу по описанному методу.


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

Цель любого подобного трюка — в дополнительной шлифовке уже хорошего произведения, которое и с просто случайным текстом способно удерживать и развлекать игрока. Автор «С улицы Бассейной» с этим справляется. А вы?

Кради как художник?

Кочевники в «Откуда в Пустоши появились монстры» общались по-немецки не просто так, а потому что по-немецки говорили Стервятники из фильма-вдохновения «Безумный Макс: Дорога ярости».

Но вот интересный факт: Стервятники германоговорящие только в российском дубляже. В оригинале они говорят… Правильно, по-русски!

Поэтому Nomads в How did the monsters appear in the Wasteland просто обязаны заговорить на языке родных осин ;)

За неделю до

В качестве итогов года.

Чем дольше я всем этим занимаюсь, тем больше и амбициознее проекты, которые хочется реализовывать, и тем меньше отводится на них времени. Поэтому каких-то серьёзных релизов нет и не предвидится.

Однако, 2019-й не прошёл бесследно — большую часть времени занимали два проекта: один на Twine — попытка протестировать очередной экспериментальный интерфейс (развитие идей «Откуда в Пустоши…») и другой, на Парсерфест, с интефейсом привычным, но с переосмысленнным игровым циклом.

В промежутках между ними был «Пустой гараж», поглядывание в сторону многообещающего dialog, мучения с проклятой vorple, которая так и не делает то, что мне от неё надо (кхм-гиперссылки-кхм), и прочие вещи, далёкие от IF и не очень.

С надеждой смотрю вперёд, в 2020-й, потому что считаю, что мне ещё есть, что сказать.

С наступающим!

 

P.S. Экспериментальным интерфейсом, пожалуй, поделюсь — очень уж хочется услышать стороннее мнение перед тем, как вкатывать в проект ещё больше времени:

Прототип

P.P.S. (да, Олегус, это именно то, что ты видел ещё в мае).

inkJam 2019 и Пустой гараж

Сдуть пыль со старой идеи, почитать документацию ink, отпроситься у жены на выходные и ещё один вечер, писать, пить кофе, слушать Tool, писать, задумчиво смотреть на дождь за окном, посмотреть-так-и-быть-одну-серию, писать, не успевать, решить не дописывать и опять поставить в конец многозначительное «Продолжение следует» (дисклеймер: ни к чему не обязывающее), дескать, ну что тут за три дня ещё напишешь. Поставить ментальную галочку напротив ментальной записи «Написать IF в 2019».

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

Название не нравится, если буду продолжать, обязательно сменю. Например, верну название «Ноябрь», под которым эта идея жила года аж с 2010-го.

Сорцы (грязноваты, предупреждаю) можно посмотреть тут: https://github.com/cheshiren/empty-garage/blob/master/november.ink