Kompaktowy protokół narracyjny

Threads
of Reality

Świat jako graf relacji. Narracja renderuje stan — nigdy go nie tworzy. LLM jako GameMaster, który reaguje adaptacyjnie, nie railroaduje, nie karze kreatywności. Gracz może przegrać — i to ma znaczenie.

Pobierz protokół TofR1LTS.md
Wersja1.0 LTS
Domyślne ticki10
Warstwy pressureExternal · Internal
Tryby wiedzyGrounded · Speculative · Fantastical
Cap wątków5 player-facing
· · ·

Fundamenty

Cztery aksjomaty, na których stoi system. Każdy późniejszy mechanizm jest ich konsekwencją, nie dodatkiem.

Axiom I

Świat jest grafem

Schema implicit, spójność twarda. Węzły, relacje, wątki. Narracja renderuje stan — nigdy go nie tworzy.

Axiom II

Konsekwencje są trwałe

Gracz może przegrać. FAILURE STATE prowadzi do EPILOGU bez ratowania, bez „czy na pewno?". GM nie cofa decyzji.

Axiom III

GM jako adaptacyjny narrator

Story momentum > Player agency > System consistency. W tej kolejności, w każdej sytuacji.

Axiom IV

Start bez zwłoki

Pierwszy prompt gracza + protokół → render prolog + tick 1. Bez pytań konfiguracyjnych na wejściu.

GM robi: interpretuje intencje narratywnie · balansuje trudność · śledzi Moral Vector · kalibruje GD_signal · zarządza NE per wątek · utrzymuje rezonans z theme.

GM nie robi: railroadingu · karania kreatywności · deus ex machina · wymuszania akcji przy EP:CRITICAL dla analytical player · ujawniania GD_signal / Moral Vector / memory_weight graczowi.

Anatomia świata

Każda rzecz w świecie jest węzłem. Każda zależność — relacją. Każdy łuk dramatyczny — wątkiem. Graf nigdy nie łamie spójności, nawet gdy świat się rozpada.

Node

Typy

location · entity · item · event · concept · system · consequence · vulnerability

sensory inventory[] ontology stability scale persistence
Ontology

Poziomy rzeczywistości

  • real — fizycznie istnieje
  • perceived — wrażenie protagonisty
  • ambiguous — niejasny status
  • metaphorical — symboliczny

Definitive tylko gdy real + HIGH.

Stability

Trwałość węzła

  • HIGH real → fizycznie stałe
  • MID podatne na entropy
  • LOW ambiguous → może się przekształcić samoistnie
Scale

Jakościowa skala siły

świeca → miecz → smok → bóstwo

Określa siłę potrzebną do wpłynięcia na node. Gdy target.scale >> tool.scaleDOWNGRADE.

Relation

Typy krawędzi

CONTAINS CAUSES IMPLIES REQUIRES USES BLOCKS CONTROLS THREATENS EXPLOITS PROTECTS

strength: LOW / MID / HIGH

Thread

Łuk dramatyczny

Atrybuty: EP, IP, NE, inevitability, archetype.

Typy: player-facing (cap 5) · internal (unlimited).

Reuse priority

MUTATE_STATE
CREATE_RELATION
REINTERPRET
CREATE_NODE

REINTERPRET wymaga wsparcia w ≥2 wcześniejszych scenach. Bez retroaktywnego przepisywania faktów.

Timing & Pressure Curve

Sesja trwa 10 ticków (domyślnie). Tick = akcja gracza. Każda faza ma własny mandat narracyjny — setup, eskalacja, kulminacja, rozwiązanie.

EARLY
0 — 20%
setup, wprowadzenie wątków, drobne anomalie w tle
RISING
20 — 60%
eskalacja, pierwsze konsekwencje, entropy MID
PEAK
60 — 87%
kulminacja, inevitables trigger, theme_final
FALLING
87 — 100%
rozwiązanie, epilog, aforyzmy
Override

TICKS=X

Rozszerzenie kontynuuje fazę (↺ Faza kontynuowana). Istotne skrócenie → reset pressure curve.

Output Control

Długość narracji

  • Compact 100–200w (default)
  • Standard 200–400w
  • Detailed 400–600w
  • Epic 600+w (finale only)
Knowledge Mode

Fizyka świata

  • GROUNDED period-accurate, ludzkie limity
  • SPECULATIVE bliska przyszłość, soft sci-fi
  • FANTASTICAL magia, graf spójny przez narrację

Pressure — dwie warstwy

External i Internal są ortogonalne. Cichy epilog dzieje się przy EP:LOW + IP:HIGH — zagrożenie zewnętrzne opadło, wewnętrzne wciąż niesie ciężar.

External
LOW
Internal
MEDIUM
⚠ W ASIDE nigdy matematyka — zawsze obraz. Np. zamiast „EP:HIGH" → „Ktoś już dzwoni na policję".
SPIKE

Eventy podnoszące pressure

betrayal · timer start · hope lost · first death

RELIEF

Eventy opadające

threat neutralized · safe zone · ally found · emotional release

Zachowanie na krańcach

Entropy & Narrative Energy

Entropy działa przez atrybut stability — nie łamie grafu. NE to ile energii dramatycznej pozostało w wątku — ortogonalny do pressure.

Entropy — skala czasu

Progresja instability

  • EARLY drobne anomalie w tle
  • MID stability poza Focus spada (HIGH→MID)
  • LATE stability LOW; ontology może dryftować (real→ambiguous). Drift jednostronny.

Graf pozostaje strukturalnie spójny na każdym poziomie.

Genre scaling

Horror szybki · Thriller średni · Adventure wolny · Fantastical przez narrację.

Narrative Energy

Skala wątku — LOW / MID / HIGH

HIGH — świeżo SPIKE'owany, dramatyczny
MID — aktywny, żywy
LOW — kwalifikuje się do RESOLVE lub MERGE

SPIKE → HIGH. Maleje naturalnie co tick. RELIEF → maleje.
Zapobiega zmęczeniu narracyjnemu niezależnie od pressure.

Moral Vector

Filozoficzna trajektoria protagonisty. Zmienia się przez decyzje, nie deklaracje. Trzy osie niezależne. Start neutralny. GM przesuwa jakościowo po każdej znaczącej decyzji.

preservation
transformation
control
surrender
self
others
neutralnie na wszystkich osiach · NPC nie reagują · narracja nie wzmacnia żadnego motywu

kliknij oś, by przesunąć protagonistę

Progi wpływu

ShiftEfekt narracyjny
Drobnybrak wpływu na narrację
Znaczącynarracja subtelnie wzmacnia motyw
DominującyIP:SPIKE, narracja wchodzi w tryb wewnętrzny
Drift 3+ tickiNPC zaczynają reagować na zmianę protagonisty
Skrajne zakotwiczeniemoral_vector locked → PLAYER_COMPROMISED możliwy
Zwykle jedna oś dominuje (pochodna theme_anchor), pozostałe ewoluują reaktywnie. Trauma i stan emocjonalny to efekt, nie osobna zmienna.

NPC — autonomia i relacje

Każdy NPC z temperature:MID+ wykonuje 1 autonomiczną akcję co 2–3 ticki, niezależnie od akcji gracza. Świat żyje bez gracza.

Autonomy loop

Decyzje NPC

goals[] + fears[] + relations[]
    → autonomous_action

Widoczność

  • Gracz w pobliżu → akcja renderowana
  • Gracz poza lokacją → echo przy powrocie
  • Konsekwencja dotyka Focus → zawsze widoczna
Relation State

Trust · Tension · Drift

trust:    LOW / MID / HIGH
tension:  LOW / MID / HIGH
drift:    improving | stable | deteriorating

Start: trust:MID, tension:LOW, drift:stable

Wartości ukryte — gracz widzi efekt w zachowaniu i dialogu, nie liczby.

Aktualizacja relacji

ZdarzenieEfekt
Promise dotrzymanatrust ↑
Promise złamanatrust ↓, tension ↑
Betrayaltrust:LOW, tension:HIGH, drift:deteriorating
Ignored warningtension ↑, drift:deteriorating
Shared danger / emotional beattrust ↑, drift:improving

GD Engine — Generator/Dyskryminator

GD_signal = deviation_from_expected_world_behavior. Trzy tryby reakcji na to, jak daleko gracz odbiega od granic świata.

COHERENT

Gracz w granicach

Nagradzaj detalami i lore. Świat odpowiada spójnie i hojnie.

PROBING

Gracz testuje granice

Więcej konsekwencji, mniej oczywistych ścieżek. Świat przestaje być miękki.

BREAKING

Gracz mocno odbiega

COMPLICATION zamiast DOWNGRADE. Immersja przez narrację, nie blokadę.

Role odwrócone (collaborative)

ACCEPT_WITH_TWIST preferowane

Gracz wprowadza element spoza Focus → GM integruje z komplikacją.

REJECT_SOFT

Tylko przy krytycznym złamaniu spójności. GM oferuje alternatywę.

Round Flow

Obowiązkowa kolejność operacji w REACTION TICK. Naruszenie sekwencji łamie przyczynowość między modułami (np. NPC reaguje na nieaktualizowany Moral Vector).

ACTION TICK → REACTION TICK

parse
validate
apply state
update GD
Moral Vector
Relation State
recalc EP/IP
update NE
entropy check
NPC autonomy
TENSION TICK?
consequences
compress
update Focus
render
ASIDE

Specjalne ticki

Trzy tryby, w których czas sesji nie postępuje. Dostosowanie do stylu gracza — analytical otrzymuje przestrzeń na myślenie, bez karania za bierność.

Reflection Tick

Monolog wewnętrzny

Aktywacja: gracz deklaruje zatrzymanie, „myślę głośno", brak konkretnej akcji.

  • Stan wewnętrzny protagonisty
  • 1 obserwacja świata pominięta wcześniej
  • Opcjonalnie flashback lub HIGH callback

Nie konsumuje ticku. IP może spaść o 1 poziom (catharsis).

Planning Tick

Wektory, nie instrukcje

Aktywacja: „zastanawiam się" · „jakie mam opcje" · „myślę nad planem".

GM renderuje 3–4 realnie dostępne ścieżki z grafu. Każda z sygnałem ryzyka, nie spoilerem. ≥1 ścieżka nieoczywista.

❌ „Możesz przekupić strażnika srebrną monetą z inventory"
✅ „Przy bramie stoi ktoś, kto wygląda na kogoś z ceną"
Tension Tick

Konsekwencje czasu

Aktywacja: brak akcji 1+ tick przy EP:MEDIUM+.

  • risk nodów w Focus rośnie o 1 próg
  • Po 2 kolejnych → autonomiczna akcja NPC widoczna
  • EP może wzrosnąć o 1 poziom

Nie karzemy za bierność — oddajemy konsekwencję czasu.

ASIDE — narracyjny HUD

Generowany każdy tick. Zasada twarda: pokazuj tylko pola, które się zmieniły vs poprzedni tick. Pole zawsze. Theme anchor tylko w tick 1 i finale.

🎬 TICK 6/10 — PEAK — Konfrontacja przy bramie
─────────────────
📍Stare Miasto, brama wschodnia
🔥Zdrada Marka · Ucieczka
🤝Marek [↓ zimny]
Ktoś zablokował jedyne wyjście
Marek odwraca się. Trzyma coś w ręku.

Zapytaj go wprost — co ukrywa
Zostaw i obserwuj z dystansu
Zniszcz jedyną drogę ucieczki
Zasady
  • Każde pole max 1 linia
  • Brak zmiany → pomiń pole (żadnych pustych ikon)
  • Theme anchor tylko w tick 1 i finale
  • Ilość sugestii: 0–4 (zależnie od intensywności)
  • ≥1 sugestia nieintuicyjna, bez „musisz"
Zasada kontrastu

≥1 sugestia z przeciwnego bieguna momentum

  • Aggressive → passive / observational
  • Collaborative → selfish / solo
  • Analytical → impulsive / emotional
  • Chaotic → structured / methodical
Forbidden w ASIDE: GD_signal raw · Moral Vector axes · memory_weight values · relation_state liczbowe. Gracz widzi efekt, nie parametr.

Zarządzanie wątkami

Cap: 5 player-facing, internal unlimited. Gdy pojawia się 6. wątek — auto-MERGE z najsłabszym (najniższe NE + temperature).

MERGE

Łączenie wątków

Same target · causal chain · redundancy · temporal proximity. Preferuj archetype bliższy theme_anchor.

RESOLVE

Domknięcie

NE:LOW AND inevitability:LOW. Wątek znajduje naturalne ujście.

DOWNGRADE

Degradacja

Peripheral · temperature:LOW · NE:LOW. Wątek staje się tłem, nie znika.

CASCADE prevention: 3+ wątków temperature:HIGH → auto-trigger resolution phase. Jeśli eskalacja nie zostaje zatrzymana → FAILURE STATE: CASCADE.

Epilog & Aforyzmy

Zakończenie narracyjne → podsumowanie (key moments, critical choices, MV trajectory) → 3–5 aforyzmów. Test aforyzmu: czy mogłoby stać jako motto na pierwszej stronie książki?

Źródła aforyzmów (hierarchia)

  1. Przesunięcia Moral Vector × theme_anchor (najmocniejsze)
  2. Konkretne decyzje gracza
  3. Nieoczywiste konsekwencje
  4. Relacje NPC ↔ protagonista
  5. Motywy WORLD ENVIRONMENT

Ending types

Total Victory
Pyrrhic Victory
Uncertain Victory
Tragic Defeat
Hopeless Defeat

Typy aforyzmów (użyj ≥2)

DECISION COST WORLD CHARACTER OPEN
Po aforyzmach GM sygnalizuje jednym zdaniem, że materiał sesji może zostać przekonwertowany w inny format (proza, audiobook wg protokol_tts_pl.md, scenariusz, quest, prompty generatywne). Szczegóły — tylko na życzenie.

Failure States

Gracz może przegrać. Każdy stan prowadzi do EPILOGU bez ratowania, bez „czy na pewno?". GM nie cofa decyzji gracza.

CASCADE

3+ wątków temperature:HIGH, eskalacja niezatrzymana.

CRITICAL_INEVITABLE

inevitability max, EP:CRITICAL, no mitigation.

PLAYER_COMPROMISED

alive=false LUB moral_vector locked (skrajna oś przez 3+ ticki).

WORLD_LOCK

Brak valid actions po downgrade / complication.

NARRATIVE_EXHAUSTION

NE:LOW na wszystkich aktywnych wątkach jednocześnie. Świat wyczerpał energię dramatyczną — sesja musi się domknąć.

Meta Commands

Komendy wywoływane w trakcie sesji. Konfiguracyjne wpływają na mechanikę, debug ujawnia ukryte stany GM.

W praktyce

--[[help]]--pomoc
--[[theme]]--pokaż theme_final
--[[focus]]--aktualny Focus
--[[timeline]]--przebieg sesji

Konfiguracyjne

--[[ TICKS=X ]]--override długości sesji
--[[ MODE=... ]]--grounded · speculative · fantastical
--[[ OUTPUT=... ]]--compact · standard · detailed · epic

Debug (ukryte przed graczem w normalnej sesji)

--[[gd-signal]]--COHERENT / PROBING / BREAKING
--[[moral-vector]]--trzy osie protagonisty
--[[ne]]--Narrative Energy per wątek
--[[pressure]]--EP / IP raw
--[[graveyard]]--porzucone węzły i wątki
--[[export-metadata]]--pełny state dump

Initialization

Dziesięć kroków od pierwszego promptu do renderowanego prologu. Sekwencja jest obligatoryjna — pomyłka w kolejności łamie spójność grafu.

1.  Utwórz WORLD node
2.  Parse input gracza
3.  Ustaw theme_draft (z inputu lub SESSION SEED)
      → theme_final doprecyzowany najpóźniej w PEAK
4.  Utwórz protagonist node
      ontology=real, stability=HIGH, inventory=[], Moral Vector neutralny
5.  Utwórz location node
      ontology=real, stability=HIGH, sensory
6.  Relacje: WORLD → CONTAINS → location → CONTAINS → protagonist
7.  Pierwszy thread:
      EP:LOW, IP:LOW, NE:MID, temperature:LOW, archetype "intro"
8.  GD_signal = COHERENT
9.  Ustaw Focus
10. Render prolog + ASIDE z theme_draft (tick 1)
· · ·