Tick Pipeline
世界的心跳。每 5 分钟一次,每个角色经过 7 个步骤。
流水线(7 步)
1. State Decay → 全局状态衰减(饥饿 +1)
2. AI Characters → AI 角色行动(调 thinker)
3. Player Turns → 玩家回合事件生成
4. Social Inter. → 社交互动 + 关系更新
5. Emergent Story → 涌现故事线检测
6. Char Thoughts → 角色内心独白
7. Heartbeat → 世界 tick 心跳事件容错
任一步骤失败只 log 不 throw,后续步骤继续执行。
Step 1 — State Decay
所有角色饥饿值 +1。简单的全局衰减。
Step 2 — AI Characters
每个 AI 角色调用 thinker.ts:
- 解析状态(体力/饥饿/心情/社交/金币)
- 应用时间衰减(每 tick 体力 -6,饥饿 +8,社交 -4)
- 规则引擎决定行动(80%)
- 高重要性时调 LLM(20%)
- 应用行动效果,持久化状态
- 如果是社交动作,生成对话
Step 3 — Player Turns
为玩家控制的角色生成 player_turn 事件,包含当前状态上下文。
Step 4 — Social Interactions
同一地点的 AI 角色可能互动:
- 根据亲密度/熟悉度/社交值计算互动概率
- 随机选择互动类型(12 种)
- 更新双向关系
Step 5 — Emergent Stories
检测关系驱动的故事线(矛盾/联盟/绯闻/协作等),触发连锁反应。
Step 6 — Character Thoughts
为每个角色生成内心独白:
- 高情绪变化(心情 >80 或 <25)→ 调 LLM 生成
- 30% 随机概率 → 调 LLM 生成
- 其余 → 从 16 个模板中随机选择(无重复)
Step 7 — Heartbeat
生成世界 tick 心跳摘要事件。
性能
- 7 步顺序执行
- LLM 调用:0-4 次/tick(仅高情绪时刻)
- 目标:< 30 秒完成一次 tick