Проект Juperos

enthusiastic emoticon

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

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

После удачного Форкона-2006, на котором нагрузка на мастера по сюжету легла уже такая, что уй мама, я поднял вопрос еще раз, и Гернсбек обозвал это Juperos, каковое название и было принято как рабочее за неимением лучшего… но к Форкону-2007 я так и не собрался это делать, и как выяснилось, очень зря,1 ибо Смолика, в великой мудрости своей, опять взвалила на себя обязанность делать все то же самое вручную и в голове, благодаря чему на самой игре уже едва ползала.

Дело в том, что одной из важнейших организационных идей, которые сделали Форкон-2006 удачным и спасли Форкон-2007 от смерти в море SNAFU и даже вытянули его на очень хороший уровень, было то, что в начале игры всем важнейшим персонажам и большинству второстепенных были выданы персональные памятки-вводные, поминающие что и зачем они должны сделать в течение игры. Некоторые из экономии писались на команду, но не сыть. Конкретное исполнение и интерпретация всего этого добра оставалось на самих игроках, естественно, но игроков это удерживало от расползания в обстановке и скучать никому не пришлось именно потому, что Смолика до самой игры сочиняла эти вводные…

Так вот, изначальная идея заключалась в том, что мир такой большой социальной кабинетной игры пребывает в состоянии устойчивой нереальности — игроки массово сдают свои легенды за очень небольшой срок до начала игры, и не имеют понятия, с кем из присутствующих на игре других персонажей их персонажи должны быть знакомы. Про инцидент на Форконе-2006, когда Совет Графов в полном составе огласил зал громовым хохотом, услышав вопрос «Год рождения?» при допросе с фаст-пентой даже упоминать не стоит — выходя на игру мы не знаем наших сослуживцев и даже родственников, не всегда точно знаем сколько нам лет, и часто понятия не имеем, какие события по игре должны быть нам хорошо известны. Мало у кого хватает терпения пролистать весь список публичных легенд.

Между тем, несколько жестче структурировав легенды персонажей — так, чтобы они легче подвергались кодификации, т.е. приведению в некоторую строгую форму — мы можем попросту внести все эти факты игрового мира в некую базу, и на выходе получать автоматическую памятку для каждого игрока — вы знаете что X женат на Y, вы знаете про факт Z, и так далее. Список публичных легенд после этого можно будет вообще упразднить или генерить автоматически из той же базы, выделив события известные вообще всем и посортировав их по персонажам.

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

Технологически, я предполагаю реализовать это на PHP+MySQL, поскольку эта платформа обеспечивает много различных побочных вкусностей, включая возможность наладить единый сервер с WiFi покрывающий всю территорию игры2 и доступ нескольких удаленных клиентов из всех интересных мест с любого рода устройств.

Поразмышляв о структуре базы, я получил вот такую вот картинку:

Структура базы проекта Juperos

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

Запись персонажа тупо содержит его неразобранную текстовую легенду как основной элемент, для справки. При этом, персонаж может быть как связан с каким-либо реально существующим игроком, так и существовать полностью отдельно (т.е. быть NPC) — структуре событий это полностью параллельно.

Локации являются древовидной структурой, где каждая локация находится внутри некоей другой локации, на которую ссылается — так, в «Галактике» есть планета «Барраяр», в которой находится «графство Форбарра», в котором находится город «Форбарр-Султана», и так далее по мере надобности.

Организации также являются древовидной структурой, т.е. у «Службы Имперской Безопасности» есть родитель «Барраярская Империя». У организации может быть локация с которой она связана, например «Барраярская империя» находится в локации «Барраяр». Ключевыми параметрами организации являются рейтинги информационной прозрачности – так, «Служба Имперской Безопасности» достаточно высоко прозрачна для дочерних организаций (своих отделов) и достаточно мало прозрачна для «Барраярской Империи» в целом — т.е. другие члены (т.е. подданные) «Барраярской Империи» мало что знают о том, что происходит внутри СБ, но члены отделов СБ имеют некоторое представление о том, что происходит в СБ в целом.

Важнейшей таблицей является таблица событий. Каждое событие характеризуется датой в которую оно началось, (некто родился, и это событие) типом («родился», «умер», «стал членом организации», «женился», и так далее) и рейтингом публичности. Соответственно, осведомленность каждого конкретного персонажа о некоем событии определяется формулой исходя из рейтинга известности события, его типа, и организации и/или локации в которой оно произошло.

При этом событие «Цетагандийская война» имеет длительность (с года X по год Y) и место («Барраяр»), но не имеет субъекта или объекта, т.е. конкретного персонажа с которым оно произошло, зато имеет максимальную публичность. Событие «свадьба» имеет субъект и объект — двух персонажей, с которыми оно произошло. При этом причиной этого события (родителем) является другое событие — «знакомство».

В случае если существуют две версии события (примером такого события будет смерть Джеса Форратьера) одно из них является ложным и содержит ссылку на запись об истинном событии — при этом, оба этих события будут иметь разные рейтинги публичности.

Соответственно, в момент рождения, скажем, фора, происходит пачка событий — «рождение», «стал членом организации (Барраярская Империя)», «стал членом организации (форы)» и так далее.

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

Теперь внимание, вопрос:

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


  1. У меня есть отмазка, я допиливал оперу. ↩︎

  2. Речь ведь идет о сверхбольших кабинетках наподобие Форкона в первую очередь — хотя принцип универсален. Не хватит дальности – антенну побольше возьмем и повыше поставим. ↩︎

  3. Торопиться нам все равно особенно некуда, даже если она будет думать по секунде над каждым персонажам, так что об оптимизации базы речь изначально не идет. ↩︎

  4. В пределах мира тети Лоис взятого как игровой мир, для начала. ↩︎

  5. Вводя при надобности новые типы событий и отдельные формулы прозрачности для каждого. ↩︎