1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Нарративная математика

Автор: thenonsense · 26 ноя 2025 · ·
Пара приложений для игрового вычисления сюжетов и историй, через комбинирование сущностей и ассоциативное мышление.
Категории:
  1. [​IMG]

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

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

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

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

    [​IMG]

    Штамм 33

    Strain 33 | Штамм 33 by NoNsense

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    [​IMG]

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

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

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

    [​IMG]
    Слева ситуация привела к уничтожению Червя и Духа Червя, при их разделении (возникла пара "33"). Справа экран действующих парадигм, где выбран развёрнутый список киберпанковых концепций.

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

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

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

    [​IMG]

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

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

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





    [​IMG]

    Myth-o-Matic

    Myth-o-Matic by NoNsense

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

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

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

    [​IMG]

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

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

Комментарии

  1. Dagoth-Slayer
    А ведь из этого можно собрать интересный рогалик. Накидываешь варианты событий сюжета и вперед, приключаться в подземелье.)) Годо клёвый движок (при этом не тормозит у меня как тот же Юнити и тем более Анрил). Как-то пробовал в нём что-то сделать, но созданный мной мир так и не оживил, так как не умею в скрипты. Разве что нейросеть попросить, но там всё равно надо потом баги вылавливать а мой максимум в программировании это print("Hello, World!"):D
      thenonsense нравится это.
    1. thenonsense
      Кстати, начинал на Спектруме с текстовых квестов, после первоначального вкатывания (через кодинг музыки и изображений).
      Юнити на самом-то деле бывает более производительный, из за лучше поддерживаемого директикса, но именно старый вариант Юнити, с более простым рендером (и тут ещё от видеокарты/драйвера зависит). Вернее он требовал менее мощное железо чтобы завестись и показывать хорошие фпс. Но у Godot много своих плюсов, да и производительности хватает.
      Программировать на самом деле не особо сложно, нужно просто выбросить в окно толстые книжки по вкатыванию в языки/паттерны (или по крайней мере не углубляться в них, просматривая от корки до корки) - а вместо этого брать конкретные простые примеры и разбирать/экспериментировать, чтобы потом уже по возникающим вопросам лезть в документацию, ну и уже потом теорию полистывать при случае.
      Dagoth-Slayer нравится это.
  2. Dagoth-Slayer
    Ну что касается "вкатывания" в общем согласен. Помню когда я пробовал учить питон, мне тут один форумчанин на пальцах за пять минут объяснил все основные термины. Тоже говорил не молиться на толстые книжки, а пробовать всё самому. Типа простое повторение заданий из учебника толком ничего не даст, будет сложно потом понять а как написать не условный калькулятор а например логику для юнита в стратегии. Потому что не понимаешь что там должно быть. Да и нормальной книжки по нему я не нашел, везде одни C+ и подобные. Но потом как-то пропала мотивация и язык я бросил. Наверное зря. Сидел бы щас в какой-нибудь конторе с умным видом код набирал.
      thenonsense нравится это.
    1. thenonsense
      Главное, чтобы не код в 1С :)
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление