本章是《在线联机原型全集》里第一个不再围绕「一局比赛」组织内容的原型。它要回答的问题是:当世界本身会随时间推进、由实体之间的关系共同决定剧情走向时,服务端应该怎样存储、推进和回放这个世界?如果你已经做完了前 45 章的对局、匹配、经济与社交原型,本章就是把这些「离散系统」缝合成一张持续运转的世界状态图的起点。
本章定位
- 难度层级:第 5 层(概念原型层),位于 60 章路线图的中后段。
- 前置章节:第 45 章 动态任务链生成引擎。第 45 章解决的是「一条任务链怎么生成」,本章把它放大成「一个由实体关系构成的剧情世界怎么演化」。
- 本章要跨的门槛:从「状态机驱动」转向「图结构 + 时间驱动」。前者是有限的、可枚举的;后者需要处理实体数量增长、关系变化与时间触发,架构上第一次真正需要图建模与事件溯源。
核心验证目标
本章 PRD 明确要求验证 Entity Graph 与时间触发器,落地时建议拆成下面 5 个可独立验收的点:
- Entity Graph 建模:把 NPC、地点、道具、阵营建模为节点,把「信任 / 敌对 / 归属 / 因果」建模为带类型的边,并支持按关系查询与局部子图加载。
- 时间触发器:支持绝对时间、相对时间(事件后 N 秒)与条件时间(当某条件成立)三类触发,且触发结果幂等、可重放。
- 服务端权威状态同步:世界状态变更只由服务端计算,客户端做预测渲染,避免客户端篡改剧情走向。
- 事件溯源与回放:世界推进以事件日志为准,可从任意快照 + 事件流重建当前世界,用于调试与回放。
- 断线恢复:网络抖动后客户端自动重连,并从服务端拉取增量状态而非全量快照。
技术栈建议
PRD 给出的基线是 Go / Rust / Python 三选一,网络层用 WebSocket over HTTPS 或 gRPC,并配套事件总线(Pub/Sub)与持久化层。落地时的选型思路:
| 层 | 建议 | 说明 |
|---|---|---|
| 实时网关 | Go 或 Rust | 长连接管理、心跳、消息路由,要求低 GC 抖动 |
| 世界演化服务 | Go / Python | 图遍历与规则计算;原型期可用 Python 快速迭代 |
| 状态与图存储 | 图数据库或关系库 + 邻接表 | 实体关系查询频繁时优先考虑图结构 |
| 事件总线 | Redis Streams / NATS 一类 Pub/Sub | 解耦演化服务与广播、持久化 |
| 持久化 | 快照 + 事件日志 | 支撑回放与状态恢复 |
本章文章
| 文章 | 类型 | 核心内容 |
|---|---|---|
| 在线联机原型全集:第 46 章 动态剧情世界(Dynamic Story World) | 世界演化型 | 以 Entity Graph 建模世界实体与关系,用时间触发器驱动剧情推进 |
该 PRD 属于「概念设计阶段」文档,正文侧重架构设计、技术选型与接口定义,包含系统组成图、状态机、事件生命周期时序图、WebSocket 消息类型、REST 端点与性能指标表,可直接作为立项评审材料使用。
与相邻章节的关系
- 上一章:第 45 章 动态任务链生成引擎 —— 生成单条任务链;本章把任务链挂到世界图上,由世界状态决定何时、向谁下发。
- 下一章:第 47 章 多语言实时语音协作 —— 引入音频与实时翻译管线,为世界演化提供「跨语言玩家共同参与」的输入通道。