Нимс - Специальное Сценарное Программное Обеспечение (Для Ролевых Игр С Живым Действием)

Существует множество программ для написания сценариев и множество причин написать собственный сценарий.

Но, как и все рабочие инструменты, скриптовое программное обеспечение адаптируется к требованиям предметной области.

По этой причине программа разработки сценариев фильмов не подходит для написания сценария компьютерной игры и наоборот. Моя сфера деятельности еще более специфична — я разработал программу под названием NIMS (Storyteller's Toolkit) для создания сценариев ролевых игр с живым действием (LAR).

Блиц-вопросы: Он используется? Да, проекту уже два года.

За это время в НИМС было сделано более 20 игр.

Это платно? Бесплатное ПО.

В этом посте я расскажу о типах сценарных задач, особенностях написания сценариев для РИ, о том, что умеет НИМС, и об особенностях его реализации.



НИМС - специальное сценарное программное обеспечение (для ролевых игр с живым действием)

На картинке изображена социальная сеть по мотивам рассказов РИ «Порт-Артур», MG S&M (кликабельно).

Отказ от ответственности 1: настольные ролевые игры — это самостоятельный тип игр, и я буду называть их NRI.



Классификация скриптовых задач

На протяжении многих веков сценарий как явление принадлежал исключительно сцене.

В конце 19 века появилось кино, а в конце 20-го - различные игры (компьютерные, настольные, живое действие и т. д.) И повсюду есть сценарии.

С художественной точки зрения они схожи и подчиняются одним и тем же законам сценарного мастерства.

Но с точки зрения формы подачи информации каждая область применения сценариев ставит свои задачи.

Давайте попробуем разобраться в этом.

Задачи по написанию сценария можно разделить по наличию/отсутствию взаимодействия со зрителем/пользователем.

Кино, сериалы, книги, театр требуют неинтерактивный сценарий .

Соответственно, зритель никак не может повлиять на ход истории и, как следствие, остается лишь вариант развития событий.

В отличие от них существуют интерактивные сценарии , предполагая влияние зрителя.

Это сценарии для всевозможных игр.

Интерактивные сценарии можно разделить на закрытые и открытые.

Закрытые сценарии требуют описания всех возможных вариантов развития истории.

Например, сценарии компьютерных игр и книги по ролевым играм.

Открытые интерактивные скрипты , в свою очередь, условно можно разделить по степени мастер-зависимости.

Например, в настольных ролевых играх.

Д&Д , все действия игроков докладывают ведущему и он ведет повествование.

Эти игры полны зависимый от хозяина , и игрок не может сделать ни шагу без мастера.

На РИ большое количество игроков взаимодействуют в рамках правил и соглашений, установленных перед игрой.

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

Еще раз подчеркну, что игроки взаимодействуют друг с другом.

не в сети , без вмешательства мастера.

Disclaimer 2: то, что здесь описано, не догма, а типичный вариант, NRI могут быть автономными, RI могут быть автозависимыми и полный набор промежуточных вариантов.



Сценарии для ролевых игр с живым действием.

К разработке РИ предъявляются определенные требования.

В процессе разработки создается модель мира, в котором живут персонажи, и прописываются конфликты.

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

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

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

Значительную часть вступления составляет предыстория, призванная ответить на вопросы «Почему.

Э»: «Почему я ненавижу короляЭ», «Почему наши дома враждуютЭ», «Почему это важноЭ» по нашему мнению, ритуал прошел хорошоЭ» Каждый игрок должен получить свою порцию информации и оперировать ею во время игры.

Бич написания вступительных заметок – нестыковки.

Любое событие из предыстории пересказывается многократно и с разными акцентами, ведь каждый участник видит ситуацию по-своему.

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

Например, если в эпизоде было задействовано 5 персонажей, то при малейшем изменении в этом эпизоде необходимо внести 5 правок, а не одну.

Такая ситуация приводит к большому количеству несоответствий.

Проект NIMS предназначен для разработки сценариев RI, включающих несколько историй с большим количеством участников.

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



Процесс написания вступительной заметки

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

Необходимо дать каждому персонажу ту часть истории, которую он знает. Вы можете решить эту проблему в лоб: Фродо, твоя предыстория такая, Гэндальф, твоя предыстория такая.

Проблема, с которой мы столкнемся, — это десинхронизация информации.

Например, во введении к Фродо мы напишем: «Громко свисти, если увидишь орков».

И мы забудем написать это всем остальным членам Братства Кольца, и они не узнают, что означает свисток Фродо.

Еще «лучше», если мы напишем о «свистке Фродо» только половине Братства Кольца.

Эту проблему можно решить, если ввести еще один текст – текст оригинального рассказа, на основе которого мы напишем адаптированные тексты или тексты адаптации для каждого персонажа.

В исходном тексте будет написано: «Перед тем как отправиться в путь, Братство Кольца договорилось, что Фродо будет свистеть при виде орков».

Фродо скажет: «Мы договорились, что когда я увижу орков, я свистну».

Для всех остальных: «Услышав свист Фродо, я бегу спасать его от орков».

Но есть следующая проблема.

Мы прекрасно знаем, кто входит в Братство Кольца.

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

Пример такой ситуации: совет, на котором решали, что делать с кольцом.

Мы точно знаем, что там собралось всё Братство Кольца, Элронд, и вполне мог быть ещё кто-то (даже если это противоречит первоисточнику).

Если на этом совете было принято решение, которое нужно записать во вступительной записке, то мы получаем неопределенность – кто еще из 140 персонажей нашей игры был на совете и что-то знает? Чтобы решить эту проблему, мы разбиваем историю на события, где событие представляет собой единство времени, места и персонажей.

Записываем событие: «Совет Кольца, время: 3018/10/25 12:00, участники:.

, описание события:.

» Теперь мы точно знаем, кто был участником события.

У каждого участника свое видение мероприятия, которое мы описываем в адаптации мероприятия.

Полная адаптация истории для выбранного персонажа состоит из всех адаптаций событий с участием этого персонажа.

Завершающий этап: все адаптации написаны, группируем их в текстовые файлы по символам.

На одной картинке это выглядит так:

НИМС - специальное сценарное программное обеспечение (для ролевых игр с живым действием)

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

  1. Мы можем создать хронологию событий, как для каждой истории, так и индивидуально для каждого персонажа.

  2. Социальная сеть в социологическом смысле.

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

    Как минимум, они могли видеть друг друга, но в большинстве случаев персонажи активно взаимодействуют друг с другом.

Пример хронологии событий в базе данных «Властелин колец» (кликабельно):

НИМС - специальное сценарное программное обеспечение (для ролевых игр с живым действием)

Пример социальной сети из игры РИ «Безумный Макс», Мк.

Альбион (кликабельно):

НИМС - специальное сценарное программное обеспечение (для ролевых игр с живым действием)



Отношения персонажей

Диаграмма взаимоотношений персонажей широко используется в RI и NRI. Таблица отношений — это квадратная таблица, в которой каждая строка и каждый столбец соответствует персонажу, а в ячейках таблицы мы записываем отношения персонажа А к персонажу Б.

Интересный момент: персонажам не обязательно знать друг друга, чтобы иметь отношения друг с другом.

У персонажа снизу могут быть какие-то счеты с боссом мафии, но сам босс мафии может об этом совершенно не подозревать.



Досье

Досье — это список фактов о персонаже.

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

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

Например, в романтическую историю нам нужно добавить молодого неженатого дворянина.

Настроим фильтр: возраст «до 30», сословие «дворянский», семейное положение «холост», отсортировать по возрастанию.



Группы персонажей

Развивая идею фильтра, мы придумали группы персонажей.

Например, у нас в игре есть группа Тамплиеров, и мы хотим предоставить историю ордена только людям из этой группы.

Решение простое: Петя, Витя, Боря - тамплиеры, включаем их в группу, текст для группы отображается во вступительном тексте.

Потом Витя становится ассасином, его место занимает Гоша, и мы вручную редактируем списки групп.

Вместо этого мы можем собрать фильтр по досье: Фракция тамплиеров.

Текст для тамплиеров будет отображаться только у тех символов, которые пройдут этот фильтр, и с ручным обновлением данных проблем не возникнет.

Карта участка

Карта-сюжет — это инструмент для проработки межфракционных конфликтов.

Инструмент также достаточно известен как в РИ, так и в НРИ.

Я использовал это как спецификацию статья .

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

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

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

На основе карты сюжета мы можем спланировать список конфликтов, которые будут разрешены в игре, и создать для них краткое содержание сюжета.



О реализации

Первоначальное требование к системе – автономность.

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

Например, на фуд-корте или даже на тренировочной площадке.

Именно поэтому НИМС сделан как приложение, а не как сервис (большинство систем для РИ со схожим функционалом являются сервисами).

Второе требование — отсутствие исполняемых файлов и установщиков.

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

Собственно, так и реализован НИМС — архив с автономной веб-страницей, открывающийся в браузере.

Это было мое первое приложение, полностью написанное на JavaScript, поэтому я старался свести к минимуму использование библиотек и фреймворков.

Реализация его как отдельной веб-страницы имеет следующие неприятные побочные эффекты:

  • доступа к файловой системе нет, поэтому невозможно сделать кнопку "Сохранить" и все спокойно сохранить в файл.

    Вместо этого со страницы загружается текущая версия базы данных.

    Аналогично при открытии системы показывается не последняя база данных, а примерная.

    В начале работы необходимо вручную загрузить последнюю рабочую базу данных.

    Да, это неудобно, но риск потери данных из-за сбоя localstorage и аналогов еще хуже.

  • невозможность использования файлов с «нестандартными расширениями» (привет Chrome).

    Например, вы не можете положить docx в папку страницы и при необходимости скачать его через GET-запрос.

    Библиотека l20n с ее ftl-файлами аналогично не работает. С сервера - пожалуйста.

    Я решил первую проблему, закодировав документ в base64 и сохранив его в js-файл.

    Вторую проблему я решил, создав велосипед.

  • невозможность вызвать исполняемые программы, даже когда очень этого хочется.

    Здесь необходимо отметить подсистему генерации ввода — теперь мы все написали, нужно сохранить в файл и отправить плееру по почте или распечатать.

    Основное требование было «сохранить введение в docx» (это не я придумал).

    Я реализовал это с помощью docxtemplate. Он позволяет создавать файлы docx с использованием шаблона.

    Именно поэтому мне понадобилось загрузить шаблон docx на страницу по запросу в предыдущем пункте.

И, кстати, отсутствие исполняемых файлов и возможный оффлайн режим означают, что я не могу использовать внешнюю СУБД.

Просто что-то в браузере в памяти.

Я выбрал велосипедный маршрут и сохранил данные в виде объекта JSON с проверкой схемы JSON при загрузке.

Объект JSON хранится в текстовом файле, называемом «базовым».

Во всем остальном это обычный СПА.

Вскоре после релиза мне сообщили о проблеме: существует меньшинство игр, над которыми работает строго один мастер.

Таким образом, возможность совместной работы нескольких мастеров игры над игрой является вопросом жизни и смерти для проекта.

Проблема: у нас есть рабочее ядро, но оно рассчитано на автономную работу.

Как обеспечить сотрудничество нескольких мастеров? Решение: переделываем ядро для работы с базой данных в асинхронном режиме работы и модифицируем его, чтобы оно могло работать на node.js. Офлайн-режим работает как и раньше.

В режиме сервера распространяется веб-страница, и все вызовы ядра преобразуются в вызовы удаленных процедур для выполнения запросов на сервере.

То, что когда-то было интерфейсом ядра, становится API. Попутно режим сервера расширяет API функциями управления пользователями и контроля доступа.

В результате и автономное, и серверное решения используют одно и то же ядро.

Схематически это выглядит так:

НИМС - специальное сценарное программное обеспечение (для ролевых игр с живым действием)



Материалы

Мы подготовили множество материалов для пользователей:
  • Онлайн презентация — краткое описание основных понятий для пользователей, незнакомых с НИМС.

  • Скринкасты — видео, где я рассказываю о том, как использовать НИМС.

  • Документация — полное описание используемых концепций и реализованного функционала.

  • Онлайн демо — офлайн-версия, размещенная в Интернете.

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

Офлайн-версию можно скачать Здесь .

Работа тестировалась в Chrome и Firefox. Должно работать независимо от ОС, но это специально не проверялось.

Что касается исходного кода, то проект разделен на клиентские, серверные и текстовые ресурсы:

  • Клиент включает в себя все функциональные возможности сценария.

  • Текстовые ресурсы Это примерная база, презентация, документация, шаблоны загрузки.

  • Сервер представляет собой расширение клиентского ядра для работы с правами и организации удаленного доступа нескольких пользователей.

    Эта часть проекта на данный момент не обнародована.



Заключение

Проект НИМС дает возможность взглянуть на сценарное мастерство под другим углом.

Сценарии для РИ — это незавершенные истории и нет необходимости формировать из них последовательное повествование для зрителя/читателя.

В РИ каждый игрок получает свою порцию информации и действует на этой основе, как и в реальности.

В этом случае задача сценариста – не только рассказать историю, но и распределить ее между персонажами.

Теги: #Программное обеспечение #скрипты #написание сценариев #ролевые игры с живым действием

Вместе с данным постом часто просматривают: