Инструменты ГМ для Scum and Villainy

ProcyonArchive

Рабочее место ГМа для «Изгоев Галактики», которое живёт на вашем сервере. Дела готовятся на досках квестов, к ним добавляются картинки, письма, карты и новости. Игроки видят ровно то, что им положено.

Скачать на GitHub

Все картинки и скриншоты на этой странице взяты из настоящей кампании.

Файл 00 — Предисловие

От автора

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

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

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

— Virrius

Большая цель

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

— Virrius

Файл 01 — Интерфейс

Что внутри

Контакты
Команда
Карточка контакта
Бланк персонажа
Локации
Карточка планеты
Работёнка и слухи

Файл 02 — Бланки

Бланки корабля и персонажей

От автора

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

— Virrius

Теперь бланк есть и у персонажей. «Бланк» собирает на одном экране стресс, травмы, раны, нагрузку, креды, навыки, способности и снаряжение, а в шапке держит памятку по правилам с пояснениями по клику. «Настройка» проводит через создание и развитие, «Досье» показывает того же персонажа личным делом Управления дознания.

Бланк корабля целиком
Бланк персонажа
Досье персонажа
Бланк корабля с телефона
Бланк персонажа с телефонаБланк персонажа с телефона, ниже по странице

Файл 03 — Мастерская

Генерация картинок

Мастерская отдаёт описание персонажа языковой модели, и та пишет промпт картинки по частям: облик, лицо, одежда, поза, место и свет. ГМ выбирает направление, регистр, образ и формат и получает четыре варианта, каждый по своему дублю промпта.

Мередит что написал ГМ

Мередит, инквизитор корпоративной безопасности: чёрный бронированный плащ, прицельный визор на одном глазу, шоковая дубинка на поясе.
Гоняется за Элиотом по всему мегаполису из-за голографической диверсии.

Мередит, вариант 1 Мередит, вариант 2 Мередит, вариант 3 Мередит, вариант 4
Мастерская
Слева две строки от ГМа. Мастерская разворачивает их в полный промпт, часть за частью, и рисует четыре варианта.

Те же люди, другая одежда

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

Файл 04 — Пайплайн

Как делается картинка

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

  1. 01

    Промпт с оглядкой на сеттинг

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

  2. 02

    Сборка кодом

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

  3. 03

    Картинка на своей видеокарте

    Z-Image-Turbo (INT8) в ComfyUI: восемь шагов, около 15 секунд на картинку на одной видеокарте с 16 ГБ памяти. Или любой API для картинок.

От автора

Я прям упоролся, чтобы пайплайн генерации выдавал стиль сеттинга на крайне бюджетных моделях. Он настроен под Z-Image-Turbo, которая работает локально на одной видеокарте с 16 ГБ.

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

— Virrius
Лестница, заброшказаброшка
Лестница, обжитой космособжитой космос
Лестница, хай-текхай-тек
Лестница, богатая жизньбогатая жизнь
Лестница, древние руиныдревние руины

Один промпт,
четыре сида

Пилот, один промпт, сид 1 Пилот, один промпт, сид 2 Пилот, один промпт, сид 3 Пилот, один промпт, сид 4

Четыре дубля
от LLM

Пилот, дубль 1 Пилот, дубль 2 Пилот, дубль 3 Пилот, дубль 4
Погоня до правки: мотоциклыдо
Погоня после правки: реактивные санипосле
Драка в баре до правки: трое позируют в ангаредо
Драка в баре после правки: перестрелка через стойкупосле

Файл 05 — Личные дела

Записи о персонажах

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

Записи о персонаже глазами ГМа
Записи Эда Нилсона глазами ГМа: общие и личные записи игрока.
Те же записи глазами другого игрока
Тот же персонаж глазами другого игрока: остались только общие записи.

Файл 06 — Доступ

Кто что видит

Почти у всего в кампании есть круг тех, кто это видит: все, выбранные игроки, владелец с ГМом или только ГМ. Каждому игроку достаётся только то, что открыто ему, а ГМ может открыть любую страницу глазами игрока.

Меню видимости у записи
Страница контакта глазами ГМа
Та же страница контакта глазами игрока

Файл 07 — Картография

Карты

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

Карта сектора Процион
Сектор Процион.
Карта арены на Амерате
Локальная карта: арена на Амерате из сюжета «Амератские развлечения».

Файл 08 — GM space

Доски квестов

Для каждого сюжета у ГМа свой холст. На нём карточки, заметки, счётчики, картинки и наброски от руки, связанные нитями.

Доска «Забастовка Индри»
Наброски и счётчики на доске
Меню правого клика на доске квеста
Готовая карточка на доску
Статист на доску

Файл 09 — Эфир

Новости

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

Что достанется игрокам, зависит от истории. Если событие публичное, под заголовком стоит суть, прямая зацепка: имя, место, за чем погнаться. Если нет, ГМ прячет суть, и игрокам остаётся только сама депеша: пристрастный и шумный гонзо-текст, где полезное зерно зарыто где-то внутри. Под каждой новостью жители сектора оставляют отклики.

От автора

Над некоторыми откликами я искренне угораю.

— Virrius
Три журналиста и их персоны
Заказ депеши
Лента новостей
Заказ новости по счётчику фракцииНовость, написанная по счётчику

Файл 10 — API

Agent Friendly

Всё, что делает интерфейс, идёт через обычный HTTP API, и API сам себя объясняет. Вводная схемы подсказывает агенту, с чего начать (войти, прочитать /api/meta, получить список кампаний и участников), как устроены роли и видимость, где искать id и что значат коды ошибок. У каждой операции есть краткое описание, побочные эффекты и схемы запроса и ответа. Swagger лежит на /api/docs.

Безопасность стола держится на одном правиле: всё, что ГМ создаёт без указанной видимости, остаётся только для ГМа, и до игроков ничего не дойдёт, пока ГМ это не откроет. Это проверяли: два агента без доступа к коду, только по схеме, выполнили рутину ГМа. Завели контакт со слухом, связью и карточкой на доске, потом счётчик, письмо и новость. Случайных ошибок не было, к игрокам ничего не утекло.

У досок квестов свой API для агентов: выгрузить доску текстом, а потом разложить карточки, заметки, счётчики и нити одним вызовом. Правки карточек, записей, карт, новостей и писем попадают в журнал кампании: кто правил и что было до этого.

От автора

«Окей, Claude, напиши за меня квест. Сделай круто и красиво»

«Окей, Claude. Прослушай мой бриф, потом закинь фракции и счётчики на доску из брифа, по моему описанию, заведи штук 10 статистов, сгенерь перса Bart Conwell, потом сгенерь зарисовок 20 под кампанию — выберем лучшие. И набросай справа штук 10 небольших small talks в группе исследований Марко»

— Virrius
POST /api/campaigns/{id}/boards/{board}/batch
{
  "cards": [
    {"key": "lazarus", "entity": "Lazarus Kincaid", "col": 0, "row": 0},
    {"key": "tip", "text": "Имя детектива прозвучало в эфире"},
    {"key": "hunt", "clock": "Детектив ищет Кайрена"}
  ],
  "edges": [
    {"from": "lazarus", "to": "tip", "label": "сливает"},
    {"from": "tip", "to": "hunt", "style": "arrow"}
  ]
}
Схема API в Swagger
Журнал кампании

Файл 11 — Перенос

Перенос кампании

Кампания целиком уходит одним архивом: записи, заметки, часы, письма, новости, карты, доски, журнал и все картинки. Его можно перенести на другой сервер или держать как резервную копию. При загрузке заводится новая кампания: игроки с учётками на этом сервере сохраняют доступ, загрузивший становится ГМом.

Выгрузка кампании в Admin space
Admin space → Кампании: «выгрузить» собирает ZIP с картинками, JSON — только данные. Ниже — загрузка из архива.