diff options
Diffstat (limited to 'docs/design/living-village-design.md')
| -rw-r--r-- | docs/design/living-village-design.md | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/docs/design/living-village-design.md b/docs/design/living-village-design.md new file mode 100644 index 0000000..04c8cc0 --- /dev/null +++ b/docs/design/living-village-design.md @@ -0,0 +1,85 @@ +# 《活着的村庄》设计文档(暂名 Living Village) + +日期:2026-09-18 状态:设计已逐节过目确认 开发:OpenCode(模型 ark-plan/glm-5.3-flash) Hermes:需求派发+验收 + +## 一、定位 + +NPC 社会涌现沙盘。设计顺序与常规游戏相反:先造模拟,玩法从观察中长出,设计者也不知道会长出什么。 + +- 核心体验:系统涌现(玩家体验排第二) +- 模拟原子:单个 NPC(完整心智,非统计模拟) +- 玩家角色:化身,扮演村庄 30 人中的一员 +- 核心循环:生活流(吃饭、干活、闲逛、串门),无任务无成就 +- 规模:约 30 个完整 NPC,彼此全认识 +- 时间:连续流,可暂停可加速(1x/2x/5x) +- 失败条件:无。化身不死,纯沙盘 +- 终点:完整独立游戏,发 Steam。demo 先验证涌现 + +商业风险备案:无失败纯沙盘 + 商业发售是独立游戏最难卖组合。对策:NPC 社会历史会积累(老 NPC 死去、新一代长大、村庄形态漂移),"看五十年后的村子"本身是长线理由。demo 阶段不处理。 + +## 二、模拟器内核 + +- 纯函数核心:`step : World → TimeStep → World`,World 不可变,持久化数据结构。渲染层只读 +- 事件驱动涟漪:NPC 交互产生事件(交易/争吵/闲聊),事件队列按时间戳回放给相关 NPC 更新记忆。谣言、关系、物价全部由事件派生 +- 固定步长 60 tick/秒 + 渲染插值;暂停 = 停 step 不停渲染 +- 存档 = 序列化 World。未来功能:回放、时光倒流 +- 确定性:可播种 RNG,同存档同操作必同结果 +- 模拟与渲染完全分离,内核可 headless 运行 + +## 三、NPC 心智模型 + +Mind 四层: + +- 需求层(驱动):饥饿/精力/社交/金钱,随时间衰减产生目标 +- 性格层(滤镜):5 维向量(进取/好斗/外向/诚实/贪婪,0-1)。性格改手段选择权重,不改目标。重大事件可长期漂移 +- 记忆层:事件列表(对象、类型、情绪值、时间),带衰减,检索取最近最重 +- 决策层:每 tick 评估 需求×行动×性格权重 → 最高分行动。行动是通用原语(去某地/做某事/与某人互动) + +**化身对 NPC 透明**:NPC 眼里没有玩家,化身是普通 NPC,干预走完全相同的代码路径。 + +派生系统(不单独建模): + +- 关系网:30×30 矩阵,从记忆加权派生 +- 谣言:闲聊传递最新鲜记忆,传播即再叙述 +- 经济:无全局物价。价格 = 交易时按需求紧迫度+性格+近期成交记忆现场喊出,物价是统计结果 + +刻意不做:对话语义生成(闲聊产出抽象事件+气泡图标)、职业/阶层系统(从需求与技能自发生长)、独立情绪状态机。 + +核心断言:行为 = 需求×性格×记忆,其余一切是副产品。 + +## 四、玩家交互 + +- 操控:WASD 移动、E 互动、Tab 需求面板。化身需求与 NPC 同规则衰减 +- 唯一信息优势:按 Q 观察,看视野内 NPC 的需求排名与最近记忆摘要 +- 对话:选意图不选台词。4-6 个动词(闲聊/求助/交易/玩笑/道歉/挑衅),NPC 回应由心智算出,产出事件进双方记忆 +- 生活流支撑:家(可升级)、物品、钱。无任务系统。村庄年鉴自动记录大事(结仇/结亲/死亡/新生/物价剧变) +- 社会学视图:暂停后全村缩放,关系网连线(粗细=强度)、谣言传播路径回放。demo 必须有简版 + +## 五、渲染与美术 + +- 2D 俯视瓦片地图,SpriteBatch 直绘,32×32 瓦片 +- demo 用 Kenney CC 资产包占位,正式版再定风格 +- 镜头跟随化身,滚轮缩放;昼夜季节光照 +- UI 五件套:时钟、需求面板、对话转盘、年鉴、社会学视图 + +## 六、技术栈与里程碑 + +栈:F# + MonoGame + Mibo(MVU/Elmish 架构,`update : State → Input → State`)。Linux 为第一开发平台。 + +| 里程碑 | 内容 | 验收 | +|---|---|---| +| M0 | F# 解决方案+游戏循环+瓦片地图+化身移动 | Linux dotnet run,60fps | +| M1 | World+step 纯函数+确定性 RNG,headless | 1000 天内存平稳、无 NaN、同种子逐帧一致 | +| M2 | 单 NPC:需求+决策+日程 | 游戏内活一天,行为可用需求×性格解释 | +| M3 | 30 NPC+事件队列+记忆+关系网+社会学视图 v1 | headless 30 天关系矩阵非均匀分布 | +| M4 | 现场喊价交易+闲聊传记忆 | 物价时间序列有波动;谣言 2-5 天传遍全村且路径可回放 | +| M5 | 玩家操控+对话转盘+Q 观察+年鉴 | 干预涟漪经 3 手绕回,事件链可追溯 | +| M6 | 存档+变速+昼夜+占位美术统一 | 完整玩 2 小时不崩,存档往返一致 | + +验收协议:M3 起涌现类验收一律 headless 批量模拟(50 世界×100 天)看统计分布,不靠肉眼。 + +## 七、开发协议 + +- 全部编码由 OpenCode 执行(dev.somhairle.bid 会话可见),模型 `ark-plan/glm-5.3-flash` +- Hermes 只做:需求拆解、派发、监控、独立验收(跑 headless 统计、对设计目标核对) +- 每里程碑一次派发,附本节验收标准;验收不过退回重做,不合并 |
