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

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

Кстати, сама по себе игромеханика придумывания фраз и ввода текста в компьютерных играх появилась давно - в старых квестах и прочих приключениях, хотя там это обычно сводилось к игре в “угадайку“.

В этой статье речь пойдёт о паре сюжетно-ролевых калькуляторов, собранных на движке Godot, в которых я частично автоматизировал варианты своей сюжетостроительной игромеханики, основанной на взаимодействии идентификаторов объектов. Доступны в браузере или в виде windows/linux приложений.

Штамм 33

https://thenonsense.itch.io/strain33

“Штамм“ - это именно игровая система правил, предполагающая условия победы. Помимо специального приложения существует и в виде книги правил для настольных/форумных игр (тогда игрокам потребуются средства ведения записей и обычный калькулятор).

В игре подразумевается некий базовый сюжетный расклад: глобальные силы трёх различных измерений проникают в реальный мир, инфицируя своим влиянием различные его объекты, места, существа и так далее. Такие объекты становятся носителями концепций иномировых парадигм и продолжают заражать ими реальность, всячески мутируя при этом. Заражённая сказочными энергиями книга меняет облик комнаты, где хранится на полке. Незнакомка, излучающая измерение ужаса, гуляет в городском парке, привнося туда области увядания и разложения. Цифровые копии пользователя вырываются из его личного компьютера, распространяя киберпанковое излучение в мир.

Каждая парадигма - это список цифр от 1 до 9 с привязанными к ним понятиями. Например, в условной парадигме “SuperMario” этот ряд может начинаться так: 1 - кирпичи, 2 - трубы, 3 - платформа, 4 - грибы … В иной парадигме, иначе. Допустим, парадигма “Чужой“: 1 - корабль, 2 - пришелец, 3 - космос, 4 - колонисты, 5 - угроза, 6 - андроид …

В приложении мы видим набор из нескольких стартовых объектов/субъектов со случайными двухзначными идентификаторами. Цвет каждого объекта указывает на парадигму, носителем которой он является. Стартовые объекты можно удалить и завести свои собственные (поначалу нейтральные, не привязанные к парадигмам).

Красная Королева и Червь выбраны для взаимодействия.

Далее пользователь может выделять два любых объекта и вычислять для них один из двух вариантов взаимодействия (нажав одну из кнопок):

1) Объекты каким-либо образом сюжетно "сближаются", "притягиваются".

2) Объекты сюжетно "отдаляются", "конфликтуют".

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

Например: Кот (46) бежит по Мосту (39) = 46 х 39 = ситуация 1794. Если же Кот падает с Моста или, наоборот, Мост падает на Кота, то нужно разделить объекты друг на друга для получения результата взаимодействия.

Первая парадигма (на старте "Сказка") интерпретирует все результаты, чья первая ненулевая цифра 1,2 или 3. Вторая ("Хоррор") - начинающиеся с 4,5,6. Третья - оставшиеся.

Вышеописанная ситуация 1794 будет разрешена в концепциях первой, сказочной парадигмы, где 1 - Жизнь, 7 - Трансформация, 9 - Предмет.

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

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

Например: ситуацию с котом на мосту, выдавшую Жизнь-Трансформация-Предмет в качестве ответа, мы можем интерпретировать в то, что кот нашёл на мосту некий полезный предмет, Оберег. Тогда в списке объектов появится новый доступный для взаимодействий объект - Оберег (1794).

Красная Королева отправилась к Червю (выбрано умножение объектов). Результат описан как Story Dark. Это может означать, например, что Червь её съел или похитил. Интерпретируя результат придумаем какой-нибудь объект, пусть от Королевы осталась только Корона, валяющаяся на земле. Кстати, эта ситуация также привела к открытию сюжетного достижения

В данном ролевом калькуляторе имеются условия для "прохождения" сюжетного сценария. Это система достижений, всего их 9, и, когда все собраны, то история считается законченной. Вернее можно поставить точку, продолжить текущую, либо начать новую. Достижения вычисляются автоматически - это пары одинаковых цифр ("11", "44", "77" и так далее), встречающиеся в образующихся числах.

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

Слева ситуация привела к уничтожению Червя и Духа Червя, при их разделении (возникла пара

История взаимодействий выводится в специальном логе (включая и те, что пользователь интерпретировал и те, что описаны абстрактно). А в финале выводится список взаимодействий, которые привели к возникновению достижений.

На выходе получаем каждый раз некоторую историю - определённые случившиеся ситуации, и возникшие в процессе объекты/субъекты/места:

ПРИМЕР начала одной из историй

Здесь были заведены нейтральные объекты (от Центра до Певицы), которые потом различным образом взаимодействовали. Певица взглянула на картину (выпало что-то про кровь и глаза), ей стало плохо и она укрылась в Комнате картинной галереи. Тем временем некий Паук ворвался в Торговый центр (стена, глаз) - проломил стену и оттуда, словно через портал, вылезло Чудовище из другого мира. Далее Певица убегала от призрака, обнаружив Склеп. Туда же, в Склеп, спустился Космонавт, потеряв Шлем, но обнаружив Истлевший Том. Паук, собравшийся посетить Подземелье оказался вместе с этой локацией уничтожен иммунным ответом реальности, так как возникла пара "33".

На картинке момент, когда Кот прокрался в Комнату и предложено написать интерпретацию (или запись в логе останется такой же, как то, что подсвечено белым, и новый объект истории не появится).

Более наглядно процесс вычислений и придумывания ассоциаций показан в данном обзоре:

Myth-o-Matic

https://thenonsense.itch.io/myth-o-matic

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

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

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

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

Инструмент годится не только для развлечения, но может являться и способом выхода из творческого кризиса, когда нужно заложить основы для какого-то сюжета (для книги, фильма, игры, сеттинга, ролевой настольной кампании) или удобным средством наполнения своих сюжетов/игр дополнительным контентом. Теоретически существуют разные варианты совмещения с нейросетями - например, использовать логи созданных историй, как способ научить нейросеть ассоциациям.