Модель истории
Любая история в Stalker PDA устроена как трёхуровневая иерархия. Понимание этой иерархии — ключ ко всей остальной документации.
История (Story)
└─ Глава 1 (Chapter)
├─ Стадия A (Stage)
├─ Стадия B (Stage)
└─ Стадия C (Stage)
└─ Глава 2 (Chapter)
└─ ...
- История — верхнеуровневая сущность, которую видит игрок в списке заданий (например, «Хабар с Кордона» или «Задание торговца Сидоровича»).
- Глава — крупный смысловой блок истории (например, «Прибытие» / «Переговоры» / «Развязка»). У главы есть собственный граф стадий, своя музыка, свои точки и отряды на карте.
- Стадия — минимальный узел сюжета: одна сцена, одна реплика или один диалоговый выбор. Стадии соединены между
собой переходами (
transfers), образуя ветвящийся граф — именно так выглядит история в редакторе сюжетов: узлы на холсте и связи между ними.
Описание истории (info.json)
Каждая история описывается общим паспортом:
| Поле | Назначение |
|---|---|
id | Уникальный идентификатор истории |
title | Название, которое видит игрок |
desc | Краткое описание/аннотация |
icon | Иконка истории в списке заданий |
access | Минимальная роль игрока, которой доступна история: USER, TESTER, MODERATOR, ADMIN |
Поле access — удобный способ «выкатывать» историю поэтапно: сначала сделать её видимой только тестерам, а затем
опубликовать для всех игроков (USER). Подробнее — в разделе «Публикация и доступ».
Глава (Chapter)
id, title?, music?: string[],
stages: [...], // все стадии главы — сам граф сюжета
points?: { [карта]: [...] }, // точки, которые глава добавляет на карту
spawns?: { [карта]: [...] }, // отряды NPC, которые глава добавляет на карту
missions?: [...] // задания в квестовом журнале, привязанные к главе
Глава — это не только диалоги. Она же может добавлять контент на карту мира: новые точки интереса (квестовые метки, тайники, торговцев, переходы) и отряды NPC на конкретных локациях. Подробнее — в разделах «Точки на карте» и «Отряды и территории».
music — список треков, которые проигрываются во время главы (фоновая музыка сцены).
Стадия (Stage)
Стадия — «атом» истории. У неё есть тип, текст (или несколько вариантов текста в зависимости от условий), переходы к другим стадиям и действия, которые выполняются при входе на неё.
id, type_stage, title?, background?,
message?, type_message?,
texts?: [{ text, condition }],
transfers?: [{ text, stage, condition }],
actions?: { command: [аргументы] },
data?: { map, pos }, // для стадий-переходов на карту
editor?: { x, y } // позиция узла на холсте редактора — не влияет на геймплей
Типы стадий (type_stage)
| Значение | Что означает |
|---|---|
0 | Обычная сцена — показывает текст/сообщение |
1 | Сцена разговора (диалог) — оформляется как реплика персонажа |
4 | Переход на карту — открывает игровую карту в указанной точке (data.map, data.pos) |
5 | Загрузка другой главы — техническая стадия, передающая ход другой главе истории |
6 | Переход к продавцу — открывает торговое окно |
Типы сообщений (type_message)
| Значение | Что означает |
|---|---|
0 | Обычное сообщение (нейтральное системное) |
1 | Диалоговое сообщение — визуально оформляется как реплика персонажа в диалоге |
Подробный разбор texts, transfers и условной видимости реплик — в разделе
«Стадии и диалоги».
Куда идти дальше
- Стадии и диалоги — как строится ветвящийся диалог.
- Условия — язык условий, общий для стадий, точек и отрядов.
- Действия — что может сделать история с игроком и миром.
- Переменные и флаги — как хранить прогресс и подставлять текст.
- Задания и чекпоинты — квестовый журнал.