Merge branch 'board-material-fix'
ci / gates (push) Failing after 9m16s

This commit is contained in:
DKChan committed 2026-11-10 03:55:10 +08:00
commit 95a2ab8cf6
17 files changed
+153 -80

No files matched your search

+5 -5
View File
@@ -120,10 +120,10 @@
- **封印印记改为参数化绘制**:形 = 环+十字法阵,由着色器按格边实时画(环径 82% 格宽+环外一圈压暗光),形与定值见 art-bible §3.2 与 §8.2「封印印记参数表」;贴图件仅战末金蜡封徽记继续使用。本节余下面 = 雷格纹样与数字格面。
- **要什么**:格子样张通过后按冻结参数出全套砖面资产(含图类型换色板组)。
- **来源**:⚙ 脚本管线自产——未开/已开/危险格/变异纹带是扫雷专属语义(角嵌纹样已不存在),素材站没有对的;砖面**纹理底噪**可 ♻ 用 CC0 无缝石/土纹理作脚本管线的纹理输入,量化到色板(混合路线)。
- **前置**:§1.1 格子样张通过(**未跑**)。
- **现状**:程序化绘制,可读性达标(对比硬指标已是现行实现依据),观感待升级。
- **要什么**:雷格巢穴纹与已开格结果所需的格面语义纹样;棋盘岩顶/地面 6 张材质已由棋盘重做批单独交付,本条不再出逐格墙/地砖面。
- **来源**:⚙ 格面语义纹样按 art-bible §3.2 与结果整格表达自产,纹样底噪复用已录入的岩顶/地面材质;不另出逐格瓦片。
- **前置**:格形与三关八色已冻结;6 张材质已于 2026-11-09 录入。
- **现状**:棋盘地形已改「岩顶/地面=512×512 无缝贴图+崖面/边缘/投影=程序化」,三关 6 张于 2026-11-09 用户目检通过并录入,旧逐格砖面资产套退役;本条不再按逐格砖面出图,雷格纹样/数字格面按 art-bible §3.2 退役后口径处理。
### 3.4 增益状态效果图标 9 枚 ♻优先/⚙兜底
@@ -205,7 +205,7 @@
| Kenney 全系(ui-pack/fantasy-ui-borders/game-icons/board-game-icons/kenney-fonts/roguelike 系/tiny-dungeon/tiny-town) | CC0 | 无 | ui-reuse 待审;tiny-dungeon 终局否决(架构不适配);余顺带否决;kenney-fonts 拉丁字候选退役(全局字体定稿 Fusion Pixel 单套,不再接入) |
| OGA Pixel UI 750(Kenney 作) / PixUI(CamTatz) / Handpainted stone | CC0 | 无 | ui-reuse 待审 |
| DENZI public domain art | CC0 | 无 | 否决 |
| beast-cave(OGA) | CC0 | 无 | **已退役**(源包归档;地砖随 2026-11-07 棋盘地形重做退役——棋盘改程序化材质) |
| beast-cave(OGA) | CC0 | 无 | **已退役**(源包归档;地砖随 2026-11-07 棋盘地形重做退役——棋盘改贴图材质) |
| JaggedStone / Screaming Brain / ExileGL / Corey Archer(OGA) | CC0 | 无 | 否决 |
| Calciumtrice / Buch / bart cobblestone(OGA) | CC-BY 3.0 | **需署名** | 否决 |
| LD rogue / Evert cave / poikilos underworld(OGA) | OGA-BY 3.0 | **需署名** | 否决 |
+9 -8
View File
@@ -1,6 +1,6 @@
# 美术圣经(Art Bible)— Dungeon Sweeper
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.51,历次修订明细见 git 提交史
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.53,历次修订明细见 git 提交史
>
> **Art Director Sign-Off(AD-ART-BIBLE)**:历次批均未签核——此为 Lean/Solo 模式(非 PHASE-GATE)下的现行治理状态;full 门禁签核时机待用户表态。
> 风格基调:地牢题材但**非暗黑风**——轻快明亮的幻想冒险风,全年龄;像素风;角色 2~3 头身。
@@ -55,7 +55,7 @@
3. **焦点预算成立(§3.4)**:任意一格至多一个信息完整凸形(浮空数字/小人/封印印记);岩体为连续地形,不作单格凸形计;数字所在格无第二信息焦点。验收:目检〈任一格至多一个信息完整凸形,数字所在格无第二焦点〉
4. **图类型换皮抽测(§4.3)**:变体组中浮空数字字芯/描边、封印黑、危险红、奖励金、小人蓝、类型微光五组恒定不动;变体岩顶/地面底仍过第 1、2 项指标。验收:机检〈换皮后不变槽色值恒定,变体岩顶/地面底仍过第 1、2 项〉
**判定与回退**:第 1 项不过时按原则二设计测试回退——先调岩顶/地面明度档,禁止使用数字底牌;浮空字描边是唯一可读性装置,禁止缩字号换字形逃避;第 2–4 项不过时修形不修数。样张通过 = 棋盘地形形态与色板冻结;新增图类型/变异色板须重跑本测试(§4.3)。执行时机:正式地形资产或程序化材质开工前;《HUD框架》以本节为引用依据。验收:机检〈样张机检断言集全绿后方可冻结地形形态与色板〉
**判定与回退**:第 1 项不过时按原则二设计测试回退——先调岩顶/地面明度档,禁止使用数字底牌;浮空字描边是唯一可读性装置,禁止缩字号换字形逃避;第 2–4 项不过时修形不修数。样张通过 = 棋盘地形形态与色板冻结;新增图类型/变异色板须重跑本测试(§4.3)。执行时机:正式地形贴图资产开工前;《HUD框架》以本节为引用依据。验收:机检〈样张机检断言集全绿后方可冻结地形形态与色板〉
**整屏样张闸**:格子样张验"格",整屏样张验"屏"——战斗屏/关卡屏/菜单屏/营地屏各出一张整屏样张,验收四项:①全部文字(含菜单/说明/tooltip/按钮)对其直接背景 ≥4.5:1(WCAG AA),大字(≥18px 或加粗档)底线 3:1、目标 4.5:1;②明度分层三档带成立(信息面层 > 世界中层 > 世界底层,层间灰度可分);③整屏焦点预算(§3.4:首焦唯一——数字区/立绘/主按钮,无第二焦点竞争;负空间服务焦点,不属空窗);④文字禁直接压纹理底(垫容器或罩层)。**浮空数字为描边字,按 §1.4 第一验收项的复合对比判据,不套本条文字直画 4.5:1 口径。** 验收顺序 = **方向稿目检先行**(防"机检过闸但气质否决"式返工),目检过后机检冻结。执行时机 = 屏级视觉落码开工前;过闸前一切屏级视觉为占位临时态(§7.1 完成条款)。**样张判定物的产出手段与素材输入级别不进圣经定值**——圣经只定样张要验什么,不定样张以何种手段产出、也不定它取哪一级别素材输入。验收:机检〈整屏样张四项断言全绿,且目检先行过审〉
@@ -169,9 +169,9 @@
- **岩体**:圆角岩体堆叠/合并,禁尖刺装饰——尖刺专属危险语义,装饰禁止伪装逻辑差异。验收:目检〈岩体无尖刺装饰〉 ←原三
- **棋盘地形体系|术语与定义**:未开格 = **抬升岩体**——连通的未开格(四邻:上下左右;斜角不连)合并为一块岩体,共享一块岩顶与连续崖面;已开格 = **连续地面**。素材语义名——岩顶材质 = **大岩板**,南/东崖面材质 = **崖面**,已开地面 = **地面**;**不做逐格自含瓦片**,Tiny Dungeon 拼块套与逐格 16+5 墙/地瓦片套均退役(2026-11-07 用户裁)。验收:目检〈连通未开格共享一块岩顶与连续崖面,无逐格拼缝〉 ←原三
- **棋盘地形体系|投影与搭接**:整块岩顶向北偏西抬升——LIFT = round(格边 × 0.435)(46 格 20px、26 格 11px,下限 1),ESHIFT = round(格边 × 0.109)(46 格 5px、26 格 3px,下限 1);南/东崖面沉在岩体格内(南面高 = LIFT,东面宽 = ESHIFT,东面高 = 格边 + LIFT),不侵下一行地面;相邻岩体的岩顶按 2px 互相搭接盖住格缝;板边岩顶向外延伸 ESHIFT 铺到板缘。单个墙格的**顶面 rect** = 格矩形左上偏移 (−ESHIFT, −LIFT)、边长 = 格边;**整格视觉 rect** = 顶面 rect 向右补 ESHIFT、向下补 LIFT。验收:机检〈LIFT/ESHIFT 比例与下限;相邻岩顶搭接 2px;崖面不越格〉
- **棋盘地形体系|受光与崖面**:光照 = **北/西受光**(2026-11-07 用户裁)——北/西临空缘 = 2px 主亮棱 + 2px 次亮棱(暖白族就地提亮),再外 2px 深墨临空边线;南/东临空缘 = 2px 深墨内缘 + 3 段 ×2px 顶面内阴影(自缘内 0.217×格边起,黑 α≈0.27/0.16/0.08)。南崖面 = 高 LIFT、宽 = 格边 + ESHIFT,顶缘 2px 口沿高光取本关受光棱(§4.1,dungeon `#C9AF83`)+1px 深墨线,面身横向层理叠石(大岩板同族、背光暗面),禁竖条纹栅栏;东崖面 = 宽 ESHIFT、高随岩顶南缘,横向层理、外缘 1px 深墨。验收:目检〈北/西亮棱、南/东内阴影与崖面层理;南崖不越下一行、东崖不越下一列;无竖条纹〉
- **棋盘地形体系|材质与装饰**:岩顶 = **大岩板**(低频率斑驳 + 稀疏大板块缝 + 板缘浮雕倒角,单块材质覆盖整块岩体;禁逐格小砖纹与逐格边框);地面 = 连续暖褐土(低对比石屑、碎石斑;无缝,禁逐格砖缝);装饰变体 = 岩顶材质内的低对比裂纹/麻点/碎石贴花,走原则三零信息纪律,不新增逐格资产。验收:目检〈岩顶为单块大岩板、无逐格拼缝;地面连续无缝;装饰不构成逻辑线索〉
- **棋盘地形体系|投影与整板悬崖**:南/东临空岩体在地面投 4 段 ×4px 渐隐影(黑 α 0.44/0.30/0.16/0.07,自崖面外缘起);整板悬崖 = 板底/右侧 `DEPTH_PX 8px` 暗面 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影,色取棋盘环境子板(§4.1)。验收:目检〈南/东投影四段渐隐;整板悬崖结构件齐备〉
- **棋盘地形体系|受光与崖面**:光照 = **北/西受光**(2026-11-07 用户裁)——北/西临空缘 = 1px 主亮棱 + 1px 次亮棱,再外 2px 深墨临空边线;南/东临空缘 = 3 段 ×1px 顶面内阴影,明暗只负责分界,不形成闭合厚黑框。南崖面 = 高 LIFT、宽 = 格边 + ESHIFT,顶缘 1px 受光口沿+1px 深墨线,面身用低对比、长短不一且彼此错开的岩块面;东崖面 = 宽 ESHIFT、高随岩顶南缘,用断续短纹与外缘 1px 深墨。任何岩层线不得贯通整条崖面,禁规则三角装饰带与竖条纹栅栏。验收:目检〈北/西亮棱与南/东内阴影收薄;崖面岩块断续且低对比;无贯通横线、规则装饰带与竖条纹〉
- **棋盘地形体系|材质与装饰**:岩顶 = **大岩板**(少量主裂纹、石屑与不规则色斑,单块材质覆盖整块岩体;禁逐格小砖纹、逐格边框与环绕单格的闭合裂纹);地面 = 连续暖褐土(低对比色斑与石屑;无缝,禁逐格砖缝与密集噪点);装饰变体 = 岩顶材质内的低对比裂纹/麻点/碎石贴花,走原则三零信息纪律,不新增逐格资产。三关共用同一母图换色,不另造三套地形。验收:目检〈岩顶主裂纹稀疏且不成方格;地面有质感但不抢数字;整板无重复主裂纹与逐格拼缝〉
- **棋盘地形体系|投影与整板悬崖**:南/东临空岩体在地面投 4 段 ×4px 渐隐影(南向黑 α 0.25/0.16/0.09/0.04,东向黑 α 0.22/0.14/0.07/0.04,自崖面外缘起);整板悬崖 = 板底/右侧 `DEPTH_PX 8px` 暗面 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影,色取棋盘环境子板(§4.1)。验收:目检〈南/东投影四段渐隐且不抢岩顶;整板悬崖结构件齐备〉
- **棋盘地形体系|绘制序与遮挡**:层序 = 地面(封印格地面铺本关受光棱色封印石)→ 投影 → 数字所属格的**地面阴影圆**(开启格地面,位于小人之下,小人站该格时遮住圆)→ **按脚底 y 排序的深度对象**(岩体 = 其最南格格底;小人 = 所在格格底;升序绘制,南侧岩体自然遮住小人脚底)→ 顶面贴花(类型微光/变异纹带,随岩顶锚点偏移 −ESHIFT/−LIFT;只在未开格岩顶)与交互反馈(悬停/路径/可挖域微光)随所属格件同序——北侧(脚底≤小人)低于小人,南侧(脚底>小人)随岩体在前;封印印记与封印格身份色牌在已揭示地面、固定低于小人(不参与南侧前推)→ **浮空数字+引导线(最顶)**。验收:机检〈深度对象按脚底升序绘制;格件贴花/交互随脚底行分档;浮空层 z 最高〉+目检〈南侧岩体遮住小人脚底;顶行数字越出棋盘仍完整〉
- **棋盘地形体系|浮空数字(信息层)**:数字与格面字形(危/?)脱离格面,浮在格上方——**封印格除外**,其身份字形按封印印记条垫色牌叠于法阵之上、不进浮空层;字高 21px(7px 像素字 ×3,固定不随格边缩放)、2px 深墨描边、字芯暖白 `#F0E2C8`、1px 浮空投影;字底距格顶 15px;引导线 = 2px 双色实线(左深 `#1A140E`/右浅 `#E8D3AB`),自字底 +3 落到格顶 +4;格顶 +7 处画 10×6 四层柔边小阴影圆(标明数字所属格),圆画在开启格地面、位于小人之下,不盖小人。浮空层 z 最高,任何地形/小人/特效不遮数字与引导线。顶行数字出棋盘上缘,D 区上方预留 44px(字高 21+间距 15+描边 2+余量 6)。验收:机检〈字高 21、间距 15、顶预留 44;浮空层 z 最高;封印格无浮空 entries〉+目检〈顶行数字与引导线完整;阴影圆指向正确格〉
- **棋盘地形体系|旧资产处理**:旧 `terrain_*` 63 件(16 墙瓦片 + 5 地面变体,三关各一套)全部退役——无参考价值者直接删除,不归档;`seal_mark.png` 保留(战末金蜡封专用)。验收:机检〈旧 terrain_* 零引用、零在库;seal_mark 在库〉
@@ -519,7 +519,8 @@
### 8.1 分辨率档位与格边长
- **两档定案**:1280×800(基座)+ 1920×1080,窗口不可调;后续调整走修订。验收:机检〈工程分辨率配置与两档一致〉
- **格边长取值**:按档位与板形计算——固定档位下格子量增加则格边长相应变小;公式、单位与现行算例的唯一出处 = [battle.md](../ux/battle.md)「棋盘格尺寸公式」,本节不复述数值。资产侧锁两条比例:**棋盘地形不铺逐格瓦片**(岩顶/地面/崖面材质按整板矩形与格边程序化绘制,允许连续缩放——地形材质不适用 §8.2 甲类整数倍纪律)、**棋盘小人显示占位 ≤ 0.75× 格边长**。(1920 档已裁决全局等比缩放)验收:机检〈地形材质随格边/整板绘制、小人占位 ≤0.75×〉
- **格边长取值**:按档位与板形计算——固定档位下格子量增加则格边长相应变小;公式、单位与现行算例的唯一出处 = [battle.md](../ux/battle.md)「棋盘格尺寸公式」,本节不复述数值。资产侧锁两条比例:**棋盘地形不铺逐格瓦片**(岩顶/地面材质取无缝贴图、按合并岩体与整板一次铺图,UV 用棋盘全局坐标、禁逐格重置;崖面、临空边缘、投影等结构件程序化绘制;允许连续缩放——地形材质不适用 §8.2 甲类整数倍纪律)、**棋盘小人显示占位 ≤ 0.75× 格边长**。(1920 档已裁决全局等比缩放)验收:机检〈岩顶/地面为贴图材质、结构件程序化;地形材质随格边/整板绘制、小人占位 ≤0.75×〉
- **棋盘地形材质|过审资产规格**:三关岩顶/地面各一张 512×512 无缝 PNG,同一母图换色,单张像素域 ≤32 色;岩顶以少量主裂纹、石屑与不规则色斑构成,地面以低对比色斑与石屑构成,均无边框、无自带亮边、光照均匀。参考图指针 = [asset-path-map](asset-path-map.md) §3 `board/`。验收:机检〈6 张均为 512×512 且单张 ≤32 色〉+目检〈现行最大板内主裂纹不重复;材质无逐格边框,三关数字可读〉
### 8.2 像素基准与画布
@@ -552,9 +553,9 @@
### 8.5 结构件完整性与参考核验
> **白话**:格子读感里的立体结构——顶面、缘件、角件、周界轮廓——必须是素材里**画出来的结构件**;素材缺件就停下报缺,拿调色/渐变/滤镜顶替不是变通,是违规。
> **白话**:角色、单位与非地形 UI 格件里的立体结构——顶面、缘件、角件、周界轮廓——必须是素材里**画出来的结构件**;素材缺件就停下报缺,拿调色/渐变/滤镜顶替不是变通,是违规。棋盘地形不适用这条,按下方「生产分工」与 §3.2 棋盘地形体系执行。
- **结构件完整性**:格面立体感(高墙顶面/坡缘/角件/周界轮廓)只能来自**素材本体绘制的结构件拼装**(样例=Necesse 式缘件:专属底色+手绘细节+暗轮廓线的独立贴图);禁止以调色、渐变、明暗滤镜、跨格投影等生成手段伪造素材中不存在的结构。样稿暴露缺件时,正确动作=停下报告缺口与「换素材/自产缺件」选项,由用户裁决后执行。验收:目检〈立体感逐件来自素材本体,无滤镜伪造〉
- **结构件完整性(适用角色、单位与非地形 UI 格件)**:这些物件的立体感(顶面/坡缘/角件/周界轮廓)只能来自**素材本体绘制的结构件拼装**(样例=Necesse 式缘件:专属底色+手绘细节+暗轮廓线的独立贴图);禁止以调色、渐变、明暗滤镜、跨格投影等生成手段伪造素材中不存在的结构。**棋盘地形是已裁例外**:岩顶/地面走无缝贴图,崖面/边缘/角件/投影走程序化结构(§3.2、§8.1 与下方生产分工),不按本条判违例。样稿暴露缺件时,正确动作=停下报告缺口与「换素材/自产缺件」选项,由用户裁决后执行。验收:目检〈非地形件立体感逐件来自素材本体;地形件按 §3.2 程序结构判据〉
- **参考核验**:宣称「参考 X 游戏」前,必须取得并实际查看 X 的截图证据(像素级放大核验其实现方式),证据存 `artwork/mockups/` 或 `design/art/references/`;仅凭文字资料、记忆或宏观印象作出「X 是这样做」的断言无效。验收:目检〈参考结论有截图证据在库〉
- **图底分离**:已开地面的明度须低于未开格岩体,由材质选型承载(地面基色 `#695038` 低于岩顶 `#9C8462`),不靠渲染压暗实现。验收:机检〈已开地面明度低于岩顶面〉
- **生产分工**:格面地形类素材=**材质归模型、结构归程序**——AI 生图模型只出无缝填充纹理(无边框/无亮边/均匀光照/方形);一切结构件(缘件/轮廓/立面/角件/收头)一律程序化绘制或手修,因为 autotile 任意拼接的边界像素约束超出 2D 生图模型能力(实证:生图 5×5 瓦片表每枚砖自带啃咬边框与宽亮带,提示词无法根除)。**镜像规则**:东西对称结构件只许水平翻转(flip_h)复用、**禁旋转**——北受光下东西侧缘光照对称,镜像无损真;旋转会把北受光转到东边。验收:目检〈瓦片表无自带边框/亮带;对称件仅 flip_h〉
+1
View File
@@ -28,6 +28,7 @@
| 格面资源徽章 19 枚 | ◐ | [art-bible](art-bible.md) §4.6 |
| 关卡节点图图标组 | ◐ | [art-assets-checklist](art-assets-checklist.md) §3.2(正式 UI 设计未成文) |
| 雷/封印印记/数字砖面全套 | ◐ 封印印记已换代(环+十字法阵,参数化绘制);雷与数字砖面仍待格子样张前置 | [art-bible](art-bible.md) §1.4/§3.2 |
| 棋盘岩顶/地面材质 6 张 | ✅ 已交付:三关各一张岩顶+一张地面,512×512、同一母图换色、单张 ≤32 色;2026-11-09 整板与细部预览经用户目检通过,落 `game/assets/art/board/` | [art-bible](art-bible.md) §3.2/§8.1 · [asset-path-map](asset-path-map.md) §3 |
| 增益状态效果图标 9 枚 | ✅ 已接入 | [art-bible](art-bible.md) §4.6.1(候选原稿归 candidates 档——路径描述性引用,归档纪律见 art-bible §8.3) |
| 营地场景图 | ✅ 已交付:十层在包;背景层 2026-11-07 换代录入(远景 v5+地面 v3 过审、拼接量化 32 色落 `scene_camp_bg.png`);坐标接线归下游实现批(`camp_scene_layout.tres` 仍旧值) | [art-bible](art-bible.md) §6.2 |
| 字体(全局 UI 像素字,Fusion Pixel 单套单字重) | ✅ 已定稿在役(用户裁现状即终稿——不另接拉丁专件、不上第二字重) | [art-bible](art-bible.md) §7.4 |
+1 -1
View File
@@ -28,7 +28,7 @@
| `character/` | 角色棋盘帧 + B 区立绘 | character_hero_idle/walk(棋盘 32×32 朝左基准)、character_hero_portrait(B 区立绘 46×48)+ character_enemy_<键> 八敌 |
| `fx/` | 特效帧 | shovel_swing_f0/f1/f2(挥铲三帧,握把锚 (18,12)) |
| `scene/` | **场景图**(背景层 + 地面层 + 围墙层 + 可点物件层;营地场景图首批) | 营地 10 张:`scene_camp_bg`(背景层,不透明全幅=天空+远山+地面+门洞小路)+ `scene_camp_wall`(围墙层,透明底、门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件,不可点)+ `scene_stage_bg_dungeon` / `scene_stage_bg_underdark` / `scene_stage_bg_deep_underdark`(B 区战斗舞台背景层三关变体,✦ 插画级,顶部空区+远景天然洞壁,不画近景地面,按 board_type 选图)+ `scene_stage_ground`(B 区连续近景地面层,✦ 插画级,泥土/砂砾/碎石+顶缘分隔带,跨关恒定)+ `scene_stage_plaza`(B 区角色脚下小石台,48×12 九宫格件)——B 区战斗舞台背景与连续地面已入包;营地 10 张已入包(`scene_camp_*` 十件在役、`TEX_CAMP_*` 十键消费;用户游戏内终审如有置换,按本行键名同径替换) |
| `board/` | 棋盘地形材质(2026-11-07 重做后改程序化绘制,无入包地形 PNG);seal_mark.png 现役用途=战末金蜡封徽记专用(战末弹层消费——棋盘侧贴图绘制路径已退役) | seal_mark.png(战末蜡封专用);旧 `terrain_*` 63 件(16 墙瓦片+5 地面变体×三关)随重做退役删除 |
| `board/` | 棋盘地形材质(2026-11-09 过审:岩顶/地面=512×512 无缝贴图、同一母图换色、单张 ≤32 色;崖面/边缘/投影=程序化);seal_mark.png 现役用途=战末金蜡封徽记专用(战末弹层消费) | `board_rock_<board_type>.png`/`board_ground_<board_type>.png` 六张(三关各一套,2026-11-09 用户目检通过并录入);`seal_mark.png`;旧 `terrain_*` 63 件(16 墙瓦片+5 地面变体×三关)随重做退役删除 |
## 4. 坐标/朝向等工程侧约定备查
+1 -1
View File
@@ -146,7 +146,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 像素美术风格与色板 | [美术圣经](../art/art-bible.md) | 在役 |
| 棋盘瓦片与格面资源图标 | [美术圣经](../art/art-bible.md) | 在役 |
| 未开格类型微光(五组色相+明度档) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役(明度档 provisional 值登记见 art-bible 的 git 提交史;观感复核已随战斗一屏样张过闸完成——用户实机目检核销,沿革查 git 提交史) |
| 棋盘瓦片与立体表现重做 | [待办清单](../../待办清单.md) | 已写卡(待编排)——设计闭合=C 方向+D 布局+三关八色冻结(art-bible v3.51/battle.md 2026-11-07/HUD框架 2026-11-07);卡片=[需求卡片](../../reports/需求卡片-棋盘瓦片与立体表现重做批-2026-11-07.md)(卡内 §16 复核通过);出口=用户实机目检棋盘立体感与素材观感达标 |
| 棋盘瓦片与立体表现重做 | [待办清单](../../待办清单.md) | 已写卡(待编排)——设计闭合=C 方向+D 布局+三关八色冻结(art-bible v3.53/battle.md 2026-11-07/HUD框架 2026-11-07);卡片=[需求卡片](../../reports/需求卡片-棋盘瓦片与立体表现重做批-2026-11-07.md)(卡内 §16 复核通过);出口=用户实机目检棋盘立体感与素材观感达标 |
| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(原稿分辨率入包禁降采样、显示按三档绝对高缩放、现有形象即终稿;定值单点=art-bible §8.2(档值定值面=站桩守门测试);实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) |
| 敌人立绘(全敌种) | [角色设计](../art/character-design.md) | 在役 |
| 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 |
+19 -7
View File
@@ -147,27 +147,27 @@
<text x="340" y="122">已开(对照)</text>
</g>
<g>
<rect x="28" y="20" width="48" height="48" fill="#C9AF83"/>
<rect x="124" y="20" width="48" height="48" fill="#B39A78"/>
<rect x="28" y="20" width="48" height="48" fill="#9C8462"/>
<rect x="124" y="20" width="48" height="48" fill="#C9AF83"/>
<circle cx="148" cy="44" r="24" fill="url(#sealhalo)"/>
<circle cx="148" cy="44" r="19.7" fill="none" stroke="#000000" stroke-width="4.3"/>
<rect x="143.9" y="28" width="8.2" height="32" fill="#000000"/>
<rect x="132" y="39.9" width="32" height="8.2" fill="#000000"/>
<rect x="136" y="32" width="24" height="24" fill="#D8C6A4"/>
<text x="148" y="52" font-family="monospace" font-size="17" font-weight="bold" fill="#962C24" text-anchor="middle">危</text>
<rect x="220" y="20" width="48" height="48" fill="#B39A78"/>
<rect x="220" y="20" width="48" height="48" fill="#C9AF83"/>
<circle cx="244" cy="44" r="24" fill="url(#sealhalo)"/>
<circle cx="244" cy="44" r="19.7" fill="none" stroke="#000000" stroke-width="4.3"/>
<rect x="239.9" y="28" width="8.2" height="32" fill="#000000"/>
<rect x="228" y="39.9" width="32" height="8.2" fill="#000000"/>
<rect x="232" y="32" width="24" height="24" fill="#D8C6A4"/>
<text x="244" y="52" font-family="monospace" font-size="17" font-weight="bold" fill="#33261B" text-anchor="middle">3</text>
<rect x="316" y="20" width="48" height="48" fill="#B39A78"/>
<rect x="316" y="20" width="48" height="48" fill="#695038"/>
<text x="340" y="52" font-family="monospace" font-size="17" font-weight="bold" fill="#33261B" text-anchor="middle">2</text>
</g>
</svg>
像素级判据句(实现批验收锚):①印记参数沿用现行五常量单点(环外径 0.82 格边、环壁 0.11 环径、十字臂宽 0.156 环径、光圈 alpha 0.50/γ1.6),零新增美术件、零参数改动;②封印格承载 = 已揭示地面(棋盘重做批后为本关受光棱色封印石),印记居格心、环外留 9% 格宽光圈、光圈不外溢邻格;③身份字形(危/数字)垫既有色牌件叠于法阵之上——色牌取现行色板素色小牌件,墨字对色牌对比 ≥4.5:1;④封印黑对承载面对比:旧裸土 ≈7.8:1,棋盘重做批后受光棱 6.45–9.94:1(均 ≥4.5:1);⑤未开格与已开普通格观感按棋盘重做批新地形规格(对照列)。
像素级判据句(实现批验收锚):①印记参数沿用现行五常量单点(环外径 0.82 格边、环壁 0.11 环径、十字臂宽 0.156 环径、光圈 alpha 0.50/γ1.6),零新增美术件、零参数改动;②封印格承载 = 已揭示地面(棋盘重做批后为本关受光棱色封印石),印记居格心、环外留 9% 格宽光圈、光圈不外溢邻格;③身份字形(危/数字)垫既有色牌件叠于法阵之上——色牌取现行色板素色小牌件,墨字对色牌对比 ≥4.5:1;④封印黑对承载面对比:棋盘重做批后受光棱 6.45–9.94:1(≥4.5:1);⑤未开格取岩顶色、已开普通格取连续地面色(对照列)。
> 可挖域微光画法定稿(2026-09-25 用户拍板):**接触带·空间侧 + 蓝族**——光画英雄格周界接触面(正交邻墙=整边,斜向邻墙=角点+两半边),详见 art-bible §3.2;现行墙格整框绿相呼吸为待退役占位,切换待表现侧实现(含探针断言)。
@@ -331,7 +331,7 @@
### D 区布局与棋盘画法预览(2026-11-07 用户人审通过,内嵌备查)
> 预览依据 = art-bible §3.2/§4.1(v3.51)+本节布局表与格边公式。效果图是目标画面;像素判据以 1280×800 基座档钉死,实现批按此冻结基线(test-conventions §8.2)。
> 预览依据 = art-bible §3.2/§4.1(v3.53)+本节布局表与格边公式。效果图是目标画面;像素判据以 1280×800 基座档钉死,实现批按此冻结基线(test-conventions §8.2)。
<svg viewBox="0 0 1036 548" width="100%" style="min-width:760px" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="battle-d-title battle-d-desc">
<title id="battle-d-title">D 区布局——顶栏搬两侧、棋盘全高、上方 44px 浮空数字预留</title>
@@ -400,6 +400,18 @@
<text x="757" y="540" font-size="12" fill="#9C8A6C" text-anchor="end">悬崖 8 · 下方 12</text>
</svg>
**棋盘材质过审实图(2026-11-09 用户人审通过)**
<svg viewBox="0 0 1930 438" width="100%" style="min-width:760px" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="battle-material-title battle-material-desc">
<title id="battle-material-title">三关棋盘材质过审实图</title>
<desc id="battle-material-desc">从左到右为暖石棕、冷蓝灰、灰黑三关;同一母图换色,岩顶与地面 512×512 无缝贴图,崖面为断续岩块,边缘收薄。</desc>
<image href="../../game/tests/golden/board_material_L1.png" x="0" y="0" width="630" height="438" style="image-rendering:pixelated"/>
<image href="../../game/tests/golden/board_material_L2.png" x="650" y="0" width="630" height="438" style="image-rendering:pixelated"/>
<image href="../../game/tests/golden/board_material_L3.png" x="1300" y="0" width="630" height="438" style="image-rendering:pixelated"/>
</svg>
> 实图判据:整板 12×8、格边 46、间距 2;岩顶/地面为 512×512 贴图,单张 ≤32 色;主裂纹整板不重复,崖面无贯通岩层线,北/西受光与南/东背光方向全关恒定。
**像素判据(1280×800 基座档;实现批按此冻结基线)**
| 判据 | 读数 |
@@ -410,7 +422,7 @@
| 棋盘 14×14 | 格边 32、外框 474×474;原点 x=525、y=296;棋盘底 770、悬崖到 778、屏底余 22 |
| 上方预留 | y 252–296 共 44;顶行字视觉顶 y=258(含 2px 描边),距 D 区上缘 6 |
| 浮空字 | 字高 21、字底距格顶 15、视觉顶距格顶 38;2px 深墨描边+1px 浮空投影;引导线 2px(左深右浅),自格顶−12 到格顶+4;字底阴影圆 10×6、圆心格顶+7,画在开启格地面、位于小人之下 |
| 岩体投影 | LIFT=round(38×0.435)=17;ESHIFT=round(38×0.109)=4;相邻岩顶搭接 2;板边岩顶外延 ESHIFT;南崖高 17、宽 42(38+4)、顶缘 2px 口沿高光取本关受光棱(dungeon #C9AF83)+1px 深墨线;东崖宽 4、高 55(38+17);北/西临空缘 2px 主亮棱+2px 次亮棱+外 2px 深墨边;南/东临空缘 2px 深墨内缘+3 段×2px 内阴影(自缘内 0.217×格边起,α0.27/0.16/0.08);南/东投影 4 段×4px 渐隐(α0.44/0.30/0.16/0.07);整板悬崖 8 |
| 岩体投影 | LIFT=round(38×0.435)=17;ESHIFT=round(38×0.109)=4;相邻岩顶搭接 2;板边岩顶外延 ESHIFT;南崖高 17、宽 42(38+4)、顶缘 1px 受光口沿+1px 深墨线;东崖宽 4、高 55(38+17);北/西临空缘 1px 主亮棱+1px 次亮棱+外 2px 深墨边;南/东临空缘 3 段×1px 内阴影;崖面用低对比、断续且错开的岩块面,任何岩层线不得贯通整条崖面;南向投影 4 段×4px 渐隐(α0.25/0.16/0.09/0.04),东向 α0.22/0.14/0.07/0.04;整板悬崖 8 |
| 深度遮挡 | 深度键 = 脚底格底 y;岩体取最南格格底;升序绘制;南侧岩体(键更大)画在小人之后、遮住小人脚底 |
| 层序 | 地面(封印格地面铺受光棱色封印石)→投影→开启格地面阴影圆(小人之下)→深度对象(岩体+小人;格件顶面贴花〔微光/变异〕与交互反馈随脚底行同序——北侧低于小人、南侧随岩体在前;封印印记与封印格身份色牌固定低于小人)→浮空数字+引导线(z 最高) |
| 顶面/视觉 rect | 墙格顶面 rect = 格矩形左上偏移 (−ESHIFT,−LIFT)、边长=格边;整格视觉 rect = 顶面向右补 ESHIFT、向下补 LIFT;微光/变异锚顶面 rect;封印锚逻辑格心;迷雾黑罩覆盖顶面+南面+东面三块 |
+6
View File
@@ -14,11 +14,17 @@
- 营地窗态五锚 `camp_forge` / `camp_chest` / `camp_tree` / `camp_codex` / `camp_notebook`
(真点热点开窗态,camp.md:45 五窗窗壳)
- 浮层四锚 `battle_end`(战末结算)/ `curio_pick`(三选一)/ `legend`(图例)/ `debug_overlay`(调试浮窗)
- **材质过审预览锚(非引擎帧)7 张**:`board_material_L1`/`_L2`/`_L3`(三关整板 12×8、格边 46)+
`board_material_L1_zoom2`/`_digit6`/`_hero4`/`_top4`(第一关机械裁切细部)。来源=2026-11-09
用户目检通过的棋盘材质预览,仅作 `board_material_shot_probe` 的目标图与目检对照;**不参与渲染闸
逐像素比对,不替代 `board_L*` 引擎基线**,故不触发本文件 §基线冻结与审核的引擎帧审核口径。
- `palette_baseline/`(色板基线,纯文件内容比对,与平台无关)
采集=**真实引擎渲染**:探针以固定种子跑到指定状态截屏(棋盘 golden 帧=微光关态,呼吸相位冻结;
确定性采集)。换代入口=`tools/golden_baseline_refresh.sh`(缺省棋盘/`--menu`/`--lmap`),
提交说明须写明触发原因(强制)。两 Shot 基线采集=`res://probe/level_map_shot_probe.tscn`。
材质过审预览锚的整板图来自同一张过审预览,细部裁切参数为 `(12,0,332,220)×2`、
`(286,60,382,156)×6`、`(244,236,340,332)×4`、`(180,0,400,110)×4`。
## 基线冻结与审核(2026-11-08 用户立)
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="zh-CN"><meta charset="utf-8"><title>棋盘材质预览 v2</title>
<style>
body{margin:0;background:#17130e;color:#f0e2c8;font:15px/1.7 "Microsoft YaHei",sans-serif}
.wrap{max-width:1240px;margin:0 auto;padding:28px 20px 60px}h1{font-size:24px;margin:0 0 6px}
h2{font-size:18px;margin:30px 0 10px;color:#f2c14e}p{color:#b9a582;margin:6px 0}
.row{display:flex;gap:14px;flex-wrap:wrap}figure{flex:1 1 320px;margin:0;background:#221c15;border:1px solid #3a2f22;border-radius:10px;padding:10px}
figure img{width:100%;display:block;image-rendering:pixelated;border-radius:4px}figcaption{color:#b9a582;font-size:13px;text-align:center;margin-top:8px}
.tex{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tex figure img{max-height:360px;object-fit:contain}
footer{color:#8f7d5f;font-size:12px;margin-top:30px;border-top:1px solid #3a2f22;padding-top:10px}
</style><div class="wrap">
<h1>棋盘材质预览 v2 · 真实像素候选</h1>
<p>同一母图换色;岩顶与地面均为 512×512 无缝材质。整板一次铺图,崖面为断续岩层,顶面黑边收薄。浮空数字、格边 46、间距 2、抬升 20、侧移 5 全部沿用。</p>
<h2>三关整板</h2><div class="row"><figure><img src="data:image/png;base64,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 truncated
<h2>崖面与岩顶细部(3×)</h2><div class="row"><figure><img src="data:image/png;base64,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 truncated
<h2>数字与地面细部(3×)</h2><div class="row"><figure><img src="data:image/png;base64,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 truncated
<h2>无缝材质母图</h2><div class="tex"><figure><img src="data:image/png;base64,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 truncated
<footer>artwork/2026-11-09-棋盘材质候选-v2/ · 材质已于 2026-11-09 录入 game/assets/art/board/;本页为过审视觉基线。</footer></div></html>
@@ -1,10 +1,10 @@
# 需求卡片:棋盘瓦片与立体表现重做批
> 来源:`待办清单.md`「棋盘瓦片与立体表现重做」(2026-11-07 登记)。
> **设计事实源(唯一事实源)**:`design/art/art-bible.md` v3.51 §1.4/§3.2/§4.1「三关棋盘环境八色」/§6.3/§7/§8.2+`design/ux/battle.md`(Last Updated 2026-11-07)「Layout Zones」D 区行/「D 区布局与棋盘画法预览」/「封印格呈现预览」+`design/gdd/systems/表现与支撑/HUD框架.md`(2026-11-07)D 区行与字号下限+`game/tests/golden/README.md`「越格口径」。
> **设计事实源(唯一事实源)**:`design/art/art-bible.md` v3.53 §1.4/§3.2/§4.1「三关棋盘环境八色」/§6.3/§7/§8.1「格边长与材质分工」/§8.2/§8.5「生产分工」+`design/ux/battle.md`(Last Updated 2026-11-09)「Layout Zones」D 区行/「D 区布局与棋盘画法预览」/「封印格呈现预览」+`design/gdd/systems/表现与支撑/HUD框架.md`(2026-11-07)D 区行与字号下限+`game/tests/golden/README.md`「越格口径」。
> **验收档:中**(呈现与交互几何改动,后果玩家可见但不损持久状态;用户 U0 可改判)。
> **预计**:9.5 个工作日(区间 9–10;T0 0.5/T1 1.5/T2 0.5/T3 2.0/T4 1.5/T5 1.5/T6 0.5/T7 1.0/T8 0.5)。
> **卡片状态**:复核记录见 §16;第一轮 19 条、第二轮 23 条、第三轮 4 条、第四轮 5 条、第五轮 1 条、第六轮(合并整合)6 条均已处置,第六轮定向复核通过。
> **预计**:11.0 个工作日(区间 10–12;T0 0.5/T1 1.5/T2 0.5/T-A 0.5/T3 2.5/T4 1.5/T5 1.5/T6 0.5/T7 1.5/T8 0.5)。
> **卡片状态**:复核记录见 §16;第一轮 19 条、第二轮 23 条、第三轮 4 条、第四轮 5 条、第五轮 1 条、第六轮(合并整合)6 条、第七轮(材质实现回退)1 条、第八轮(浮空数字几何)1 条、第九轮(512 材质与过审同步)14 条均已处置,第七/八/九轮定向复核通过。
---
@@ -16,13 +16,13 @@
1. 1280×800 基座档:12×12 格边 38px、14×14 格边 32px;D 区 1036×548;左/右栏各 200px;棋盘 12×12 外框 478×478、**屏幕坐标**原点 (523,296)、board_area 局部原点 (279,44);14×14 外框 474×474、屏幕原点 (525,296)、局部原点 (281,44)。
2. 顶行浮空数字视觉顶 y=258(含 2px 描边+1px 浮空投影),距 D 区上缘 6px;数字、引导线、阴影圆全部在 D 区内,无裁切。
3. 岩体投影:LIFT=round(格边×0.435)、ESHIFT=round(格边×0.109);四邻连通合并;相邻岩顶搭接 2px;南崖高 LIFT、宽 格边+ESHIFT、顶缘 2px 口沿高光取本关受光棱(§4.1);东崖宽 ESHIFT、高 格边+LIFT;北/西 2px 主亮棱+2px 次亮棱+外 2px 深墨边;南/东 2px 深墨内缘+3×2px 内阴影(自缘内 0.217×格边起,α0.27/0.16/0.08);四段投影 4×4px(α0.44/0.30/0.16/0.07);整板悬崖 8px。
3. 岩体投影:LIFT=round(格边×0.435)、ESHIFT=round(格边×0.109);四邻连通合并;相邻岩顶搭接 2px;南崖高 LIFT、宽 格边+ESHIFT、顶缘 1px 受光口沿+1px 深墨线;东崖宽 ESHIFT、高 格边+LIFT;北/西 1px 主亮棱+1px 次亮棱+外 2px 深墨边;南/东 3×1px 内阴影;崖面用低对比、断续且错开的岩块面,任何岩层线不得贯通整条崖面;南向投影 4×4px(α0.25/0.16/0.09/0.04)、东向 α0.22/0.14/0.07/0.04;整板悬崖 8px。
4. 深度排序:深度键=格底 y;岩体取最南格格底;升序绘制;南侧岩体画在小人之后并遮住小人脚底;小人所在格数字仍完整可见。格件顶面贴花/交互反馈随所属格件参与同一深度排序——北侧(脚底≤小人)低于小人(`z=0`),南侧(脚底>小人)随岩体在前(`z=3`);浮空数字仍最顶。
5. 浮空数字:字高 21px、2px 深墨描边+1px 浮空投影、暖白字芯、字底距格顶 15px、2px 双色引导线、10×6 阴影圆(圆心格顶+7,画在开启格地面、位于小人之下);数字与引导线 z 最高,任何地形/小人/特效不遮数字与引导线;小人可遮阴影圆。
6. D 区:左栏 AP 点阵+停手,右栏 RAP 点阵+数字+图例+弃图刷新;`side_rail_w=200` 入布局表;`ap_bar_h` 游戏视图零引用(布局表字段暂留供样张渲染工具,删除归工具批);棋盘底常驻操作提示条退役;toast 槽在左栏顶部且不覆盖棋盘与浮空数字。
7. 旧 `terrain_*` 63 件与 `tile_palette.gd`/`cell_base_layer.gd` 删除;`seal_mark.png` 保留;**普通数字**棋盘绘制路径零 `DIGIT_PLATE`/`plate` 调用;封印格身份字形色牌保留(迭代56封印改版,唯一例外)。
8. 封印呈现按迭代56「受理即揭示」口径:印记居已揭示地面格心、身份字形垫色牌叠于法阵之上、印记与色牌固定低于小人、该格不生成浮空 entries;封印格地面铺本关受光棱色封印石(零新增色,对封印黑对比 6.45–9.94:1),普通已开格地面仍为连续新地面。
9. 三关(dungeon/underdark/deep_underdark)都走新材质与同一画法;三关八色按 art-bible §4.1 冻结(underdark 冷蓝灰、deep 灰黑);三关 golden 基线重制并在渲染闸通过。
9. 三关(dungeon/underdark/deep_underdark)都走 512×512 新材质与同一画法;三关八色按 art-bible §4.1 冻结(underdark 冷蓝灰、deep 灰黑);三关 12×8 材质过审预览锚已按 2026-11-09 用户过审图重制,引擎侧 `board_L*` 三关 golden 基线仍待实现后按渲染闸口径换代并通过。
10. 命中仍按逻辑格矩形:点在抬升岩顶/崖面/浮空数字上不改变格坐标映射;16×16 等非当前板型由同一公式求值。
**不做**:真 3D、HD-2D、A/B 方案对照、旧瓦片回退、逐格新 PNG 瓦片、B/C 区改版、核心规则/数值/RNG 改动。
@@ -31,12 +31,12 @@
## 2. 设计事实源
- **画法与配色**:`design/art/art-bible.md` v3.51 §3.2「棋盘地形体系」八条(术语与定义/投影与搭接/受光与崖面/材质与装饰/投影与整板悬崖/绘制序与遮挡/浮空数字/旧资产处理)+封印印记条、§4.1「棋盘环境子板/三关棋盘环境八色/封印黑/数字色牌」、§6.3「三关 tile_closed/tile_open 终值」、§8.2「封印印记参数表」、§1.4 第一验收项。
- **画法与配色**:`design/art/art-bible.md` v3.53 §3.2「棋盘地形体系」八条(术语与定义/投影与搭接/受光与崖面/材质与装饰/投影与整板悬崖/绘制序与遮挡/浮空数字/旧资产处理)+封印印记条、§4.1「棋盘环境子板/三关棋盘环境八色/封印黑/数字色牌」、§6.3「三关 tile_closed/tile_open 终值」、§8.1「格边长与材质分工」、§8.5「生产分工」、§1.4 第一验收项。
- **封印呈现前置**:迭代56「封印动作改版批」已闭合 `design/gdd/systems/排雷循环/排雷玩法.md` v2.0「封印受理即揭示」与 `design/ux/battle.md`「封印格呈现预览」——封印格 = 已揭示地面+法阵+身份字形色牌;本卡承接其地形换代(承载面改受光棱封印石、圆心仍格心、色牌与法阵层序不变),不重写揭牌逻辑。
- **布局与像素判据**:`design/ux/battle.md`(2026-11-07)D 区行、棋盘格尺寸公式、「D 区布局与棋盘画法预览」像素判据表(含顶面/视觉 rect、悬停/路径 rect、层序)、Component Inventory 三行(行动资源侧栏/棋盘地形层/棋盘浮空数字层)。
- **布局与像素判据**:`design/ux/battle.md`(2026-11-09)D 区行、棋盘格尺寸公式、「D 区布局与棋盘画法预览」像素判据表(含顶面/视觉 rect、悬停/路径 rect、层序)、「棋盘材质过审实图」节(12×8/46/≤32 色/无贯通岩层线)、Component Inventory 三行(行动资源侧栏/棋盘地形层/棋盘浮空数字层)。
- **HUD 契约**:`design/gdd/systems/表现与支撑/HUD框架.md` D 区行(侧栏/全高棋盘/提示条退役)、布局表高度口径、字号下限(浮空数字 21px 固定)。
- **验收面**:`game/tests/golden/README.md`「加严口径(棋盘三图)」「越格口径(2026-11-07 棋盘地形换代)」。
- **上游已裁**:C 方向(合并岩体+越格画法+新大岩板材质)2026-11-07 用户看样张通过;顶栏搬两侧(D)2026-11-07 用户看三方案预览后选定;北/西受光、按样张调深、脚底行排序三项同会话裁定;underdark/deep 两关色板 2026-11-07 用户看方向样张后选定「按目标八色冻结」;棋盘底操作提示条退役同会话选定。
- **上游已裁**:C 方向(合并岩体+越格画法+连续岩顶图/连续地面贴图材质+浮空数字)2026-11-07 用户看样张通过——用户裁的是画面外观,**不含「程序化材质」**;材质=无缝贴图、结构=程序化,分工按 art-bible §8.5。顶栏搬两侧(D)2026-11-07 用户看三方案预览后选定;北/西受光、按样张调深、脚底行排序三项同会话裁定;underdark/deep 两关色板 2026-11-07 用户看方向样张后选定「按目标八色冻结」;棋盘底操作提示条退役同会话选定。写卡段曾把材质误写成程序化,本卡按 2026-11-09 用户裁回退,见 §16 第七轮。**512×512 三关材质、断续岩块与薄边缘**于 2026-11-09 用户目检 `reports/2026-11-09-棋盘材质预览-v2.html` 后确认「没有问题,可以按这样」,本卡按该预览冻结。
---
@@ -64,14 +64,14 @@
| 普通已开危险格「危」当前垫色牌;落牌断言在玩家复制回归件(本卡后普通「危」改浮空、plate=false;封印格「危」仍垫牌) | `game/tests/unit/presentation/player_copy_sweep_test.gd:142-147`(`u.plate == true`) |
| 单元测试入口登记 terrain 套件 | `game/tests/run_all.gd:225` |
| 布局表字段被样张渲染工具读取(本批不改工具) | `tools/layout_config.py:12`;`tools/render_sample_sheet.py:51,956`;`tools/render_sample_sheet_v3.py:862,936` |
| 档期现状:待办清单已「已写卡」、roadmap 待编池「棋盘瓦片与立体表现重做(已写卡,待编排)」、08 已写卡 | `待办清单.md「图例面板的条目全集与分组方式」立项后的图例面板定稿讨论-268`;`roadmap.md「当前位」发令开工`;`design/gdd/08-Alpha版本标准.md「五、表现」棋盘瓦片与立体表现重做` |
| 档期现状:待办清单为「已写卡+已编迭代 57」,roadmap 迭代 57 已登记本卡、状态待开工;08 已写卡 | `待办清单.md` 本条目状态段;`roadmap.md` 迭代 57 行;`design/gdd/08-Alpha版本标准.md` 本卡行 |
---
## 4. 设计契约(🔴 触碰=L3 停机呈报)
1. 🔴 **只改呈现层与必要接线**:禁止改 `game/core/` 的排雷规则、棋盘数据、AP/RAP、战斗结算、RNG;棋盘数据只读。新增/修改只落 `game/presentation/`(含 `main.gd`/`main_debug_flow.gd` 的重建接线)、`game/probe/`、`game/tests/`、`game/data/schemas/`、`game/data/tables/` 与 `reports/`。
2. 🔴 **不做逐格瓦片**:禁止保留或新增 16+5 逐格瓦片路径、`terrain_*` 回退、`TilePalette` 装图链;岩体/地面/崖面必须按整板矩形与格边程序化绘制,连通按四邻。
2. 🔴 **不做逐格瓦片**:禁止保留或新增 16+5 逐格瓦片路径、`terrain_*` 回退、`TilePalette` 装图链;岩顶/地面材质用无缝贴图(按合并岩体与整板一次铺图,UV 用棋盘全局坐标、禁逐格重置;贴图来源与命名见 T-A),崖面/临空边缘/投影/层序等结构件程序化绘制;连通按四邻。
3. 🔴 **普通数字零底牌**:普通数字(含普通已开格的「危」/「?」)只走浮空描边字;禁止 `_digit_ink_mode` 三态、`plate_digit` 在普通数字路径复活。**封印格身份字形色牌为唯一例外**(迭代56封印改版:`plate=true`、`_draw_digit_plate` 保留、字形叠于法阵之上),禁把例外扩回普通数字。
4. 🔴 **浮空分层**:数字+引导线必须比地形/小人/封印/微光/交互反馈都高,任何元素不得遮数字与引导线;**阴影圆相反——画在开启格地面、位于小人之下**,小人站该格时遮住圆;顶行数字必须在 D 区内完整可见。**顶面贴花/交互反馈不得一律置顶**——随所属格件脚底行分档:北侧(脚底≤小人)低于小人,南侧(脚底>小人)随岩体在前;禁恢复“格件一律 z=3”。**封印格例外**:该格不生成浮空 entries/阴影圆,印记与身份色牌固定低于小人(整格 z=0,不参与南侧前推)。
5. 🔴 **命中按逻辑格**:`_cell_at` 仍用逻辑格矩形与 `SEP` 步长;抬升岩顶、崖面、浮空数字不是命中区;顶面左上角点按逻辑公式归属北/西邻格,不做“归本格”特判。
@@ -82,7 +82,7 @@
10. 🔴 **文档不直改**:实现批禁写 `design/`、`game/tests/README.md`(能力清单由写卡段本批入表)、`roadmap.md`、`08-Alpha版本标准.md`、`待办清单.md`;发现条款偏差一律列 `reports/iter<N>-反哺点-<日期>.md`。
11. 🔴 **不删断言换绿**:不得删除或放宽 `board_shot_probe` 的加严口径、渲染闸 2% 判据、`ui_contrast_probe` 对比断言;只允许按本卡 §12「测试削弱申报」列出的旧断言删除/替换。
12. 🔴 **拆分边界**:判据权威=`design/engineering/code-conventions.md` §1.1;每个拆出单元必须有职责语句与单一变化原因(§10);禁止为过阈值凑数拆件;拆不出内聚单元=停卡呈报。
13. 🔴 **RNG 单点**:程序化材质/装饰噪声禁止 `randomize()`、自建 `RandomNumberGenerator`、消耗 `RngService` 共享流;一律用格坐标确定性哈希(同板同参逐位复现)。
13. 🔴 **RNG 单点**:程序化结构/装饰噪声禁止 `randomize()`、自建 `RandomNumberGenerator`、消耗 `RngService` 共享流;一律用格坐标确定性哈希(同板同参逐位复现)。
14. 🔴 **色字面量落点**:三关八色只落 `board_terrain_palette.gd`;用 `Color("#RRGGBB")` 常量,禁 `Color8` 散落;其它绘制点只读 palette,禁第二份色值表。
15. 🔴 **BoardView 公开面不增**:`board_view.gd` 公开方法保持 27、类成员 ≤31(S13 基线;删 `_palette` 后 30);新增地形/浮空/阴影圆层一律落为**固定名字子节点**(`_world` 下 `TerrainBack`/`TerrainFront`/`LabelShadow`,壳层下 `FloatLayer`),三层在 `_init` 创建一次常驻、`rebuild` 只重跑 `setup` 不重建节点,经 `get_node_or_null` 取用,不新增类成员;只允许 `set_cell_area`/`rebuild` 增加可选参数与私有 `_visual_rect_for`/`_top_face_rect`/`_resort_cell_decals`,禁新增公开方法或成员。
16. 🔴 **封印呈现对齐迭代56**:封印印记居已揭示地面格心(不随岩顶 −ESHIFT/−LIFT 偏移);身份字形垫色牌叠于法阵之上(`seal_mark_layer` 子件 `show_behind_parent=true` 或等价实装)、不参与浮空层、不生成阴影圆;印记与色牌固定低于小人(封印格整格 z=0);封印格地面铺本关受光棱色封印石(零新增色,`palette.light_edge`);法阵参数(环径/环壁/十字/光圈)与揭牌逻辑沿迭代56,禁在本卡重写。
@@ -106,13 +106,13 @@
**不收件**:
- B 区舞台/站桩、C 区数据框、AP/RAP 数值与规则、战斗结算、RNG、存档——一律不动。
- 新增地形 PNG 素材:本批按已过审样张做程序化材质;若后续要换成 PNG 材质,另立登记条目走 asset-ingest。
- 已过审 6 张地形贴图之外的再创作、换图或重新量化:T-A 只承接 2026-11-09 已过审的 512×512 六张;本批不再出程序化材质替身,也不以平色回退充当终稿。
- 真 3D/HD-2D、A/B 方案对照、用户试玩结论——试玩只登记不阻塞。
- 三关之外的板型专属美术(16×16 等)——同一公式与材质覆盖,不另出资产。
- 样张渲染工具(`tools/layout_config.py`、`render_sample_sheet*`)的 `ap_bar_h` 字段清理——布局表字段本批保留,工具换代登记待办清单后续直改。
- 三关互辨抽测工具 `tools/glow_discrimination_sheet.py` 的换代(读已删旧 `terrain_*`)——本批不跑;三关互辨由用户过审样张+`board_terrain_test._test_palette_three_boards` 逐值承担,工具换代登记待办清单后续工具批。
**不收件去向**:B/C 区改版→待办清单新条目;PNG 材质替换→asset-ingest 登记;样张/互辨工具换代→待办清单(tools 批);条款偏差→反哺点清单。
**不收件去向**:B/C 区改版→待办清单新条目;已过审六张之外的贴图再创作/换图→另立美术批;样张/互辨工具换代→待办清单(tools 批);条款偏差→反哺点清单。
---
@@ -120,15 +120,15 @@
| 文档 | 关联点(实现会改变它的哪条陈述) | 同步义务 |
|---|---|---|
| `design/art/art-bible.md` §1.2/§3.2/§4.1/§6.3/§6.5/§7/§8.2 | 三关八色、四邻合并、顶面/视觉 rect、阴影视小、浮空字 1px 投影、贴花按脚底行分档、记忆态合成底、提示条 caption 退役;封印印记改已揭示地面格心+受光棱封印石+身份色牌层序(v3.51) | 设计段已按本卡写入 v3.51;实现读数若与条款不符→列反哺点,文档批裁决,实现批禁直改 |
| `design/ux/battle.md` §Layout/§Component/预览判据 | D 区全高、侧栏 200、棋盘 38/32、原点、顶预留 44、层序(贴花/交互按脚底行分档)、悬停/路径 rect、提示条退役;封印格承载面改受光棱封印石、圆心格心、色牌叠法阵 | 设计段已同步(2026-11-07);实现偏差→反哺点 |
| `design/art/art-bible.md` §1.2/§3.2/§4.1/§6.3/§6.5/§7/§8.1/§8.2/§8.5 | 三关八色、四邻合并、顶面/视觉 rect、阴影视小、浮空字 1px 投影、贴花按脚底行分档、记忆态合成底、提示条 caption 退役;封印印记改已揭示地面格心+受光棱封印石+身份色牌层序;岩顶/地面材质=无缝贴图、结构件=程序化(v3.53) | 设计段已按本卡写入 v3.53;实现读数若与条款不符→列反哺点,文档批裁决,实现批禁直改 |
| `design/ux/battle.md` §Layout/§Component/预览判据 | D 区全高、侧栏 200、棋盘 38/32、原点、顶预留 44、层序(贴花/交互按脚底行分档)、悬停/路径 rect、提示条退役;封印格承载面改受光棱封印石、圆心格心、色牌叠法阵;材质过审实图与 12×8/46/≤32 色/无贯通岩层线判据 | 设计段已同步(2026-11-09);实现偏差→反哺点 |
| `design/gdd/systems/表现与支撑/HUD框架.md` D 区/字号 | D 区侧栏、全高棋盘、`ap_bar_h` 不再参与、浮空数字 21px、提示条退役 | 设计段已同步(2026-11-07);实现偏差→反哺点 |
| `game/tests/golden/README.md` | 棋盘裁剪 1036×548、越格口径、类型微光禁越圈范围 | 设计段已同步;实现批禁直改,基线重制按该文件口径执行(重制前用户确认) |
| `design/gdd/术语表.md` 掩尘/裸土/浮空数字/色牌 | 基色值、浮空数字定义、普通数字色牌退役+封印格色牌例外 | 设计段已同步;实现批禁直改 |
| `design/art/asset-path-map.md`/`art-assets-checklist.md` | 旧 terrain_* 退役、seal_mark 保留、普通数字色牌退役+封印格色牌例外、程序化材质无入包 PNG | 设计段已同步;实现删除资产后按反哺点核对 |
| `design/engineering/architecture/architecture.md「2. 事件/信号路径」呈现层订阅禁令` | 单格两绘制域件行把 `cell_base_layer` 记为在役组件;本批删除该件、新增地形/浮空/阴影层 | 架构文档写权限=用户专属(2026-11-07 裁):实现批禁直改,T8 反哺点列「架构表该行待用户发令修订」 |
| `design/art/asset-path-map.md`/`art-assets-checklist.md` | 旧 terrain_* 退役、seal_mark 保留、普通数字色牌退役+封印格色牌例外、岩顶/地面 6 张无缝贴图入包(`board_rock_*`/`board_ground_*`) | 设计段已同步;实现删除资产后按反哺点核对 |
| `design/engineering/architecture/architecture.md:178` | 单格两绘制域件行把 `cell_base_layer` 记为在役组件;本批删除该件、新增地形/浮空/阴影层 | 架构文档写权限=用户专属(2026-11-07 裁):实现批禁直改,T8 反哺点列「架构表该行待用户发令修订」 |
| `game/tests/README.md` 能力表 | 新增 6 条能力;旧「地形瓦片套与格面数字可读」保留(删除归写卡段后续;实现批禁写);「战斗屏三区几何」代表用例改名 | 写卡段本批入表(本卡同 commit);实现批只核对名字与实际落地一致 |
| `roadmap.md`/`design/gdd/08-Alpha版本标准.md`/`待办清单.md` | 本卡已写/待编排状态 | 编排段与收尾段推进;实现批禁直改 |
| `roadmap.md`/`design/gdd/08-Alpha版本标准.md`/`待办清单.md` | 本卡已写卡/已编迭代 57、待开工 | 编排段与收尾段推进;实现批禁直改 |
---
@@ -136,7 +136,7 @@
| 文件 | 行为改动/非行为 | 职责 | 验收行 |
|---|---|---|---|
| `game/presentation/views/board_terrain_palette.gd`(新增) | 非行为(数据) | 三关八色表:`palette_for(board_type)`;dungeon/underdark/deep 取 art-bible v3.51 §4.1 冻结值;八槽键 `rock_top/ground/cliff/seam/bevel_light/bevel_dark/ink/light_edge`;封印石读 `light_edge`(零新增色);只读 | §12-14 |
| `game/presentation/views/board_terrain_palette.gd`(新增) | 非行为(数据) | 三关八色表:`palette_for(board_type)`+`tex_paths_for(board_type)`;dungeon/underdark/deep 取 art-bible v3.53 §4.1 冻结值;八槽键 `rock_top/ground/cliff/seam/bevel_light/bevel_dark/ink/light_edge`;封印石读 `light_edge`(零新增色);只读 | §12-14 |
| `game/presentation/views/board_terrain_layer.gd`(新增) | 行为 | 地面、合并岩顶、南/东崖面、内阴影、四段投影、封印格受光棱封印石贴片;`setup(cell, cols, rows, wall_at, sealed_at, palette, board_type)`/`set_hero_foot_y()`/`set_pass()`/`mass_rects()`/`terrain_metrics()`;静态 `lift_for()`/`eshift_for()`;back/front 两实例(`_world` 下固定名字 `TerrainBack`/`TerrainFront`,不占 BoardView 成员) | §12-3/4/5/8 |
| `game/presentation/views/board_float_layer.gd`(新增,Control) | 行为 | 外壳层浮空字:2px 描边、1px 浮空投影、双色引导线;`setup()`/`set_entries()`/`set_font()`/`label_rects()`/`label_metrics()`;不画阴影圆;**封印格不生成 entries**;壳层固定名字子节点 `FloatLayer`,不占 BoardView 成员 | §12-6/7 |
| `game/presentation/views/board_label_shadow_layer.gd`(新增,Node2D) | 行为 | 开启格地面 10×6 四层阴影圆;`setup(cell, cells)`/`circle_rects()`(世界局部/格坐标);**封印格不生成圆**;`_world` 下固定名字 `LabelShadow`,不占 BoardView 成员;z=0,位于小人之下 | §12-6/7 |
@@ -189,14 +189,14 @@
| 新文件 | 公开方法预算 | 成员变量预算 | 说明 |
|---|---|---|---|
| `board_terrain_palette.gd` | 1(`palette_for`) | 8 个常量 | 纯数据;不新增类状态 |
| `board_terrain_layer.gd` | ≤7(`setup`/`set_hero_foot_y`/`set_pass`/`mass_rects`/`terrain_metrics`/`lift_for`/`eshift_for`) | ≤13(新增 `_sealed_at` 一个成员——封印石贴片输入;其余同前) | 两个实例共享一个类;`pass_mode` 区分 back/front |
| `board_terrain_palette.gd` | 2(`palette_for`/`tex_paths_for`) | 8 个色常量+2 个路径格式常量 | 纯数据;不新增类状态;贴图路径单点 |
| `board_terrain_layer.gd` | ≤7(`setup`/`set_hero_foot_y`/`set_pass`/`mass_rects`/`terrain_metrics`/`lift_for`/`eshift_for`) | ≤15(新增 `_sealed_at`、`_tex_rock`、`_tex_ground` 三个成员;其余同前) | 两个实例共享一个类;`pass_mode` 区分 back/front;贴图经 `UiKit.load_tex` 装载 |
| `board_float_layer.gd` | ≤5(`setup`/`set_entries`/`set_font`/`label_rects`/`label_metrics`) | ≤8 | 一个 Control;所有数字在一个 `_draw` |
| `board_label_shadow_layer.gd` | ≤2(`setup`/`circle_rects`) | ≤6 | 一个 Node2D;所有圆在一个 `_draw`;坐标=世界局部/格坐标 |
| `ap_bar_view.gd`(改造) | 既有 10 个公开函数不减 | 既有 14 个成员不增(左右栏容器为 `_init` 局部变量) | 不新增公开面/成员;只改 `_init`/`_build_*` |
| 三个测试件 | 每件 ≤20 个 `func _test_*` | 夹具变量 ≤15 | 不计生产接口;测试件无消费面 |
**存量触面**:`board_view.gd` 852 行、公开方法 27、类变量 31→30(删 `_palette`);本批只扩展 `set_cell_area(avail, side_rail_w := 0.0)` 与 `rebuild(board, minesweeper, side_rail_w := 0.0)` 的可选参数,新增 `_visual_rect_for`/`_top_face_rect`/`_resort_cell_decals` 私有方法,**不新增公开方法/成员**;地形/浮空/阴影圆层经固定名字子节点取用(`TerrainBack`/`TerrainFront`/`LabelShadow`/`FloatLayer`);S13 键只降不升。`board_zone_view.gd` 6→7 成员(新增 `_side_rail_w`,默认阈值内)。`board_cell_unit.gd` 12→13 成员(删 `base` 与 `_BASE_LAYER` 预载,新增 `top_face_offset`/`visual_rect`,保留 `plate` 封印色牌;净 +1;`ContactGlow`/`MemoryGround` 用固定名字子节点、不新增成员,默认阈值内)。`ap_bar_view.gd` 14 成员不增。`cell_mark_overlay.gd` 普通数字路径只减面,封印格色牌/字形面保留。迁移函数对账:`cell_base_layer.gd` 的 `draw_base`/`_draw_south_facade`/`_draw_north_projection`/`_draw_e_facade` 不迁入新件同名函数,新件按职责重写并保留像素判据;`tile_palette.gd` 的 `load_board_tiles`/`digit_ink_mode`/`normalize_floor_luma` 不迁移(职责退役)。
**存量触面**:`board_terrain_layer.gd` 新增的贴图成员只服务材质面,不进 `board_view.gd`;`board_view.gd` 852 行、公开方法 27、类变量 31→30(删 `_palette`);本批只扩展 `set_cell_area(avail, side_rail_w := 0.0)` 与 `rebuild(board, minesweeper, side_rail_w := 0.0)` 的可选参数,新增 `_visual_rect_for`/`_top_face_rect`/`_resort_cell_decals` 私有方法,**不新增公开方法/成员**;地形/浮空/阴影圆层经固定名字子节点取用(`TerrainBack`/`TerrainFront`/`LabelShadow`/`FloatLayer`);S13 键只降不升。`board_zone_view.gd` 6→7 成员(新增 `_side_rail_w`,默认阈值内)。`board_cell_unit.gd` 12→13 成员(删 `base` 与 `_BASE_LAYER` 预载,新增 `top_face_offset`/`visual_rect`,保留 `plate` 封印色牌;净 +1;`ContactGlow`/`MemoryGround` 用固定名字子节点、不新增成员,默认阈值内)。`ap_bar_view.gd` 14 成员不增。`cell_mark_overlay.gd` 普通数字路径只减面,封印格色牌/字形面保留。迁移函数对账:`cell_base_layer.gd` 的 `draw_base`/`_draw_south_facade`/`_draw_north_projection`/`_draw_e_facade` 不迁入新件同名函数,新件按职责重写并保留像素判据;`tile_palette.gd` 的 `load_board_tiles`/`digit_ink_mode`/`normalize_floor_luma` 不迁移(职责退役)。
**指标例外申报**:无。若实现期发现 `board_terrain_layer.gd` 超过 7/13,按职责拆 `board_terrain_face_layer.gd`(崖面/投影)——先停卡呈报,不在实现段自行扩面。
@@ -227,7 +227,7 @@
- [ ] 跑 `board_shot_probe` 存三关当前帧与 `board_meta.json`,记下 hash;不重制基线(T7 才换代)。
- [ ] 确认 `game/assets/art/board/` 63 PNG+63 `.import`+`seal_mark.png` 在库;报告列清单。
- [ ] 跑 `python tools/gdstyle_gate.py` 记录 `board_view.gd` 当前 27/31 基线读数;跑 `python tools/capability_audit.py` 记录当前红项(T8 复跑)。
- [ ] 录三关 `board_type` 字符串与 art-bible v3.51 §4.1 三关八色;不采样旧瓦片均值。
- [ ] 录三关 `board_type` 字符串与 art-bible v3.53 §4.1 三关八色;不采样旧瓦片均值。
### T1 布局表与 D 区侧栏(1.5 日)
@@ -258,21 +258,34 @@
- [ ] `ui_input_probe.gd:360-366` 的 `set_cell_area` 恢复调用带 `main.db.presentation.battle_layout.side_rail_w`;`board_gen_reward_test` 的 2 参调用保持(测试独立口径)。
- [ ] 跑 `board_terrain_test` 与 `layout_probe`;报告写读数。
### T3 地形深度层(2.0 日)
### T-A 地形贴图接入(0.5 日,asset-ingest 段,2026-11-09 已完成)
**取用**:T2 的格边/原点;art-bible v3.51 §4.1 三关八色。
**取用**:用户 2026-11-09 目检通过的 `reports/2026-11-09-棋盘材质预览-v2.html`+art-bible v3.53 §8.1/§8.5。
**产出**:三关岩顶/地面 6 张 512×512 无缝贴图入 `game/assets/art/board/`;`asset-path-map`/`art-assets-checklist`/`art-status-checklist` 登记;`.import` 边车;像素域 ≤32 色。
- [x] 资产契约:`board_rock_<board_type>.png`/`board_ground_<board_type>.png`,board_type=dungeon/underdark/deep_underdark;无缝、无边框/无亮边/均匀光照、方形;源尺寸 **512×512**;同一母图换色;单张像素域 ≤32 色。
- [x] 素材已按 asset-ingest 段接入:用户 2026-11-09 对三关整板、崖面/数字细部与 6 张母图确认「没有问题,可以按这样」;预览图作 `board_material_shot_probe` 目标图(非引擎基线),旧 C 方向原稿不再作为新材质基线。
- [x] 落位与边车:6 张全部在 `game/assets/art/board/`,命名合规;Godot 4.7.2 `--import` 已生成 6 个 `.import`。已按 `asset-path-map` §1 把 6 PNG+6 `.import` 同步到主区与 `board-material-fix` 工作区,两区各 12 项一致。
- [x] `asset-path-map.md` 的 `board/` 行改为「512×512 岩顶/地面 6 张无缝贴图+seal_mark」;`art-assets-checklist.md` 记录贴图材质;`art-status-checklist.md` 新增「棋盘岩顶/地面材质 6 张」✅ 行。
- [x] 缺位容错:`UiKit.load_tex` exists 守卫;缺图只在开发态回落 palette 平色,正式包必须 6 张齐;`board_terrain_test._test_material_assets_present` 断言 6 张在库。
- [x] 已删旧候选口径:不再引用 `artwork/2026-11-09-棋盘材质候选/` 的 128×128 稿与 `board_preview_three_levels.png`。
### T3 地形深度层(2.5 日)
**取用**:T2 的格边/原点;T-A 的 6 张贴图;art-bible v3.53 §4.1 三关八色。
**产出**:`board_terrain_palette.gd`、`board_terrain_layer.gd` 两个实例(back/front);`BoardView` 装配;`cell_base_layer.gd` 删除;接触带迁入 CellUnit。
- [ ] `board_terrain_palette.gd`:八色常量(`Color("#...")`)按 art-bible v3.51 §4.1 三关表;八槽键 `rock_top/ground/cliff/seam/bevel_light/bevel_dark/ink/light_edge`;`palette_for(board_type)` 返回 Dictionary;未知 board_type 回退 dungeon 并记录(fail-fast 只在核心,呈现回退不刷错)。
- [ ] `board_terrain_palette.gd`:八色常量(`Color("#...")`)按 art-bible v3.53 §4.1 三关表;八槽键 `rock_top/ground/cliff/seam/bevel_light/bevel_dark/ink/light_edge`;`palette_for(board_type)` 返回 Dictionary;`tex_paths_for(board_type)` 返回岩顶/地面两条 `res://assets/art/board/...` 路径(路径单点);未知 board_type 回退 dungeon 并记录(fail-fast 只在核心,呈现回退不刷错)。
- [ ] `board_terrain_layer.gd` 材质面:`setup` 末尾经 `UiKit.load_tex` 装载 `_tex_rock`/`_tex_ground`(exists 守卫,禁 preload);地面整板一次铺图(`draw_texture_rect` 或等价,UV 用棋盘全局坐标);岩顶按合并岩体一次铺图(同块岩体内相邻格 UV 连续、禁逐格重置、无拼缝);崖面用低对比、断续且错开的岩块面,临空边缘收薄,内阴影与投影按 §1 完成定义 3;缺图时退回 palette 平色(仅开发容错,正式包必须 T-A 6 张齐)。
- [ ] `board_terrain_layer.gd`:`setup(cell, cols, rows, wall_at, sealed_at, palette, board_type)`(`sealed_at` = 封印格查询 Callable);`set_pass("back"/"front")`;`set_hero_foot_y(y)`;`_draw()` 中**地面/投影/封印石/背岩体只在 back 画**(整板悬崖仍由 `BoardWorld._draw` 承担,不重复绘制),岩体按 pass 过滤(back=脚底≤hero,front=>hero),每个 setter 调 `queue_redraw()`;静态 `lift_for(cell)`/`eshift_for(cell)`。
- [ ] 封印石贴片(back):`sealed_at(c)` 为真的格,在连续地面之上铺本格逻辑 rect 的 `palette.light_edge` 实色(可带 1px `palette.seam` 收边),不越格、不加新色;封印黑对受光棱对比 6.45–9.94:1(art-bible v3.51 §3.2/§4.1)。
- [ ] 岩顶公式:`LIFT=round(cell*0.435)`、`ESHIFT=round(cell*0.109)`;四邻连通合并;相邻墙顶搭接 2;板边外延 ESHIFT;南崖高 LIFT、宽 cell+ESHIFT;东崖宽 ESHIFT、高 cell+LIFT;禁竖条纹。
- [ ] 封印石贴片(back):`sealed_at(c)` 为真的格,在连续地面之上铺本格逻辑 rect 的 `palette.light_edge` 实色(可带 1px `palette.seam` 收边),不越格、不加新色;封印黑对受光棱对比 6.45–9.94:1(art-bible v3.53 §3.2/§4.1)。
- [ ] 岩顶公式:`LIFT=round(cell*0.435)`、`ESHIFT=round(cell*0.109)`;四邻连通合并;相邻墙顶搭接 2;板边外延 ESHIFT;南崖高 LIFT、宽 cell+ESHIFT;东崖宽 ESHIFT、高 cell+LIFT;崖面分段由格坐标确定性哈希驱动,任何岩层线不得贯通整条崖面,禁规则三角装饰带与竖条纹。
- [ ] `BoardView` 在 `_init` 以固定名字子节点创建一次常驻的 `_world/TerrainBack`(z=-1)与 `_world/TerrainFront`(z=2),不新增类成员;两层设 `use_parent_material = true`(随 `_world.material` 去饱和);back 画地面/投影/封印石/背岩体;front 画南侧岩体;`hero z=1` 不变;格件 z 按脚底行分档(北侧 0、南侧 3;**封印格恒 0**),由 `_resort_cell_decals` 重算(顶面贴花/交互/迷雾同格件 z);`board_world` 悬崖保留 z=0、`mat` 取新 palette 岩顶色(`_refresh_slab` 不再写 `COL_BRICK`);`rebuild` 清 `_world` 子件时跳过 `TerrainBack`/`TerrainFront`/`LabelShadow`(只清格件与英雄),再对各层重跑 `setup`(不重建节点);`setup` 传入 `_minesweeper.has_seal` 作 `sealed_at`。
- [ ] `BoardView._resort_cell_decals()`(私有):遍历 `_cells`,`u.z_index = 0 if u.seal_on else (3 if c.y > hero.y else 0)`;`ContactGlow`/`MemoryGround` 子件 `z_as_relative=false`、`z_index=-1`(全局 -1:地面之上、阴影圆 0 之下);`refresh` 与 `_update_hero` 末尾调用;hero 缺位时全部按 0 档。
- [ ] `board_view.gd` 删 `_paint_cell_base`/`_paint_cell_facade`(及 `_paint_cell`/`refresh` 调用)、`_floor_tile_for`/`_wall_tile_for`、`_build_cell_unit` 的 `u.base.bevel`;`_paint_cell_ink` 删 `bg` 计算/返回(`COL_FLOOR`/`COL_BRICK` 随之删)但保留 glyph 计算:**封印格写 `u.glyph`/`u.glyph_color`/`u.plate=true`(色牌字形),普通已开格只把 glyph 交给浮空 entries、`u.glyph` 留空**;`_apply_contact_bands`/`_process`/`_reset_breath` 的 `u.base.contact_*` 改调 `ContactGlow.set_bands(bands, corners, color, ground_visible_rect)`(不再经 `u.base`);`COL_DIGIT` 无引用即删;英雄贴图缺位字形「人」回退随基座退役(T4 登记)。
- [ ] 删除 `cell_base_layer.gd`;`board_cell_unit.gd` 去 `_BASE_LAYER` 预载、`base` 成员与 `base.draw_base`,文件头注删 `cell_base_layer` 引用;英雄蓝框随基座退役;接触带绘制迁入固定名字低层子件 `ContactGlow`(`z_as_relative=false`、全局 z=-1:地面之上、阴影圆 0 之下;只画英雄格地面侧,正交整边/斜向角点+两半边,逻辑格边,不进岩体);记忆态地面色/灰罩/记忆墨数字迁入固定名字低层子件 `MemoryGround`(同全局 -1);BoardView 计算 `ground_visible_rect`(本格逻辑 rect 扣除南/东邻未开格岩顶越入,南邻约 LIFT−SEP、东邻约 ESHIFT−SEP)并下发 `MemoryGround.setup(...)`/`ContactGlow.set_bands(..., ground_visible_rect)`,子件不读棋盘、CellUnit 不增成员;两个低层子件只绘地面可见区,禁整矩形覆盖 back 岩顶/崖面;设 `use_parent_material = true`(随世界去饱和);`draw_removed_dim` 墙格改顶面 rect。
- [ ] `standee_present_values_test.gd:79-86`:`cell_src` 源码锚由 `cell_base_layer.gd` 改指 `board_terrain_layer.gd`(北/西主亮棱绘制点),删 `FACADE_HIGHLIGHT_PX), UiKit.BRICK, true` 断言;`body_src` 段保留;跑该件至 0。
- [ ] `board_terrain_test.gd:_test_merged_mass_geometry`:四邻合并、相邻墙顶 rect 相交/搭接 2、无墙顶内框、地面无缝;`_test_projection_ratios`:38 格 LIFT=17、ESHIFT=4、南崖 17×42、南崖顶缘高光=本关受光棱、东崖 4×55、北/西 2+2+外 2 墨边、南/东内阴影 3×2。
- [ ] `board_terrain_test.gd:_test_merged_mass_geometry`:四邻合并、相邻墙顶 rect 相交/搭接 2、无墙顶内框、地面无缝;`_test_projection_ratios`:38 格 LIFT=17、ESHIFT=4、南崖 17×42、南崖顶缘 1px 受光口沿+1px 深墨线、东崖 4×55、北/西 1+1+外 2 墨边、南/东内阴影 3×1、崖面无贯通岩层线;`_test_material_assets_present`:6 张 512×512 贴图在库且 `tex_paths_for` 三关路径非空;`_test_material_vs_structure`:岩顶/地面采样来自贴图(相邻格 UV 连续、无平色断带),崖面/边缘仍为 palette 结构色。
- [ ] `board_terrain_test.gd:_test_depth_order`:三行夹具,断言 back 含北岩体、front 含南岩体、hero 在两者之间;北侧格件 `z_index=0`、南侧格件 `z_index=3`、**封印格(含南侧)`z_index=0`**、`ContactGlow`/`MemoryGround` 全局 -1;南岩体覆盖小人脚底像素(探针)。
- [ ] `run_all.gd` 注册 `board_terrain_test.gd`。
- [ ] 跑三关 golden 采集(先不重制基线)看差异落点;报告写地形层 draw calls。
@@ -282,12 +295,12 @@
**取用**:T2 的原点/格边;T3 的深度分层。
**产出**:`board_float_layer.gd`(Control 外壳)、`board_label_shadow_layer.gd`(Node2D 世界层);`BoardView` 装配;`cell_mark_overlay` 删数字路径。
- [ ] `board_float_layer.gd`:`setup(cell, origin, entries, font)`(origin = 壳层棋盘原点);`_draw()` 画双色引导线(左深右浅、2px、格顶−12..格顶+4)→数字(字高 21、2px 八向描边、1px 浮空投影、暖白芯);`危/?` 同规则;`label_rects()`/`label_metrics()`(壳层局部坐标);全幅 Control(`mouse_filter=IGNORE`)、z 最高;每个 setter 调 `queue_redraw()`;**不画阴影圆;封印格不进 entries**。
- [ ] `board_label_shadow_layer.gd`:`setup(cell, cells)`(世界局部/格坐标系,不传 shell 原点;`cells` = 浮空 entries 的格集,**不含封印格**);`_draw()` 画 10×6 四层同心椭圆(外→内 α40/70/105/140,尺寸 100%/80%/60%/40%;用 `draw_set_transform` 缩放后 `draw_circle` 或 16 点椭圆多边形,禁单用 `draw_circle`);圆心 = 逻辑格心、格顶+7;z=0(小人之下);`circle_rects()`(世界局部);setter 调 `queue_redraw()`。
- [ ] `board_float_layer.gd`:`setup(cell, origin, entries, font)`(origin = 壳层棋盘原点);`_draw()` 画双色引导线(左深右浅、2px、格顶−12..格顶+4,线底接阴影圆上缘)→数字(字高 21、2px 八向描边、1px 浮空投影、暖白芯);`危/?` 同规则;`label_rects()`/`label_metrics()`(壳层局部坐标);全幅 Control(`mouse_filter=IGNORE`)、z 最高;每个 setter 调 `queue_redraw()`;**不画阴影圆;封印格不进 entries**。**几何硬口径**:字高 21 = 字形墨高(不含描边),渲染字号取使墨高=21 的值(现行融合像素字体 27;`FONT_H` 仍记 21 作墨高/矩形高);`draw_string`/`draw_string_outline` 的 pos 是**基线**,一律传 `rect.position + Vector2(0, FONT_H)`(矩形底边),禁把矩形顶当绘制原点;`_label_rect` 行 y 用步距 `(格边 + 2)`(与格件/引导线/阴影圆同式),字底 = `origin.y + c.y × 步距 − 15`、矩形高 21;多行不得按 `c.y × 格边` 落位(逐行漂移 2px)。
- [ ] `board_label_shadow_layer.gd`:`setup(cell, cells)`(世界局部/格坐标系,不传 shell 原点;`cells` = 浮空 entries 的格集,**不含封印格**);`_draw()` 画 10×6 四层同心椭圆(外→内 α30/52/78/108,尺寸 100%/80%/60%/40%;用 `draw_set_transform` 缩放后 `draw_circle` 或 16 点椭圆多边形,禁单用 `draw_circle`);圆心 = 逻辑格心、格顶+7;z=0(小人之下);`circle_rects()`(世界局部);setter 调 `queue_redraw()`。
- [ ] `BoardView` 在 `_init` 以固定名字子节点创建一次常驻的 `FloatLayer`(BoardView 子 Control,全幅,z 最高)与 `_world/LabelShadow`(Node2D,z=0),不新增类成员;`LabelShadow` 设 `use_parent_material = true`,`FloatLayer` 不在 `_world` 材质链,`set_desaturated` 同拍给 `FloatLayer.material = _desat_mat`/`null`(结算期浮空数字同样灰化,禁成彩色例外);`rebuild` 清 `_world` 子件时跳过 `LabelShadow`(T3 同款跳过表);entries 由 `refresh` 的已开记录生成(`1–8`/`危`/`?`),**封印格跳过**(其字形走色牌),记忆态不生成 entries。
- [ ] `BoardView.set_world_font(f)` 同时 `FloatLayer.set_font(f)`;`cell_mark_overlay.gd` 删普通数字字形/色牌路径,**保留封印格字形+`_draw_digit_plate` 色牌**;`BoardCellUnit.plate` 保留(封印格 `true`、普通格 `false`);`board_view.gd` 删 `_digit_ink`/`_palette.digit_*`;`refresh` 字形段删 `_digit_ink` 三档与 `plate_digit` 普通路径(:586-591),封印格写 `u.glyph`/`u.glyph_color`/`u.plate=true`,普通已开格只交 entries(记忆墨仍用 `FOG_MEMORY_INK`;浮空字固定暖白芯);英雄贴图缺位字形「人」回退随基座退役(资产在包,正常路径不可达),实现报告「实现决定记录」登记。
- [ ] `run_all.gd` 注册 `board_float_label_test.gd`。
- [ ] `board_float_label_test.gd:_test_label_geometry`:字高 21、字底距格顶 15、视觉顶距格顶 38、线 2px、1px 投影;`_test_topmost_layer`:`FloatLayer` 为 BoardView 子 Control、z 最高、顶行 rect 在 D 区内(顶行 top=6 local);`_test_shadow_circle`:圆 10×6、圆心格顶+7、`_world/LabelShadow.z==0` 低于 hero、开启格才有圆、封印格无圆;`_test_desaturation`:`set_desaturated(true)` 后 `FloatLayer.material` 与 `TerrainBack/TerrainFront/LabelShadow` 的 `use_parent_material` 同拍生效;`_test_contrast`:四类底复合对比 ≥4.5。
- [ ] `board_float_label_test.gd:_test_label_geometry`:字高 21(墨高;矩形高 21)、字底距格顶 15、视觉顶距格顶 38、线 2px、1px 投影;**行 y 按步距 `(格边+2)` 落位**(至少两行断言,第 2 行起零漂移);三关截图目检数字墨底与引导线相接、线底接住阴影圆上缘、无长线悬空;`_test_topmost_layer`:`FloatLayer` 为 BoardView 子 Control、z 最高、顶行 rect 在 D 区内(顶行 top=6 local);`_test_shadow_circle`:圆 10×6、圆心格顶+7、`_world/LabelShadow.z==0` 低于 hero、开启格才有圆、封印格无圆;`_test_desaturation`:`set_desaturated(true)` 后 `FloatLayer.material` 与 `TerrainBack/TerrainFront/LabelShadow` 的 `use_parent_material` 同拍生效;`_test_contrast`:四类底复合对比 ≥4.5。
- [ ] `board_float_label_test.gd:_test_no_ordinary_plate_path` 与 `board_terrain_test.gd:_test_seal_substrate` 扫描/断言:普通数字路径(`board_view.gd`/`board_float_layer.gd` 与 `cell_mark_overlay` 的非封印分支)零 `plate_digit`/`_digit_ink_mode`;`DIGIT_PLATE`/`_draw_digit_plate` 只在封印格分支命中。
- [ ] 跑 `board_float_label_test`;三关截图看顶行数字越界与小人遮圆;报告写读数。
@@ -298,7 +311,7 @@
- [ ] `BoardView._top_face_rect(c)`(私有)= 墙格 `Rect2(x-ESHIFT, y-LIFT, cell, cell)`、地面格逻辑 rect;`BoardView._visual_rect_for(c)`(私有)= 墙格 `Rect2(x-ESHIFT, y-LIFT, cell+ESHIFT, cell+LIFT)`、地面格逻辑 rect;两者不新增公开方法。
- [ ] `CellUnit` 增 `top_face_offset`(墙格 `(-ESHIFT,-LIFT)`、地面 `(0,0)`)与 `visual_rect`;`_draw` 用 `Rect2(top_face_offset, edge, edge)` 传给 face;`_sync_seal_layer` 调 `setup(edge, visible)`(**不传 top_face_offset**——封印居逻辑格心,见下条);`cell_type_glow_layer.setup(edge, group, top_face_offset)`;`cell_mark_overlay` 的变异/徽章/悬停/退色/路径按该 rect(墙格顶面、地面逻辑;路径点迹只地面逻辑)。
- [ ] 封印圆心:`seal_mark_layer.setup(edge, visible)` 不变(子件本地全幅 draw_rect,圆心 = CellUnit 本地 `(edge/2, edge/2)` = 逻辑格心);**不随岩顶 −ESHIFT/−LIFT 偏移**(art-bible v3.51 §3.2/§8.2);环径/环壁/十字/光圈比例不变;验收 `ring_px` 仍 82%±1。封印子件设 `show_behind_parent = true`,保证身份色牌叠于法阵之上;封印格地面受光棱石由 `board_terrain_layer` back 画(T3)。
- [ ] 封印圆心:`seal_mark_layer.setup(edge, visible)` 不变(子件本地全幅 draw_rect,圆心 = CellUnit 本地 `(edge/2, edge/2)` = 逻辑格心);**不随岩顶 −ESHIFT/−LIFT 偏移**(art-bible v3.53 §3.2/§8.2);环径/环壁/十字/光圈比例不变;验收 `ring_px` 仍 82%±1。封印子件设 `show_behind_parent = true`,保证身份色牌叠于法阵之上;封印格地面受光棱石由 `board_terrain_layer` back 画(T3)。
- [ ] 类型微光:绘制 rect 改顶面 rect;`board_shot_probe`/`type_glow_shot_probe` 的「禁越圈」允许区改顶面 rect;微光不越出本格岩顶。
- [ ] 迷雾:`CellUnit._draw_fog_layer` 墙格画三块黑罩(顶面 rect+南面 `Rect2(x-ESHIFT,y-LIFT+cell,cell+ESHIFT,LIFT)`+东面 `Rect2(x-ESHIFT+cell,y-LIFT,ESHIFT,cell+LIFT)`;只在未开格);记忆态由固定名字低层子件 `MemoryGround` 画新地面色(palette floor)+灰罩+记忆墨数字,不读 `base.tex_base`,不生成浮空 entries;只绘地面可见区(扣南/东邻岩顶越入),不覆盖北/西邻格地面;封印格在记忆态同样随格隐没(印记与色牌不显)。
- [ ] 接触带:绘制迁入固定名字低层子件 `ContactGlow`(全局 z=-1:地面之上、阴影圆 0 之下);`board_view._apply_contact_bands`/`_process`/`_reset_breath` 改调 `ContactGlow.set_bands(bands, corners, color, ground_visible_rect)`,不再经 `u.base.contact_*`;只画英雄格地面侧,正交整边/斜向角点+两半边;只绘地面可见区(扣南/东邻岩顶越入);`_contact_unit` rect 不改;光不进岩体。
@@ -310,21 +323,22 @@
**取用**:T3/T4/T5 绿。
**产出**:63 PNG+63 `.import` 删除;`tile_palette.gd`/`terrain_tile_sets_test.gd` 删除;`player_copy_sweep_test` 落牌断言替换;`ui_contrast_probe` 迷雾派生段替换。
- [ ] 删除 `game/assets/art/board/terrain_*` 63 PNG 与同名 `.import`;保留 `seal_mark.png`+`.import`。
- [ ] 删除 `game/assets/art/board/terrain_*` 63 PNG 与同名 `.import`;保留 `seal_mark.png`+`.import` 与 T-A 的 6 张 `board_rock_*`/`board_ground_*` 贴图。
- [ ] 删除 `tile_palette.gd`、`terrain_tile_sets_test.gd`;`run_all.gd` 移除该套件;`board_view.gd`/`board_world.gd`/`ui_contrast_probe.gd` 的 `TilePalette` 引用全清。
- [ ] `player_copy_sweep_test.gd:142-147`:普通已开危险格 `u.plate==true` 改 `u.plate==false`,并断言浮空 entries 含该格(或 `label_metrics()` 有该格);封印格色牌断言归 `board_terrain_test._test_seal_substrate`;`ui_contrast_probe._fog_derived_check` 改读 `board_terrain_palette` 的新地面/岩顶色或渲染帧取样,三行行值按新地面色重算(±2/255),删除旧瓦片均值段。
- [ ] `board_terrain_test.gd:_test_legacy_assets_absent`:目录无 `terrain_*`、`seal_mark.png` 在库;源码 grep 零 `terrain_`/`TilePalette`/`CellBaseLayer`/`u.base`。
- [ ] `board_terrain_test.gd:_test_legacy_assets_absent`:目录无 `terrain_*`、`seal_mark.png` 在库、6 张 `board_rock_*`/`board_ground_*` 在库;源码 grep 零 `terrain_`/`TilePalette`/`CellBaseLayer`/`u.base`。
- [ ] 跑 `repo_structure_audit.py`、`capability_audit.py` 与 `board_terrain_test`;报告写清单;旧地形行**保留**(实现批禁写 `game/tests/README.md`;删除归写卡段后续,T8 audit 经卡内豁免通道绿)。
### T7 验收面换代与三关 golden(1.0 日)
### T7 验收面换代与三关 golden(1.5 日)
**取用**:T3–T6 全绿。
**产出**:`board_shot_probe` 视图 1036×548、侧栏 200、顶面 rect 微光圈/封印 rect;三关 golden 重制;渲染闸绿;`type_glow_shot_probe`/`layout_probe`/`ui_input_probe`/`ui_contrast_probe` 换代;三关色板逐值/互辨。
- [ ] `board_shot_probe.gd`:`view.size=Vector2(1036,548)`、`view.position=Vector2.ZERO`;`view.rebuild(..., 200)`;`_meta` 写全幅 rect;`_crop_cell` 用 `_visual_rect_for` 的屏幕换算;`_check_dual_frames` 的允许区改顶面 rect(用 `lift_for/eshift_for` 换算);**`_seal_evidence` 保持逻辑格 rect(封印居格心),选择器按迭代56后的 `has_seal` 口径**;注释与 `game/tests/golden/README.md` 口径一致。
- [ ] `type_glow_shot_probe.gd:64-78` 视图改 1036×548、`rebuild(..., 200)`(与生产同格边 38),允许区/取样改顶面 rect;`layout_probe.gd` 的 `_cell_for` 带侧栏;`ui_input_probe.gd` 的恢复调用带侧栏;`ui_contrast_probe` 浮空四类底段与迷雾段换代。
- [ ] 跑一次渲染闸看差异(预判棋盘三图全幅 changed>0,属换代);**显式呈报用户,按 `game/tests/golden/README.md` 现行口径获用户确认后**再按 `tools/golden_baseline_refresh.sh` 重制三关基线;复闸绿。
- [ ] 三关色板逐值核对:`board_terrain_test.gd:_test_palette_three_boards` 与 art-bible v3.51 §4.1 三关八色同值(用户 2026-11-07 已看样张冻结);`glow_discrimination_sheet.py` 读已删旧 `terrain_*`,本批不跑,工具换代登记待办(tools 批);不过即停卡呈报,不调色绕过。
- [ ] 材质过审预览锚(非引擎帧):`game/tests/golden/board_material_L1.png`/`_L2`/`_L3`(三关整板,12×8、格边 46)+`board_material_L1_zoom2.png`/`_digit6`/`_hero4`/`_top4`(第一关机械裁切)已按 2026-11-09 用户目检通过的预览重制,并在 `golden/README.md` 登记为预览锚、明确不替代 `board_L*`;新增/扩展 `board_material_shot_probe` 以同一 12×8、46px 构图复刻,与 512×512 新材质、断续岩块和薄边缘对齐比对(材质/构图差异判据沿用渲染闸容差)。
- [ ] 引擎侧 `board_L1_dungeon`/`board_L2_underdark`/`board_L3_deep_underdark` 仍待实现后换代:先跑一次渲染闸看差异(预判全幅 changed>0,属换代);**显式呈报用户,按 `game/tests/golden/README.md` 现行口径获用户确认后**再按 `tools/golden_baseline_refresh.sh` 重制三关引擎基线;复闸绿。材质过审预览锚不替代本步。
- [ ] 三关色板逐值核对:`board_terrain_test.gd:_test_palette_three_boards` 与 art-bible v3.53 §4.1 三关八色同值(用户 2026-11-07 已看样张冻结);`_test_material_assets_present` 核对 6 张 512×512 与像素域 ≤32(实测岩顶 9 色、地面 6 色);`glow_discrimination_sheet.py` 读已删旧 `terrain_*`,本批不跑,工具换代登记待办(tools 批);不过即停卡呈报,不调色绕过。
- [ ] 跑 `bash tools/run_all_gates.sh --code`;报告写 smoke/unit/probe/render 读数。
### T8 产出物落位(0.5 日)
@@ -346,22 +360,22 @@
| 需求点 | 改动(文件:行/行为) | 验收测试(名称+落点+通过判据) | 层级 | 真实入口 | 判据绑定面 | 能力行 |
|---|---|---|---|---|---|---|
| 1. D 区侧栏+提示条退役(判据:`design/ux/battle.md「Layout Zones」基准屏宽`、`design/gdd/systems/表现与支撑/HUD框架.md「战斗屏三区双舞台:挖掘与结算同屏不切场景」基准屏宽`) | `battle_layout_table.gd`、`battle_layout.tres`、`ap_bar_view.gd`、`board_zone_view.gd:23-37,74-79,91-92` | `board_side_rail_test.gd:_test_side_rail_layout`+`_test_signals`;`stage_background_test.gd:_test_side_rail_width_from_table`;`layout_probe.gd:_ready` | 单元+探针 | `BoardZoneView.new(layout)`→`ap_bar`/`_board_area`(测试读私有) | 左/右栏各宽 200、board_area 高 548、`side_rail_w==200`、hint 节点不存在、toast 不压棋盘 | 新增:D 区行动资源侧栏(AP 左栏、RAP 右栏、全高棋盘) |
| 2. 格边/原点/顶预留/重建接线(判据:`design/ux/battle.md「封印格呈现预览」radialGradient,144`) | `board_view.gd:205-232,403-404,428-439`、`main.gd:470`、`main_debug_flow.gd:104` | `board_terrain_test.gd:_test_cell_formula_base`+`_test_hit_test_logical_rect`;`layout_probe.gd:_ready`;`ui_input_probe.gd` | 单元+探针 | `BoardView.set_cell_area(Vector2(1036,548), 200)`/`rebuild(..., 200)` | `_cell_for(12, Vector2(1036,548), 200)==38`、`_cell_for(14, Vector2(1036,548), 200)==32`、局部原点 (279,44)/(281,44)、屏幕 (523,296)、全格命中 | 新增:棋盘点击命中与格边公式(逻辑格矩形) |
| 3. 合并岩体+连续地面(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系,173`) | `board_terrain_layer.gd`(新增)、`board_view.gd`、删 `cell_base_layer.gd` | `board_terrain_test.gd:_test_merged_mass_geometry`;`standee_present_values_test.gd:_init`(V11 源码锚改指 `board_terrain_layer.gd`);三关 `board_shot_probe` 截图 | 单元+探针 | `BoardView.rebuild()`→`_world/TerrainBack`、`_world/TerrainFront` 的 `mass_rects()` | 四邻合并、相邻墙顶搭接 2、无墙顶内框、地面无缝、板边外延 ESHIFT;V11 口沿高光新锚在位且全套件绿 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 4. 投影/崖面/受光(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系,172,174`) | `board_terrain_layer.gd` | `board_terrain_test.gd:_test_projection_ratios`;三关 golden | 单元+探针 | 同上 | 38 格 LIFT=17、ESHIFT=4、南崖 17×42、南崖顶缘高光=本关受光棱、东崖 4×55、北/西 2+2+外2、南/东内阴影 3×2 自 0.217 起、投影 4×4 α0.44/0.30/0.16/0.07 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 5. 脚底排序遮挡(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系`) | `board_terrain_layer.gd`、`board_world.gd:39,48` | `board_terrain_test.gd:_test_depth_order`;三关截图 | 单元+探针 | 构造 hero 行与南邻墙;`terrain_metrics()["order"]`/`CellUnit.z_index` | back 含脚底≤hero 的岩体、front 含 >hero 的岩体;北侧格件 z=0、南侧格件 z=3、**封印格(含南侧)z=0**、`ContactGlow`/`MemoryGround` 全局 -1;南岩体覆盖小人脚底像素 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 6. 浮空字+阴影圆几何/对比(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系`、`design/ux/battle.md「D 区布局与棋盘画法预览」rect`) | `board_float_layer.gd`(新增)、`board_label_shadow_layer.gd`(新增) | `board_float_label_test.gd:_test_label_geometry`+`_test_shadow_circle`+`_test_contrast`;`ui_contrast_probe.gd` 浮空字段 | 单元+探针 | `BoardView.refresh()`→`FloatLayer.set_entries()`/`_world/LabelShadow.setup()` | 字高 21、间距 15、视觉顶 38、线 2、1px 投影;圆 10×6、圆心格顶+7、z=0 低于 hero;**封印格无 entries/无圆**;四类底复合对比 ≥4.5 | 新增:棋盘浮空数字与引导线(最顶层、顶部预留) |
| 7. 浮空层最顶/顶行不裁切(判据:`design/ux/battle.md「封印格呈现预览」rect,307,313`) | `board_view.gd` 层装配、`board_float_layer.gd` | `board_float_label_test.gd:_test_topmost_layer`+`_test_desaturation`;三关截图 | 单元+探针 | `BoardView` 固定名字子件 z 序与 entries/`set_desaturated()` | `FloatLayer` 为 BoardView 子 Control、z 最高;`TerrainBack`/`TerrainFront`/`LabelShadow` 固定名字在树;顶行 rect top=6 local;无元素遮数字/线;结算期浮空层与地形层同拍灰化 | 新增:棋盘浮空数字与引导线(最顶层、顶部预留) |
| 8. 顶面锚点/封印/交互(判据:`design/art/art-bible.md「3.2 环境几何」封印印记,175`、`design/ux/battle.md「封印格呈现预览」色牌`) | `board_view.gd`、`cell_mark_overlay.gd`、`seal_mark_layer`、`cell_type_glow_layer`、`board_cell_unit.gd` | `board_terrain_test.gd:_test_top_face_anchor`+`_test_seal_substrate`;`seal_mark_params_test.gd`;`type_glow_test.gd` | 单元+探针 | `BoardView.refresh()`→`CellUnit.visual_rect`/`CellUnit.z_index`/封印格 `plate` | **封印圆心=逻辑格心(不偏移)**、变异/微光/墙格悬停按 -ESHIFT/-LIFT;地面路径按逻辑 rect;环径 82%±1;封印格 `plate=true`、`glyph` 为危/数字、无浮空/无圆、色牌叠法阵上;封印格 z=0 低于小人,其余格件北 0/南 3 | 新增:棋盘顶面锚点与迷雾几何(微光、变异岩顶偏移,封印格心) |
| 1. D 区侧栏+提示条退役(判据:`design/ux/battle.md「Layout Zones」side_rail_w`、`design/gdd/systems/表现与支撑/HUD框架.md「战斗屏三区双舞台:挖掘与结算同屏不切场景」D 区全高归棋盘`) | `battle_layout_table.gd`、`battle_layout.tres`、`ap_bar_view.gd`、`board_zone_view.gd:23-37,74-79,91-92` | `board_side_rail_test.gd:_test_side_rail_layout`+`_test_signals`;`stage_background_test.gd:_test_side_rail_width_from_table`;`layout_probe.gd:_ready` | 单元+探针 | `BoardZoneView.new(layout)`→`ap_bar`/`_board_area`(测试读私有) | 左/右栏各宽 200、board_area 高 548、`side_rail_w==200`、hint 节点不存在、toast 不压棋盘 | 新增:D 区行动资源侧栏(AP 左栏、RAP 右栏、全高棋盘) |
| 2. 格边/原点/顶预留/重建接线(判据:`design/ux/battle.md「Layout Zones」棋盘格尺寸公式`) | `board_view.gd:205-232,403-404,428-439`、`main.gd:470`、`main_debug_flow.gd:104` | `board_terrain_test.gd:_test_cell_formula_base`+`_test_hit_test_logical_rect`;`layout_probe.gd:_ready`;`ui_input_probe.gd` | 单元+探针 | `BoardView.set_cell_area(Vector2(1036,548), 200)`/`rebuild(..., 200)` | `_cell_for(12, Vector2(1036,548), 200)==38`、`_cell_for(14, Vector2(1036,548), 200)==32`、局部原点 (279,44)/(281,44)、屏幕 (523,296)、全格命中 | 新增:棋盘点击命中与格边公式(逻辑格矩形) |
| 3. 合并岩体+连续地面(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系|材质与装饰`) | `board_terrain_layer.gd`(新增)、`board_view.gd`、删 `cell_base_layer.gd` | `board_terrain_test.gd:_test_merged_mass_geometry`+`_test_material_assets_present`+`_test_material_vs_structure`;`standee_present_values_test.gd:_init`(V11 源码锚改指 `board_terrain_layer.gd`);三关 `board_shot_probe` 截图 | 单元+探针 | `BoardView.rebuild()`→`_world/TerrainBack`、`_world/TerrainFront` 的 `mass_rects()`/`tex_paths_for()` | 四邻合并、相邻墙顶搭接 2、无墙顶内框、地面无缝、板边外延 ESHIFT;6 张 512×512 贴图在库且被消费、相邻格 UV 连续;V11 口沿高光新锚在位且全套件绿 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 4. 投影/崖面/受光(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系|受光与崖面`) | `board_terrain_layer.gd` | `board_terrain_test.gd:_test_projection_ratios`;三关 golden | 单元+探针 | 同上 | 38 格 LIFT=17、ESHIFT=4、南崖 17×42、南崖顶缘 1px 受光口沿+1px 深墨线、东崖 4×55、北/西 1+1+外2、南/东内阴影 3×1、崖面无贯通岩层线、南向投影 4×4 α0.25/0.16/0.09/0.04、东向 α0.22/0.14/0.07/0.04 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 5. 脚底排序遮挡(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系|绘制序与遮挡`) | `board_terrain_layer.gd`、`board_world.gd:39,48` | `board_terrain_test.gd:_test_depth_order`;三关截图 | 单元+探针 | 构造 hero 行与南邻墙;`terrain_metrics()["order"]`/`CellUnit.z_index` | back 含脚底≤hero 的岩体、front 含 >hero 的岩体;北侧格件 z=0、南侧格件 z=3、**封印格(含南侧)z=0**、`ContactGlow`/`MemoryGround` 全局 -1;南岩体覆盖小人脚底像素 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 6. 浮空字+阴影圆几何/对比(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系|浮空数字`、`design/ux/battle.md「D 区布局与棋盘画法预览」浮空字`) | `board_float_layer.gd`(新增)、`board_label_shadow_layer.gd`(新增) | `board_float_label_test.gd:_test_label_geometry`+`_test_shadow_circle`+`_test_contrast`;`ui_contrast_probe.gd` 浮空字段 | 单元+探针 | `BoardView.refresh()`→`FloatLayer.set_entries()`/`_world/LabelShadow.setup()` | 字高 21(墨高)、间距 15、视觉顶 38、线 2(格顶−12..+4,接圆上缘)、1px 投影;**绘制基线 = 矩形底边、行 y 按步距(格边+2)**;圆 10×6、圆心格顶+7、z=0 低于 hero;**封印格无 entries/无圆**;四类底复合对比 ≥4.5 | 新增:棋盘浮空数字与引导线(最顶层、顶部预留) |
| 7. 浮空层最顶/顶行不裁切(判据:`design/ux/battle.md「D 区布局与棋盘画法预览」禁裁切`) | `board_view.gd` 层装配、`board_float_layer.gd` | `board_float_label_test.gd:_test_topmost_layer`+`_test_desaturation`;三关截图 | 单元+探针 | `BoardView` 固定名字子件 z 序与 entries/`set_desaturated()` | `FloatLayer` 为 BoardView 子 Control、z 最高;`TerrainBack`/`TerrainFront`/`LabelShadow` 固定名字在树;顶行 rect top=6 local;无元素遮数字/线;结算期浮空层与地形层同拍灰化 | 新增:棋盘浮空数字与引导线(最顶层、顶部预留) |
| 8. 顶面锚点/封印/交互(判据:`design/art/art-bible.md「3.2 环境几何」封印印记`、`design/ux/battle.md「封印格呈现预览」色牌`) | `board_view.gd`、`cell_mark_overlay.gd`、`seal_mark_layer`、`cell_type_glow_layer`、`board_cell_unit.gd` | `board_terrain_test.gd:_test_top_face_anchor`+`_test_seal_substrate`;`seal_mark_params_test.gd`;`type_glow_test.gd` | 单元+探针 | `BoardView.refresh()`→`CellUnit.visual_rect`/`CellUnit.z_index`/封印格 `plate` | **封印圆心=逻辑格心(不偏移)**、变异/微光/墙格悬停按 -ESHIFT/-LIFT;地面路径按逻辑 rect;环径 82%±1;封印格 `plate=true`、`glyph` 为危/数字、无浮空/无圆、色牌叠法阵上;封印格 z=0 低于小人,其余格件北 0/南 3 | 新增:棋盘顶面锚点与迷雾几何(微光、变异岩顶偏移,封印格心) |
| 9. 迷雾几何/记忆态(判据:`design/art/art-bible.md「6.5 视野迷雾与黑暗区域渲染」记忆态`) | `board_cell_unit.gd:_draw_fog_layer`/`MemoryGround`、`board_view.gd` | `board_terrain_test.gd:_test_fog_rect`+`_test_memory_cover`;`ui_contrast_probe.gd` 迷雾段;`type_glow_test.gd` | 单元+探针 | `BoardView.refresh()`→`CellUnit.fog_state`/`MemoryGround` | 墙格三块黑罩(顶面+南+东)覆盖、北/西邻格非岩顶地面像素零覆盖(岩顶投影可越入邻格屏幕区);地面格不越格;记忆态/退色不覆盖南邻岩顶(`MemoryGround` 只绘地面可见区,重叠区像素来自南邻墙体);封印格记忆态随格隐没;封印格地面=palette.light_edge;记忆态无浮空 entries;记忆墨对比 ≥4.5 | 新增:棋盘顶面锚点与迷雾几何(微光、变异岩顶偏移,封印格心) |
| 10. 命中逻辑格(判据:`design/ux/battle.md「封印格呈现预览」radialGradient`) | `board_view.gd:428-439` | `board_terrain_test.gd:_test_hit_test_logical_rect` | 单元 | `BoardView.cell_center_local()`/`_cell_at()` | 全格 `_cell_at(cell_center_local(c))==c`;顶面左上角点按逻辑归北/西邻格;板外 (-9,-9) | 新增:棋盘点击命中与格边公式(逻辑格矩形) |
| 11. 旧资产退役/普通数字零底牌(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系,215`) | `game/assets/art/board/`、`tile_palette.gd`、`cell_base_layer.gd`、`terrain_tile_sets_test.gd` | `board_terrain_test.gd:_test_legacy_assets_absent`;`board_float_label_test.gd:_test_no_ordinary_plate_path`;`repo_structure_audit.py` | 单元+静态 | 扫描 `game/assets/art/board/` 与源码 | 零 `terrain_*`、零 `TilePalette`/`CellBaseLayer`/`u.base`、`seal_mark.png` 在库、普通数字零 `plate_digit`/`_digit_ink_mode`(封印格 `plate`/`DIGIT_PLATE` 为唯一例外) | 新增:旧瓦片退役与普通数字零底牌 |
| 12. 侧栏信号/setter(判据:`design/ux/battle.md「封印格呈现预览」rect`) | `ap_bar_view.gd` | `board_side_rail_test.gd:_test_signals` | 单元 | 真实按钮 `pressed`/setter | `stop_pressed`/`refresh_confirmed`/`legend_toggled` 逐信号;`set_ap`/`set_rap`/`set_refresh_state` 读数 | 新增:D 区行动资源侧栏(AP 左栏、RAP 右栏、全高棋盘) |
| 10. 命中逻辑格(判据:`design/ux/battle.md「Layout Zones」格边按公式现算`) | `board_view.gd:428-439` | `board_terrain_test.gd:_test_hit_test_logical_rect` | 单元 | `BoardView.cell_center_local()`/`_cell_at()` | 全格 `_cell_at(cell_center_local(c))==c`;顶面左上角点按逻辑归北/西邻格;板外 (-9,-9) | 新增:棋盘点击命中与格边公式(逻辑格矩形) |
| 11. 旧资产退役/普通数字零底牌(判据:`design/art/art-bible.md「3.2 环境几何」棋盘地形体系|旧资产处理`) | `game/assets/art/board/`、`tile_palette.gd`、`cell_base_layer.gd`、`terrain_tile_sets_test.gd` | `board_terrain_test.gd:_test_legacy_assets_absent`;`board_float_label_test.gd:_test_no_ordinary_plate_path`;`repo_structure_audit.py` | 单元+静态 | 扫描 `game/assets/art/board/` 与源码 | 零 `terrain_*`、零 `TilePalette`/`CellBaseLayer`/`u.base`、`seal_mark.png` 与 6 张 `board_rock_*`/`board_ground_*` 在库、普通数字零 `plate_digit`/`_digit_ink_mode`(封印格 `plate`/`DIGIT_PLATE` 为唯一例外) | 新增:旧瓦片退役与普通数字零底牌 |
| 12. 侧栏信号/setter(判据:`design/ux/battle.md「Component Inventory」行动资源侧栏`) | `ap_bar_view.gd` | `board_side_rail_test.gd:_test_signals` | 单元 | 真实按钮 `pressed`/setter | `stop_pressed`/`refresh_confirmed`/`legend_toggled` 逐信号;`set_ap`/`set_rap`/`set_refresh_state` 读数 | 新增:D 区行动资源侧栏(AP 左栏、RAP 右栏、全高棋盘) |
| 13. 接触带延续(判据:`design/art/art-bible.md「3.2 环境几何」可挖域接触带微光`) | `board_cell_unit.gd`、`board_view.gd:740,764-765` | `board_terrain_test.gd:_test_contact_glow`;`type_glow_test.gd` | 单元 | `BoardView.refresh()`→`ContactGlow.set_bands(..., ground_visible_rect)` | 英雄格地面侧接触带在位,正交整边/斜向角点+两半边,只绘地面可见区、不进岩体;全局 z=-1 | 既有:未开格类型微光(8 邻作用集、五组色相、零玩法写入) |
| 14. 三关色板/互辨(判据:`design/art/art-bible.md「4.1 主色板」三关棋盘环境八色,415`) | `board_terrain_palette.gd` | `board_terrain_test.gd:_test_palette_three_boards` | 单元+静态 | `palette_for("dungeon"/"underdark"/"deep_underdark")` | 三关八色与 art-bible v3.51 §4.1 逐值一致;三关同名槽位不全等(用户过审样张冻结);不变槽恒定;封印石读 `light_edge` | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 15. 取证面换代(判据:`game/tests/golden/README.md「基线冻结与审核」才允许出候选图,31`) | `board_shot_probe.gd`、`type_glow_shot_probe.gd`、`layout_probe.gd`、`ui_input_probe.gd`、`ui_contrast_probe.gd` | 三关 `board_shot_probe`+渲染闸;`type_glow_shot_probe`;`layout_probe.gd:_ready`;`ui_input_probe.gd`;`ui_contrast_probe.gd` | 探针+渲染闸 | `res://probe/board_shot_probe.tscn`;`tools/render_gate.sh` | 视图 1036×548、侧栏 200、裁剪全幅、顶面 rect 微光圈、**封印取证保持逻辑格 rect(圆心格心)**、三关 golden 重制后 0 差异 | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) |
| 16. 测试入口/能力审计(判据:`design/engineering/test-conventions.md「8.9 三层模型」本节的结构由文档域闸`) | `run_all.gd:225`、新增测试件、`game/tests/README.md` | `bash tools/run_all_gates.sh --code`;`capability_audit.py` | 集成 | 单元测试全套件 | 三新套件在册、terrain 套件移除、能力审计红项 0、全绿 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 14. 三关色板/互辨(判据:`design/art/art-bible.md「4.1 主色板」三关棋盘环境八色`) | `board_terrain_palette.gd` | `board_terrain_test.gd:_test_palette_three_boards`+`_test_material_assets_present` | 单元+静态 | `palette_for("dungeon"/"underdark"/"deep_underdark")`/`tex_paths_for(...)` | 三关八色与 art-bible v3.53 §4.1 逐值一致;三关同名槽位不全等(用户过审样张冻结);不变槽恒定;封印石读 `light_edge`;6 张 512×512 贴图路径在库、单张像素域 ≤32(实测岩顶 9 色、地面 6 色) | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 15. 取证面换代(判据:`game/tests/golden/README.md「基线冻结与审核」才允许出候选图`) | `board_shot_probe.gd`、`board_material_shot_probe`(新增/扩展)、`type_glow_shot_probe.gd`、`layout_probe.gd`、`ui_input_probe.gd`、`ui_contrast_probe.gd` | 三关 `board_shot_probe`+渲染闸;`board_material_shot_probe` 对过审预览图;`type_glow_shot_probe`;`layout_probe.gd:_ready`;`ui_input_probe.gd`;`ui_contrast_probe.gd` | 探针+渲染闸 | `res://probe/board_shot_probe.tscn`;`tools/render_gate.sh`;`game/tests/golden/board_material_L1.png`(过审预览锚) | 视图 1036×548、侧栏 200、裁剪全幅、顶面 rect 微光圈、**封印取证保持逻辑格 rect(圆心格心)**、三关 golden 重制后 0 差异;12×8/46px 材质探针与 512×512 新材质、断续岩块、薄边缘预览对齐,差异在容差内 | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) |
| 16. 测试入口/能力审计(判据:`design/engineering/test-conventions.md「8.9 三层模型」能力清单`) | `run_all.gd:225`、新增测试件、`game/tests/README.md` | `bash tools/run_all_gates.sh --code`;`capability_audit.py` | 集成 | 单元测试全套件 | 三新套件在册、terrain 套件移除、能力审计红项 0、全绿 | 新增:棋盘合并岩体与连续地面(深度遮挡、投影、崖面) |
| 17. 产出物/独立审计(判据:`design/engineering/test-conventions.md「8.6 测试时机」不要求先红后绿`) | `reports/` | 末卡产出物落位;`reports/iter<N>-验收审计-<日期>.md` | 集成 | 实现报告/反哺点清单/审计报告 | 三件齐、逐行勾选、审计未过不合并 | 既有:战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) |
**测试削弱申报**(允许删除/替换的旧断言):
@@ -384,7 +398,7 @@
- **L2 记录继续**:三关色板派生读数偏差在 ±1 通道内、draw calls 波动 <10%——记入实现报告继续。
- **L3 停机呈报**:
- 新路径与 art-bible 条款冲突(比例/顶预留/圆心/层序/三关色板/封印承载任一不符)——停卡,列反哺点,禁自行改条款。
- 封印呈现与迭代56「受理即揭示」或 art-bible v3.51 封印条冲突(印记落未开格、圆心随岩顶偏移、身份字形进浮空层、色牌层序颠倒、封印石对比 <4.5)——停卡呈报,禁把封印改回旧假设。
- 封印呈现与迭代56「受理即揭示」或 art-bible v3.53 封印条冲突(印记落未开格、圆心随岩顶偏移、身份字形进浮空层、色牌层序颠倒、封印石对比 <4.5)——停卡呈报,禁把封印改回旧假设。
- `board_terrain_layer` 超 7 公开方法/12 成员且按职责拆不出内聚单元——停卡走豁免/还债通道,禁凑数拆绿。
- 机检键与卡片契约互斥(如测试要求保留 `plate` 字段)——停卡呈报,禁为机检保留无效成员。
- 三关色板逐值/互辨不过——停卡呈报,禁调色绕过或改判据。
@@ -399,8 +413,8 @@
允许实现期自行拍板(超清单记入实现报告「实现决定记录」):
1. `board_terrain_layer` 内 back/front 两实例的精确 z 值(只要满足 back<hero<front、float 最高、阴影圆 0)。
2. 程序化材质噪声的确定性哈希种子与采样频率(同板同参逐位复现;禁 RngService/自建 RNG;三关可辨、不出现逐格拼缝)。
3. 阴影圆四层 α 在 ±10% 内的微调与同心椭圆收缩比例(只要落样张轮廓、圆在格面、小人之下)。
2. 程序化结构/装饰噪声的确定性哈希种子与采样频率(同板同参逐位复现;禁 RngService/自建 RNG;三关可辨、不出现逐格拼缝)。
3. 阴影圆四层 α 在 ±10% 内的微调与同心椭圆收缩比例(基准取 2026-11-09 过审预览的 30/52/78/108;只要落样张轮廓、圆在格面、小人之下)。
4. 侧栏按钮的纵向间距与面板内边距(只要左右栏各 200、不压棋盘、不换位)。
5. 记忆态灰罩的绘制方式(只要不出现浮空层、对比 ≥4.5、地面色取 palette)。
6. 测试夹具的构造方式(直接 `new()` 或场景实例化,只要走真实入口)。
@@ -411,7 +425,7 @@
## 15. 待裁点
零待裁点。已裁记录:①underdark/deep 两关色板 2026-11-07 用户看方向样张后选「按目标八色冻结」;②棋盘底操作提示条退役 2026-11-07 用户选定;③合并 master 时与迭代56已闭合的封印改版对齐(用户 2026-11-07 已裁「封印受理即揭示」)——本卡承接其呈现面:已揭示地面格心+身份色牌+受光棱封印石承载(新地面 `#695038` 对封印黑仅 2.35–2.98:1,受光棱 6.45–9.94:1,保 art-bible ≥4.5 判据,零新增色);法阵参数/揭牌逻辑沿迭代56。开工门=U0(用户批卡);U0 前不写实现代码。
零待裁点。已裁记录:①underdark/deep 两关色板 2026-11-07 用户看方向样张后选「按目标八色冻结」;②棋盘底操作提示条退役 2026-11-07 用户选定;③合并 master 时与迭代56已闭合的封印改版对齐(用户 2026-11-07 已裁「封印受理即揭示」)——本卡承接其呈现面:已揭示地面格心+身份色牌+受光棱封印石承载(新地面 `#695038` 对封印黑仅 2.35–2.98:1,受光棱 6.45–9.94:1,保 art-bible ≥4.5 判据,零新增色);法阵参数/揭牌逻辑沿迭代56;④三关 512×512 材质、断续岩块与薄边缘 2026-11-09 用户目检 `reports/2026-11-09-棋盘材质预览-v2.html` 后确认「没有问题,可以按这样」。开工门=U0(用户批卡);U0 前不写实现代码。
---
@@ -480,5 +494,26 @@
| 6 | 同上 | `roadmap.md` 冲突:master 迭代55/56行 vs 本卡旧版(无55/56、旧「二三关棋盘观感」) | 补写 | 保留 master 迭代位/下一步原文,仅把待编池「二三关棋盘观感(待设计+待美术)」替换为「棋盘瓦片与立体表现重做(已写卡,待编排)」 |
| 6 | 同上 | 保留 `plate` 后成员预算变化:`board_cell_unit` 12→13;封印石输入给 `board_terrain_layer` 增 `_sealed_at` 成员 | 补写 | §9 改 `board_cell_unit` 12→13(删 base、加两成员、保留 plate);`board_terrain_layer` 成员预算 ≤13;§7/T3/T4 同步 |
| 6 | 同上 | 测试面需区分普通数字与封印色牌:`player_copy_sweep_test:142-147`、`_test_no_plate_path`、`_test_top_face_anchor` 原断言把封印色牌一并判零 | 补写 | 普通已开危险格 `plate==false`+浮空 entries;`_test_no_ordinary_plate_path`;新增 `_test_seal_substrate`(封印石/色牌/无浮空/无圆/z=0);§7/T4/T5/§12 同步 |
| 7 | 用户(2026-11-09 纠正)+ 写卡会话回填 | 本卡原写「岩体/地面/崖面必须程序化绘制」,与用户过审样张「整块岩石是一张连续的岩顶图」及 art-bible §8.5「材质归模型、结构归程序」冲突;用户未裁过程序化材质 | 退回上游/补写 | 回退为用户原裁:岩顶/地面=无缝贴图(T-A 6 张),崖面/边缘/投影/层序=程序化;§2/§4-2/§5/§6/§8(T-A,T3,T6,T7)/§9/§12 同步;art-bible v3.53 §8.1 改口径;asset-path-map/checklist 同步;估时 9.5→11.0 |
| 8 | 用户(2026-11-09 预览目检)+ 写卡会话回填 | 预览浮空数字的引导线与阴影圆断开(线止于格顶−3、圆画在格心且 20×10);实现侧同源两处硬口径缺失——`draw_string`/`draw_string_outline` 的 pos 被当矩形顶用(实为基线,数字整体上浮 21px、线与字分离)、`_label_rect` 行 y 用格边而非步距(逐行漂移 2px) | 补写 | 预览按条款重画(线格顶−12..+4、圆 10×6 圆心格顶+7、数字墨底−15/墨高 21)并重生成 `board_preview2_*`;T4 增绘制基线/字号/步距硬口径与两行落位断言;§12 行 6 同步 |
第六轮定向复核:通过(第六轮 6 条已处置;合并冲突全部闭合)。
| 轮次 | 复核者身份 | 发现 | 去向 | 处置结果 |
|---|---|---|---|---|
| 9 | 独立只读子代理(2026-11-10 材质过审后对抗复核) | T-A 勾六张已入库,但 `board-material-fix` 工作区没有这 12 项,T3/T7 在该区必红 | 补写 | 按 asset-path-map §1 同步 6 PNG+6 `.import` 到工作区;T-A 增跨区同步记录 |
| 9 | 同上 | §5 把 6 张地形贴图列为“不收件”,与 T-A/估时/完成定义冲突 | 补写 | §5 改为“已过审六张之外的再创作/换图不收件”,去向改另立美术批 |
| 9 | 同上 | 7 张预览图放入 golden 目录但未登记,易被当成引擎基线 | 补写 | `golden/README.md` 增“材质过审预览锚(非引擎帧)”类别,明确不参与逐像素比对、不替代 `board_L*` |
| 9 | 同上 | 4 张细部锚无可复现来源 | 补写 | 生成器增 `golden/` 输出与四条裁切参数;README 同步记录参数 |
| 9 | 同上 | 12×8/46 材质样张被称为“三关 golden 基线”,与 12×12/38 引擎基线混同 | 补写 | §1-9 与 T7 拆成“材质过审预览锚”和“引擎侧 `board_L*` 基线”两条 |
| 9 | 同上 | 完成定义“已重制”与 T7“待确认后重制”并存 | 补写 | T7 明确预览锚已重制、`board_L*` 待实现后按审核关卡换代 |
| 9 | 同上 | §12 多行仍是失效行号锚 | 补写 | 第 1/2/5/6/7/8/9/10/11/12/13/16/17 行全部改内容锚;全表判据行零行号锚 |
| 9 | 同上 | 阴影圆 α 卡写 40/70/105/140,过审预览实为 30/52/78/108 | 补写 | T4 与 §14-3 改为过审值 30/52/78/108,白名单基准同步 |
| 9 | 同上 | art-bible §8.5 两条互斥:结构只能素材本体 vs 地形结构程序化 | 退回上游 | §8.5 首条限定“角色、单位与非地形 UI 格件”,显式列棋盘地形例外;§8.1/§3.2 保持材质归模型、结构归程序 |
| 9 | 同上 | 封印格预览仍用退役裸土 `#B39A78` | 补写 | 未开对照改 `#9C8462`、封印两格改 `#C9AF83`、已开对照改 `#695038`;判据旧承载面对比句同步 |
| 9 | 同上 | battle.md 同步日期仍写 2026-11-07,§6 未列材质实图 | 补写 | 卡头与 §2/§6 改 2026-11-09,§6 增材质过审实图与实图判据 |
| 9 | 同上 | §3 档期仍写“待编排” | 补写 | 改为“已写卡+已编迭代 57、待开工” |
| 9 | 同上 | 待办证据引用已不存在的旧 art-bible 条款 | 补写 | 改为历史陈述“旧条款已随 v3.53 解冻” |
| 9 | 同上 | art-assets checklist §3.3 要什么/前置仍按逐格砖面 | 补写 | 改为只出雷格/数字格面语义纹样,六张材质已录入,不再出逐格瓦片 |
第七轮定向复核:通过(1 条已处置;材质口径与样张、§8.5 一致)。
第八轮定向复核:通过(1 条已处置;预览几何与 art-bible §3.2 浮空数字条逐值一致)。
第九轮定向复核:通过(14 条均闭合;§12 全表 20 组内容锚零 MISS,判据列零行号锚)。
+1 -1
View File
@@ -179,7 +179,7 @@
#### 棋盘瓦片与立体表现重做(2026-11-07 登记,来源=会话提及)
**实况**:用户裁定(2026-11-07 会话)棋盘难看根因=瓦片素材与立体画法,非亮度/对比度;原「第二 / 三关棋盘观感——亮度与对比度」条误诊退役、旧卡已删除。真 3D 与 HD-2D 排除(风格不合)。证据:art-bible §3.2「未挖格=一整块 32×32 自含凸起岩体」冻结条款锁死立体表现;cell_base_layer.gd 南立面/北投影全在本格内、board_view.gd 无 y-sort;tile_palette.gd digit_plate 落牌=亮度修补已失败(违 §9.2 满屏白牌反参考)。设计已闭合(C 方向+D 布局+三关八色冻结;art-bible v3.51/battle.md 2026-11-07/HUD框架 2026-11-07)。
**实况**:用户裁定(2026-11-07 会话)棋盘难看根因=瓦片素材与立体画法,非亮度/对比度;原「第二 / 三关棋盘观感——亮度与对比度」条误诊退役、旧卡已删除。真 3D 与 HD-2D 排除(风格不合)。证据:旧 art-bible §3.2「未挖格=一整块 32×32 自含凸起岩体」冻结条已随 v3.53 解冻,现行为抬升合并岩体;cell_base_layer.gd 南立面/北投影全在本格内、board_view.gd 无 y-sort;tile_palette.gd digit_plate 落牌=亮度修补已失败(违 §9.2 满屏白牌反参考)。设计已闭合(C 方向+D 布局+三关八色冻结;art-bible v3.53/battle.md 2026-11-07/HUD框架 2026-11-07);2026-11-09 用户目检通过 512×512 三关材质、断续岩块与薄边缘(`reports/2026-11-09-棋盘材质预览-v2.html`)。
- 相关文档:[美术圣经](design/art/art-bible.md) §3.2/§4.1/§6.3(画法解冻+三关八色)+ [battle.md](design/ux/battle.md)(D 区布局与像素判据)+ [需求卡片](reports/需求卡片-棋盘瓦片与立体表现重做批-2026-11-07.md)(已写卡,卡内 §16 复核通过)
**改动面**:文档+美术素材+游戏代码