6234a50bdb
- 新增避难所仓储功能,支持物品在随身背包与仓储间转移 - 添加生存状态图标资源与状态阈值告警系统 - 重构HUD界面,优化状态显示与操作流程 - 扩展游戏核心系统,增加仓储相关动作和校验 - 更新文档说明仓储规则与实现细节
11 KiB
11 KiB
03 系统设计
本文档以“可实现、可平衡、可扩展”为目标,对核心系统做可落地的规格定义。所有系统尽量以统一的“条件/消耗/产出/冷却/概率/标记”表达,便于数据驱动与复用。
3.1 时间系统
3.1.1 时间推进来源
- 被动流逝:玩家停留在地点、整理背包、阅读日志
- 行为推进:制作、采集、移动、休息、治疗、战斗
- 加速推进:长行为可在 UI 显示进度条并快速推进
3.1.2 时间推进的副作用(统一执行顺序)
一次时间推进 advanceTime(Δt) 必须按固定顺序执行,避免“先后顺序导致结果不可解释”:
- 计算状态消耗(饥饿/口渴/精力/理智/辐射等)
- 计算 Buff/Debuff 结算(按 interval 或按时间累计)
- 地点资源刷新与生长
- 敌人刷新窗口推进(遭遇表/权重)
- 灾害计时与效果更新
- 触发“基于时间”的任务/事件检查
- 写入日志与可视化提示
flowchart TD
A[advanceTime Δt] --> B[状态消耗]
B --> C[Buff结算]
C --> D[资源生长]
D --> E[遭遇/敌人刷新]
E --> F[灾害结算]
F --> G[任务/事件检查]
G --> H[日志与提示]
对应源文件: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:体积上限
当前实现采用:
Field Bag:在线行动时唯一权威随身背包Shelter Storage:避难所内的长期仓储层- 主 HUD 只摘要显示随身容量,完整整理在独立背包弹层完成
设计理由:
- 体积比“格子”更适合废土资源管理的“取舍”表达
- 体积比“重量”更少涉及物理与移动速度耦合,平衡更稳定
3.3.3 耐久与损耗
- 工具/装备耐久下降来源:使用、战斗、环境事件
- 耐久影响方式:
- 低耐久降低效率/命中/防护
- 耐久为 0 时失效或损坏
- 修理策略:
- 基地可修理(消耗材料 + 时间)
- 野外可应急修理(更高成本/更低效率)
3.3.4 仓储访问规则
- 仓储不是全地图随时可开,而是地点约束能力
- 当前版本仅在
home / Shelter-7允许取放仓储 - 配方在避难所内可以读取仓储材料,避免“物资明明囤着却不能做”的违和感
3.4 制作、烹饪、锻造与科研
3.4.1 配方数据结构(通用)
每条配方至少包含:
id/nameworkbenchType(手工/工坊/锻造/烹饪/过滤/医疗/科研)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/removeItemaddStatusaddBuff/removeBuffsetFlag(任务标记、世界标记)startCombatteleport(移动到新地点)unlockRecipe/unlockPlacelog(统一日志格式)
3.8 战斗系统(详细)
3.8.1 战斗定位
战斗用于表达风险,避免成为主玩法;战斗时间应可控,且“逃跑始终可行但有代价”。
3.8.2 战斗模型(距离 + 回合)
关键变量:
distance:双方距离(离散或连续)range:武器有效射程hitRate:命中率(基于距离、状态、装备、掩体)damage:伤害(基础值 * 修正)armor:减伤/免伤机制stamina/energy:战斗行动消耗
玩家动作:
- 进攻:消耗弹药/耐久,可能造成伤害
- 防御:降低被命中或降低伤害
- 前进/后退:改变距离,影响下一回合命中率与逃跑
- 逃跑:成功则结束战斗并触发“撤离成本”(掉落/受伤/时间损失)
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
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