worldbox-observer-mod/README.md
DazedAnon 12e2ba0d01 feat(narrative): refine camera and narrative handling for civilized terminology
- Implement checks for civilized terminology in camera focus events
- Update event handling to suppress inappropriate pack language for civilized characters
- Enhance narrative presentation to differentiate between family and pack language
- Introduce new scenarios to validate significance of beats and relationships
- Improve documentation to clarify narrative structure and event significance
2026-07-24 14:06:23 -05:00

56 lines
2.8 KiB
Markdown

# IdleSpectator
WorldBox NeoModLoader mod: AFK Idle Spectator camera director.
## Controls
- **I** - toggle Idle Spectator on/off
- **F9** - toggle Character Chronicle side panel (non-modal; works with focus)
- Dragging the camera while Spectator is on turns it off (after a short grace period)
## What it follows
The camera follows the developing lives and relationships of a five-character emerging cast. A story
scheduler chooses developments that advance an active character thread, yields to critical world
events, and returns only when the story has new evidence. `EventStrength` still models urgency and
visual value, but it no longer owns continuity. Bounded character/world fill runs when no episode
has a usable development.
While watching, a **character beat caption** shows who they are (Identity), an orange **event
sentence** (Beat), and muted Context (story spine or confirmed pressure). Main characters get
`Name · Title` when they have a real role. The Beat is rendered once from typed event evidence, so
relationship details are not appended a second time.
Routine camera shifts stay with MCs or their confirmed Cast/story context. When a related non-MC is
followed, a muted Connection row explains the MC link. Background lives still accumulate story
potential off-camera and may earn a slot; only typed turning points, consequences, story payoffs,
or critical world/disaster events can give an unrelated background character exceptional screen
time. “World critical” is not inferred from score alone: it requires a typed active quake/outbreak,
a crisis-scale disaster, or a materially contested large war.
The orange Beat answers “why this shot now?” and is event-only: ambient grounding never falls back
to species or job text. Exact named participants can carry a compact, typed MC-relative qualifier,
such as `Kills Omya (child of Waf)`, when that relationship explains the event's significance.
Civilized family Cast uses `Kin`; pack terminology is reserved for non-civilized creatures.
Confirmed MC events, threads, consequences, Legacy, and Prefer choices are stored in a versioned
per-world sidecar at the game save boundary. Runtime camera state and episode timing remain
session-only.
See [`docs/life-saga.md`](docs/life-saga.md) and [`docs/event-reason.md`](docs/event-reason.md).
Lingering on someone writes a **Chronicle** line; F9 lists them and click jumps the camera.
## Layout
- `IdleSpectator/` - mod source (`mod.json` + C#), loaded/compiled by NML
- `scripts/verify-nml.sh` - load verification helper
- `docs/event-reason.md` - evidence, orange-reason, and camera-alignment contract
## Deploy
```bash
ln -sfn "$(pwd)/IdleSpectator" \
"$HOME/.local/share/Steam/steamapps/common/worldbox/Mods/IdleSpectator"
```
Requires NeoModLoader in `worldbox_Data/StreamingAssets/mods/` and **Experimental Mode** enabled.