合并(营地场景重排接线批): 落表——十层新矩形(围墙 (0,220,1280,200)、大门 240×138 底压墙底 (520,282)、告示板 (845,241)、其余六件按 2026-11-05 裁定)+围墙件换代(1280×164 补尖+墙脚入土, 12 色零新增)+视图 expand_mode 修(门扇 138 高矩形生效)+单测 5 条钉值断言+设计文档三件(camp-scene-prompts v1.9/art-bible v3.48/camp.md)+需求卡片成立(两轮独立复核 24 发现全处置)+实现报告/反哺点两件;待办条目随实现完成整条删除。凭据: 营地单测 exit=0、冒烟 PASS、ui_struct_probe PASS、色板零新增、path_check 0、流水线闸 PASS;冲突续提交路径钩子不触发——前置检查手动补跑、推送手动补做(本仓在册坑)
ci / gates (push) Failing after 8m2s
ci / gates (push) Failing after 8m2s
This commit is contained in:
commit
5f233bac9a
11 files changed
+237
-35
No files matched your search
@@ -0,0 +1,6 @@
|
||||
# 营地场景重排接线 · 反哺点清单(2026-11-07)
|
||||
|
||||
| 文档 | 落点 | 内容 | 状态 |
|
||||
|---|---|---|---|
|
||||
| design/art/art-status-checklist.md 营地行 | 营地场景图行状态列 | 补「围墙件 2026-11-07 换代(1280×164 补尖+墙脚入土,显示 200 高拉伸)」事实 | 待文档批落文 |
|
||||
| roadmap.md | 迭代总表 | 本批未编迭代(用户直令落表);如需补记,由编排段处置 | 待用户裁 |
|
||||
@@ -0,0 +1,30 @@
|
||||
# 营地场景重排接线 · 实现报告(2026-11-07)
|
||||
|
||||
> 本批按用户 2026-11-07「落表」直接执行,未编迭代(卡片与实现同批落地,流程偏离记录在案)。
|
||||
> 卡片:reports/需求卡片-营地场景重排接线-2026-11-07.md(复核记录两轮 24 发现全处置)
|
||||
|
||||
## 各卡状态
|
||||
|
||||
| 卡 | 状态 | 读数 |
|
||||
|---|---|---|
|
||||
| T0 围墙件入包 | 完成 | 1280×164 RGBA;palette_check 对八件基线 12 色零新增;path_check 0 |
|
||||
| T1 布局表换代 | 完成 | 十层矩形+wall_band+schema 默认值/注释同步;营地单测 exit=0 |
|
||||
| T2 新值钉断言+收口 | 完成 | 新增 5 条钉值断言(围墙/门扇/告示板/围墙带/六件落位)全 PASS;冒烟 15 项 0 失败;ui_struct_probe PASS |
|
||||
|
||||
## 实现决定记录
|
||||
|
||||
- 门扇 hotspot 高 147=贴图 138+9 余量(沿用旧表口径)。
|
||||
- 六件 hotspot 按旧表同偏移平移(forge y−46、chest y−46/x−12/宽+24、notebook y−14/高+14、campfire y−46/高 80、board 高+19、dummy 同贴图)。
|
||||
- 视图层 `_build_layer_node` 加 `expand_mode = EXPAND_IGNORE_SIZE`:否则 TextureRect 被贴图原高顶住最小尺寸,门扇 138 高矩形不生效(探针 V1 抓到,已修)。
|
||||
|
||||
## 实机目检总清单(登记不阻塞,用户自排)
|
||||
|
||||
1. 营地屏:围墙带 y220–420、桩尖完整、墙脚无贯通直线(入土感)。
|
||||
2. 大门:240×138 显示、底压墙底 420、门扇在洞口 x520–760 内。
|
||||
3. 告示板:(845,241,130,121) 挂墙、命中可点。
|
||||
4. 其余六件落位与命中可点(锻炉/宝箱/笔记本/篝火/木桩/帐篷承载不动)。
|
||||
5. 背景层拼接接缝被围墙遮住、无可见缝。
|
||||
|
||||
## 遗留读数义务
|
||||
|
||||
- 无新增遗留读数;远端 CI 由 post-merge 钩子推送,按需 `tools/ci_check.sh <合并提交>` 现查。
|
||||
@@ -0,0 +1,137 @@
|
||||
# 需求卡片 · 营地场景重排接线
|
||||
|
||||
> 批名:营地场景重排接线 · 日期:2026-11-07 · 验收档:中(布局呈现数据面,无存档/结算传播)
|
||||
> 来源:待办清单「营地场景重排接线——十层新矩形与游戏内终审」条目(2026-11-07 登记,批次移交)
|
||||
> 设计事实源(唯一):[camp-scene-prompts](../design/art/camp-scene-prompts.md) v1.9 §2.3/§3/§5 第 12 条(2026-11-05 与 2026-11-07 用户裁)+[art-bible](../design/art/art-bible.md) v3.48 §6.2(围墙显示矩形与墙脚入土线)+[camp](../design/ux/camp.md) 第 29 行(围墙带 y220–420)+2026-11-07 用户裁原话(墙高 200、顶 y220、门/板跟随、墙脚入土;预览过审 `artwork/2026-11-07-营地接线预览/camp_new_layout_preview_c.png`)
|
||||
|
||||
## 1. 目标与完成定义
|
||||
|
||||
把营地十层的运行数据换成重排后的新矩形:围墙 (0,220,1280,200)、大门/告示板尺寸不变跟随、其余六件(dummy/forge/tent/chest/notebook/campfire)按 2026-11-05 裁定落位;新围墙件(1280×164,补尖+墙脚入土缺口)入包;布局表几何红线单测与冒烟全绿;游戏内营地图层按新矩形铺底、墙脚无贯通直线。
|
||||
|
||||
完成定义:`camp_scene_layout_test.gd` V14 全绿(含新值钉断言)+冒烟测试 exit 0+`palette_check` 围墙对八件零新增色+`path_check` 0 问题;游戏内目检归用户(登记不阻塞)。
|
||||
|
||||
## 2. 现状事实(开工自行复核)
|
||||
|
||||
- 数据表 [camp_scene_layout.tres](../game/data/tables/camp_scene_layout.tres):wall `texture_rect=(0,261,1280,49)`、gate `(520,250,240,211)`、board `(845,268,130,121)`、tent `(982,520,251,170)`、forge `(40,467,240,193)`、dummy `(340,520,120,180)`、chest `(1097,700,106,90)`、notebook `(818,704,100,66)`、campfire `(560,571,160,149)`;`wall_band=(0,240,1280,70)`;`gate_gap=(520,760)`。
|
||||
- 视图按表建层、`TextureRect.STRETCH_SCALE` 拉伸到矩形尺寸:[camp_scene_view.gd:136](../game/presentation/views/camp_scene_view.gd#L136);子节点序=表序=z 序(同文件头注)。
|
||||
- schema 加载期 fail-fast:validate 入口 [camp_scene_layout_table.gd:15](../game/data/schemas/camp_scene_layout_table.gd#L15);贴图矩形不出画布、命中区不出画布/不侵 y<48/两两不相交、`wall_band` 必须包含 wall 贴图矩形([camp_scene_layout_table.gd:67](../game/data/schemas/camp_scene_layout_table.gd#L67))。
|
||||
- 单测读表动态取值、以关系谓词为主:[camp_scene_layout_test.gd:82](../game/tests/unit/presentation/camp_scene_layout_test.gd#L82)(门扇命中对齐 gate_gap)、`:87`(布告板命中顶落围墙带)、`:77`(篝火命中贴贴图底)。
|
||||
- 包内围墙件仍是旧 1280×49(`game/assets/art/scene/scene_camp_wall.png`);门扇件 240×211 由运行时压扁到矩形高(STRETCH_SCALE,2026-11-07 用户裁「不动美术素材」),无需换件。
|
||||
|
||||
## 3. 设计契约(违反即返工)
|
||||
|
||||
🔴 逐层锁定值(写进 .tres,值逐字照此):
|
||||
|
||||
| 层键 | texture_rect | hotspot | hotspot_key |
|
||||
|---|---|---|---|
|
||||
| bg | (0,0,1280,800) | (0,0,0,0) | — |
|
||||
| wall | (0,220,1280,200) | (0,0,0,0) | — |
|
||||
| board | (845,241,130,121) | (845,241,130,140) | board |
|
||||
| gate | (520,282,240,138) | (520,282,240,147) | gate |
|
||||
| dummy | (340,474,120,180) | (340,474,120,180) | dummy |
|
||||
| forge | (40,421,240,193) | (40,374,240,240) | forge |
|
||||
| tent | (982,335,251,170) | (0,0,0,0) | — |
|
||||
| chest | (1097,654,106,90) | (1085,654,130,90) | chest |
|
||||
| notebook | (870,515,100,66) | (870,501,100,80) | notebook |
|
||||
| campfire | (560,525,160,149) | (560,594,160,80) | campfire |
|
||||
|
||||
表级:`canvas=(1280,800)`、`hud_band_h=48`、`gate_gap=(520,760)`、`wall_band=(0,220,1280,200)`;层数组序不变(bg,wall,board,gate,dummy,forge,tent,chest,notebook,campfire)。
|
||||
|
||||
🔴 围墙件:1280×164、RGBA、≤32 色(实测 12 色)、顶行仅柱尖若干列不透明(柱尖补全)、底行全透明(入土缺口 1–7px 低频起伏);源文件=主检出 `artwork/2026-11-07-营地接线预览/scene_camp_wall_final.png`。
|
||||
|
||||
🔴 门扇 hotspot 高 147=贴图 138+底部 9px 余量(沿用旧表「命中比贴图高 9」口径,属实现微决策,见 §9 代拍板)。门扇件不换件:现 240×211 由运行时压扁到矩形(用户 2026-11-07 裁「不动美术素材」;设计文档中「随门洞压扁重画」旧句已在本批改为运行时压扁口径)。
|
||||
|
||||
🔴 其余六件的 hotspot 由旧表相对关系同偏移得出(dummy 同贴图;forge y−46/高+46;chest y−46/x−12/宽+24;notebook y−14/高+14;campfire y−46/高 80;board 同贴图 y/高+19)——值已列上表,禁止再自拟。
|
||||
|
||||
## 4. 范围边界
|
||||
|
||||
做:上表十层数据、围墙件入包、单测新值钉断言(追加,不删旧断言)。
|
||||
不做:门扇/布告板/其余七件素材重出;背景层;土线改为独立代码层(入土效果落在围墙件缺口,零新代码);camp.md/art-bible/camp-scene-prompts 的进一步改写(归文档批)。
|
||||
不收件去向:art-status-checklist 营地行状态更新归文档批(反哺点);游戏内终审归用户(登记不阻塞)。
|
||||
|
||||
## 5. 关联文档同步面
|
||||
|
||||
| 文档 | 关联点 | 同步义务 |
|
||||
|---|---|---|
|
||||
| design/art/art-bible.md §6.2 | 围墙显示矩形与墙脚入土线(已随设计批改到 v3.48) | 实现批不直改;若实现取此卡值时偏差则列反哺点 |
|
||||
| design/art/camp-scene-prompts.md §2.3/§3/§5 | 坐标表(已随设计批改到 v1.9) | 同上 |
|
||||
| design/ux/camp.md 第 29 行 | 围墙带 y220–420(已随设计批改) | 同上 |
|
||||
| design/art/art-status-checklist.md 营地行 | 需补「围墙件 2026-11-07 换代」事实 | 反哺点,归文档批落文 |
|
||||
|
||||
## 6. 任务卡
|
||||
|
||||
### T0 围墙件入包(≈0.25 工作日)
|
||||
|
||||
- 取用:无。产出:`game/assets/art/scene/scene_camp_wall.png`(覆盖)。
|
||||
- [ ] 从主检出 `artwork/2026-11-07-营地接线预览/scene_camp_wall_final.png` 拷入 → 核对尺寸 1280×164、模式 RGBA
|
||||
- [ ] 建隔离基线目录并跑色板闸:`mkdir -p /tmp/wall_base /tmp/wall_only && cp game/assets/art/scene/scene_camp_{board,gate,dummy,forge,tent,chest,notebook,campfire}.png /tmp/wall_base/ && cp game/assets/art/scene/scene_camp_wall.png /tmp/wall_only/ && python tools/palette_check.py /tmp/wall_only --baseline /tmp/wall_base` → 围墙零新增色(八件基线)
|
||||
- [ ] 跑 `python tools/path_check.py` → 0 问题(worktree 缺 `artwork/mockups` 时该项 SKIP/FAIL 属环境坑:以主检出 `--repo` 口径复核)
|
||||
|
||||
### T1 布局表换代(≈0.25 工作日)
|
||||
|
||||
- 取用:T0 的素材。产出:`game/data/tables/camp_scene_layout.tres`(十层+表级值)。
|
||||
- [ ] 按 §3 表逐字改十层 texture_rect/hotspot 与 wall_band → 跑 `godot --headless --path game --script res://tests/unit/presentation/camp_scene_layout_test.gd`(加载期 validate+钉值+关系谓词全绿,exit 0)
|
||||
- [ ] `_build_layer_node` 的 TextureRect 加 `expand_mode = EXPAND_IGNORE_SIZE`(否则门扇节点被贴图最小高 211 夹住、矩形 138 不生效)→ 场景探针 ui_struct_probe camp V1 转绿
|
||||
|
||||
### T2 新值钉断言+收口(≈0.25 工作日)
|
||||
|
||||
- 取用:T1 的表。产出:`game/tests/unit/presentation/camp_scene_layout_test.gd`(追加断言);`reports/iter<N>-实现报告-2026-11-07.md`;`reports/iter<N>-反哺点-2026-11-07.md`。
|
||||
- [ ] 在 `_test_layout_hotspot_geometry` 追加:wall/gate/board/wall_band 四条钉值(已在本批落笔);六件落位钉值一条(逐层 Rect2 比对)
|
||||
- [ ] 跑 `python tools/run_smoke.py` → exit 0;跑营地套件 `godot --headless --path game --script res://tests/unit/presentation/camp_scene_layout_test.gd` → exit 0;跑场景探针 `…console.exe --headless --path . res://probe/shot_probe.tscn` + `python tools/shot_checker.py <截图目录>` → A 段 PASS
|
||||
- [ ] 写实现报告(各卡状态+目检清单+决定记录)与反哺点清单(§5 四条逐条落点)
|
||||
|
||||
## 7. 验证闸(改动—验收对照表)
|
||||
|
||||
| 需求点 | 改动(文件:行/行为) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 围墙显示矩形 220/200(判据出处 design/ux/camp.md:29) | camp_scene_layout.tres wall | V14 围墙矩形钉值(camp_scene_layout_test.gd `_test_layout_hotspot_geometry`) | 单元 | load 表+validate | texture_rect 取值 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 门/板跟随(判据出处 design/art/camp-scene-prompts.md:250) | .tres gate/board | V14 门板矩形钉值 | 单元 | 同上 | texture_rect 取值 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 其余六件落位(判据出处 design/art/camp-scene-prompts.md:244) | .tres 六件 | V14 六件落位钉值+七命中区几何红线(validate+不相交+不越界) | 单元 | 同上 | texture_rect/hotspot 取值 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 门扇显示高 138(判据出处 design/art/camp-scene-prompts.md:250) | camp_scene_view.gd `_build_layer_node` 加 `EXPAND_IGNORE_SIZE` | 场景探针 ui_struct_probe camp V1「层贴图矩形≠layout 表」 | 探针 | `res://probe/ui_struct_probe.tscn`(camp 段) | 节点 position/size 逐值 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 围墙件换代(判据出处 design/art/art-bible.md:212) | scene_camp_wall.png | T0 `palette_check`/`path_check` | 资产 | 文件读数 | 色数 12、零新增色 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 墙脚入土(判据出处 design/art/art-bible.md:396) | 围墙件底行 | 目检(游戏内终审,登记式) | 目检 | 营地屏 | 墙底无贯通直线 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
| 营地屏铺底不回归(判据出处 design/ux/camp.md:29) | 十层矩形整体 | 场景探针 `shot_probe` camp 截图+`shot_checker` A 段(角色/面板骨架不回归) | 探针 | `--headless --path . res://probe/shot_probe.tscn` | 截图色彩数/骨架 | 既有:营地场景图十层铺底与门洞留空呈现 |
|
||||
|
||||
注:未删改任何旧断言;新增 5 条钉值断言(围墙/门扇/告示板/围墙带/六件落位),测试削弱申报:无。
|
||||
|
||||
**独立验收审计**:入口=未参与实现的独立会话或子代理(对照本卡 §7 逐行核);报告文件 `reports/iter<N>-验收审计-2026-11-07.md`;未过不得合并。
|
||||
|
||||
## 8. 异常分级
|
||||
|
||||
L1 自救:格式/导入缓存类异常自行重跑。L2 记录继续:非本卡面的既有红记录进报告。L3 停机:表值触 schema fail-fast 或与 §3 冲突=停卡呈报(上游缺陷退写卡段);素材缺位=停卡(不得用旧 49px 墙凑合)。
|
||||
|
||||
## 9. 代拍板白名单
|
||||
|
||||
门扇 hotspot 高 147(贴图 138+9 余量);七件 hotspot 的平移口径(§3 已列值);T2 钉值断言的命名与位置(同套件内追加)。超出=记实现报告「实现决定记录」。
|
||||
|
||||
## 10. 待裁点
|
||||
|
||||
零待裁点(用户已裁:墙 220/200、门板跟随、入土线;2026-11-07)。开工门=U0。
|
||||
|
||||
## 11. 落位与可复用性预检
|
||||
|
||||
本批零新增代码文件、零新增函数:改既有 `camp_scene_layout.tres`(数据行唯一落点)、既有单测追加断言、覆盖既有 `scene_camp_wall.png`(消费名不变,`UiKit.TEX_CAMP_WALL`);另产出两份 `reports/` 过程件(实现报告、反哺点清单)。复用面:视图/装载/校验链现成(camp_scene_view.gd、schema.validate、camp_scene_layout_test.gd),不新增渲染件。唯一面:坐标只落表一处,视图/探针/单测均读表。
|
||||
|
||||
## 12. 实现规范预算
|
||||
|
||||
零新增文件、零新增方法 → gdstyle 阈值面无新增;存量触面:camp_scene_layout_test.gd 追加一段断言(方法数不变、成员数不变)。
|
||||
|
||||
## 13. 复核记录
|
||||
|
||||
| 轮次 | 复核者身份 | 发现 | 去向 | 处置结果 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 前台只读复核子代理(未参与撰写) | 七件/六件计数不一(§1/§3/§7) | 补写 | 统一为六件(dummy/forge/tent/chest/notebook/campfire) |
|
||||
| 1 | 同上 | 六件新值未钉,V14 只证互斥/边界 | 补写 | T2 增六件落位钉值断言,本批已落(PASS 实测) |
|
||||
| 1 | 同上 | T2 单元套件无真实入口命令 | 补写 | 改为 `godot --headless --path game --script res://tests/unit/presentation/camp_scene_layout_test.gd` |
|
||||
| 1 | 同上 | T1 `python -c` 不能读 .tres;`db.load_tables` 无命令入口 | 补写 | T1 改为直跑该单测(加载期 validate+钉值) |
|
||||
| 1 | 同上 | T0 基线写占位目录;扫全 scene 会带 stage 件红 | 补写 | 写入临时隔离基线命令(八件拷贝)与限定扫描面;path_check 环境坑注明 |
|
||||
| 1 | 同上 | prompts §5 第 9 条布告板旧值 (845,224) | 退回上游 | 文档区已修:(845,241,130,121),底 362 落在墙内 |
|
||||
| 1 | 同上 | art-bible §6.2 门扇旧句「贴图 240×138 随门洞压扁重画、y283–367」 | 退回上游 | 文档区已修:运行时压扁、底压 y420 |
|
||||
| 1 | 同上 | prompts §2.3 门洞 y282–420 与在包墙件全高缺口不相符 | 退回上游 | 文档区已修:墙件缺口全高 220–420、门扇可见 282–420 |
|
||||
| 1 | 同上 | art-bible:395 不含色数判据 | 补写 | 锚改 art-bible.md:212(营地子板色数行) |
|
||||
| 1 | 同上 | §13 复核报告文件行违反 2026-11-06 裁(凭据=本节) | 自判 | 删除该行 |
|
||||
| 1 | 同上 | 门扇「重画 138」vs 运行时压扁,§10 零待裁是否成立 | 自判 | 用户 2026-11-07 明裁「不需要动任何美术素材」,运行时压扁即终稿;§10 零待裁成立 |
|
||||
| 2 | 后台只读复核子代理(未参与撰写) | schema 默认 `wall_band=(0,240,1280,70)` 与注释仍旧值 | 补写 | schema 默认改 (0,220,1280,200)+注释同步 |
|
||||
| 2 | 同上 | §7「未新增/删除任何断言」措辞与 +5 条钉值矛盾 | 补写 | 改为「未删改旧断言,新增 5 条钉值断言」 |
|
||||
| 2 | 同上 | test.gd 头注「禁坐标字面量」与新钉值冲突 | 补写 | 头注改为「关系谓词为主+重排钉值」,钉值前加 `# oracle:` 行锚 |
|
||||
|
||||
Reference in new issue
Block a user