diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-28 09:18:57 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-28 09:18:57 +0800 |
| commit | a4771219c0002ca88288c544f07c7cd06a7b79f9 (patch) | |
| tree | 413d380111f6ce374edce8d86e58dc17e462e0a6 /docs | |
| parent | 8d901c0dabe26dbef6cbea11d48809461c1ea50c (diff) | |
| download | living-village-a4771219c0002ca88288c544f07c7cd06a7b79f9.tar.gz | |
docs: P37 职业系统证据与维护说明
证据 p37-occupation-select/fisher-start/farmer-start.png(职业选择页中文可读、
渔夫 vs 农夫开局 HUD/任务对照);check-no-white-blocks 3 帧 0 命中;两帧差异
仅顶部 HUD 1648px + 左下任务面板 831px、场景区 0,证明职业不改变世界生成。
维护说明补 P37 小节(已落地范围/物品落点限制/复现)。
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/evidence/p37-farmer-start.png | bin | 0 -> 101621 bytes | |||
| -rw-r--r-- | docs/evidence/p37-fisher-start.png | bin | 0 -> 102310 bytes | |||
| -rw-r--r-- | docs/evidence/p37-occupation-select.png | bin | 0 -> 60514 bytes | |||
| -rw-r--r-- | docs/维护说明.md | 42 |
4 files changed, 42 insertions, 0 deletions
diff --git a/docs/evidence/p37-farmer-start.png b/docs/evidence/p37-farmer-start.png Binary files differnew file mode 100644 index 0000000..1f5ccab --- /dev/null +++ b/docs/evidence/p37-farmer-start.png diff --git a/docs/evidence/p37-fisher-start.png b/docs/evidence/p37-fisher-start.png Binary files differnew file mode 100644 index 0000000..3b6f075 --- /dev/null +++ b/docs/evidence/p37-fisher-start.png diff --git a/docs/evidence/p37-occupation-select.png b/docs/evidence/p37-occupation-select.png Binary files differnew file mode 100644 index 0000000..9646f55 --- /dev/null +++ b/docs/evidence/p37-occupation-select.png diff --git a/docs/维护说明.md b/docs/维护说明.md index 972af87..21eff71 100644 --- a/docs/维护说明.md +++ b/docs/维护说明.md @@ -1160,3 +1160,45 @@ late pass),故「灯笼光晕 + 水面」以生成器夜帧为准,「炊� dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll # 运行日志逐帧打印 panel/prompt/home 对照点,末行 p36-shot=done ``` + +## P37 职业系统首切片(先设计后实现) + +设计/验收依据:`docs/design/profession-system.md`(4 职业:农夫/渔夫/货郎/书生 + 暂不选择)。 +职业只挂在玩家侧:世界(地图/NPC/谣言/关系)仍只由 seed 决定,职业不改变世界生成确定性。 + +- **已落地(P11–P15/P31 血统,本单给出设计基线与显式验收)**: + - 开局属性差异:农夫/渔夫/货郎/书生开局钱 60/45/90/70、体力 100/95/100/100,写进 + `WorldBootstrap.initialWorldWithOccupation` 的 `Avatar.Mind.Needs`;开局物品包在职业档案 + `Occupation.profileOf … .InitialInventory`(随 v3 状态持久化)。**注意**:玩家 `Avatar` 结构体 + 无 `Inventory` 字段(NPC 才有),且设计禁止改 World 结构(会动 digest),故物品差异落在职业 + 档案/状态而非世界实体上;世界数值路径零感知。 + - 每日任务:池按职业分化(农 3 / 渔 3 / 货 2 / 书 2,无职业 0),当日任务 = + `hash(seed ⊕ 职业种子, 天) mod 池大小`(splitmix 同源,禁 System.Random),确定性可复现; + 完成走既有事件通道,逾期判负,完成写年鉴。 + - 对话/剧情接点:村民回应按职业做确定性小幅重映射(农夫求助、渔夫闲聊、货郎闲聊、书生讲 + 笑话各一规则);每职业一条三段式轻剧情线,靠对话推进、关系均值决定结局;货郎/书生报价小幅 + 偏置(4 位定点基点,钳 ±5%),其余恒 1.0。 + - 开局界面:主菜单「开始」→「选择职业」页(`OccupationSelect`),上下选择、Enter 确认、 + Esc 返回,中文文案(标题「选择职业」+ 四项 + 「暂不选择」+ 剧情线提示)。 + - 存档兼容:无职业存档保持 v2;v1/v2 读入职业为「无」(等同旧行为),不吞档。 +- **回归测试**:新增 `src/LivingVillage.Desktop.Tests/P37ProfessionTests.fs`(8 例,覆盖设计 §4 + 验收 1–5),并复用既有 `DailyTaskTests`/`OccupationBiasTests`/`OccupationStoryTests`/ + `M6bTests`(OccupationSelect 页)。Release 全量 Desktop **182/182**、Kernel **119/119**。 +- **证据**(`docs/evidence/`,`git add -f`;`check-no-white-blocks.py` 3 帧 0 命中): + - `p37-occupation-select.png`:主菜单职业选择页(标题「选择职业」+ 农夫/渔夫/货郎/书生/暂不选择, + 选中项高亮;`selected=1` 即渔夫)。 + - `p37-fisher-start.png`:选渔夫(`LV_P37_OCCUPATION=fisher`)开局后 HUD + 任务面板。 + - `p37-farmer-start.png`:同 seed 选农夫开局对照。 + - 对照量化:两帧同一确定性世界(tick=0、同站位),差异像素共 2479,其中顶部 HUD 1648、 + 左下任务面板 831、**场景区 0** —— 直接证明职业不改变世界生成,差异只在开局属性与任务。 +- **复现**: + + ```bash + DLL=src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll + for occ in fisher farmer; do + LV_P37_SHOT=1 LV_P37_OCCUPATION=$occ LV_RECORD_DIR=/tmp/opencode/lv-p37-evidence \ + xvfb-run -a -s "-screen 0 1280x720x24" dotnet "$DLL" + done + # 运行日志打印 p37-shot=... page/selected/task 对照点 + ``` +- **范围**:首切片仅 4 职业;全村 NPC 职业化、技能树/等级、其他职业与玩家实体背包留待后续单。 |
