0. 文档说明
- 需求 ID:
FR-模块-序号,任务列表与验收均引用此 ID。 - 优先级:P0=第一阶段必须(🟢 最小闭环);P1=第二版(🟡);P2=第三阶段(🔵)。与策划案中的 🟢🟡🔵 标记一致。
- 完善=策划案未写细则,由本文档补全的设计;冲突=策划案内部矛盾,需策划确认。
- 验收标准:每条需求给出可测试的验收口径,任务列表中的任务以此为完成标准。
1. 产品概述
| 项 | 内容 |
|---|---|
| 游戏类型 | 城市经营 + 判案等随机事件的模拟经营游戏 |
| 开发引擎 | Godot 4.7(已定,项目 yfst 已建骨架) |
| 美术风格 | 国风卡通,45° 俯视角(或类环世界俯视角);开发期全程占位美术,Phase 4 统一替换 |
| 核心循环 | 开荒 → 采集 → 种植 → 加工 → 仓储 → 贸易 → 扩张(资源有限迫使向外探索) |
| 配置原则 | 策划案大量"读配置":所有数值(产量/消耗/建造材料/地图参数)必须落在 data/*.json,逻辑代码不出现硬编码数值 |
2. 时间与产出系统(FR-T)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-T-01 | 游戏日历:1 年 = 4 季 = 120 天(春夏秋冬各 30 天);日期显示"第 X 年·季·第 Y 天" | P0 | HUD 日期随时间推进,跨季/跨年正确翻转 |
| FR-T-02 | 核心公式:1 游戏天 = 180 秒现实时间(1x)= 3 个生产周期;1 周期 = 60 秒;可在配置 120~300 秒内调整 | P0 | 改 data/time.json 后游戏内节奏同步变化 |
| FR-T-03 | 产出按现实时钟走,不受游戏速度影响;居民消耗按游戏日历走(加速=日历飞驰=消耗加速) | P0 | 4x 下建筑周期产出频率不变,食物消耗按天数同比增加 |
| FR-T-04 | 速度档位:暂停(Space/ESC) | 1x(1) | 2x(2) | 4x(4) | P0 | 快捷键切换生效,HUD 显示当前档位 |
| FR-T-05 | 事件自动暂停分级:🔴火灾/强盗/坍塌→自动暂停;🟡订单到期/建筑异常→仅通知;🟢日常消耗→无通知 | P2 | 对应事件触发时行为符合分级(依赖事件系统 FR-E) |
| FR-T-06 | 每日结算顺序固定:自动存档→作物生长+1 天→建筑产出→居民消耗(-1 食物/人)→冬季取暖→建筑耐久(-0.1%/天)→订单倒计时-1→治安衰减→居民状态更新→触发事件→下一天 | P0 | 结算按此顺序依次执行(各步骤可插桩验证顺序);未实现步骤留空挂点 |
| FR-T-07 | 建筑耐久:每日 -0.1%,耐久损坏后由建筑所维修(消耗资源) | P2 | 耐久字段入库,维修行为可触发 |
3. 四季系统(FR-S)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-S-01 | 四季参数:春(D1~30 绿/花开)、夏(D31~60 浓绿/河流宽)、秋(D61~90 金黄/商队密集)、冬(D91~120 白/积雪) | P0 | 季节切换时地图色调/皮肤切换(占位可用调色) |
| FR-S-02 | 种植限制:春夏秋全部作物可种;冬季仅小麦可种(产量减半),其他作物不生长,已成熟未收割的在冬季 D1 自动枯萎 | P0 | 冬季 D1 未收割作物变枯萎态;小麦产量 ×0.5 |
| FR-S-03 | 冬季取暖:茅草屋 原木×1 或 煤炭×0.5/天;砖石房 原木×0.5 或 煤炭×0.3/天;豪华小楼 煤炭×0.2/天 | P0 | 冬季每日结算按住宅类型扣燃料 |
| FR-S-04 | 无燃料后果:心情 -2/天 → 连续 7 天无燃料 → 居民生病(无法工作)→ 春季自动停止取暖消耗 | P1 | 断燃料第 7 天居民转生病态,春季停扣 |
| FR-S-05 | 冬季简化版:河流不结冰,汲水台/捕鱼码头/盐田不受冬季影响 | P0 | 冬季上述建筑照常运转 |
| FR-S-06 | 冬季进阶版:河流结冰、积雪覆盖道路减速、暴雪天灾 | P2 | 结冰后水上建筑停工;积雪格移动成本上升 |
| FR-S-07 | 夏季河流变宽、洪灾时河流宽度变化(宽度读配置) | P2 | 河流宽度按季节配置切换表现 |
4. 摄像机与地图交互(FR-C)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-C-01 | 平移:右键拖拽 / WASD / 方向键;无惯性;不可移出 30×30 地图边界 | P0 | 四种输入均可平移,边界处被钳制 |
| FR-C-02 | 缩放:滚轮 3 档——近(10×8 格,默认)/中(20×16 格)/远(全图);中键重置视角 | P0 | 滚轮在 3 档间循环,中键回初始位 |
| FR-C-03 | 初始位置:开局摄像机居中,对准初始 5×5 平原区域 | P0 | 新游戏开局视野符合 |
| FR-C-04 | 建筑点击:左键建筑→选中+高亮边框+详情面板;点空地→取消选中;点其他建筑→切换选中 | P0 | 三种点击行为正确 |
| FR-C-05 | 地图边缘阴影展示且限制视角移动;不可开荒网格为阴影部分 | P0 | 未解锁区显示阴影且摄像机无法越界 |
5. 建筑模式与放置(FR-B)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-B-01 | 进入:点击建筑列表建筑→鼠标跟随半透明预览;底部提示"点击放置|按住拖动批量建造|ESC 取消" | P0 | 预览跟随鼠标,提示文案显示 |
| FR-B-02 | 退出:ESC/右键退出;成功放置后自动退出;按住 Shift 保持模式连续放置 | P0 | 三种退出/保持行为正确 |
| FR-B-03 | 放置判定流程:①吸附最近网格→②网格类型是否允许→③资源是否足够→④是否重叠→⑤工作范围校验。全部通过才可放置 | P0 | 五项判定各自可独立触发拒绝 |
| FR-B-04 | 预览颜色:🟢绿(蓝绿 #3b82f6)=可放置;🔴红(#ef4444)=不可放置(悬浮显示原因);⚪白=未开荒;🟡黄(#eab308)=工作范围 | P0 | 四色状态与悬浮原因提示正确 |
| FR-B-05 | 道路拖拽放置:点起点→拖到终点→释放,自动生成路径;长按拖动可在所有可放置网格批量建造 | P1 | 拖拽生成连续道路并逐格扣资源 |
| FR-B-06 | 放置后:立即出现(第一版瞬间建成,无建设时间)→自动扣资源→未分配工人显示"无人工作"图标 | P0 | 放置即时生效,库存扣减正确 |
| FR-B-07 | 建筑占用网格上有资源时覆盖该资源(不参与计算);拆除后恢复显示原资源地块 | P1 | 覆盖/拆除恢复行为正确 |
| FR-B-08 | 拆除:详情面板拆除按钮,确认弹窗后拆除,返还 50% 材料(Delete 快捷键同效) | P1 | 拆除返还量 = 建造材料 ×50%(向下取整) |
| FR-B-09 | 建筑列表可用性:未解锁→置灰+锁图标;已解锁缺资源→不可点+缺项标红(#dc2626) | P0 | 两种不可用态显示正确 |
| FR-B-10 | 建筑运转需工人进入后才开始,运转期间有独立动效;异常状态(缺工人/无资源/缺原料/堆积/维护)出现时停工并头顶 icon 标记 | P0 | 5 类异常各自触发停工+icon+tooltip |
| FR-B-11 | 生产建筑可对每个可生产物品设置生产优先度 0~3,0=不生产 | P1 | 优先度 0 时该配方停产,其余按优先度排产 |
| FR-B-12 | 建筑升级:消耗指定资源+工具提升效率(无工具也能运转);升级进度条可见 | P1 | 升级后产出速率按配置倍率提升 |
| FR-B-13 | 建筑所:工人前往建造/维修;建造速度 1 工人=10%/天、1 工匠=15%/天完善(第一版瞬间建成时此建筑仅承担维修职能,第二版开启建设时间后生效) | P1 | 建设时间开启后按速率推进进度 |
6. 地图生成与网格(FR-M)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-M-01 | 30×30 网格地图;初始除中心 5×5 已开荒平原外全部覆盖荒草;荒草下地形由生成器确定、开荒后揭示 | P0 | 新游戏地图结构符合;开荒前后显示切换 |
| FR-M-02 | 集群生成:地块以 2×2/3×3/4×4 集群填充(大小在最小/最大集群间随机);未填充网格按权重表决定类型 | P0 | 生成结果满足集群尺寸与权重分布(种子可复现) |
| FR-M-03 | 河流特殊规则:贯穿左右两边、位于初始中间区域附近、宽度读配置;边缘与其他地块相接处理 | P0 | 每次生成都有符合条件的河流 |
| FR-M-04 | 网格类型 10 种:荒草/树林/平原/丘陵(山地)/石头堆/煤矿/铜矿/铁矿/金矿/河流,各自规则见策划案(丘陵不可建筑仅可种小米;矿产在平原/丘陵上点缀生成) | P0 | 各类型生成、显示、交互规则符合配置表 |
| FR-M-05 | 平原土地肥力:耕种影响肥力数值;大豆种植后肥力 +1(轮作机制) | P1 | 肥力字段随耕种变化并影响产量 |
| FR-M-06 | 可开荒范围随玩家等级扩张:等级 1~9 对应网格半径 5~13(25~169 格);边缘为不可开荒阴影区 | P1 | 等级提升后新区域可开荒 |
| FR-M-07 | 野生流动资源:野猪/野鸡/野兔/野果/野菜/蘑菇/草药在地图随机刷新(平原/森林),有存在时长(5~15 天按配置),过期消失重新刷新,同格唯一资源 | P1 | 刷新/过期/唯一性符合配置;雨后蘑菇刷新率加倍 |
| FR-M-08 | 冬季皮肤:荒草/树林/平原/丘陵/石头堆有冬季皮肤;矿点与河流无冬季皮肤 | P2 | 冬季切换对应地块皮肤(占位可用调色) |
7. 资源再生系统(FR-R)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-R-01 | 每个资源地形(树林/石头堆/矿点/河流)有独立储量值与上下限,采集建筑每周期从工作范围内储量最高网格扣产量 | P0 | 采集扣减储量;优先选储量最高格 |
| FR-R-02 | 视觉三阶段:储量>70% 大模型 / 30~70% 中 / <30% 小 / 0% 消失或变平原 | P0 | 模型大小随储量切换(占位可用缩放) |
| FR-R-03 | 再生延迟:可再生资源连续 3 天未被采集才开始恢复(护林模式除外);恢复不超过最大储量 | P0 | 边采边不涨;停采 3 天后按速率恢复 |
| FR-R-04 | 不可再生:石头堆/煤/铜/铁/金矿储量归零永久消失(变回平原/丘陵),驱动玩家向外扩张 | P0 | 枯竭后网格类型转换正确 |
| FR-R-05 | 可再生参数表:树林护林 +1/天;河流鱼 +2/天(永不枯竭);粘土 +1/天;盐田 +2/周期永续;汲水台 ∞ | P0 | 各资源恢复速率与配置一致 |
| FR-R-06 | 种子闭环:每次收获返还一定数量种子→存仓库/种子槽→用于下一次种植 | P0 | 收获后种子入库,缺种子时农田报异常 |
8. 资源与仓储(FR-RS)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-RS-01 | 资源分类存储:食物类→粮仓;材料/矿石金属/纺织/工具/贵重品类→资源仓库;水不计仓储(无限) | P0 | 各资源按分类入库,水不占容量 |
| FR-RS-02 | 初始资源:食物×30 / 原木×20 / 石头×10 / 水稻种子×5 / 人口×4 | P0 | 新游戏开局库存符合 |
| FR-RS-03 | 无仓库时:资源堆放于生产建筑内,满则建筑停止工作(货物堆积异常) | P0 | 建筑内库存满→堆积 icon+停工 |
| FR-RS-04 | 仓储分级容量冲突:策划案两处不一致(公共功能表 100/300/600 vs 建筑表粮仓 100/500/2000、资源仓库 200/800/3000)。建议采用建筑表数值(区分度更大),全部入 data/buildings.json 待策划确认后改一处即可 | P0 | 容量读配置;超容量停止入库并向上游传导停工 |
| FR-RS-05 | 同类资源合并存储(不占多槽位);食物自动存放最近有空位粮仓 | P0 | 合并与就近入库行为正确 |
| FR-RS-06 | 通用仓库(新手仓库):食物与资源混存、容量小、食物易变质完善:变质规则建议——通用仓库存放的食物每 30 天损失 10%(入配置,可后续调整) | P1 | 通用仓库按配置执行变质损耗 |
| FR-RS-07 | 资源总量 73 种(1 级原料/野生/种植/种子 + 2 级加工品/工具 + 3 级高级品),全部入 data/resources.json,字段含:名称/类型/来源/存储位置/用途 | P0 | 配置表覆盖策划案资源等级总览全部条目 |
9. 采集建筑(FR-G)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-G-00 | 通用规则:人口≥1 才工作;仅建于平原;工作范围高亮(金色光圈);优先采最近资源、耗尽切下一最近;产物存建筑内有上限;可用指定工具获效率提升 | P0 | 通用逻辑对所有采集建筑生效 |
| FR-G-01 | 开荒小屋:5 格内搜索荒草;1 工人=1 格/周期、2 工人=2 格/周期;只开已解锁范围;工具升级 镰刀×1.0→铜锄×1.5→铁锄×2.0;范围内无荒草→停工(完成) | P0 | 开荒速度/范围/升级倍率符合 |
| FR-G-02 | 林场双模式:砍伐(原木×3+木屑×1/周期,消耗储量×2,归零树林消失)/ 护林(原木×1/天,树林 +1/天恢复,储量<10 不可采,可在平原上护林) | P0 | 两模式产出与储量变化符合配置 |
| FR-G-03 | 采石场:石头×2/周期,5% 概率玉石×1;石头堆耗尽自动找下一个 | P0 | 产出/概率/切换目标正确 |
| FR-G-04 | 矿场:采煤/铜/铁/金矿各 ×1/周期;范围内多种矿→各派 1 工人分采;矿点消失自动切换 | P0 | 多矿分配与切换正确 |
| FR-G-05 | 狩猎屋:按范围内树林格数产出——鹿肉=格数×0.3(上限 3)/野猪肉=×0.2(上限 2)/皮革=×0.1(上限 1) 每周期冲突:与"流动资源刷新"两套描述并存。建议:P0 先实现刷新制(狩猎范围内已刷新的野生动物),树林数量公式作为 P1 的保底产出叠加,待策划确认 | P1 | 狩猎产出与刷新资源挂钩 |
| FR-G-06 | 采集屋:采集范围内已刷新的野菜/野果/蘑菇/草药,附带茅草+1/周期冲突:同 FR-G-05 存在公式制与刷新制两套描述,采用同一决议 | P1 | 采集产出与刷新资源挂钩 |
| FR-G-07 | 捕鱼码头:占 1 格河岸+1 格水中;鱼×3/周期 + 粘土(50%)×1 + 珍珠(3%)×1;渔区储量归零暂停产出自动恢复 | P1 | 特殊占地判定与三产出正确 |
| FR-G-08 | 汲水台:建河岸,水×2/周期,永续;水井(无需工人,每天 50% 概率 1 桶水)→深水井(75%)冲突:建筑表只有汲水台,建筑 sheet 写的是水井。建议:两者并存——汲水台=河岸建筑(P1),水井=平地概率建筑(P2),待策划确认 | P1 | 水产出符合配置,水不计仓储 |
10. 种植系统(FR-F)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-F-00 | 通用规则:农田 2×2;农夫≥1 才工作;四态生长(种子期→发芽期→生长期→收获期,100 工作量);无种子进入荒地期(泥土);缺水→生长停滞;产物存建筑内 | P0 | 生长状态机与异常(缺农夫/缺水/缺种子/堆积)正确 |
| FR-F-01 | 水稻田:平原,30 天一季,水稻×10+种子×2,宜近河流,冬季不可种 | P0 | 各作物周期/产量/种子返还/地形与季节限制符合 data/crops.json;P0 先水稻+小麦,其余 P1 补齐 |
| FR-F-02 | 小麦田:平原,25 天,小麦×8+种子×2;冬季可种产量减半;磨坊原料 | P0 | |
| FR-F-03 | 大豆田:20 天,大豆×6+种子×2,收获后土地肥力+1(轮作) | P1 | |
| FR-F-04 | 小米田:15 天,小米×4+种子×1,唯一可种丘陵/山地,抗旱 | P1 | |
| FR-F-05 | 黄米田:12 天,黄米×3+种子×1,酿酒原料 | P1 | |
| FR-F-06 | 麻田/棉花田/甘蔗田:20/25/30 天,产 5/5/6+种子×2,经济作物,冬季不可种 | P1 | 同上 |
| FR-F-07 | 茶田:20 天成熟后可多次采摘(只循环成熟期工作量,不重种),茶叶×4/次,初种返种子×2 | P1 | 多次采摘循环正确 |
| FR-F-08 | 草药田:15 天,草药×3+种子×2,医馆原料 | P1 | 同上 |
| FR-F-09 | 桑树:20 天,桑叶×5/季+种子,2 级解锁,蚕房依赖 | P1 | 同上 |
| FR-F-10 | 每种作物需种子期/发芽期/生长期/收获期视觉状态 + 通用荒地期(泥土)完善:占位期用 4 种色块,美术期替换 | P0 | 4 阶段视觉可区分 |
11. 加工链(FR-P)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-P-00 | 通用规则:工人进入→检查仓库原料→自动取料→加工(1 周期/60 秒)→成品存回仓库;缺原料报异常 | P1 | 取料-加工-入库闭环可走通 |
| FR-P-01 | 2 级配方:锯木厂 原木×3→木板;磨坊 小麦×3→面粉 / 水稻×3→米粉 / 小米×2+黄米×2→饲料;豆腐坊 大豆×2+水→豆腐;酱油坊 大豆×2+小麦+盐→酱油;酿酒坊 黄米×2+水→黄酒 / 浆果×2+水→果酒;铁匠铺 矿石×2+煤炭→铜/铁/金锭;织布坊 麻×3→麻布 / 棉花×3→棉布;蚕房 桑叶×3→生丝;窑厂 粘土×2+煤炭→砖瓦×2 / 陶罐;医馆 草药×2+水→药品;加工工坊 甘蔗×3→糖 / 木屑×2+麻×2+水→纸 | P1 | 全部配方入 data/recipes.json(或 buildings.json 内嵌),逐一可生产 |
| FR-P-02 | 工具配方(铁匠铺,按个生产):镰刀/铜锄/铁锄/斧头=原木×2+对应锭×1;陷阱=皮革×2+铜锭;渔网=麻×2+铜锭 | P1 | 工具可制造并用于建筑升级 |
| FR-P-03 | 3 级配方:琉璃瓦=砖瓦×2+铜锭+煤炭;丝绸=生丝×2+铁锭+棉花;金器=金锭×2+铜锭+煤炭;玉器=玉石+铜锭+木板;家具=木板×3+麻布×2+铜锭+原木×2;制衣厂 麻布/棉布/丝绸→对应衣服 | P2 | 3 级配方在对应解锁等级后可生产 |
12. 住宅与民生(FR-H)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-H-01 | 住宅通用:非工作建筑不需工人;居民自动选择最近有空位住宅入住(倾向离工作地点近);点击显示晋升进度条与详情 | P0 | 入住分配与详情面板正确 |
| FR-H-02 | 茅草屋:1×1,原木×20+茅草×10,住 2 人,工作效率×0.8 | P0 | 容量/效率系数符合配置冲突:豪华小楼容量 6 人(建筑表)vs 8 人(建筑 sheet)——建议采用 6 人(与 2×2 占地更匹配),入配置待确认 |
| FR-H-03 | 砖石房:1×1,石头×20+砖石×5/木板,住 4 人,效率×1.0,2 级解锁(需锯木厂) | P1 | |
| FR-H-04 | 豪华小楼:2×2,木板+石砖+家具+琉璃瓦,住 6 人,效率×1.2,心情恢复+20%,3 级解锁 | P2 | |
| FR-H-05 | 民生建筑:医馆(配药/治病)、市集(交易/消费)、学堂(培养秀才,后续耗纸)、寺庙(提升民心)、水龙局(灭火) | P2 | 各建筑对应民生数值生效 |
| FR-H-06 | 民心/治安:治安每日衰减(结算顺序内),寺庙/判案等影响民心完善:建议初值——治安 100 起、每日 -1,寺庙覆盖范围内 +2/天,民心=治安×50%+事件增减,入配置 | P2 | 治安衰减与恢复行为符合配置 |
13. 道路与运输(FR-L)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-L-01 | 道路三级:泥土路(木材×5,速度×1.0) / 碎石路(石材×5,×1.5) / 石砖路(石材×10,×2.0);大道宽版可并行 2 人 | P1 | 道路影响寻路成本(道路 0.5/格)与移动速度 |
| FR-L-02 | 搬运触发:建筑内某资源≥5 份或满库存时触发搬运;目的地按分类(食物→粮仓/其他→资源仓库);加工原料从仓储→加工建筑,成品反向 | P0 | 触发阈值与流向正确 |
| FR-L-03 | 运输所:无运输所=空闲人口运输(效率 30%,一次 1 份);有运输所=专职搬运工(一次 3 份,速度×2);未分配工作的人自动承担建造与搬运 | P1 | 两种运输模式效率参数生效 |
| FR-L-04 | 运输路径可视化:白色虚线显示运输路线(可切换显示) | P2 | 开关切换路径线显隐 |
14. 居民系统(FR-N)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-N-01 | 状态机 5 态:空闲/行走寻路/工作/搬运/受伤(生病),按优先级切换,转换条件见策划案状态表 | P0 | 各状态转换符合状态表 |
| FR-N-02 | 寻路:A*;移动成本 平原 1/格、丘陵 3/格、道路 0.5/格、水域与建筑不可通行;优先走道路 | P0 | 路径成本计算正确,明显优先道路 |
| FR-N-03 | 移动:每步 1 格(空闲慢速),搬货时速度 -30% | P0 | 搬货减速生效 |
| FR-N-04 | 工作分配:按工作优先度自动分配建筑;无对应职业建筑时分配最近的非职业限制建筑;建筑人满后多余人口保持空闲 | P0 | 新建建筑后空闲居民自动上岗;人满不外溢 |
| FR-N-05 | 居民属性:体力/智力/敏捷/心情(详情面板柱状图);心情受供暖/住宅/事件影响,住宅好坏影响工作效率 | P1 | 心情增减规则生效并影响效率 |
| FR-N-06 | 居民数据结构:id/name/state/home_id/work_id/pos/path/carrying/speed(按策划案给程序的字段表) | P0 | 数据结构覆盖全部字段并入存档 |
| FR-N-07 | 生病/受伤:灾害或连续断暖 7 天导致,无法工作;医馆治疗后恢复 | P1 | 生病→治疗→恢复链路可走通 |
| FR-N-08 | 人口增长完善:策划案未写。建议——民心≥80 且有空闲住宅时,每 30 天迁入 1 人(入配置),Phase 3 前与策划确认 | P2 | 按确认后的规则实现 |
15. 贸易、商队与订单(FR-TD)完善
策划案仅有贸易站机制描述与"秋季商队密集到访""订单倒计时"只言片语,订单系统无细则(公共功能系统缺"六、"章节,疑即订单系统)。以下为补全设计,需策划确认。
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-TD-01 | 贸易站:商贾在此工作时每天 1 笔交易;买入价=基准价×1.2、卖出价=基准价×0.8;每种资源可设"保留量"与"卖出盈余量" | P2 | 自动按设置买卖,价格系数正确 |
| FR-TD-02 | 商队:秋季密集到访(其余季节低频);商队携带随机商品清单与货币,停靠贸易站 N 天后离开 | P2 | 商队到访频率按季节配置变化 |
| FR-TD-03 | 订单系统(补全):随机生成订单(求购某资源×数量,限时 N 天,奖励货币+声望);每日结算订单倒计时-1;到期未完成→🟡通知不暂停;完成后获得奖励并提升声望 | P2 | 订单生成/交付/到期全流程可走通 |
| FR-TD-04 | 货币与声望:货币用于贸易,声望影响订单品质与商队等级 | P2 | 两类数值入 HUD 与存档 |
16. 随机事件与判案(FR-E)完善
总览写明"判案玩法"为核心之一,但策划案无任何细则。以下为最小可行补全:事件 = 弹窗 + 选项 + 结果修正,先跑通框架再丰富内容。
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-E-01 | 事件框架:每日结算末"触发事件"挂点;事件=配置驱动(id/触发条件/权重/选项/结果);🔴级事件触发时 4x 自动暂停并弹窗 | P2 | 事件从 data/events.json 加载并按分级处理 |
| FR-E-02 | 灾害事件:火灾(水龙局灭火)、强盗、建筑坍塌——均为 🔴 级 | P2 | 三类灾害触发-处理-后果闭环 |
| FR-E-03 | 判案玩法(补全):居民纠纷/违法事件生成案件→玩家在弹窗中阅读案情→选择判决(2~3 选项)→影响民心/治安/资源;判决结果按配置表结算 | P2 | 至少 5 个案件配置可完整游玩 |
| FR-E-04 | 天灾:暴雪(冬季进阶)、洪灾(河流变宽)等,读配置触发 | P2 | 天灾按季节权重触发并生效 |
17. 存档系统(FR-SV)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-SV-01 | JSON 序列化:各 Manager 输出 SaveData→合并为 1 个 JSON→写文件;Day 1 就做存档骨架(resources+buildings+residents+map 四块) | P0 | 骨架存档可读写在任何功能完成前成立 |
| FR-SV-02 | 文件结构:saves/slot_01~03.json + autosave.json + meta.json(存档摘要) | P0 | 文件布局符合 |
| FR-SV-03 | 存档内容:version/playTime/date/player(level,reputation)/resources/buildings(含库存/生长天数)/residents(含住宅/工作/心情/健康)/map(已解锁地块)/orders/season/weather | P0 | 全字段覆盖;version 字段支持向后兼容迁移 |
| FR-SV-04 | 存档时机:每天开始(autosave)/退出游戏/手动 3 槽/关键节点前(季度考核/天灾);F5 快速保存、F9 快速加载 | P0 | 各时机触发正确,F5/F9 可用 |
18. 统计面板(FR-ST)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-ST-01 | 入口:顶部 📊 按钮→滑出统计面板(半透明覆盖,不暂停游戏) | P0 | 打开面板游戏继续运行 |
| FR-ST-02 | 页签·每日收支:每种资源今日产出(+绿)/消耗(-红)/净余 | P0 | 三页签数据与当日实际一致 |
| FR-ST-03 | 页签·食物总览:总库存/每日消耗/可撑天数/每日产出/产出构成% | P0 | |
| FR-ST-04 | 页签·人口状态:总人口/有住宅/无住宅🔴警告/有工作/无工作🟡警告 | P0 | |
| FR-ST-05 | 页签·建筑效率:按建筑类型显示产出/天、消耗/天、工人数 | P1 | 数据正确 |
| FR-ST-06 | 数据看板完整版:时间切换(今日/本周/本月/本季/全年)、产量柱状图(分来源色块)、消耗去向饼图、底部汇总、单资源 7/30 天库存趋势折线、点击跳资源详情 | P2 | 看板各图表数据正确可交互 |
19. UI 界面(FR-U)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-U-01 | 主菜单:背景画卷+标题+5 按钮(开始新游戏/继续游戏/加载存档/游戏设置/退出游戏);加载存档弹存档列表 | P0 | 5 按钮流程可走通(已有骨架,补存档列表) |
| FR-U-02 | HUD:顶部左=季节图标+日期;顶部中=资源栏(食物/木材/石材/矿石)+人口/民心;顶部右=📊统计/📜订单/⚙️设置/速度档位;底部=建筑菜单/居民管理/资源详情/取消 | P0 | 各区域信息实时刷新 |
| FR-U-03 | 建筑选择面板:底部上滑占屏 1/3,分类标签(采集/种植/加工/仓储/住宅/道路/民生/功能),格子=图标+名称+资源+建造时间,不可用置灰标红 | P0 | 8 类标签切换与可用性显示正确 |
| FR-U-04 | 建筑详情面板:名称+等级/状态/工人头像列表/库存(数量/上限)/产出速率;按钮=升级/拆除(返还 50%)/关闭;异常分红闪提示(缺工人红闪/无资源库存红/缺材料原料红/堆积黄警告) | P0 | 面板信息与异常提示正确 |
| FR-U-05 | 居民管理面板:左列表(头像+职业+名字+状态+心情)+右详情(属性柱状图/工作/住宅/查看建筑/手动指派);"查看建筑"镜头跳转 | P1 | 列表-详情联动与镜头跳转正确 |
| FR-U-06 | 资源详情:顶部资源栏或底部按钮进入;每资源=大图标+库存/总存储+获取方式+每日产耗;按类型筛选;点击显示生产链图并可跳转来源建筑 | P1 | 资源数据正确,生产链图可跳转 |
| FR-U-07 | 建造进度:地图内建筑上方浮动进度条(绿色填充+百分比+预计剩余) | P1 | 进度条随建造推进(瞬间建成版可隐藏) |
| FR-U-08 | 异常 icon:4 种 32×32(缺工人/无资源/缺材料/堆积)建筑顶部弹出,悬停 tooltip 原因,点击打开详情 | P0 | 4 种 icon 行为正确 |
| FR-U-09 | 颜色规范:可放置 #3b82f6 / 不可放置 #ef4444 / 资源不足字 #dc2626 / 进度 #22c55e / 工作范围 #eab308 / 未解锁置灰+锁 | P0 | 全 UI 颜色一致(集中到主题配置) |
| FR-U-10 | 通知栏:顶部事件/异常通知(闪烁后消失);悬停建筑显示名称+状态 tooltip;悬停季节显示季节详情 | P1 | 通知与 tooltip 行为正确 |
| FR-U-11 | 快捷键全套:Space 暂停 / ESC 取消+菜单 / 1·2·4 速度 / F5 快存 / F9 快读 / WASD·方向键平移 / 滚轮缩放 / 中键重置 / Shift 连续放置 / Delete 拆除(P1) | P0 | 全部快捷键生效且无冲突 |
20. 等级与解锁(FR-LV)
| ID | 需求 | 优先级 | 验收标准 |
|---|---|---|---|
| FR-LV-01 | 玩家等级 1~9:决定可开荒半径(5~13)与建筑解锁(各建筑 unlock_level 入配置) | P1 | 升级后开荒范围与建筑列表同步解锁 |
| FR-LV-02 | 升级条件完善:策划案未写。建议——经验=人口数+建筑数+完成订单数加权,或按里程碑(人口达到 X/建成 Y 类建筑)升级,Phase 2 前与策划确认 | P1 | 按确认后的规则实现 |
21. 非功能需求(NFR)
| ID | 需求 | 验收标准 |
|---|---|---|
| NFR-01 | 配置驱动:全部数值(时间/产量/配方/建造材料/地图生成/事件)在 data/*.json,逻辑零硬编码 | 改配置不改代码即可调平衡 |
| NFR-02 | Manager 架构:每系统一个 Manager,各自实现 get_save_data()/load_save_data() | 新增系统按同一模式接入存档 |
| NFR-03 | 存档兼容:version 字段+迁移逻辑,旧档可载入新版本 | 旧版本存档载入不报错 |
| NFR-04 | 性能:居民 50+ 时寻路与每日结算不卡(目标 60fps,结算<200ms) | 50 居民压力测试达标 |
| NFR-05 | 占位美术先行:色块/多边形占位,系统闭环后统一替换国风美术 | 任何阶段游戏可运行可验收 |
| NFR-06 | 可复现:地图生成使用种子,同一种子生成同一地图 | 种子固定时生成结果一致(便于测试) |
22. 策划案冲突与待确认清单
| # | 问题 | 现状 | 建议决议 |
|---|---|---|---|
| 1 | 仓储容量不一致 | 公共功能表 100/300/600 vs 建筑表粮仓 100/500/2000、资源仓库 200/800/3000 | 采用建筑表数值,入配置一处可改 |
| 2 | 豪华小楼容量 | 6 人(建筑表)vs 8 人(建筑 sheet) | 采用 6 人 |
| 3 | 公共功能系统缺"三、"与"六、"章节 | 章节号从二跳到四、五跳到七 | "六、"疑似订单系统,已在 FR-TD-03 补全;"三、"内容不明,需策划补 |
| 4 | 判案玩法无细则 | 仅总览提及 | 已在 FR-E-03 补全最小方案,需策划审 |
| 5 | 狩猎/采集产出两套描述 | 树林数量公式制 vs 流动资源刷新制 | P1 刷新制为主、公式制作保底,需确认 |
| 6 | 水井 vs 汲水台 | 两套取水建筑描述 | 并存处理(河岸/平地),需确认 |
| 7 | 人口增长规则缺失 | 无 | FR-N-08 建议方案,需确认 |
| 8 | 玩家升级条件缺失 | 无 | FR-LV-02 建议方案,需确认 |
| 9 | "需配置"数值待补 | 各地块资源数量、集群权重、河流宽度等 | 先用建议初值(见下表),策划校准 |
23. 待定数值建议初值
| 参数 | 建议初值 | 依据 |
|---|---|---|
| 地图集群权重(树林/平原/丘陵/石头堆/矿/河流) | 30 / 35 / 10 / 8 / 7 / 10(%) | 平原为主、矿稀有 |
| 集群最小/最大 | 2×2 / 4×4 | 策划案给定形式 |
| 河流宽度 | 2 格(夏季 3 格、洪灾 4 格) | 30×30 地图比例 |
| 矿点生成率(在平原/丘陵上点缀) | 煤 4% / 铜 2.5% / 铁 1.5% / 金 0.5% | 稀有度梯度 |
| 野生资源同时存在上限 | 每种 3~5 处 | "具有数量上限" |
| 治安初始/衰减/寺庙恢复 | 100 / -1 每天 / +2 每天(范围内) | FR-H-06 建议 |
| 订单刷新频率/限时 | 每 5~10 天 1 单 / 限时 15 天 | 节奏参考同类游戏 |
| 人口迁入条件 | 民心≥80 + 空闲住宅 → 每 30 天 1 人 | FR-N-08 建议 |