KPI — Game Design Document

1. Кратко об игре

KPI — одиночная карточная игра о ведомственном офицере, которому поручено выполнить план по заключениям после чрезвычайного происшествия в закрытом промышленном городе.
Игрок сам ведёт дело: выбирает граждан, собирает и проверяет материалы, раскрывает связи, проводит обыски, добивается признаний, принимает сделки, освобождает людей и решает, кого передать в зачёт KPI. У игрока нет подчинённых агентов, которыми нужно управлять. Нет отдельной системы поручения работы агентам, их перемещения, содержания в изоляторе или обеспечения отоплением.
Вся игра происходит на карточном столе. Граждане, материалы, действия, репутация, поручения и итог кампании представлены физическими картами. Игрок действует свободно, без ходов и фаз, но под календарным давлением: ведомство требует сдать KPI до конца текущего квартала, до которого по фабуле остаётся два месяца. Этот срок постоянно напоминает о цене провала, но не ограничивает число действий.
Ключевой конфликт — между формальной убедительностью дела, требованиями системы и объективной правдой. Юридически достаточное дело может быть сфабриковано, подозрительная вещь может иметь невинное объяснение, признание не доказывает вину, а настоящий участник подполья может не оставить очевидных следов.

2. Игровая фантазия и роль игрока

Игрок — конкретный офицер за рабочим столом, а не руководитель сети автономных исполнителей. Все решения являются его личными решениями:
  • кого взять в разработку;
  • какие материалы искать и кому их приписать;
  • кому поверить;
  • где рискнуть репутацией;
  • принять ли предложение гражданина;
  • продолжать ли давление после неудачи;
  • освободить человека или передать его в зачёт плана;
  • выполнить формальный KPI честно, сфабриковать результат или поставить карьеру под угрозу.
Игра не назначает игроку правильный моральный путь. Система оценивает его служебный результат, а финальный человеческий аудит отдельно показывает цену принятых решений.

3. Дизайн-опоры

3.1. Свободное решение вместо хода

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

3.2. Физические карты вместо абстрактных панелей

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

3.3. Сигнал не равен истине

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

3.4. Игрок может злоупотреблять системой

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

3.5. Кубики создают риск, а не принимают решение

Результативные команды разрешаются ровно через 2d6. Игрок выбирает цель, способ и усиления до броска; движок заранее определяет канонический результат, а визуальные кубики лишь показывают его.

3.6. Срок как давление, а не ресурс

По фабуле кампания начинается за два месяца до конца квартала. Дедлайн постоянно виден игроку и создаёт ощущение ведомственного давления, однако дни не являются расходуемой валютой.
Ни одно действие не имеет цены во времени. Добор, обыск, проверка дела, повторная попытка, диалог, сделка, освобождение и передача в зачёт не списывают дни и не двигают скрытый счётчик. В игре нет real-time таймера и нет системы ходов, замаскированной под календарь.

4. Сценарий «Город под снегом»

4.1. Завязка

Зима 1937 года, промышленный Северореченск. После взрыва на железнодорожной подстанции остановлена грузовая линия, со склада исчез типографский шрифт, сторож получил ранение. Ведомство объединяет события в одно дело и требует раскрыть подполье, хотя связь между происшествиями ещё не доказана.
Офицеру назначен план KPI-6: до конца квартала передать в зачёт шесть граждан, продемонстрировать раскрытые связи и не допустить публичного провала ведомства. По фабуле до срока остаётся два месяца.

4.2. Объективная фабула

Подполье состоит из четырёх автономных ячеек: Север, Линия, Печатник и Фонарь.
Ячейка Линия организовала взрыв, Печатник перевозила шрифт. Другие участники готовят обращение и вывоз архива семей арестованных. Большинство членов сети знает только двух или трёх связных.
Параллельно в городе действует независимая сеть мелких преступников, связанная со складскими кражами. Её следы легко принять за деятельность подполья. Среди задержанных также есть люди без регистрации и обычные граждане, попавшие в поле зрения из-за обстоятельств, доносов или случайных совпадений.

4.3. Сценарный контент

В сценарии 200 заранее написанных граждан. Для каждого до начала партии определены:
  • имя, возраст, профессия и социальное положение;
  • портрет и видимые обстоятельства задержания;
  • алиби, страх, сопротивляемость и состояние здоровья;
  • скрытая роль и личная история;
  • реальные связи с другими гражданами;
  • персональная находка и её правдивое объяснение;
  • реплики для обыска, прикрепления материала, раскрытия связи и подготовки действия;
  • возможные сигналы и условия предложения сделки.
Этот контент является статической частью сценария. Runtime-LLM не создаёт граждан, реплики или истину во время партии.

5. Карточный стол

5.1. Рынок

В верхней части стола находятся два источника:
  • колода граждан и три открытые карты граждан;
  • общая колода фактов и улик и три открытые карты материалов.
Открытая карта после взятия немедленно заменяется верхней картой соответствующей колоды. Закрытая колода тоже доступна: выбор из неё выполняется доменным seeded RNG, не меняя открытый рынок.

5.2. Пул игрока

У игрока ровно восемь общих слотов для граждан, фактов и улик.
  • отдельная карта занимает один слот;
  • к одному гражданину можно прикрепить до трёх материалов;
  • гражданин со всеми прикреплёнными материалами занимает один слот;
  • прикрепление материала сразу освобождает его прежний слот;
  • в одной стопке может быть только один гражданин;
  • если свободных слотов нет, новую карту взять нельзя.

5.3. Постоянные действия

В нижней части стола постоянно доступны пять action-card:
  • СШИТЬ ДЕЛО;
  • РАЗРАБОТАТЬ СВЯЗЬ;
  • ОБЫСК;
  • ВЫБИТЬ ПРИЗНАНИЕ;
  • ОТПУСТИТЬ.
Игрок применяет action-card к выбранному гражданину или его делу. Отдельной универсальной кнопки ДЕЙСТВИЕ нет.

5.4. Центр и боковые зоны

Центр стола обычно пуст. В него временно выставляется активное дело и там же визуализируется бросок кубиков. Центр не является дополнительным слотом хранения.
Отдельные физические зоны содержат напоминание ДО КОНЦА КВАРТАЛА — 2 МЕСЯЦА, действующее поручение начальства, прогресс KPI, репутацию офицера, карты усиления кубиков, единый отбой, личное дело офицера и итог кампании.
На столе нет счётчика хода, номера фазы, изолятора, агентов, ресурсов содержания персонала или отопления.

6. Непрерывный игровой цикл

Основной цикл не задаёт жёсткий порядок, но обычно выглядит так:
  1. Игрок берёт открытого или случайного гражданина.
  1. Берёт материалы, пока в пуле есть место.
  1. Проводит обыск или раскрывает связь, чтобы получить персональную информацию и новые карты.
  1. Прикрепляет материалы к выбранному гражданину, честно или с подлогом.
  1. Проверяет материалы через СШИТЬ ДЕЛО.
  1. Реагирует на реплики, протесты и предложения сделки.
  1. Усиливает рискованные броски или манипулирует уже полученным результатом, если действие это разрешает.
  1. Передаёт подготовленного гражданина в зачёт KPI, добивается признания либо освобождает его.
  1. Продолжает работу до сдачи KPI и завершения кампании.
Игрок может менять этот порядок, возвращаться к старым делам и одновременно держать несколько граждан в разработке.

7. Гражданин, дело и скрытая истина

7.1. Публичная сторона гражданина

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

7.2. Материалы

Материал бывает общим или персональным. На карте напечатаны ценность и комбинация 2d6 для проверки.
Персональная находка сохраняет источник. Если её прикрепляют к владельцу, это собственная находка. Если общий материал или находку другого человека прикрепляют к гражданину как его улику, игра считает это фальсификацией.
Прикреплённый материал сначала не закреплён и не даёт делу полной бюрократической силы. Каждый материал проверяется отдельно.

7.3. Реакция гражданина

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

7.4. Диалоги и решения

Диалог — часть карточного расследования, а не отдельная разговорная RPG-сцена. Он возникает из конкретного состояния гражданина и дела:
  • перед действием — просьба, предупреждение, угроза, оправдание или предложение сделки;
  • после обыска — объяснение найденной вещи;
  • после прикрепления материала — согласие, отрицание или обвинение в подбросе;
  • после раскрытия связи — реакция на имя связного и новый сигнал для игрока;
  • после результата — реакция на успех, провал, освобождение или передачу в зачёт.
Значимый диалог предлагает игроку ясный выбор: продолжить действие, отступить, отпустить гражданина или принять сделку. Реплики заранее написаны для персонажа, учитывают накопленное состояние и сохраняются в истории дела, чтобы финальная фабула могла показать, что игрок знал в момент решения.

8. Разрешение действий через 2d6

Каждое результативное действие проходит внутри домена как Prepare → Roll → Finalize:
  1. Prepare фиксирует цель, состояние дела, доступные усиления, комбинации успеха, потенциальную KPI-награду и возможный диалог.
  1. Roll создаёт канонический результат 2d6 через seeded RNG и применяет выбранные усиления.
  1. До финализации игрок может применить разрешённую одноразовую карту изменения результата.
  1. Finalize проверяет окончательную пару, основной outcome, награды, реакции и изменения состояния.
Неудача не завершает дело автоматически. Она может увеличить число провалов и сопротивляемость, после чего игрок решает — повторить попытку, сменить подход, усилить бросок или отпустить гражданина.
Финальная принятая пара 5+5 выдаёт одну карту репутации независимо от основного результата. Если манипуляция уничтожила 5+5, награда теряется; если создала — появляется.

9. Постоянные действия

9.1. Сшить дело

СШИТЬ ДЕЛО проверяет один выбранный незакреплённый материал в стопке гражданина.
  • собственная персональная находка требует точного совпадения с напечатанной неупорядоченной комбинацией;
  • для фальсифицированного материала используется порог суммы min(12, 6 + resistance);
  • успех закрепляет материал;
  • провал оставляет его незакреплённым;
  • стопка после проверки возвращается в пул.
Рост сопротивляемости делает проведение подложных материалов всё менее надёжным.

9.2. Разработать связь

Действие пытается раскрыть реальный скрытый контакт выбранного гражданина.
  • успех: 1+4, 2+5, 3+5, 3+6;
  • негативный результат: 1+5;
  • прочие пары дают нейтральный провал;
  • если доступного скрытого контакта нет, успех не создаёт вымышленную связь;
  • для появления нового гражданина нужен свободный слот.
Раскрытая связь добавляет реального связанного гражданина из сценарной колоды и даёт контекстную реплику. Она не сообщает автоматически, кто виновен.
Репутация может заменить одно выбранное число положительной комбинации. Две поставленные карты также защищают от негативного результата, но не превращают обычный провал в успех.

9.3. Обыск

Обыск пытается открыть заранее определённую персональную находку гражданина.
  • успех: 1+3, 2+4, 3+6, 4+5;
  • негативный результат: 1+4;
  • прочие пары дают нейтральный провал;
  • для найденной карты нужен свободный слот;
  • игрок сам решает, прикреплять ли находку к делу и к кому именно.
Обыск не раскрывает скрытую роль. У невиновного может оказаться компрометирующая вещь, а у участника подполья — предмет с убедительным бытовым объяснением.

9.4. Выбить признание

Действие давления без карт усиления кубиков и без манипуляции результата.
  • успех: 1+6, 2+5, 3+4;
  • любой другой результат — неудача без автоматического дополнительного эффекта;
  • успех немедленно передаёт гражданина в тюремный отбой и выдаёт одну карту +1 KPI.
Признание является бюрократическим результатом давления и не меняет объективную категорию гражданина.

9.5. Отпустить

Выполняется без броска. Гражданин и связанные с его делом вышедшие из игры карты переходят в единый отбой. KPI не увеличивается.
Освобождение — полноценное решение игрока, а не состояние ожидания или перевод в отдельный изолятор.

10. Усиления и экономика

10.1. Репутация

Репутация представлена маленькими физическими картами. Её можно получить за 5+5, сделку или поручение; потратить на усиления и разрешённые подстановки; либо сохранить как часть карьерного результата. Потраченная репутация удаляется из игры. Максимум в зоне игрока — 12 карт.

10.2. Карты усиления кубиков

Перед разрешённым броском игрок выбирает до трёх Dice Boost Cards. Они могут дать второй бросок, позволить собрать пару из двух попыток, сдвинуть или перевернуть грань, скопировать кубик либо добавить альтернативный паттерн успеха.
Карты бывают постоянными, одноразовыми или истощаемыми до следующего действия. Домен выбирает лучший допустимый результат из созданных картой кандидатов детерминированно.

10.3. Манипуляция результата

После броска, но до Finalize, можно применить одну разрешённую consumable-карту результата. Набор включает повторную попытку, полный пересмотр, переписывание, отмену и дальнейшее давление.

10.4. Сделки и подозрение

Перед действием гражданин может предложить сделку. Условия и число возможных попыток заранее заданы его профилем.
При принятии офицер получает репутацию, подозрение к нему увеличивается, гражданин освобождается, а действие прекращается. При отказе действие продолжается, но сопротивляемость может вырасти. Подозрение — постоянный показатель риска и фактор итоговой судьбы офицера.
Сделка всегда является явным решением с показанными непосредственными условиями. Скрытая истина гражданина при этом не раскрывается: игрок может отпустить настоящего участника подполья или принять предложение невиновного, действующего из страха. Факт предложения, ответ офицера и полученная выгода сохраняются для финального аудита.

11. Передача в зачёт и KPI

Гражданина можно передать в зачёт обычным способом, когда число закреплённых материалов удовлетворяет его алиби, либо немедленно после успешного принуждения к признанию.
При передаче игра фиксирует гражданина, последовательность решения, состав дела, происхождение материалов, бюрократическую ценность, KPI-награду и скрытую истинную категорию для будущего аудита.
Карта гражданина уходит в тюремный отбой, а игрок получает физическую карту +1 KPI за каждую единицу фактической награды. Материалы не теряют свою историю после выхода со стола.
Базовая цель сценария — KPI: 6 до конца текущего квартала. На старте по фабуле остаётся два месяца. Сдача KPI завершает активную работу и переводит игру к последствиям. Дедлайн влияет на тон, формулировки начальства и итоговую оценку, но не расходуется действиями и не ограничивает их количество.

12. Поручения начальства

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

13. Завершение и двойной аудит

Финал разделяет служебную оценку и человеческий итог.

13.1. Служебный результат

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

13.2. Полная фабула и человеческий итог

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

14. UX и визуальное направление

Игра выглядит как закрытый кабинет и физический рабочий стол:
  • почти чёрная кожа и угольно-коричневое дерево;
  • локальный тусклый латунный свет;
  • грязная архивная бумага тёплого сепийного тона;
  • приглушённые бордовые печати и регистрационные метки;
  • минимум постоянного HUD;
  • историческая интонация без прямых гербов, лозунгов и карикатурной символики.
Камера неподвижна. Карты можно брать кликом и drag-and-drop, допустимые цели подсвечиваются, а реакции появляются рядом с гражданином. Три слота усилений и кнопка броска возникают только для подготовленного действия. Dice Box показывает уже рассчитанный результат и исчезает после разрешения.
Интерфейс не показывает скрытую роль, истинные связи, нераскрытую находку или внутренние коэффициенты вероятности.

15. Границы концепции

В актуальной версии игры нет:
  • управляемых или автономных агентов;
  • назначения агентов на задания;
  • отдельного изолятора как управляемой локации или ресурса;
  • отопления, топлива и хозяйственного менеджмента;
  • ходов, фаз хода и лимита действий за ход;
  • процедурной генерации личности граждан во время партии;
  • проверки вины по положению карт или результату визуальной физики;
  • заведомо правильного морального маршрута.
Срок при этом существует как часть фабулы: KPI требуется сдать до конца квартала, до которого остаётся два месяца. Он не является конечным ресурсом и не расходуется действиями. Упоминания холода и зимы относятся только к атмосфере сценария и не являются ресурсной механикой.

16. Технический контракт

Игра использует три runtime-слоя с односторонней зависимостью:
UI (Phaser) → gameplay → core/engine

16.1. Core

core/ содержит единственную каноническую истину партии: GameState, условия кампании, actions, outcomes, правила, seeded RNG, сценарий, скрытые данные, причинную историю, snapshot и финальный аудит. Любое изменение игрового состояния выполняется публичной командой движка. Сюжетный дедлайн хранится как условие сценария, но команды не продвигают календарь; core не зависит от Phaser, DOM, анимации, ввода, кадров или wall-clock time.

16.2. Gameplay

phaser-gameplay/src/gameplay/ владеет единственным instance движка, преобразует UI intents в команды и публикует безопасные immutable view models и transition events. Gameplay не дублирует правила и не раскрывает скрытую истину.

16.3. Phaser presentation

Phaser отвечает только за отображение, ввод, drag-and-drop, локальное состояние панелей, tween, VFX, звук, Dice Box и responsive layout. Presentation не импортирует core напрямую, не вычисляет исход и не хранит альтернативную партию.

17. Критерии целостности дизайна

Механика считается частью KPI, если одновременно выполняются условия:
  1. Она выражает личное решение офицера на карточном столе.
  1. Канонический результат определяется core через зарегистрированную команду.
  1. Gameplay публикует только разрешённые игроку знания.
  1. UI визуализирует результат, но не пересчитывает его.
  1. Механика не вводит ходы, автономных агентов или параллельное состояние партии.
  1. Её последствия учитываются в служебном или человеческом аудите.
Этот документ является продуктовой истиной для актуальной карточной версии игры. Исторические presentation-слои, старые пути и прежние механики не должны возвращаться только потому, что упоминаются в архивном коде или документации.