# 03 系统设计 本文档以“可实现、可平衡、可扩展”为目标,对核心系统做可落地的规格定义。所有系统尽量以统一的“条件/消耗/产出/冷却/概率/标记”表达,便于数据驱动与复用。 ## 3.1 时间系统 ### 3.1.1 时间推进来源 - 被动流逝:玩家停留在地点、整理背包、阅读日志 - 行为推进:制作、采集、移动、休息、治疗、战斗 - 加速推进:长行为可在 UI 显示进度条并快速推进 ### 3.1.2 时间推进的副作用(统一执行顺序) 一次时间推进 `advanceTime(Δt)` 必须按固定顺序执行,避免“先后顺序导致结果不可解释”: 1. 计算状态消耗(饥饿/口渴/精力/理智/辐射等) 2. 计算 Buff/Debuff 结算(按 interval 或按时间累计) 3. 地点资源刷新与生长 4. 敌人刷新窗口推进(遭遇表/权重) 5. 灾害计时与效果更新 6. 触发“基于时间”的任务/事件检查 7. 写入日志与可视化提示 ```mermaid flowchart TD A[advanceTime Δt] --> B[状态消耗] B --> C[Buff结算] C --> D[资源生长] D --> E[遭遇/敌人刷新] E --> F[灾害结算] F --> G[任务/事件检查] G --> H[日志与提示] ``` 对应源文件:[time-pipeline.mmd](./diagrams/time-pipeline.mmd) ### 3.1.3 可测试性要求 - `advanceTime(Δt)` 必须是纯逻辑可重放:输入(状态/地点/随机种子)确定,输出确定 - 所有随机必须可注入 seed,避免线上“无法复现”的 bug ## 3.2 状态系统(生存/精神/污染) ### 3.2.1 核心状态列表(建议) - 生命(HP):硬失败边界 - 饥饿:低饥饿降低恢复、降低命中/逃跑等 - 口渴:比饥饿更急迫,强约束出行时长 - 精力:约束连续行动;低精力叠加负面 Buff - 理智:驱动叙事与事件;低理智引发幻觉/误判/不可控选择(可选) - 辐射/污染:长期压力;影响上限、引发变异与负面状态 ### 3.2.2 状态表示与阈值 每个状态至少包含: - `value` 当前值 - `min/max` 上下限(或软上限) - `regen/decay` 每分钟变化或由公式计算 - `thresholds` 阈值效果表(进入阈值时添加/移除 Buff) 阈值效果建议优先“软惩罚”,例如: - 饥饿过低:移动耗时增加、制作速度降低、战斗命中降低 - 口渴过低:理智下降加快、出行事件风险上升 - 辐射过高:最大生命/精力上限下降,物品治疗效率降低 ### 3.2.3 Buff/Debuff 设计 Buff 必须具备可解释来源与可清除/可缓解路径: - 来源:事件、食物、药物、环境、灾害、装备、技能 - 结算:按时间间隔(interval)或按行动(onAction)触发 - 堆叠:定义 stack 规则(叠加、刷新时长、取最大/取和) ## 3.3 物品、背包与容器 ### 3.3.1 物品分类 - 食物:恢复饥饿/精力,可能增加辐射或降低理智 - 饮水:恢复口渴,可能增加辐射 - 材料:用于制作、交易、修理 - 工具:提高采集/制作效率,通常有耐久 - 武器/护甲:战斗相关 - 药品:治疗/解毒/抗辐射 - 任务物品:推动剧情,通常不可丢弃或有提示 ### 3.3.2 容量模型(推荐:体积) - `volume`:物品占用体积 - `stackLimit`:最大堆叠 - 背包容量 `bagCapacity`:体积上限 - 容器(箱子/仓库)容量 `storageCapacity`:体积上限 设计理由: - 体积比“格子”更适合废土资源管理的“取舍”表达 - 体积比“重量”更少涉及物理与移动速度耦合,平衡更稳定 ### 3.3.3 耐久与损耗 - 工具/装备耐久下降来源:使用、战斗、环境事件 - 耐久影响方式: - 低耐久降低效率/命中/防护 - 耐久为 0 时失效或损坏 - 修理策略: - 基地可修理(消耗材料 + 时间) - 野外可应急修理(更高成本/更低效率) ## 3.4 制作、烹饪、锻造与科研 ### 3.4.1 配方数据结构(通用) 每条配方至少包含: - `id/name` - `workbenchType`(手工/工坊/锻造/烹饪/过滤/医疗/科研) - `requirements`:科技/设施/属性阈值/工具条件 - `inputs`:消耗物品与数量 - `outputs`:产出物品与数量(支持概率) - `timeCost`:时间消耗(分钟) - `energyCost`:精力消耗(可选) - `byproducts`:副产物(垃圾、污染等) ### 3.4.2 科技树(能力导向) 科技树节点建议分为三类: - 解锁类:解锁制作台/地点能力/新区域 - 优化类:降低时间成本、降低材料损耗、提高成功率 - 风险类:引入强力收益同时引入副作用(辐射、灾害触发概率等) ### 3.4.3 制作失败与变体(提升可玩性) 可选机制: - 失败:按成功率产生损耗/产出降低/副产物增加 - 变体:同一配方可因材料替代产生不同品质/副作用 - 品质:普通/良好/精良(品质影响耐久/效果/价值) ## 3.5 地图、地点与移动 ### 3.5.1 地点图(Graph)结构 - 节点:地点(基地、路口、资源点、剧情点) - 边:路径(时间成本、风险等级、交通方式) ### 3.5.2 移动消耗 移动的成本由三部分组成: - 时间成本(基础时间 * 路径系数) - 状态消耗(按时间推进的消耗 + 额外精力消耗) - 风险成本(途中遭遇概率、受伤概率、资源损耗) ### 3.5.3 地点模板(用于内容生产) 每个地点应配置: - `tags`:地洞/村庄/废墟/丛林/避难所等 - `dangerLevel`:风险等级(用于 UI 提示与遭遇权重) - `resourceNodes`:可采集资源与刷新规则 - `trashNodes`:随机垃圾池与刷新规则 - `encounterTable`:敌人/事件权重表 - `services`:交易/休息/制作/治疗/情报 - `questHooks`:进入/停留/条件触发的任务节点 ## 3.6 采集、垃圾与资源刷新 ### 3.6.1 资源节点(可预测收益) 资源节点用于提供“可规划收益”: - 刷新规则:按时间增长(线性/分段)、上限、特殊条件(肥料/净水) - 采集成本:工具、时间、精力 - 产出:固定 + 少量随机波动 ### 3.6.2 垃圾节点(高随机收益) 垃圾节点用于提供“惊喜与赌博”: - 产出:低价值材料为主,少量稀有掉落 - 风险:可能触发负面事件(感染/辐射/敌人) ### 3.6.3 风险收益标注(UI 需求) 每个采集/垃圾行为都要显示: - 预估耗时(分钟) - 预估消耗(口渴/精力) - 风险提示(可能战斗/可能辐射/可能受伤) ## 3.7 事件系统(详细) ### 3.7.1 事件结构 事件由三部分构成: - `trigger`:触发条件(地点/时间/状态/物品/任务进度) - `content`:文本与选项(可插入变量) - `effects`:结果链(消耗/获得/状态变化/标记/战斗/跳转) ### 3.7.2 选项与概率 选项结果支持: - 固定结果 - 概率结果(权重表) - 属性检定(属性→成功率→不同结果) - 资源检定(消耗某物品才可选) ### 3.7.3 事件结果链(可组合) 结果链建议采用“原子效果”组合: - `addItem/removeItem` - `addStatus` - `addBuff/removeBuff` - `setFlag`(任务标记、世界标记) - `startCombat` - `teleport`(移动到新地点) - `unlockRecipe/unlockPlace` - `log`(统一日志格式) ## 3.8 战斗系统(详细) ### 3.8.1 战斗定位 战斗用于表达风险,避免成为主玩法;战斗时间应可控,且“逃跑始终可行但有代价”。 ### 3.8.2 战斗模型(距离 + 回合) 关键变量: - `distance`:双方距离(离散或连续) - `range`:武器有效射程 - `hitRate`:命中率(基于距离、状态、装备、掩体) - `damage`:伤害(基础值 * 修正) - `armor`:减伤/免伤机制 - `stamina/energy`:战斗行动消耗 玩家动作: - 进攻:消耗弹药/耐久,可能造成伤害 - 防御:降低被命中或降低伤害 - 前进/后退:改变距离,影响下一回合命中率与逃跑 - 逃跑:成功则结束战斗并触发“撤离成本”(掉落/受伤/时间损失) ```mermaid stateDiagram-v2 [*] --> Init Init --> PlayerTurn PlayerTurn --> Resolve Resolve --> EnemyTurn EnemyTurn --> Resolve Resolve --> CheckEnd CheckEnd --> PlayerTurn: 未结束 CheckEnd --> Escape: 逃跑成功 CheckEnd --> Win: 敌人死亡 CheckEnd --> Lose: 玩家死亡/崩溃 Escape --> [*] Win --> [*] Lose --> [*] ``` 对应源文件:[combat-state.mmd](./diagrams/combat-state.mmd) ### 3.8.3 战斗掉落与后果 - 掉落不只是奖励,也是内容容器(任务物品、线索、稀有材料) - 战斗后果必须可见: - 伤口/感染(持续性 debuff) - 辐射暴露 - 装备耐久下降 - 弹药消耗与补给压力 ## 3.9 任务系统(详细) ### 3.9.1 任务状态机 任务建议包含: - `NotStarted` 未触发 - `Active` 进行中 - `Completed` 完成(领取奖励) - `Failed` 失败(可选) - `Locked` 锁定(条件不足) ### 3.9.2 任务目标类型 - 拥有/交付物品 - 到达地点/探索次数 - 击败敌人 - 制作某物 - 触发某事件/做出某选择 - 生存到某天/某时间窗口 ### 3.9.3 奖励设计 奖励优先给“能力”而非单纯资源: - 解锁新配方、新地点服务、新设施槽位 - 给关键工具/装备(降低后续成本) - 给叙事线索与地图标记 ## 3.10 灾害系统(详细) 灾害由三段组成: - 预警期:给玩家准备窗口(提示与倒计时) - 爆发期:改变规则(消耗曲线、遭遇权重、资源刷新) - 残留期:提供短期机会(灾后掉落、特殊事件) 灾害必须满足: - 可配置开始条件(天数区间、概率、任务触发) - 可配置影响范围(全局/特定区域) - 对 UI 有清晰展示(倒计时、当前影响) ## 3.11 交易与经济系统(简化版) 交易系统建议为“基于稀缺度的动态标价”: - 基础价:物品配置中的 `baseValue` - 地点修正:不同地点对物品类别有偏好(倍率) - 供需修正:根据玩家近期交易记录做轻微浮动,避免刷钱 - 风险定价:高风险区域的补给更贵、材料更便宜 经济更完整设计见:[05-数值与经济.md](./05-%E6%95%B0%E5%80%BC%E4%B8%8E%E7%BB%8F%E6%B5%8E.md)