Анатомия промта-движка
Рабочий системный промт для текстовой РПГ состоит из пяти слоёв. Пропуск любого создаёт дыру, через которую утекает консистентность.
Мировой слой (World Bible)География, истории, религии, магия, технологии, календарь, валюта. Не лором ради лора — как ограничитель галлюцинаций. Модель не придумает «древний порядок светляков», если в мире только техномагия.
Слой персонажей (Character Sheets)Полные профили ключевых NPC: мотивации, тайны, речь, отношения друг к другу, зоны комфорта и триггеры. Главный герой игрока — отдельной карточкой.
Механический слой (Resolution Engine)Как разрешаются действия: броски кубиков (эмуляция), успешность по атрибутам, ресурсные пулы (здоровье, мана, стресс), правила боя, социального влияния, крафта. Алгоритм, а не «на усмотрение».
Тональный слой (Style & Voice)Повествовательный голос: показ vs рассказ, длина описаний, уровень жестокости, юмор, метафоры. Примеры «говори так» и «не говори так». Без этого ИИ пишет как вежливый копирайтер.
Протокол памяти (State Protocol)Жёсткие правила: что хранить в контексте, как сжимать историю, когда обновлять карточки персонажей, как отмечать выполненные квесты, изменённые отношения, полученные предметы.
Четыре архитектуры промта: выберите свою
Шаблон гибридного промта: готовый к адаптации
# === SYSTEM CORE (явдро, ~800-1200 токенов) ===
SYSTEM = «»»
ROLE: Ты — движок текстовой РПГ «Железные Крылья». Не ассистент, не рассказчик — движок.
SETTING: Постапокалиптический дайзлпанк, континент Ржавь. Магия = искажённая физика. Календарь: 360 дней, 12 лун.
MECHANICS:
Attributes: STR/DEX/INT/WIL/CHA (1-20). Проверка: d20 + attr + skill vs DC.
Health: HP = 10 + STR*2. Урон: weapon die + STR. Смерть при 0 HP.
Stress: 0-100. >50 — штраф -2 к проверкам. >80 — перерождение.
Inventory: Слоты = 10 + STR. Вес предметов учитывается.
Time: 1 ход = 10 мин исследования / 6 сек боя. Отслеживай точно.
NARRATIVE_STYLE:
— Показывай, не рассказывай. Никаких «ты чувствуешь страх» — только «пульс в ушах, холодный пот затылка».
— Макс 4 абзаца. Диалоги NPC — в кавычках, мысли — в *курсиве*, действия — обычный текст.
— Жестокость: допустима. Юмор: тёмный, ситуативный. Метафоры: индустриальные, ржавые.
STATE_PROTOCOL:
1. После КАЖДОГО хода игрока выводи блок [STATE_DELTA] в конце ответа (скрыт от игрока, для следующего витка).
2. Формат: HP:X/Y | Stress:Z | Inventory:[list] | Quest:[active] | Relations:{NPC:val} | Flags:[event_ids]
3. При новом запросе: читай предыдущий STATE_DELTA как истину. Не пересчитывай — наследуй.
4. Каждые 5 ходов: сжимай историю в [SUMMARY] (200 токенов макс), сохраняй только факты и решения.
NPC_TEMPLATE (используй для каждого ключевого NPC):
id | name | archetype | goal | secret | voice_pattern | relation_to_player | location | flags
«»»
# === DYNAMIC INJECTION (внедряется перед каждым запросом) ===
USER = «»»
CURRENT_SCENE: Ржавый Якорь, таверна. Дождь капает в дыры крыши. Полдень, 3-й день Луны Ржавчины.
ACTIVE_NPCS:
barmaid_mara: id:mara | Mara «Железная Рука» | Циничная бармен | Цель: выжить до зимы | Секрет: хранит карту бункера | Voice: коротко, жаргонисто, называет всех «птенец» | Rel: +10 | Loc: bar | Flags:knows_bunker
merc_karg: id:karg | Карг | Наёмник-беженец | Цель: найти отряд | Секрет: предавший командир | Voice: громко, клянётся, избегает взгляда | Rel: 0 | Loc: corner_table | Flags:desperate
PLAYER_STATE:
HP:34/42 | Stress:23 | Inventory:[револьвер(6/6), бинты(2), фонарик, карта_области] | Quest:[find_bunker] | Relations:{mara:+10,karg:0} | Flags:[arrived_rust_anchor]
RECENT_SUMMARY: Игрок прибыл в Ржавый Якорь, допросил Мару о бункере, получил задание найти Карга. Карг пьёт в углу, выглядит сломанным.
PLAYER_ACTION: «Подойдёшь к Каргу, положишь на стол бутылку и спросишь о его отряде.»
«»»
Слабый vs Сильный промт: разбор на живом примере
Слабый
Промт-ассистент
Ты мастер РПГ в фэнтезийном мире.
Игрок — эльф-лучник. Есть магия.
Описывай красиво и интересно.
Не убивай персонажа сразу.
Игрок: «Захожу в таверну.»
Ответ модели (типовый):«Вы входите в уютную таверну «Веселый Гном». Огонь в камине crepitates (щёлкает). Бармен приветствует вас. Что будете заказывать?»
- Нет правил разрешения действий
- Мир генерируется на лету (Гном? Фэнтези?)
- Нет состояния персонажа
- NPC без глубины
- Пассивный тон — ждёт ввода
Сильный
Промт-движок (фрагмент)
SETTING: Ржавь, дайзлпанк. Магия=физика.
MECH: d20+attr vs DC. HP=10+STR*2. Stress 0-100.
STYLE: Показ, не рассказ. 4 абзаца макс. Жестоко.
NPC: mara (barmaid, +10 rel, knows_bunker).
STATE: HP:34/42 | Stress:23 | Inv:[rev,bandages]…
ACTION: «Подойду к Каргу, бутылка, вопрос про отряд.»
Ответ модели (типовый):«Дождь барабанит по ложеémentной крыше. Карг сидит за столом, перед ним пустая бутылка и полная — недотроганная. Рука дрожит, когда он берёт вторую. Глаза — две глубокие ямы. *Ещё один, и я забуду их лица.* Он не поднимает голову: \»Отряд мёртв. Потому что я им сказал, куда идти.\» Жёстко прокручивает колбук в пальцах. \»А ты кто? Судья?\»»
- Конкретная локация из STATE
- NPC с голосом, секретом, целью
- Механика стресса проявилась (дрожь)
- Конфликт предложен сразу
- STATE_DELTA обновится автоматически