Long-form campaign state — quests, settlements, party entities, inventory, and the simulation scaffolding that makes campaign persistence work.
Campaign state is managed by the host. Ananke provides the physics substrate: entity injury heals over downtime, sleep debt accumulates during long watches, nutrition depletes on the march. These outputs drive the strategic layer — a depleted, wounded party is a mechanically weaker party.
Health bar represents 1 − average(shock_Q, fatigue_Q). Downed = shock_Q > CONSCIOUSNESS threshold.
| Item | Qty | Mass |
|---|---|---|
| arming sword | 2 | 1.6 kg |
| mail hauberk | 1 | 9.0 kg |
| leather jack | 2 | 4.0 kg |
| hardtack (7-day rations) | 4 | 11.2 kg |
| bandage roll | 8 | 0.4 kg |
| torch | 6 | 1.8 kg |
| rope (10 m) | 2 | 2.4 kg |
Total carry: ~30.4 kg across 4 party members. entity.carry tracks per-entity load; exceeding maxCarryCapacity_kg imposes fatigue penalties.
stepWoundAging(entity, 86400) for all party members to advance healing.stepSleep(entity, elapsedSeconds, isSleeping) to model sleep debt from long marches or watches.planCaravanRoute from collective-activities.ts to validate supply for multi-day journeys.examples/games/narrative-campaign/ for a working campaign game built on Ananke.