美术圣经去数值化批(用户裁 2026-11-07 两准则: 有落点补指针/无落点建脚本承载): art-bible v3.43→v3.44 全文定值剥离——头注定值单点纪律(数量面唯一事实源=执行件, 例外=WCAG 标准引用名与数据索引)+§8 头注两张表制退役+§4.1 主色板全 hex 清零(语义岗句+ui_kit 指针)+§4.2 五组微光/呈现参数/禁入带+§2 能量档改八拍序(数字退役)+世界底层两子带区间数值迁执行件+§3.2 封印/高墙 px 群+§6.1/6.2 舞台与营地坐标群+§6.5 迷雾定值群+§7.2/7.4/7.6 UI token/字号/控件态+§8.1/8.2/8.4 档位与帧数+换色合并沿革压缩归 git 史+六对欠账迁出; 执行件三件落地——glow_discrimination_sheet 增机检 E 门(世界底层两子带: 背景侧上沿+结构间隔, 地板侧归 tile_palette 归一化目标 0.10 渲染面, --no-sheet 全绿 exit=0)+新套件 animation_frame_spec_test(帧数档 4/6/2 规格表落码+现役单帧形制锚定, 经 UiKit.load_tex 装载链)+新套件 palette_token_pairwise_test(ui_kit Color 常量面两两互查, 存量 36 对在册豁免账含〔欠账〕四对, 账外零新增); run_all manifest 65→86 全量单元位次不变+能力清单帧数行入册+互查套件挂主题行; oracle 锚注记换代六件(seal/type_glow/standee/theme_projection/terrain/ui_contrast_probe——定值面=本测试措辞); art-pipeline-tools 升格执行件门值登记面(14 行定值落点索引)+边界句换代; 下游复写换代七件(术语表/08-Alpha/camp/battle/character-design/两清单); 待办清单去数值化条目推进文档设计已闭合+欠账条目新立。凭据: 圣经 hex 字面量 0+七触碰套件单跑 all green(exit=0)+熵增闸 PASS(--docs 内)+流水线闸 PASS(34 条目)+能力审计红 0(110 行·86 套·链断 0)+doc_term 零命中(销账/随批/收口/若干四词自清扫)+--docs 域闸【验收通过】exit=0

This commit is contained in:
DKChan committed 2026-11-07 04:31:39 +08:00
1 parent 77c1d360f6
commit 85abe37cf5
22 files changed
+342 -130

No files matched your search

+3 -3
View File
@@ -27,11 +27,11 @@
|---|---|
| 一句话视觉规则 | 明快的地牢,轻快的扫荡,仔细的推理——**明亮像素幻想,全年龄,非暗黑**,角色 2~3 头身 |
| 原则一「预告上格」 | 格内绘制优先级 **数字(含色牌)> 小人 > 封印印记 > 变异纹带 > 装饰变体 > 底色**;任何元素禁止遮挡数字字形区;类型微光为底效泛光层,不入遮挡栈 |
| 原则二「明亮为皮,明度分档为骨」 | 暖倾向;数字亮墨直画已开格底(亮墨 L≥0.75 / 已开格底 L 0.08–0.14,art-bible §4.1),对比 ≥4.5:1;色牌 `#F5EAD3` 为复杂格底后备(牌上深墨 L≤0.027);未开格底 L≥0.30、HSV 饱和 ≤0.55 |
| 原则二「明亮为皮,明度分档为骨」 | 暖倾向;数字亮墨直画已开格底(对比过 WCAG AA,art-bible §4.1);色牌为复杂格底后备;未开格底亮度地板与饱和上限同 §4.1(门值定值面=互辨抽测件) |
| 原则三「一砖一世界」 | 变体优先换色板不加新资产;危险状态必须**形状+颜色双通道**(色弱灰度可辨) |
| 类型预读单通道(§4.6.3) | 未开格 = **类型常显微光**(五组色带 §4.2:芥末黄/黄绿/青/紫罗兰/绯红,色相+明度双码,避 300°–345° 禁入带,样张冻结);不呈现极性、不泄危险格与安全格(角嵌形状通道已不存在——微光格只留微光) |
| 剪影哲学(§5.1) | **所有角色自带轮廓通道:亮色描边+落影底盘**,识别不依赖背景;四类原型见各条目 |
| 语义色规则(§4.2) | 红只说危险(危险红 `#A8321F` 单档)、金只说收益(`#F0A828`)、蓝只说己方(`#2E86DE`);封印印记现行色 = 封印黑 `#000000`(色史归 art-bible §4.1);**紫赤 `#8F2F6A` 为 Boss 独占,HSV 色相 300°–345° 全场禁入带**(微光群伤组绯红为类型先验色带域,例外见 §4.2) |
| 语义色规则(§4.2) | 红只说危险、金只说收益、蓝只说己方(各语义色定值面=ui_kit,art-bible §4.1);封印印记现行色 = 封印黑(色史归 art-bible §4.1);**紫赤为 Boss 独占,高饱和紫赤域全场禁入带**(带域定值面=互辨抽测件;微光群伤组绯红为类型先验色带域,例外见 §4.2) |
| UI 形状语法(§7.1,§3.3 存方向指导) | 半拟物:面板=石板圆角矩形(与地砖同圆角率),按钮=可按的砖,仪式确认=圆形蜡封;数据区直角细线无纹理 |
**参考图**:`design/art/references/` 三款×2 张(Into the Breach / Moonlighter / Peglin,与圣经点名池一一对应;gungeon 已退场,反面条款见 art-bible §9.2;正面取/弃与反面条款已成文 art-bible §9,反面图证待素材生成后增补)。
@@ -43,7 +43,7 @@
### 1.1 格子样张(砖面形态定稿闸)⚙
- **要什么**:一张按 art-bible §1.4 参数画成的格子风格试验图。**内容清单与验收四项以 art-bible §1.4 为唯一定义处**(含类型微光呈现组),本条只登记生产视角差异:图类型色板变体组至少两套、样张含至少一处砖缘/岛缘厚度与一格装饰立牌示例(§3.2 呈现基准)。
- **风格/规格**:色板 token 直接取 §4.1(掩尘 `#C9AF83`、裸土 `#B39A78`、数字墨三档、封印黑、危险红、奖励金、小人蓝、数字色牌)。
- **风格/规格**:色板 token 直接取 ui_kit 常量组(语义岗清单见 art-bible §4.1:掩尘、裸土、数字墨三档、封印黑、危险红、奖励金、小人蓝、数字色牌)。
- **验收**:art-bible §1.4 四项按序判定(数字可读性 WCAG ≥4.5:1 硬指标 → 格态三形与微光互辨灰度可辨 → 焦点预算 → 图类型换皮抽测)。**通过 = 砖面形态与色板冻结**。
- **来源**:⚙ 脚本管线自产——样张是验收闸本身,必须按圣经参数画,无复用意义。
- **现状**:验收标准已成文,**测试未跑**。
+99 -100
View File
@@ -1,7 +1,8 @@
# 美术圣经(Art Bible)— Dungeon Sweeper
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.43,历次修订明细见 git 提交史
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.44,历次修订明细见 git 提交史
>
> **定值单点纪律(2026-11-07 用户裁,全文生效)**:本圣经只写概念、规则与方向,**不写具体数值定值**——色值、尺寸、阈值、档位、坐标、帧数等数量面的唯一事实源=执行件:代码常量、机检件与测试面守门件、数据表、golden 基线。本文提及定值时一律写指针句(「定值面=〈执行件〉」);工具与检查件的用法登记面=[art-pipeline-tools](art-pipeline-tools.md)。例外=行业标准的引用名(如 WCAG AA)与数据索引(表路径)。
> **Art Director Sign-Off(AD-ART-BIBLE)**:历次批均未签核——此为 Lean/Solo 模式(非 PHASE-GATE)下的现行治理状态;full 门禁签核时机待用户表态。
> 风格基调:地牢题材但**非暗黑风**——轻快明亮的幻想冒险风,全年龄;像素风;角色 2~3 头身。
> 参考池(用户审阅选定,三者相融):**Into the Breach**(网格信息分层;雷图棋盘呈现基准 = 其战棋地块质感 × 正俯视角,见 §3.2)× **Moonlighter**(明亮像素地牢质感)× **Peglin**(明快全年龄地牢色彩);参考截图存于 `design/art/references/`(三款 × 2 张,与点名池一一对应);Enter the Gungeon 不作参考,反面条款见 §9.2。
@@ -30,7 +31,7 @@
**原则二|明亮为皮,明度分档为骨**(取自 Moonlighter、Peglin;锚定 P1 可读性前提、P4 探险氛围)
取 Moonlighter 的暖质地砖与亲和冒险者气质、Peglin 的明快全年龄洞穴色彩:全局暖倾向、无压抑。可读性由**格底明度分档**承载——已开格(数字所在格)明度走世界底层档(§2 明度分层;格态语义见《排雷玩法》;美术侧据此未开格走受光墙顶档、已开格走挖出空间沉暗档,与 §8.5 图底分离同轴),亮族数字墨直接画在格底上,直画对比 ≥4.5:1 恒成立。**数字色牌为后备手段**——仅复杂格底(物件纹样/变异纹带/微光叠加致格底对比不足)时垫牌后备(画法 §3.3、色值 §4.1)。格子本体美术放开:纹理、材质、装饰变体、类型纹样皆可入画;格底参数域见 §4.1 硬指标(分档明度域、饱和上限),仍避 Boss 禁入色相带。与参考之别:ITB 以半透明压暗板承载信息;本作格底功能分档(信息可读性服务)。验收:机检〈1–8 全档数字对所在已开格底对比 ≥4.5:1〉
取 Moonlighter 的暖质地砖与亲和冒险者气质、Peglin 的明快全年龄洞穴色彩:全局暖倾向、无压抑。可读性由**格底明度分档**承载——已开格(数字所在格)明度走世界底层档(§2 明度分层;格态语义见《排雷玩法》;美术侧据此未开格走受光墙顶档、已开格走挖出空间沉暗档,与 §8.5 图底分离同轴),亮族数字墨直接画在格底上,直画对比恒过 WCAG AA 门槛。**数字色牌为后备手段**——仅复杂格底(物件纹样/变异纹带/微光叠加致格底对比不足)时垫牌后备(画法 §3.3、色值 §4.1)。格子本体美术放开:纹理、材质、装饰变体、类型纹样皆可入画;格底参数域见 §4.1 硬指标(分档明度域、饱和上限),仍避 Boss 禁入色相带。与参考之别:ITB 以半透明压暗板承载信息;本作格底功能分档(信息可读性服务)。验收:机检〈1–8 全档数字对所在已开格底对比过 WCAG AA〉
*设计测试:当格子美术与数字可读性冲突时,先调格底明度档,复杂格底垫色牌后备,不动格子画。*
@@ -50,35 +51,35 @@
**验收项按序判定,第一项不过 = 整张否决(数字可读性定风格,风格服从可读)**:
1. **第一验收项|数字可读性(硬指标,可测)**:1–8 全档数字对其所在**已开格底**直画 WCAG 对比 ≥4.5:1(参数域见 §4.1:已开格底走世界底层档、棋盘数字墨亮族);复杂格底(物件纹样/变异纹带/微光叠加致直画对比不足)启用**色牌后备**,牌墨组合 ≥4.5:1(色牌与牌上深墨族数字的定值见 §4.1),牌缘灰度可分;0.5× 缩放抽检数字仍可辨;纹带/裂纹/巢穴纹/物件纹样禁止侵入数字字形占位区(砖心留白,§3.2)。验收:机检〈1–8 数字对已开格底直画与牌墨组合对比均 ≥4.5:1〉
1. **第一验收项|数字可读性(硬指标,可测)**:1–8 全档数字对其所在**已开格底**直画 WCAG 对比过 AA 门槛(参数域见 §4.1:已开格底走世界底层上沿带、棋盘数字墨亮族);复杂格底(物件纹样/变异纹带/微光叠加致直画对比不足)启用**色牌后备**,牌墨组合同门槛(色牌与牌上深墨族数字定值面=ui_kit 色牌与主墨枚),牌缘灰度可分;缩放抽检数字仍可辨;纹带/裂纹/巢穴纹/物件纹样禁止侵入数字字形占位区(砖心留白,§3.2)。验收:机检〈1–8 数字对已开格底直画与牌墨组合对比均过门槛〉
2. **格态三形可辨(灰度通道)**:未开/已开/雷三态转灰度截图后仍可逐格分类;明度差(墙亮/空间暗)与碎裂形同为合法分类通道,双通道冗余(§3.2 完整度叙事)。装饰变体禁止制造新的分类特征——同一格态下带与不带变体的灰度差异禁止成为三态分类线索。色弱模拟(去色相)下封印印记、巢穴纹不与裂纹混淆。**五组类型微光互辨**:色弱玩家的类型主通道 = 微光,色相+明度双码,微光以明度梯度承载分组(组内不细分,属 §2 信息面层内梯度);微光禁止侵入数字字形占位区,明度梯度禁止压破格底明度档(三态分类不受扰)。验收:目检〈三态灰度逐格可分类;五组微光互辨;色弱模拟下封印印记、巢穴纹不与裂纹混淆〉
3. **焦点预算成立(§3.4)**:任意一格至多一个完整凸形;数字所在格无第二焦点。验收:目检〈任一格至多一个完整凸形,数字所在格无第二焦点〉
4. **图类型换皮抽测(§4.3)**:变体组中数字墨亮族三档、封印黑、危险红、奖励金、小人蓝、数字色牌(后备件)、类型微光五组恒定不动;变体格底仍过第 1、2 项指标。验收:机检〈换皮后不变槽色值恒定,变体格底仍过第 1、2 项〉
**判定与回退**:第 1 项不过时按原则二设计测试回退——先调格底明度档,复杂格底垫色牌后备,禁止缩字号换字形逃避;第 2–4 项不过时修形不修数。样张通过 = 砖面形态与色板冻结;新增图类型/变异色板须重跑本测试(§4.3)。执行时机:正式砖面资产开工前;《HUD框架》以本节为引用依据。验收:机检〈样张机检断言集全绿后方可冻结砖面形态与色板〉
**整屏样张闸**:格子样张验"格",整屏样张验"屏"——战斗屏/关卡屏/菜单屏/营地屏各出一张整屏样张,验收四项:①全部文字(含菜单/说明/tooltip/按钮)对其直接背景 ≥4.5:1(WCAG AA),大字(≥18px 或加粗档)底线 3:1、目标 4.5:1;②明度分层三档带成立(信息面层 > 世界中层 > 世界底层,层间灰度可分);③整屏焦点预算(§3.4:首焦唯一——数字区/立绘/主按钮,无第二焦点竞争;负空间服务焦点,不属空窗);④文字禁直接压纹理底(垫容器或罩层)。验收顺序 = **方向稿目检先行**(防"机检过闸但气质否决"式返工),目检过后机检冻结。执行时机 = 屏级视觉落码开工前;过闸前一切屏级视觉为占位临时态(§7.1 完成条款)。**样张判定物的产出手段与素材输入级别不进圣经定值**——圣经只定样张要验什么,不定样张以何种手段产出、也不定它取哪一级别素材输入。验收:机检〈整屏样张四项断言全绿,且目检先行过审〉
**整屏样张闸**:格子样张验"格",整屏样张验"屏"——战斗屏/关卡屏/菜单屏/营地屏各出一张整屏样张,验收四项:①全部文字(含菜单/说明/tooltip/按钮)对其直接背景过 WCAG AA,大字按 WCAG 大字档(底线与目标分级);②明度分层三档带成立(信息面层 > 世界中层 > 世界底层,层间灰度可分);③整屏焦点预算(§3.4:首焦唯一——数字区/立绘/主按钮,无第二焦点竞争;负空间服务焦点,不属空窗);④文字禁直接压纹理底(垫容器或罩层)。验收顺序 = **方向稿目检先行**(防"机检过闸但气质否决"式返工),目检过后机检冻结。执行时机 = 屏级视觉落码开工前;过闸前一切屏级视觉为占位临时态(§7.1 完成条款)。**样张判定物的产出手段与素材输入级别不进圣经定值**——圣经只定样张要验什么,不定样张以何种手段产出、也不定它取哪一级别素材输入。验收:机检〈整屏样张四项断言全绿,且目检先行过审〉
**战斗一屏样张**:整屏样张闸已过——整屏四项机检全绿,方向稿目检已通过(用户实机目检核销,沿革查 git 提交史)
**样张现状**:格子样张已冻结,冻结凭据 = §4.1/§8.2 定值表;样张 v3 产物原件已丢失、未入 git。现行冻结态:色板与帧数档维持冻结;数字形制 = 亮墨三档直画 + 色牌后备(值见 §4.1);新增图类型/变异色板须重跑本节测试。验收:机检〈冻结项定值均以 §4.1/§8.2 对应 owner 表为准〉
**样张现状**:格子样张已冻结,冻结凭据 = §4.1/§8.2 定值表;样张 v3 产物原件已丢失、未入 git。现行冻结态:色板与帧数档维持冻结;数字形制 = 亮墨三档直画 + 色牌后备(定值面=ui_kit 常量组与帧数守门测试);新增图类型/变异色板须重跑本节测试。验收:机检〈冻结项定值以对应执行件为准(色板=ui_kit 常量组、帧数=守门测试)〉
---
## 2. 氛围与情绪(Mood & Atmosphere)
> 本节服从第 1 节宣言「明快的地牢,轻快的扫荡,仔细的推理」。能量值为全作统一 0–10 刻度:0 静谧,10 沸腾。
> 本节服从第 1 节宣言「明快的地牢,轻快的扫荡,仔细的推理」。能量值为全作统一 0–10 刻度:0 静谧,10 沸腾;八拍只有相对档序不落数值——由低到高:战斗失败 → 挖掘 → 菜单与元进度 → 下探过渡 → Boss 遭遇 → 战斗胜利 → 轮末结算 → 清图奖励(各拍档序见各节「能量」行)。
>
> **明度分层(硬规则)**:明度按视觉层分带——**信息面层**(数字/UI 数据/预告/语义标识)最高、**世界中层**(格底顶面/角色/物件)居中、**世界底层**(背景/纵深/远景/已开空间)可更低;层间明度差服务空间纵深与光照(Moonlighter 式洞穴层次)。类型微光的明度梯度(§4.2)属信息面层内梯度,不扰世界层明度档。验收:目检〈三档明度带层间灰度可分〉
>
> **世界底层两子带**:世界底层拆两条子带——**底层下沿带 L 0.014–0.06**(远景、洞窟纵深、B 区舞台底、屏幕根底)与**底层上沿带 L 0.08–0.14**(已开格底、迷雾记忆态合成底),子带间隔 ≥0.02。拆两子带用于解决**世界底层内部** B 区舞台底(L=0.036)与 D 区已开格底(L≈0.10)同层难辨的问题——两者同属世界底层,单带下跨度 0.126 吃掉层间间隔 0.08,灰度图上会表现为两个不同的底。§1.4 整屏②项约束的是层间可分(底层上沿 0.14 对世界中层下沿 0.22,差 0.08 本就满足),②项不约束同层内可分,故本条不属②项的成立要件,而是世界底层内部的可读性纪律。验收:机检〈同一屏的世界底层成员全部落进两条子带之一,两子带 L 区间不重叠且间隔 ≥0.02〉
> **世界底层两子带**:世界底层拆两条子带——**底层下沿带**(远景、洞窟纵深、B 区舞台底、屏幕根底)与**底层上沿带**(已开格底、迷雾记忆态合成底),两子带区间不重叠、间隔不小于门值。拆两子带解决**世界底层内部** B 区舞台底与 D 区已开格底同层难辨的问题(同属世界底层、灰度图上须可分)。§1.4 整屏②项约束的是层间可分,②项不约束同层内可分,故本条不属②项的成立要件,而是世界底层内部的可读性纪律。**区间数值与间隔门值定值面=图类型色板互辨抽测执行件**(背景侧不侵入上沿带与结构间隔由其执法;已开格底侧由渲染装载的归一化目标常量承载、渲染面对比判据由对比探针兜)。验收:机检〈背景件不侵入上沿带、两子带结构间隔达标(互辨抽测件);渲染面归一化落带(棋盘装载链)〉
### 2.1 挖掘阶段(核心状态,占时最长)
- **主情绪**:棋手式清明专注——视线始终被数字牵引,画面无一处杂音抢焦;久推不生视觉疲劳
- **色彩性格**:暖石色低饱和打底(世界中层),高饱和高亮只属于信息面层(数字与封印印记)
- **氛围形容词**:清爽、井然、可读、耐心
- **能量**:2/10
- **能量**:低位(八拍序第 2)
- **承载元素**:可挖域**接触带呼吸微光**——光画在英雄格周界的接触面上(正交邻墙 = 整条边,斜向邻墙 = 共享角点 + 向两侧各延伸半条边;画法 §3.2,蓝族色 §4.2)——画面里唯一在动的,是玩家的思路。验收:目检〈挖掘期仅接触带微光在动,棋盘与数字静止〉
### 2.2 轮末自动战斗结算
@@ -86,7 +87,7 @@
- **主情绪**:延迟兑现的清算爽感——扫雷之因逐行兑现为战果;完美封印(概念定义与兑付结构见《地图战斗资源》)的高光兑现——结算带高光行,以其为全场喝彩级的最高反馈档
- **色彩性格**:情绪由色相与饱和承载——金橙主导、饱和拉高,明度分层不动;数字色转译为弹道色沿行推进
- **氛围形容词**:酣畅、递进、一气呵成
- **能量**:7/10,随连击爬升
- **能量**:高位(八拍序第 7),随连击爬升
- **承载元素**:兑现光带逐行横扫棋盘,开格化箭雨、印记化暴击砸向敌人,因果全程可见可归因。验收:目检〈兑现光带逐行横扫、因果可见可归因〉
### 2.3 清图奖励与换图
@@ -94,7 +95,7 @@
- **主情绪**:短促丰收——宝箱揭盖式的喜悦,三五秒即收,不拖节奏
- **色彩性格**:全屏饱和峰值:金粒喷泉与彩纸迸发,饱和瞬时拉满后回落;明度分层不动
- **氛围形容词**:丰收、轻快、干脆
- **能量**:8/10,尖峰后速降
- **能量**:全场峰值(八拍序第 8),尖峰后速降
- **承载元素**:最后一格碎砖中喷出的 GP 喷泉,叮当落入 UI 钱袋。验收:目检〈金粒喷泉短促收敛,饱和峰值后回落〉
### 2.4 战斗胜利
@@ -102,7 +103,7 @@
- **主情绪**:从容自信——「我算对了」的盖章确认;克制而非狂欢,胜利属于头脑
- **色彩性格**:暖白与金,不用红与爆炸
- **氛围形容词**:笃定、舒展、体面
- **能量**:6/10
- **能量**:中位(八拍序第 6)
- **承载元素**:棋盘中央落下一枚金色蜡封,碎砖自动拼出胜利纹章。验收:方向性
### 2.5 战斗失败(冒险终结)
@@ -110,7 +111,7 @@
- **主情绪**:温柔的惋惜与「再来一次」的邀请——有分量、不惩罚,像合上一册冒险日志
- **色彩性格**:情绪由色相承载——色相转暖灰掺暮蓝,明度分层不动;全作禁血红与黑场,唯此一拍最静
- **氛围形容词**:惋惜、安静、余温、可再来
- **能量**:1/10
- **能量**:全场最低(八拍序第 1)
- **承载元素**:小人坐在碎砖上摇头掸灰,落下的封印印记逐枚化作光点收回行囊。验收:目检〈无血红与黑场;色相转暖灰掺暮蓝〉
### 2.6 Boss 与精英遭遇
@@ -118,7 +119,7 @@
- **主情绪**:被注视的郑重感——预告更华丽,但预告上格规则不变,掌控仍在玩家
- **色彩性格**:格底保持基准,Boss 专属紫赤为全场唯一占用的色相——郑重感来自色相独占,不来自压暗
- **氛围形容词**:郑重、锋利、仪式感
- **能量**:5/10,静水深流,结算时才沸腾
- **能量**:中位偏下(八拍序第 5),静水深流,结算时才沸腾
- **承载元素**:Boss 影子先于本体爬过棋盘,扫过处短暂留下紫赤足迹(纯视觉预告;是否绑定机制由战斗侧 GDD 定夺)。验收:目检〈紫赤足迹为纯视觉预告;高饱和紫赤仅 Boss 战占用〉
### 2.7 下探过渡(关卡间)
@@ -126,7 +127,7 @@
- **主情绪**:纵深的期待——「下面还有一层」的探险引力,如降落时一瞬失重
- **色彩性格**:整层色板随图类型(board_type)递进换挡,以色相层进预告「更深更险」;世界层明度带允许随深度整体微移(空间纵深表达,非情绪;候选,待整屏样张冻结)
- **氛围形容词**:纵深、期待、换气、进阶
- **能量**:4/10
- **能量**:中位偏下(八拍序第 4)
- **承载元素**:镜头沿竖井匀速下移,两侧砖层色板渐变,预演下一层主色。验收:目检〈下探过渡中砖层色板随图类型渐变〉
### 2.8 菜单与元进度(存档/永久强化)
@@ -134,7 +135,7 @@
- **主情绪**:可靠的营地感——成长可见、可点、可规划,归来即蓄势
- **色彩性格**:全作最暖:烛光黄与木色,中等饱和,无棋盘式高对比
- **氛围形容词**:温暖、笃实、归属
- **能量**:3/10
- **能量**:低位(八拍序第 3)
- **承载元素**:**一张可点击的营地场景图**——远景天空与远山,中景木围墙(密排竖木桩、桩顶削尖、不透缝无横木)与半开的营地大门,近景中央的篝火、左侧锻炉铁砧、右侧帐篷与宝箱、帐篷旁的笔记本,另有木桩与挂在围墙上的布告板;点画面里的物件进入对应界面(冒险/锻造工坊/秘宝匣/生涯记录/天赋树/图鉴/离开营地)。钥石余额常驻画面顶部的一行小 HUD 栏。场景构成、七物件绑定与呈现位见 §6.2。验收:目检〈点营地物件进入对应界面,钥石余额常驻顶部 HUD 栏〉
### 2.9 状态间区分度自检
@@ -164,15 +165,15 @@
- **装饰变体(未开格氛围层)**:覆尘完整砖之上叠加裂纹/碎石斑/物件级点缀等装饰。物件级装饰(小石块/陶片/骨殖等)须走**专属装饰形状家族**(与信息元素形状语言隔离、灰度下不与任何逻辑元素同形),数量配额按图类型定(候选 3–5 种,样张已冻结,§1.4),一律残缺、内凹、低对比而自然后退(§3.4);零信息纪律(分布随机、与雷/安/类型零相关、灰度下禁止制造新分类特征、分布每板一次跨轮不复掷)以原则三为准,此处不赘。验收:目检〈物件级装饰不与任何逻辑元素同形;装饰残缺低对比后退〉 ←原三
- **结果整格表达(已开格)**:已开格按当格结果整格表达(结果清单见原则三);画法——产资源格的家族物件纹样用 §3.1 道具点剪影语言(直线几何体)角嵌于砖缘,砖心与数字字形占位区留白(已开格仍承载数字);危险格巢穴纹较已开格更凶一档,形状+颜色双通道。验收:目检〈产资源格嵌家族纹样且砖心留白;巢穴纹更凶一档〉 ←原三;P3
- **未开格预读通道(微光单通道)**:类型预读 = 类型微光单通道(色相+明度双码,色带 §4.2);色弱类型主通道 = 微光明度梯度(组粒度——组间互辨;§2 微光明度例外);格内零角嵌/箭头/加号类附加形(微光格只留微光)。验收:目检〈微光格内零角嵌/箭头/加号类附加形〉 ←原一;原三
- **封印印记**:封印动作的叙事呈现 = **封印**(玩家可见专名,术语定义见 [术语表](../gdd/术语表.md)「封印」条;动作面见《排雷玩法》)——封印动作落在格上的印记称封印印记。**形 = 法阵**:一圈外环+环内一个十字,十字四端顶到环内沿、与环连成一体——两层构成取法阵通用骨架(外环=圈定范围,环内图形=力量图形,非指特定作品):环=封印圈定,十字=钉住此格。**画法 = 参数化绘制**(着色器按格边实时画环与十字,不出贴图):格边 26–46px 连续可变,任何贴图源都得非整数缩放(32px 源在 28 格缩到 0.875、在 46 格放到 1.44),像素必宽窄不均;参数化按比例画,任意格边清晰。**环外光圈**:印记外面一圈**压暗光**(纯黑只加透明度)——自环外缘起、向外衰减到格边为止、**不外溢邻格**,作用 =「此格被罩住」;禁中心亮、禁色相、禁呼吸。**尺寸定值**见 §8.2「封印印记参数表」(本处不复述数值)。**色** = 封印黑 `#000000`(§4.1),光圈只改 alpha、不新增色。**占位**:印记居格心,环外留 9% 格宽给光圈(见 §8.2);封印印记只出现在未开格,不与数字同格。格内栈位见 §1.2;层序纪律——印记层低于小人,且迷雾态(区外全黑/记忆态)隐藏(§6.5「封印随格隐没」)。封印特效两件:常显形态即本件,施印瞬间未实装。战末金蜡封徽记仍取贴图 `seal_mark.png`(与棋盘侧参数化绘制并存,两处互不依赖)。验收:目检〈环径占格宽 82%±1px;光圈只在环外且不出格;纯黑无色相〉 ←原一;P2
- **封印印记**:封印动作的叙事呈现 = **封印**(玩家可见专名,术语定义见 [术语表](../gdd/术语表.md)「封印」条;动作面见《排雷玩法》)——封印动作落在格上的印记称封印印记。**形 = 法阵**:一圈外环+环内一个十字,十字四端顶到环内沿、与环连成一体——两层构成取法阵通用骨架(外环=圈定范围,环内图形=力量图形,非指特定作品):环=封印圈定,十字=钉住此格。**画法 = 参数化绘制**(着色器按格边实时画环与十字,不出贴图):格边随板型连续可变,任何贴图源都得非整数缩放、像素必宽窄不均;参数化按比例画,任意格边清晰。**环外光圈**:印记外面一圈**压暗光**(纯黑只加透明度)——自环外缘起、向外衰减到格边为止、**不外溢邻格**,作用 =「此格被罩住」;禁中心亮、禁色相、禁呼吸。**尺寸定值**见 §8.2「封印印记参数表」(本处不复述数值)。**色** = 封印黑(§4.1,定值面=ui_kit 封印黑枚),光圈只改 alpha、不新增色。**占位**:印记居格心,环外留一档格宽比例给光圈(定值面=ui_kit 封印常量组,见 §8.2 指针);封印印记只出现在未开格,不与数字同格。格内栈位见 §1.2;层序纪律——印记层低于小人,且迷雾态(区外全黑/记忆态)隐藏(§6.5「封印随格隐没」)。封印特效两件:常显形态即本件,施印瞬间未实装。战末金蜡封徽记仍取贴图 `seal_mark.png`(与棋盘侧参数化绘制并存,两处互不依赖)。验收:目检〈渲染帧量环径占格宽比例与定值面常量一致(±1px 容差);光圈只在环外且不出格;纯黑无色相〉 ←原一;P2
- **可挖域接触带微光(交互反馈层)**:挖掘期,英雄格周界与可挖域(概念见《排雷玩法》动作合法性节;呈现义务见《HUD框架》可挖域指示)的接触面画呼吸微光——正交邻墙 = 该侧整条边,斜向邻墙 = 共享角点 + 向两侧各延伸半条边;光只画英雄格(空间)一侧、不进墙格(与装饰变体零冲突,数字砖心不涉);微光 = 空间的灯光边界(画法规则)。色相 = 蓝族浅一档(§4.2 蓝条;与主角蓝框的分层由样张测试定,§1.4);呼吸 = §2.1 挖掘期唯一在动元素,减动效停格。角点为斜墙与正交墙共享、不逐格归因,逐格指认 = 悬停金框(呈现交互归《HUD框架》悬停指示域)。验收:目检〈微光只画英雄格一侧接触面:正交邻墙整条边、斜向邻墙角点 + 半边〉 ←§2.1;§4.2;P1
- **墙体**:圆角砌块堆叠,禁尖刺装饰——尖刺专属危险语义,装饰禁止伪装逻辑差异。验收:目检〈墙体无尖刺装饰〉 ←原三
- **高墙瓦片体系|术语与定义**:未挖格 = **一整块 32×32 自含凸起岩体**;素材语义名——未开格素材 = **墙瓦片**,已开格素材 = **地面瓦片**。瓦片以自含岩体为单位,Tiny Dungeon 拼块套不进自含岩体定义,不作瓦片参考。验收:目检〈未开格为整块凸起岩体,无拼块接缝感〉 ←原三
- **高墙瓦片体系|边界墨线纪律**:墙瓦片与相邻格分界一律 1px 深墨线、直线贴格边、零锯齿;墨线职责 = 分隔,不追求与地面融合。验收:目检〈分界为 1px 深墨直线贴格边、零锯齿〉
- **高墙瓦片体系|光照纪律(单一北受光)**:北缘 = 墨线内侧 1px 微亮棱(就地取色提亮,禁宽亮带);西/东缘 = 墨线后直进纹理、不加修饰;南缘 = 墨线 + 立面窄暗条(约 1/3 格高,横层理叠石、禁竖条纹栅栏感)。验收:目检〈北缘亮棱、南缘窄暗条;无宽亮带、无竖条纹栅栏感〉
- **高墙瓦片体系|凹角收头**:角点单像素落线;南立面侧凹角加 1px 立面收头——带身与转角竖线同列收尾,禁悬空、禁突出。验收:目检〈凹角收头与转角竖线同列,无悬空突出〉
- **高墙瓦片体系|现行定稿**:`game/assets/art/board/terrain_*`(16 唯一墙瓦片 + 5 地面瓦片变体;词表与查表逻辑落码于 `board_world.gd`)。验收:机检〈terrain_* 素材 16 墙瓦片 + 5 地面变体在库,查表逻辑与词表一致〉
- **高墙瓦片体系|高墙感 D 投影档与整板悬崖**:南临空墙格 = 立面口沿高光 2px `#C9AF83`(201,175,131——代码色 `BRICK`,与掩尘枚同源单点) + 双段暗带(0.16/0.25 格边,黑罩 α0.60/0.82);北邻墙地面格 = 三段渐隐投影(顶带 0.22 格边,α0.28 起);整板悬崖 = 板底/右侧 `DEPTH_PX 8px` 暗面 + 列分隔竖缝 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影(游戏 `board_world.gd` 同款结构件,样张脚本与游戏渲染常量同源)。验收:目检〈南临空墙格呈口沿高光+双段暗带;北邻墙地面格呈三段渐隐投影;整板悬崖结构件齐备〉
- **高墙瓦片体系|术语与定义**:未挖格 = **一整块自含凸起岩体**(源档规格=瓦片资产件本身);素材语义名——未开格素材 = **墙瓦片**,已开格素材 = **地面瓦片**。瓦片以自含岩体为单位,Tiny Dungeon 拼块套不进自含岩体定义,不作瓦片参考。验收:目检〈未开格为整块凸起岩体,无拼块接缝感〉 ←原三
- **高墙瓦片体系|边界墨线纪律**:墙瓦片与相邻格分界一律单像素深墨线、直线贴格边、零锯齿;墨线职责 = 分隔,不追求与地面融合。验收:目检〈分界为单像素深墨直线贴格边、零锯齿〉
- **高墙瓦片体系|光照纪律(单一北受光)**:北缘 = 墨线内侧单像素微亮棱(就地取色提亮,禁宽亮带);西/东缘 = 墨线后直进纹理、不加修饰;南缘 = 墨线 + 立面窄暗条(约三分之一格高的画法比例,横层理叠石、禁竖条纹栅栏感)。验收:目检〈北缘亮棱、南缘窄暗条;无宽亮带、无竖条纹栅栏感〉
- **高墙瓦片体系|凹角收头**:角点单像素落线;南立面侧凹角加单像素立面收头——带身与转角竖线同列收尾,禁悬空、禁突出。验收:目检〈凹角收头与转角竖线同列,无悬空突出〉
- **高墙瓦片体系|现行定稿**:`game/assets/art/board/terrain_*`(墙瓦片与地面瓦片变体在库;词表与变体数定值面=查表逻辑落码件)。验收:机检〈terrain_* 素材与查表逻辑词表一致、变体数相符〉
- **高墙瓦片体系|高墙感 D 投影档与整板悬崖**:南临空墙格 = 立面口沿高光(色=掩尘枚同源单点)+ 双段暗带;北邻墙地面格 = 三段渐隐投影;整板悬崖 = 板底/右侧暗面 + 列分隔竖缝 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影——全部结构件常量与画法落码于棋盘渲染件(样张脚本与游戏渲染常量同源),像素回归由渲染闸 golden 基线盯。验收:目检〈南临空墙格呈口沿高光+双段暗带;北邻墙地面格呈三段渐隐投影;整板悬崖结构件齐备〉
- **变异格形状通道**(双通道之"形",与色无关):底砖圆角外轮廓不变,砖面内缘绘一圈定宽专属几何纹带(纹带形全作不与他类共用),砖心留白予数字与封印印记;验收标准 = **灰度截图下仍可分类**。种类清单 = 地形变异六类型已定稿(地形变异 GDD;荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘):**纹带形按轴只分两种**——伤害轴(荆棘丛/岩浆/落石)= 刺/缺排斥形,信息轴(藤蔓缠绕/烬覆/矿尘)= 遮蔽/缠绕形;同轴跨图类型只做色板变体(§4.3 `variant_tint` 槽),不做新纹形。岩浆纹带橙红须与危险红互辨(变异格不是雷,色相邻近有混淆风险);信息轴遮蔽呈现禁止侵入数字字形占位区(§1.4 验收 1 延伸)。验收:目检〈六类型纹带灰度下仍可分类,同轴不新增纹形;岩浆纹带与危险红互辨〉 ←原一(纹理位次第 4,让位于数字/小人/封印印记);原三
### 3.3 UI 形状语法(方向指导,细则见 §7.1)
@@ -193,49 +194,48 @@
### 4.1 主色板
- **掩尘 `#C9AF83`**|未开格底色,覆尘完整砖:全作的"未知",画面最大沉默面。验收:机检〈未开格底色 = #C9AF83〉 ←原二;§2.1
- **裸土 `#B39A78`**|已开格底色,碎裂裸露:更收更退;明度分层——已开格(挖出的空间)走**世界底层档**,明度低于未开格墙体一档(与 §8.5 图底分离同轴),L 0.08–0.14 带(更高明度底实测达不到 4.5:1,故取本带;样张已冻结,§1.4)。验收:机检〈已开格底 L 落在 0.08–0.14,对亮墨数字 ≥4.5:1〉 ←原三
- **掩尘**|未开格底色,覆尘完整砖:全作的"未知",画面最大沉默面。定值面=ui_kit 掩尘枚(`BRICK`)。验收:机检〈未开格底色与 ui_kit 掩尘枚一致〉 ←原二;§2.1
- **裸土**|已开格底色,碎裂裸露:更收更退;明度分层——已开格(挖出的空间)走**世界底层上沿带**(§2),明度低于未开格墙体一档(与 §8.5 图底分离同轴;更高明度底实测过不了文字对比门槛,故取本带;样张已冻结,§1.4)。验收:机检〈已开格底亮度落世界底层上沿带(定值面=互辨抽测件与渲染归一化常量),对亮墨数字过 WCAG AA〉 ←原三
- **数字墨双色制**:1–8 **不做八色分色**,按密度分三档色温(冷 = 稀疏,暖 = 密集);**字形为唯一数值载体**,色温只作密度氛围。验收:目检〈1–8 数字按密度呈三档色温而非八色〉 ←原一/原二;P3
- **棋盘数字呈现 = 按板自适应三态**:暗纹理板(dungeon 系)= **亮族**三档 1–3 冷亮青白 #D8ECF0/4–5 暖白 #F0E2C8/6–8 金亮 #F8E3A8 直画(判据 = 族最弱成员对 p90 ≥4.5:1 且对均值 ≥2.5:1);双峰纹理板(underdark/deep_underdark 系)= **色牌垫底**(素牌 DIGIT_PLATE + 深墨 #33261B 12:1,纹理免疫——双峰纹理板上任何墨族直画都不可读,渲染帧取证;判据 = 亮深两族皆不过门,深族均值门 3.0);缺盘平色回退态(#B39A78 中明度底)默认深墨直画。选模式管线落码单点 `board_view._digit_ink_mode`(三态:亮直/深直/落牌),机检面 = `terrain_tile_sets_test` 三关呈现模式断言;目视验证面 = board_shot_probe 渲染帧取证(机检≠看得清)。验收:机检〈terrain_tile_sets_test 三关呈现模式断言全绿,board_shot_probe 渲染帧目视复核〉
- **垫牌与 UI 数据墨 = 深墨族 `#33261B` 系**(L≤0.027,§7.2)。验收:机检〈垫牌与 UI 数据墨取深墨族,L≤0.027〉
- **棋盘数字呈现 = 按板自适应三态**:暗纹理板(dungeon 系)= **亮族**三档(冷亮青白/暖白/金亮——1–3/4–5/6–8 密度分档;档值定值面=ui_kit 数字墨三档)直画(判据 = 族最弱成员对 p90 与对均值各自过门槛——门槛定值面=棋盘渲染查表件);双峰纹理板(underdark/deep_underdark 系)= **色牌垫底**(素牌+深墨直画,纹理免疫——双峰纹理板上任何墨族直画都不可读,渲染帧取证);缺盘平色回退态默认深墨直画。选模式管线落码单点 `board_view._digit_ink_mode`(三态:亮直/深直/落牌),机检面 = 三关呈现模式断言;目视验证面 = 渲染取证探针(机检≠看得清)。验收:机检〈三关呈现模式断言全绿,渲染帧目视复核〉
- **垫牌与 UI 数据墨 = 深墨族**(§7.2;定值面=ui_kit 主墨枚)。验收:机检〈垫牌与 UI 数据墨取 ui_kit 主墨枚〉
- **八色弃用**:八色必与红/金/蓝/紫赤语义冲突,故弃。验收:方向性
- **封印黑 `#000000`**|封印宣告色,无色相:玩家的宣告"此格封印"。封印现行 = 无色相黑——紫色与微光蓝族(魔法微光 256° 等)色相冲突,黑色无色相天然避开 300°–345° 禁入带与全部微光色带;未开格墙顶明度 ≈113 对纯黑对比 ≥4.4:1,纯黑实心剪影单靠明度差即成立,不依赖任何浅色细件。封印紫不再用于棋盘(色史归 git 提交史);红族棋盘侧只剩危险红;主角随身背包件为朱红矩形件(人设侧见 character-design),与棋盘封印色脱钩。验收:机检〈封印宣告色 = #000000,未开格墙顶对其对比 ≥4.4:1〉 ←原一;P2
- **危险红 `#A8321F`**|危险色:雷 = 被惊动的巢穴,兑现档红,更深更沉。验收:机检〈危险语义色 = #A8321F〉 ←原三;P2
- **奖励金 `#F0A828`**|已兑现的收益:GP/宝箱/蜡封,全作唯一亮金。验收:机检〈收益语义色 = #F0A828〉 ←P2;§2.3/2.4
- **小人蓝 `#2E86DE`**|小人主色:棋盘唯一"己方",与光标准线同族。验收:机检〈己方语义色 = #2E86DE〉 ←P1;§2.1
- **数字色牌 `#F5EAD3`**|数字底具,**后备手段**:素色暖纸白直角小牌,仅复杂格底(物件纹样/变异纹带/微光叠加致直画对比不足)垫于数字正下方;素面无纹理、不随图类型/装饰变体变。验收:机检〈色牌 L≥0.70,仅复杂格底垫用〉 ←原二
- **收益金亮档 `#E0B860`(GOLD_BRIGHT)**|UI 徽标可读性亮档 token:敌顺位徽标①②③与重甲徽标对舞台底 6.47:1(GOLD_DEEP 3.26:1 不达 §7.2 带,故另立亮档);金族亮档,与奖励金 #F0A828 同族不同岗——奖励金 = 已兑现收益语义(§4.2 金条),本 token 只承载徽标可读性、不占收益语义。GOLD_DEEP/HERO_BLUE 常量本尊不动(standee 意图判据等语义岗现行使用)。验收:机检〈GOLD_BRIGHT 对舞台底 ≥4.5:1〉
- **小人蓝亮档 `#7EBAF0`(HERO_BLUE_BRIGHT)**|魔法护甲徽标对舞台底 5.88:1(HERO_BLUE 3.23:1 不达带,故另立亮档);蓝族亮档,与小人蓝 #2E86DE 同族不同岗——本 token 只承载徽标可读性,不占用「蓝只说己方」的语义。验收:机检〈HERO_BLUE_BRIGHT 对舞台底 ≥4.5:1〉
- **图标槽柔和档 `#806A4E`(SLOT_BACKDROP_SOFT)**|BCard 图标槽底:对米色卡面 PANEL_DATA 3.69:1(深档 SLOT_BACKDROP #3E362C 8.53:1 过强、像硬贴补丁,故槽底另立柔和档),槽内白图标 5.14:1,满足 ≥3:1 图形参考线硬约束;仅 BCard 图标槽换档,B 区状态槽仍用深档 SLOT_BACKDROP。验收:机检〈槽内白图标对槽底 ≥3:1〉
- **群伤微光暗档 `#A61D37`(TG_GLOW_AOE)**|类型微光群伤组的**明度档**(UI token 板,占 1 枚额度,**余量 3→2**):色相 349° 与亮档 `#FF2D55` 零移动,明度落 V=0.65 档——即 §4.2「微光 = 色相+明度双码」里明度侧的落法;与 §4.2「红只说危险」不相撞(微光组色相刻意错开语义红,见 §4.2「类型微光色带」条)。已在役(`ui_kit.gd` 常量与 `type_glow_test.gd` 守门断言),本节为登记转正。验收:机检〈ui_kit.gd TG_GLOW_AOE 与 type_glow_test 断言的 H/S 逐位一致、V 落 0.65 档〉
- **站桩石板地台板身 `#968264`(STAND_STONE)**|战斗屏场景环境子板(分层②,不占 48 token 额度):B 区站桩地台板身与顶缘的材质色,跨三关恒定、不吃 §4.3 `wall_ambient` tint(地台是 §6.1 定死的世界中层承载面,随关卡变会破 §2 明度分层的层间关系)。转正前即在役。验收:机检〈战斗屏场景环境子板色数 ≤32 且本值在册〉
- **营地场景环境子板(分层②,不占 48 token 额度)**:营地场景十层环境色按子板制落地——各层独立量化并集 272 色经最近对合并收敛至 **32 色、违例对 0**,十层按终版色板重量化回写。色值不另立逐值清单,事实源=入包素材 `scene_camp_*` 十件的量化产物;换算与合并过程登记于 artwork 工作区换算式登记。验收:机检〈营地屏唯一色数判据(shot_checker 闸件承载,2026-11-01 用户裁口径)〉
- **重甲冷灰金属材质色 `#868C9A`(ARMOR_PLATE_COLD,token 名暂拟)**|语义/UI token 板(**分层①**,占 1 枚额度;用户裁):重甲档甲材质色;character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王岩石板甲**同引本枚、不另计额度**;材质色跨屏恒定,落分层①不落分层②(环境色才随场景走)。过门情况:第二道门按宽松口径(禁止三通道全 <8)与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 222°,不占红/金/蓝/紫赤/绿语义段、不在 300°–345° 禁入带;材质色不进信息层与语义物件岗)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1(图形 ≥3:1 门槛);相对亮度 L≈0.261 落 §2 世界中层 0.22–0.45 带。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉
- **卓尔浅紫灰皮 `#A79CB8`(DRIDER_SKIN,token 名暂拟)**|语义/UI token 板(**分层①**,占 1 枚额度,**额度用尽**;用户裁):蛛化卓尔精灵上体皮色(体块主色,L≈0.355 落 §2 世界中层带)。过门情况:第二道门同上行口径,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 264°,避开 300°–345° 禁入带,紫赤独占仍归 `#8F2F6A`;不占本节五语义段)。对比实测:对深素底 `#282220` **6.04:1**、对舞台底 `#3E362C` **4.57:1**——**两处均过图形 ≥3:1 门槛**。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉
- **换色合并登记五处(用户裁,部件色落值)**|按本表「不过门即触发换色合并、禁加色绕行」执行,五处**零新增额度**(各件原拟新增候选一律不取):① 主角铲刃浅铁灰(原拟 `#A8AEB8`)→ 并入 `FOG_MEMORY_INK #C4C4C4`,**部件取值 = `#C4C4C4`**;② 主角提灯铜色(原拟 `#C08A3A`)→ 并入 `GOLD_DEEP #B07A14`,**部件取值 = `#B07A14`**;③ 食人魔酋长暖褐皮(原拟 `#B08050` / `#A97C4E`)→ 并入 `暖石 #B8A582`,**部件取值 = `#B8A582`**;④ 石君王灰皮(原拟 `#9A968C` / `#949089`,按**次级皮**口径——板甲视同体块主色、灰皮属次级皮故不受 L 0.22–0.45 约束)→ 并入 `STONE #786E62`,**部件取值 = `#786E62`**;⑤ 轻甲护甲图标木色 `#8A5A34`(深素底下 2.72:1 不过门;原拟新增木色亮档 `#C49A5E`)→ 并入 `WARM_FAINT #CDB88C`,**部件取值 = `#CDB88C`**(8.08:1)。**一色两岗代价已随裁定接受**:① 的 `#C4C4C4` 语义岗 = 迷雾记忆墨(§6.5)、② 的 `#B07A14` 属金族(§4.2 金只说收益与兑现)——两者均作角色随身件材质色用,不进信息层与语义物件岗;③④⑤ 无语义岗冲突。验收:机检〈五处部件取值点全部改指合并目标色,四枚原拟新增候选值零入板〉
- **换色合并登记三处**|按本表「不过门即触发换色合并、禁加色绕行」执行,三处零新增额度:①地台顶缘受光线 `#C4AC84` 已并入 `#C9AF83`(掩尘枚 `BRICK`,与 §8.2 高墙口沿高光同枚)——源常量已删除(全仓零引用,退役断言测试串为预期例外),绘制点全部改指 `#C9AF83`;②地台描边 `#5A4C3A` 已并入 `#4C4038`(代码 `PLAZA_EDGE`,ui_kit 唯一落点)——源常量已删除,绘制点全部改指;③舞台底 `#3E342A`(代码 `STAGE_BG`)→ 并入 `#3E362C`(状态槽底)——源常量已删除(常量表零键),背景资产接管该绘制面,程序化平色缺图回退改指 `SLOT_BACKDROP`(`#3E362C`)。程序化回退绘制与已落合并值的贴图保持一致。验收:机检〈①②两枚源常量全仓零引用,绘制点全部改指合并目标色〉
- **封印黑**|封印宣告色,无色相(定值面=ui_kit 封印黑枚):玩家的宣告"此格封印"。封印现行 = 无色相黑——紫色与微光蓝族色相冲突,黑色无色相天然避开禁入带与全部微光色带;未开格墙顶对纯黑的明度对比实测达标,纯黑实心剪影单靠明度差即成立,不依赖任何浅色细件。封印紫不再用于棋盘(色史归 git 提交史);红族棋盘侧只剩危险红;主角随身背包件为朱红矩形件(人设侧见 character-design),与棋盘封印色脱钩。验收:机检〈封印宣告色与 ui_kit 封印黑枚一致,未开格墙顶对其对比达门槛〉 ←原一;P2
- **危险红**|危险色:雷 = 被惊动的巢穴,兑现档红,更深更沉(定值面=ui_kit 危险红枚)。验收:机检〈危险语义色与 ui_kit 危险红枚一致〉 ←原三;P2
- **奖励金**|已兑现的收益:GP/宝箱/蜡封,全作唯一亮金(定值面=ui_kit 奖励金枚)。验收:机检〈收益语义色与 ui_kit 奖励金枚一致〉 ←P2;§2.3/2.4
- **小人蓝**|小人主色:棋盘唯一"己方",与光标准线同族(定值面=ui_kit 小人蓝枚)。验收:机检〈己方语义色与 ui_kit 小人蓝枚一致〉 ←P1;§2.1
- **数字色牌**|数字底具,**后备手段**:素色暖纸白直角小牌,仅复杂格底(物件纹样/变异纹带/微光叠加致直画对比不足)垫于数字正下方;素面无纹理、不随图类型/装饰变体变(定值面=ui_kit 色牌枚)。验收:机检〈色牌亮度落定值面域,仅复杂格底垫用〉 ←原二
- **收益金亮档 `GOLD_BRIGHT`**|UI 徽标可读性亮档 token:敌顺位徽标①②③与重甲徽标对舞台底过文字对比门槛(深金档不达 §7.2 带,故另立亮档);金族亮档,与奖励金同族不同岗——奖励金 = 已兑现收益语义(§4.2 金条),本 token 只承载徽标可读性、不占收益语义。GOLD_DEEP/HERO_BLUE 常量本尊不动(standee 意图判据等语义岗现行使用)。定值面=ui_kit。验收:机检〈GOLD_BRIGHT 对舞台底过门槛〉
- **小人蓝亮档 `HERO_BLUE_BRIGHT`**|魔法护甲徽标对舞台底过门槛(小人蓝本档不达带,故另立亮档);蓝族亮档,与小人蓝同族不同岗——本 token 只承载徽标可读性,不占用「蓝只说己方」的语义。定值面=ui_kit。验收:机检〈HERO_BLUE_BRIGHT 对舞台底过门槛〉
- **图标槽柔和档 `SLOT_BACKDROP_SOFT`**|BCard 图标槽底:对米色卡面柔和可辨(深档过强、像硬贴补丁,故槽底另立柔和档),槽内白图标过图形参考线门槛;仅 BCard 图标槽换档,B 区状态槽仍用深档 SLOT_BACKDROP。定值面=ui_kit。验收:机检〈槽内白图标对槽底过门槛〉
- **群伤微光暗档 `TG_GLOW_AOE`**|类型微光群伤组的**明度档**(UI token 板,占 1 枚额度):色相与亮档零移动,明度落暗档——即 §4.2「微光 = 色相+明度双码」里明度侧的落法;与 §4.2「红只说危险」不相撞(微光组色相刻意错开语义红,见 §4.2「类型微光色带」条)。已在役(ui_kit 常量与微光守门测试),本节为登记转正。定值面=ui_kit 常量+微光守门断言。验收:机检〈ui_kit TG_GLOW_AOE 与守门断言 H/S 逐位一致、明度落暗档〉
- **站桩石板地台板身 `STAND_STONE`**|战斗屏场景环境子板(分层②,不占 token 额度):B 区站桩地台板身与顶缘的材质色,跨三关恒定、不吃 §4.3 `wall_ambient` tint(地台是 §6.1 定死的世界中层承载面,随关卡变会破 §2 明度分层的层间关系)。转正前即在役;定值面=ui_kit。验收:机检〈战斗屏场景环境子板色数不超子板上限且本值在册〉
- **营地场景环境子板(分层②,不占 token 额度)**:营地场景十层环境色按子板制落地——各层独立量化并集经最近对合并收敛至子板上限、违例对清零,十层按终版色板重量化回写。色值不另立逐值清单,事实源=入包素材 `scene_camp_*` 十件的量化产物;换算与合并过程登记于 artwork 工作区换算式登记。验收:机检〈营地屏唯一色数判据(shot_checker 闸件承载,2026-11-01 用户裁口径)〉
- **重甲冷灰金属材质色 `ARMOR_PLATE_COLD`**|语义/UI token 板(**分层①**,占 1 枚额度;用户裁):重甲档甲材质色;character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王岩石板甲**同引本枚、不另计额度**;材质色跨屏恒定,落分层①不落分层②(环境色才随场景走)。过门情况:第二道门按宽松口径与在册色逐一比对过门;§4.2 语义检查过门(不占语义段、不在禁入带;材质色不进信息层与语义物件岗);亮度落 §2 世界中层带。定值面=ui_kit。验收:机检〈本值入板后互查守门件账外零新增近色对〉
- **卓尔浅紫灰皮 `DRIDER_SKIN`**|语义/UI token 板(**分层①**,占 1 枚额度,**额度用尽**;用户裁):蛛化卓尔精灵上体皮色(体块主色,落 §2 世界中层带)。过门情况:第二道门同上行口径过门;§4.2 语义检查过门(避开禁入带,紫赤独占仍归 Boss 枚;不占本节五语义段);对深素底与舞台底均过图形门槛(实测在案)。定值面=ui_kit。验收:机检〈本值入板后互查守门件账外零新增近色对〉
- **换色合并登记(沿革)**|历次不过门换色合并的部件取值与源常量退役记录归 git 提交史(角色部件五处+地台/舞台底三处;现行部件色全部落 ui_kit 常量与素材件,一色两岗代价已随裁定接受);纪律同色板增量条「不过门即换色合并、禁加色绕行」。验收:机检〈部件取值点指向在册常量,退役源常量全仓零引用〉
**对比硬指标(可测)**:数字可读性由**格底明度分档**承载——棋盘数字亮墨 **L≥0.75** 对**已开格底 L 0.08–0.14** ⇒ 直画对比 **≥4.5:1 恒成立**(WCAG AA,样张逐组合抽测冻结);**色牌后备**:色牌素色恒定 **L≥0.70**、牌上数字深墨 **L≤0.027** ⇒ 任意牌墨组合 ≥4.5:1(实测样例:#33261B/#F5EAD3 = 12.3:1)。未开格底槽(含全部图类型)与类型微光、已开格底之间存在**相对亮度与相对饱和关系**——禁止底槽吞没微光环、禁止底槽与已开格底同档;本节只定这层关系,阈值与准入判定由图类型色板互辨抽测的执行件承载(用法登记见 [art-pipeline-tools](art-pipeline-tools.md))。已开格底走世界底层档(见上)。物件识别不依赖格底(§5.1 轮廓通道),封印印记、金色不作识别依赖。验收:机检〈亮墨对已开格底 ≥4.5:1;未开格底对微光环与对已开格底的相对亮度关系经互辨抽测准入;任意牌墨组合 ≥4.5:1〉 ←原二;地形变异 AC-9
**对比硬指标(可测)**:数字可读性由**格底明度分档**承载——棋盘数字亮墨对已开格底(世界底层上沿带)直画对比**恒过 WCAG AA 门槛**(样张逐组合抽测冻结);**色牌后备**:色牌素色与牌上深墨的任意组合同门槛(组合实测在案)。未开格底槽(含全部图类型)与类型微光、已开格底之间存在**相对亮度与相对饱和关系**——禁止底槽吞没微光环、禁止底槽与已开格底同档;本节只定这层关系,阈值与准入判定由图类型色板互辨抽测的执行件承载(用法登记见 [art-pipeline-tools](art-pipeline-tools.md))。已开格底走世界底层上沿带(见上)。物件识别不依赖格底(§5.1 轮廓通道),封印印记、金色不作识别依赖。验收:机检〈亮墨对已开格底过 WCAG AA;未开格底对微光环与对已开格底的相对亮度关系经互辨抽测准入;任意牌墨组合过门槛〉 ←原二;地形变异 AC-9
**色板增量纪律(数值状态 = 待定现用)**:全作色板硬上限 **48 色**(防色板无限膨胀的封口条款;**额度已用尽、余量 0**,后续余量以色板检查器实报为准);新色入板须同时过两道门:①§4.2 语义检查(不占语义色段/禁入带);②**与既有任一色的 RGB 三通道差禁止全部 <8/255**——即三通道里至少一通道 ≥8/255 即过门,「三通道差全部 <8」才算不过门(条文原写的「三通道差 ≥8/255」有「逐通道全过」与「禁止全灭」两种互斥读法,前者下现行色板 247 对不达标、与本节自认的「现行即执法」合规状态不能同真,故取后者;用户裁)。**额度已用尽:后续任何新增须先压缩或合并既有色**——按本节「额度不足时呈报作者」口径呈报,**压缩或合并哪几枚由作者裁,本节不代裁、不预指对象**。反例实证:#3A2E22 ↔ #362B20 三通道差均 <5,肉眼不可辨,同板共存只增噪。不过门即触发「换色合并」(把意图色并进最近既有色),**禁加色绕行**;加色义务同时登记于本表修订。**「待定现用」态释义**:数值**现行即执法**(色板检查器按此拦,§8.3)——非候选(不存在"等冻结"空窗)、非死规(后续需求引入时可变);调整走本节修订并登记,改值 = 修订不是违约。验收:机检〈色板总数 ≤48;新色入板过两道门〉
**色板增量纪律(数值状态 = 待定现用)**:全作色板硬上限(数值定值面=色板检查器常量;**额度已用尽、余量以色板检查器实报为准**);新色入板须同时过两道门:①§4.2 语义检查(不占语义色段/禁入带);②**与既有任一色的 RGB 三通道差禁止全部小于近色容差**——三通道至少一通道达容差即过门,容差定值面=token 互查守门件与色板检查器(条文两种读法的取舍=「禁止全灭」,用户裁)。**额度已用尽:后续任何新增须先压缩或合并既有色**——按本节「额度不足时呈报作者」口径呈报,**压缩或合并哪几枚由作者裁,本节不代裁、不预指对象**。不过门即触发「换色合并」(把意图色并进最近既有色),**禁加色绕行**;加色义务同时登记于本表修订。**「待定现用」态释义**:数值**现行即执法**(机检件按此拦,§8.3)——非候选(不存在"等冻结"空窗)、非死规(后续需求引入时可变);调整走本节修订并登记,改值 = 修订不是违约。验收:机检〈色板总数不超上限;新色入板过两道门(互查守门件账外零新增)〉
- **换色合并欠账清单(全板重扫 6 对不达标,逐对清偿)**:`#18120C` ↔ `#181410`、`#33261B` ↔ `#362B20`、`#362B20` ↔ `#3A2E22`、`#3E362C` ↔ `#3E3731`、`#3E4048` ↔ `#3F4147`、`#453723` ↔ `#4A3B2A`——六对按「不过门即换色合并」纪律逐对清偿(并进最近既有色);清偿前该对不视作合规,清偿动作落本节修订。**本节所举反例 `#3A2E22` ↔ `#362B20` 正在这 6 对之内**,与本口径自洽。验收:机检〈全板色对中三通道差全部 <8/255 的对数 = 0〉
- **换色合并欠账(已迁出)**:全板重扫六对不达标的清偿义务已迁登记处——债务登记=待办清单「色板近色欠账六对清偿」条;常量面豁免账=token 互查守门件(账内标〔欠账〕的对),素材侧伙伴对随素材批清偿。清偿前各对不视作合规,清偿动作=逐对从豁免账移除。验收:机检〈互查守门件账外零新增近色对〉
- **色板分层**:色板分两层管理——① **语义/UI token 板**:全作共享,硬上限 **48 色**,管 UI 语义色、墨色、材质色,跨屏恒定;② **场景环境子板**:**每屏一套,≤32 色,允许跨屏不共享**(环境色 = 天空、地面、植被、石材、火焰等随场景走的颜色)。新增环境色仍须过两道门(§4.2 语义检查 + 与既有任一色 RGB 三通道差禁止全部 <8/255),但**不占用 48 token 额度**;不过门照旧走「换色合并」,**禁加色绕行**。单张 PNG 的像素域色数上限 **≤32 色**另由 `standee_asset_check` 执法(按单图像素域取值方式计数,与本表 token 计数互不干扰)。额度不足时向作者报告,由作者决定压缩或合并既有色。验收:机检〈token 板 ≤48;每屏环境子板 ≤32〉
- **整屏有效色数总闸(色板第三层,2026-11-02 用户裁)**|整屏的色板纪律裁判面=**画面上成片出现的颜色数(有效色数)**,不是逐像素去重总数:多源并集与程序混合(压暗遮罩/软阴影/渐变/tween 中间帧)使逐像素色数随素材与渲染状态大幅漂移(实测同屏不同时点差一至九倍),不可治理也不承载观感。整屏唯一色数只保留「渲染真实发生」的存在性地板(地板值归闸件承载);**色板纪律的上限闸=每屏有效色数 ≤128**(**待定现用**——现行即执法、修订走登记,释义同色板增量纪律条)。构成推导源:双环境层 32×2+token 板 48+混合容差 16(←本条色板分层;推导源非额度分配,各层额度照旧独立执法)。超限处置沿色板增量纪律:先合并压缩既有色再进,禁加色绕行。有效色的测量口径(面积阈值等实现参数)归色数检查器承载,本圣经不载。验收:机检〈各屏有效色数 ≤128,口径=色数检查器现行定义〉
- **色板分层**:色板分两层管理——① **语义/UI token 板**:全作共享,硬上限(定值面=色板检查器常量),管 UI 语义色、墨色、材质色,跨屏恒定;② **场景环境子板**:**每屏一套、独立上限(定值面同上),允许跨屏不共享**(环境色 = 天空、地面、植被、石材、火焰等随场景走的颜色)。新增环境色仍须过两道门(§4.2 语义检查 + 三通道差门),但**不占 token 额度**;不过门照旧走「换色合并」,**禁加色绕行**。单张 PNG 的像素域色数上限另由素材检查件执法(按单图像素域取值方式计数,与本表 token 计数互不干扰)。额度不足时向作者报告,由作者决定压缩或合并既有色。验收:机检〈token 板与每屏环境子板各不超各自上限(检查器承载)〉
- **整屏有效色数总闸(色板第三层,2026-11-02 用户裁)**|整屏的色板纪律裁判面=**画面上成片出现的颜色数(有效色数)**,不是逐像素去重总数:多源并集与程序混合(压暗遮罩/软阴影/渐变/tween 中间帧)使逐像素色数随素材与渲染状态大幅漂移(实测同屏不同时点差一至九倍),不可治理也不承载观感。整屏唯一色数只保留「渲染真实发生」的存在性地板(地板值归闸件承载);**色板纪律的上限闸=每屏有效色数上限**(**待定现用**——现行即执法、修订走登记;数值定值面=整屏检查器常量)。构成推导源:双环境层+token 板+混合容差(←本条色板分层;推导源非额度分配,各层额度照旧独立执法)。超限处置沿色板增量纪律:先合并压缩既有色再进,禁加色绕行。有效色的测量口径(面积阈值等实现参数)归色数检查器承载,本圣经不载。验收:机检〈各屏有效色数不超上限,口径=色数检查器现行定义〉
### 4.2 语义色彩规则
> **适用域**:本节「X 只说 Y」约束**信息层**(格内信息/UI 数据/预告/语义标识)与**语义物件**(GP=收益金、血条=危险红等);**纯环境氛围**(背景/装饰变体/远景/非语义物件)不受色相独占约束,改受 §3.4 焦点预算与低饱和后退约束(不抢读即可用色)。禁入带 300°–345°:信息层与语义物件禁入不变;环境层可入但限低饱和(高饱和紫赤仍 Boss 独占,§2.6)。验收:目检〈信息层与语义物件不落禁入带、不占语义独占色相;环境层用色低饱和〉
- **红只说危险**:危险红 = 兑现档,红族单档。禁(信息层域):红禁止用于奖励、装饰性标识与常规 UI(微光群伤组除外——见「类型微光色带」条,其色相刻意错开语义红)。验收:目检〈信息层域红色仅出现在危险语义与微光群伤组〉 ←原三;P2;§2.1
- **血条填充 = 危险红 `#A8321F`**(语义物件显式落法):血条是本节适用域点名的语义物件,填充色族一律归危险红,不因敌我分色、不因关卡换族。读数不依赖填充色对比——血量数字 11px 压 `HP_BAR_BACK` 素牌(§7.4 豁免①,14.3:1),填充只承载「剩余比例」的形状语义。**蓝族引擎默认近似值 `#689CE8` 登记为违例值、已退役**:它同时撞本条「血条=危险红」与蓝条「蓝禁止表示敌方危险」,禁再入任何血条绘制点。验收:机检〈血条填充绘制点取值为 #A8321F 且全仓零 #689CE8 字面量〉
- **血条填充 = 危险红**(语义物件显式落法;定值面=ui_kit 危险红枚):血条是本节适用域点名的语义物件,填充色族一律归危险红,不因敌我分色、不因关卡换族。读数不依赖填充色对比——血量数字压 `HP_BAR_BACK` 素牌(§7.4 豁免①,对比实测在案),填充只承载「剩余比例」的形状语义。**蓝族引擎默认近似值登记为违例值、已退役**:它同时撞本条「血条=危险红」与蓝条「蓝禁止表示敌方危险」,禁再入任何血条绘制点(退役字面量的零引用判据面=对比探针断言)。验收:机检〈血条填充绘制点取 ui_kit 危险红枚且全仓零退役字面量〉
- **金只说收益与兑现**(奖励、结算、胜利)。禁(信息层与语义物件域):金禁止作危险障碍色、不上格底、不作日常 UI 强调(防通胀;微光通用增益组的芥末黄属「类型微光色带」条色带,非收益语义金)。验收:目检〈信息层与语义物件域金色仅承载收益与兑现〉 ←P2;P3;§2.2–2.4
- **蓝只说己方与冷静信息**(小人、光标、工具信息——含可挖域接触带呼吸微光,蓝族浅一档 `#D6ECFF`)。禁(信息层域):蓝禁止表示敌方危险;暮蓝 `#5A6C8C` 为失败独占(§2.5),只作全屏氛围,不作物件色。验收:目检〈信息层域蓝色仅承载己方与冷静信息;敌方危险无蓝色〉 ←P1;§2.5
- **紫赤只说 Boss 与精英** `#8F2F6A`(色相 323°):郑重来自色相独占,不来自压暗。禁:**HSV 色相 300°–345° 为信息层与语义物件禁入带**——UI、粒子、类型微光、语义物件及图类型色板信息面禁止落入;环境层(背景/装饰)可入但限低饱和,高饱和紫赤仍 Boss 独占。验收:机检〈信息层与语义物件色值色相不落 300°–345°;高饱和紫赤仅 Boss 战〉 ←§2.6;原三
- **蓝只说己方与冷静信息**(小人、光标、工具信息——含可挖域接触带呼吸微光,蓝族浅一档;浅档与暮蓝定值面=ui_kit,暮蓝为失败独占 §2.5)。禁(信息层域):蓝禁止表示敌方危险;暮蓝只作全屏氛围,不作物件色。验收:目检〈信息层域蓝色仅承载己方与冷静信息;敌方危险无蓝色〉 ←P1;§2.5
- **紫赤只说 Boss 与精英**(定值面=ui_kit 紫赤枚):郑重来自色相独占,不来自压暗。禁:**HSV 高饱和紫赤域为信息层与语义物件禁入带**(带域定值面=互辨抽测件门值)——UI、粒子、类型微光、语义物件及图类型色板信息面禁止落入;环境层(背景/装饰)可入但限低饱和,高饱和紫赤仍 Boss 独占。验收:机检〈信息层与语义物件色值色相不落禁入带;高饱和紫赤仅 Boss 战〉 ←§2.6;原三
- **绿只说自然生机**(环境植被;恢复类状态若有则用绿——待增益状态定夺)。**例外:类型微光治疗组**(见下条「类型微光色带」)。禁(信息层域):绿禁止承载逻辑状态(微光色带除外),禁止与红构成唯一区分对。验收:目检〈信息层域绿色仅微光治疗组;绿红不构成唯一区分对〉 ←原三
- **类型微光色带 = 格面类型先验专用逻辑色带**(未开格类型预读的色彩通道;概念定义、可见范围与生命周期见《HUD框架》「未开格类型微光」节):未开格类型微光的信息色彩按以下五组执行——**通用增益组**(attack/defense/weaken/action/gp 五族)芥末黄 `#D6C13A`(≈52°)、**治疗组**(heal)黄绿 `#5CB83A`(≈104°)、**穿刺组**(pierce)青 `#2E9E9E`(≈180°)、**魔法组**(magic)紫罗兰 `#7B5BD6`(≈256°)、**群伤组**(blast)绯红 `#FF2D55`(≈349°,刻意避开危险红色相段与 300°–345° 禁入带)。验收:机检〈类型微光五组色值与本表一致〉
- **微光呈现参数**:内缘带状泛光 α170、带宽 cell÷8(亮度不压格底明度档,§2 微光例外);组间互辨以抽检核对。验收:机检〈微光泛光 α=170、带宽=cell÷8〉
- **类型微光色带 = 格面类型先验专用逻辑色带**(未开格类型预读的色彩通道;概念定义、可见范围与生命周期见《HUD框架》「未开格类型微光」节):未开格类型微光的信息色彩按五组执行——**通用增益组**(attack/defense/weaken/action/gp 五族)芥末黄、**治疗组**(heal)黄绿、**穿刺组**(pierce)青、**魔法组**(magic)紫罗兰、**群伤组**(blast)绯红(刻意避开危险红色相段与禁入带);族↔色对应与五组色值定值面=ui_kit 微光常量组+微光守门测试(冻结表随件)。验收:机检〈类型微光五组色值与 ui_kit 微光常量逐位一致(守门测试)〉
- **微光呈现参数**:内缘带状泛光+按格边比例的带宽(亮度不压格底明度档,§2 微光例外);参数定值面=ui_kit 微光呈现常量(守门测试锚定)。组间互辨以抽检核对。验收:机检〈微光泛光强度与带宽与 ui_kit 常量一致(守门测试)〉
- **微光分域纪律与双码**:微光色相只承载类型先验,不迁移复用为物件/阵营/UI 语义色;微光 = **色相+明度双码**——明度梯度承载分组(组间五色相、组内不细分:通用增益组五族同色相、不承诺组内分型;§2 微光明度例外:梯度禁止压破格底明度档与三态分类);色弱玩家的类型主通道 = 微光双码(组粒度:组间五色相 + 各组一档明度互辨)。验收:目检〈五组微光两两互辨,明度梯度不压破格底明度档与三态分类〉 ←§4.6.3
- **金/红兼作极性色相槽(§4.6)**:极性(概念定义与符号矩阵见《地图战斗资源》极性提案)的视觉取色只在这两族间——有利兑付 = 金族,有害兑付 = 红族,不新增语义色。验收:目检〈极性视觉取色仅金/红两族〉 ←§4.6;原二
@@ -245,14 +245,14 @@
- `tile_closed` 未开底:L 与饱和同 §4.1 硬指标,避禁入色相带。验收:机检〈各图类型 tile_closed 底色 L 与饱和落 §4.1 未开格底带〉
- `tile_open` 已开底:世界底层档(L 带见 §4.1)、饱和 ≤0.55,避禁入色相带。验收:机检〈各图类型 tile_open 底色 L 落 §4.1 已开格底带〉
- `wall_ambient` 墙雾氛围 tint:可带主题色相,L≥0.30。验收:机检〈wall_ambient tint L≥0.30〉
- `wall_ambient` 墙雾氛围 tint:可带主题色相、亮度不低于地板(定值面=互辨抽测件门值)。验收:机检〈wall_ambient tint 过互辨抽测件亮度地板门〉
- `variant_tint` 变异纹带染槽:只改色相不改纹形(纹带形按轴两分,见 §3.2 变异格形状通道;种类 = 地形变异六类型已定稿)。验收:目检〈同纹带形跨图类型仅色相不同〉
**不变槽**:棋盘数字墨亮族三档、数字色牌(后备件)、封印黑、危险红、奖励金、小人蓝、紫赤、绿、类型微光五组——**信息与语义层全图类型恒定**;换挡动色相饱和,格底两档明度关系(墙亮/空间暗)全图类型恒定(§2 明度分层)。新增色板须重跑 §1.4 格子样张(灰度可辨+对比抽测)。验收:机检〈换皮前后不变槽色值逐项一致〉 ←原三/原二;地形变异 AC-9
### 4.4 UI 色板(方向指导,细则迁 §7.2)
**方向指导**:数据素面的墨来自世界的墨——UI 数字/进度/准线一律主墨 `#33261B` 系;容器按场景穿材质色(营地全作最暖、战斗中性石);UI 不新增语义色,强调沿用 §4.2。色板细则成文于 **§7.2**。验收:方向性 ←原一;§2.8
**方向指导**:数据素面的墨来自世界的墨——UI 数字/进度/准线一律主墨系(定值面=ui_kit 主墨枚);容器按场景穿材质色(营地全作最暖、战斗中性石);UI 不新增语义色,强调沿用 §4.2。色板细则成文于 **§7.2**。验收:方向性 ←原一;§2.8
### 4.5 色弱安全清单
@@ -378,36 +378,36 @@
### 6.1 战斗舞台背景(B 区环境)
- **双舞台常驻下的 B 区环境**:战斗画面区(站桩立绘所在)的背景 = 明亮地窟,与 §1 风格基调同源——暖倾向、无压抑;背景整体**低对比自然后退**(§3.4 焦点预算延伸):背景禁止构成完整凸形、禁止抢 B 区立绘与 D 区数字的焦点,识别层级恒为 立绘 > 背景。验收:目检〈背景无完整凸形、立绘最抢眼〉
- **舞台正面目标**:B 区 = **地窟看台**——立绘脚下地台/落影承载(世界中层),背景环境层低饱和后退、明度走世界底层档;角色禁止直接贴平色底。规格与终值归整屏样张闸(§1.4)冻结。**地台面上零文字**——暖白 `#F0E2C8` 对地台板身 `#968264` 实测仅 2.89:1,已越 §7.2 的 4.5:1 硬指标,落法按 §7.2「文字禁直接压纹理底」(垫容器、素牌或罩层),非新条款;站桩文字位改垫素底或落进结算明细带(实装=站桩名字行垫 `HP_BAR_BACK` 深档素底牌、文字基线上移至地台顶上方)。验收:目检〈立绘脚下有地台/落影,非贴平色底〉+机检〈B 区站桩文字位正下方像素非地台板身色 #968264〉
- **舞台正面目标**:B 区 = **地窟看台**——立绘脚下地台/落影承载(世界中层),背景环境层低饱和后退、明度走世界底层档;角色禁止直接贴平色底。规格与终值归整屏样张闸(§1.4)冻结。**地台面上零文字**——暖白墨对地台板身实测对比不达 §7.2 硬门槛,落法按 §7.2「文字禁直接压纹理底」(垫容器、素牌或罩层),非新条款;站桩文字位改垫素底或落进结算明细带(实装=站桩名字行垫 `HP_BAR_BACK` 深档素底牌、文字基线上移至地台顶上方)。验收:目检〈立绘脚下有地台/落影,非贴平色底〉+机检〈B 区站桩文字位正下方像素非地台板身色(定值面=ui_kit 地台枚)〉
- **明度分层适用**:空间纵深与洞穴感走明度分层——世界底层档、光照氛围、色相饱和与形体承载(§3.2 同款逻辑)。验收:方向性
- **图类型联动**:背景层按 `board_type` 选三张变体(`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`,方向取 §6.3 三关色板候选);**背景不再走 §4.3 `wall_ambient` tint**(该槽保留给棋盘/世界的墙雾氛围,避免对三张背景二次染色)。紫赤仅 Boss 战允许短暂进入背景氛围纹样(§2.6 色相独占的舞台侧延伸,高饱和独占不变),非 Boss 战高饱和紫赤禁入。验收:机检〈背景吸色无非 Boss 高饱和紫赤;背景素材不引用 `wall_ambient` 槽〉
- **场景构成(2026-10-31 用户裁)**:B 区舞台从远到近分三段——**顶部空区**:洞顶以上的昏暗空间,只留深色空区,**不画钟乳石、吊锥、悬挂物或任何可辨形状**;**远景(纵深洞厅)**:不是贴墙的后壁,按远/中/近三层组织——远层暗剪影(远处洞口/通道、层叠岩体、洞底轮廓)、中层主要细节层(岩台、岩柱、凹壁、裂缝)、近层左右暗色岩框;剪影被中层部分遮挡、不贴顶、不孤立,**禁贴墙感、禁单件圆柱贴顶、禁砖石墙/规则砌缝/方整石块**;三关母题(地精=支洞/木栈道/木桩围栏;卓尔=巨柱/石笋/蛛网/螺旋塔剪影/巨菇/石桥;灰矮人=石笋城郭/棱角石厅/石桥/矿道口/烟囱塔)见 `battle-stage-prompts.md` §3.2;**分隔带**:远壁根部与近景地面之间一条不规则碎石带/阴影缝,边界清楚但不笔直,**禁瓷砖缝、踢脚线、规则台阶**;**近景地面**:干净压实泥土为主,全幅只零星几颗小石、散点分布,中央平缓留空给角色站位,**禁成排/成堆碎石、满铺砂砾、泥点噪声、瓷砖、规则铺装、草、木地板**。纵深与三段构图归 §1.4 样张;逐条要素、分层提示词与否定后缀 = `battle-stage-prompts.md`(本文件不重复维护)。验收:目检〈顶部无钟乳石/吊锥;远景有纵深、非贴墙;无孤立圆柱贴顶;近景为泥土碎石;分隔带不规则;中央无大障碍〉
- **图层归属(2026-10-31 用户裁)**:背景层 = 三关变体 `scene_stage_bg_dungeon/_underdark/_deep_underdark.png`(顶部空区+纵深洞厅远景,不画近景地面;按 `board_type` 选一张);近景地面 = **独立连续地面层** `scene_stage_ground.png`(泥土/砂砾/碎石地面,全宽、底边贴 B 区底、顶缘即分隔带;高度读布局表 `ground_h`,字段值 100);现有每角色小石台 `scene_stage_plaza.png` 保留,叠在连续地面之上。连续地面层与小石台**三关共用**、跨关恒定、**不吃 `wall_ambient` tint**(世界中层承载面随关卡换明度会破 §2 层间关系);背景三张变体各自带关卡色族,不再叠 tint。验收:机检〈三张背景文件名带 board_type 后缀;地面层/小石台文件名无 board_type 后缀;背景与地面层均不引用 `wall_ambient` 槽〉
- **资产渠道与契约**:✦ 插画级(演出类场景贴图,清单 §4 联动登记);战斗一屏样张(§1.4 清单 1.2)含背景出样。**背景层 = 三张按关卡变体** `scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`(源 = 基准屏宽 × `stage_h`,读布局表 `game/data/tables/battle_layout.tres`;显示 1×;按 `board_type` 选图;**不走 `wall_ambient` tint**);三张共用本节构图规则,仅岩体形态与色族按 §6.3 三关方向不同。**背景只画顶部空区+纵深洞厅远景,不画近景地面**:结算期明细带整条压住 B 区底带(带高 = `log_band_h_settle`,读布局表),近景地面在独立层;画进背景等于画一件永远看不见、且会随背景变体重复的东西。**连续地面层** = `scene_stage_ground.png`(源 = 基准屏宽 × `ground_h`,读布局表;显示 1×;三关共用、跨关恒定、不吃 tint);地面层是极宽薄条,出图与后处理按 `battle-stage-prompts.md` §2.2 的工艺(可平铺纹理条/最宽档裁切,禁横向拉伸)。**光柱不迁入背景**:三张背景均不画光柱/光带/光束/光晕与任何光源实体,明暗只由岩体层理与暗部承载;原四柱程序层与平色底已退役(背景资产接管该绘制面,平色缺图回退改指状态槽底色)。资产已入包;出图工单 = `battle-stage-prompts.md`,交付记录见本节「B 区舞台背景与共用地面的交付绑定」。验收:目检〈三关背景可辨为不同洞窟,非同一图换色;远景有纵深、非贴墙;无孤立圆柱贴顶;背景无地台/地面结构件、无砖石墙、无瓷砖地面、无光柱/光带;地面层为泥土/砂砾/碎石〉
- **B 区舞台背景与共用地面的交付绑定**:三张背景与一张地面已按本节契约入包 `game/assets/art/scene/`——`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png` 均 1280×252、不透明全幅、单张 ≤32 色、按 `board_type` 选图;`scene_stage_ground.png` 1280×100、顶缘以上透明、单张 ≤32 色、三关共用。地面按作者裁保留候选 v12b 原亮度(实测不透明域 L≈0.132,低于 §2 世界中层 0.22–0.45,登记为作者例外;后续调亮归调参/替换,不重开设计);背景实测 L:dungeon 0.0148、underdark 0.0132、deep_underdark 0.0111(后两者低于世界底层下沿带下限 0.014 不超过 0.003,登记读数)。验收:机检〈四件文件名与尺寸逐位相符;地面顶缘以上 alpha=0、不透明域 ≤32 色;背景不透明全幅 ≤32 色〉+目检〈三关可辨、无光柱、地面读作泥土〉。参考指针:`asset-path-map.md` `scene/` 行、`battle-stage-prompts.md` §2/§4。
- **近景地面与地台走独立件**:连续地面层 `scene_stage_ground.png` 与角色脚下小石台 `scene_stage_plaza.png` 均为独立层,三关共用、跨关恒定。小石台源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形(规格见 §8.2);连续地面层的顶缘即分隔带(不规则碎石/阴影缝,不是直线亮边)。独立的两条理由——① 三张背景按关卡变体,地面若画进任一背景就得三张各画一遍、且三关站位面会漂移;② 结算期明细带整条压住底带(带高读 `log_band_h_settle`),地面在独立层才能跨关恒定并保持世界中层承载面不变。小石台先保留,是否退役归后续裁决。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉+目检〈连续地面为泥土碎石、顶缘不规则〉
- **B 区舞台背景与共用地面的交付绑定**:三张背景与一张地面已按本节契约入包 `game/assets/art/scene/`——三件背景不透明全幅、单张色数不超上限、按 `board_type` 选图;`scene_stage_ground.png` 顶缘以上透明、三关共用(尺寸定值面=布局表 `stage_h`/`ground_h` 与素材件本身)。地面按作者裁保留候选 v12b 原亮度(实测低于 §2 世界中层带,登记为作者例外;后续调亮归调参/替换,不重开设计);背景实测亮度读数定值面=互辨抽测件子带门输出(读数随件落盘)。验收:机检〈四件文件名与尺寸逐位相符(尺寸读布局表);地面顶缘以上 alpha=0、不透明域色数不超上限;背景不透明全幅色数不超上限〉+目检〈三关可辨、无光柱、地面读作泥土〉。参考指针:`asset-path-map.md` `scene/` 行、`battle-stage-prompts.md` §2/§4。
- **近景地面与地台走独立件**:连续地面层 `scene_stage_ground.png` 与角色脚下小石台 `scene_stage_plaza.png` 均为独立层,三关共用、跨关恒定。小石台源档与顶缘受光线规格定值面=入包素材件(九宫格横向拉伸、受光线不随拉伸变形,规格见 §8.2);连续地面层的顶缘即分隔带(不规则碎石/阴影缝,不是直线亮边)。独立的两条理由——① 三张背景按关卡变体,地面若画进任一背景就得三张各画一遍、且三关站位面会漂移;② 结算期明细带整条压住底带(带高读 `log_band_h_settle`),地面在独立层才能跨关恒定并保持世界中层承载面不变。小石台先保留,是否退役归后续裁决。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒定(定值面=素材件)〉+目检〈连续地面为泥土碎石、顶缘不规则〉
### 6.2 营地场景
- **情绪与色域**:承载 §2.8——全作最暖:烛光黄 `#F6C667` × 木色 `#8A5A34`(§7.2),中等饱和,无棋盘式高对比。
- **场景构成**:一张可点击的营地场景图(1280×800,与工程档同幅面)。远景=天空与远山;中景=**独立成层的木围墙**(密排竖木桩、桩顶削尖、不透缝无横木)与**半开的营地大门**;近景=中央篝火、左侧锻炉铁砧、右侧帐篷与宝箱、帐篷旁的笔记本,另有木桩与挂在围墙上的布告板。**中景带自底部往上约 2/3 处起**;**近景物件可覆盖围墙,唯一例外=中间门洞必须留空、不被任何物件遮挡**。七个可点物件的功能绑定归 `camp.md`,本节只定画法。
- **情绪与色域**:承载 §2.8——全作最暖:烛光黄(`CANDLE`)× 木色族(材质族名;烛光黄 token 定值面=ui_kit,木色随场景子板与内联用色,§7.2),中等饱和,无棋盘式高对比。
- **场景构成**:一张可点击的营地场景图(与工程基座档同幅面)。远景=天空与远山;中景=**独立成层的木围墙**(密排竖木桩、桩顶削尖、不透缝无横木)与**半开的营地大门**;近景=中央篝火、左侧锻炉铁砧、右侧帐篷与宝箱、帐篷旁的笔记本,另有木桩与挂在围墙上的布告板。**中景带位置定值归坐标表**(`camp-scene-prompts.md`,本节只定构图关系);**近景物件可覆盖围墙,唯一例外=中间门洞必须留空、不被任何物件遮挡**。七个可点物件的功能绑定归 `camp.md`,本节只定画法。
- **图层拆分(10 张)**:场景按「远景/中景/近景要素各自成层」拆——`scene_camp_bg` 背景层(z0,不透明全幅)=天空+远山+整片地面+门洞内一条通向远处的小路;`scene_camp_wall` 围墙层(z1,透明底)=横贯全宽密排木桩墙(左右两段)+两根略高的门柱,**门洞处留透明缺口**透出背景层的小路;`scene_camp_board` 布告板(z2)、`scene_camp_gate` 门扇(z3)、`scene_camp_dummy` 木桩/`scene_camp_forge` 锻炉/`scene_camp_tent` 帐篷(z4)、`scene_camp_chest` 宝箱/`scene_camp_notebook` 笔记本(z5)、`scene_camp_campfire` 篝火(z6,最前)=八个物件层,各透明底单件一张。**帐篷**为承载件、不可点。围墙独立成层的好处:桩高可单独锁死、门洞做透明缺口、背景层不混入暖木色。提示词与坐标 = `camp-scene-prompts.md`,消费常量 = `asset-path-map`。
- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序)。背景层由**远景片 `bg_far`(2560×734)与地面片 `bg_floor`(2560×866)两片出图、按 y734 拼成一张**——整张一次出图时模型把远山挤到画面下半部,被围墙挡住后完全消失(实测三张里两张山体上缘落在墙顶以下)。接缝整条落在围墙背后,画面无接缝。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条裁,不做全幅(全幅约 3.9 MB 显存,细条约 0.35 MB);**实装落盘矩形 `(0, 203, 1280, 164)`、底锚 y367**(桩身 150px、门柱 164px 终稿锁定值,落带内〔围墙带 (0,203,1280,164)〕)。
- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序——落盘矩形、底锚与桩/柱高的定值面=坐标表与落盘件)。背景层由**远景片与地面片两片出图、按地平线拼成一张**——整张一次出图时模型把远山挤到画面下半部,被围墙挡住后完全消失(实测三张里两张山体上缘落在墙顶以下)。接缝整条落在围墙背后,画面无接缝。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条裁,不做全幅(全幅显存开销远大于细条)。
- **色彩与氛围依据**:营地整体偏暖、安全温馨,与冒险中的地下城形成对比;现行口径 = 本文件 §2.8「全作最暖」与本节「情绪与色域」条,远景淡而退后、近景暖调为主。本节不复述色值;新增环境色按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门)。
- **交互四态(零新素材,全部程序化)**:悬停=**轮廓亮边 + 浮动**(浮动须整像素吸附);按下=位移 1px;**禁用/未解锁=降明度 + 去饱和**(§2 已缩窄至情绪域,状态表达不受限),**仅锻炉(锻造工坊)与宝箱(秘宝匣)两件会有此态**;已解锁=常态。
- **钥石余额**:常驻画面顶部的一行小 HUD 栏(高 48px,**浮层覆盖,不挤压画面**)。栏体底=`CAMP_HEADER_BAND` `#6E4526`(§7.2 五 token 对齐表在册色)× 不透明度 0.80;栏内只钥石徽章一件、右位顶格,左位不放件。呈现定值的唯一事实源=[camp](../ux/camp.md) §顶栏,本节不复述判据。验收:目检〈顶栏成一条可辨窄带,徽章落在带内〉
- **钥石余额**:常驻画面顶部的一行小 HUD 栏(**浮层覆盖,不挤压画面**)。栏体底=`CAMP_HEADER_BAND`(§7.2 五 token 对齐表在册色)× 半透明档;栏内只钥石徽章一件、右位顶格,左位不放件。呈现定值的唯一事实源=[camp](../ux/camp.md) §顶栏(栏高、透明度与栏体色派生定值面=ui_kit),本节不复述判据。验收:目检〈顶栏成一条可辨窄带,徽章落在带内〉
- **事实源边界**:解锁条件/价格/存档写入归元进度 GDD 与 `MetaProgression`;素材命名与路径归 `asset-path-map`;清单登记归 `art-assets-checklist` §3.5。
- **已裁(2026-11-01 用户裁)**:① **营地环境子板色值**——不前置拍板:量化场景实际用色后按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门);② **门扇与门洞的高宽比例**——门扇贴图 240×138(锁定 240×147),随门洞 y283–367 压扁重画,坐标按门洞 x520–760 对齐;③ **帐篷的落地尺寸**——251×170 落位 (982, 335),上端遮住围墙下部。
- **已裁(2026-11-01 用户裁)**:① **营地环境子板色值**——不前置拍板:量化场景实际用色后按 §4.1 场景环境子板条款登记(每屏一套、独立上限、过 §4.2 语义检查与三通道差门两道门);② **门扇与门洞的高宽比例**——门扇随门洞压扁重画(尺寸与坐标定值面=坐标表落盘值);③ **帐篷的落地尺寸**(定值面同上,上端遮住围墙下部)。
### 6.3 三关图类型色板候选(board_type 换挡方向)
- **模板与不变槽**:换皮只换 §4.3 四槽(`tile_closed`/`tile_open`/`wall_ambient`/`variant_tint`),信息与语义层全图类型恒定——本节的三关两槽终值**已冻结**。**冻结口径(本节不抄色值字面量)**:各关 `tile_closed` 终值=该关在役墙瓦片三块底型件(素砖/裂纹/碎石斑)顶面受光档的实测最亮值,`wall_ambient` 取同关同槽值(两槽同值;同属 §4.1 分层②场景环境子板,零新增色值、不占 48 额度);实测值与准入判定只在执行件里算,执行件用法登记见 [art-pipeline-tools](art-pipeline-tools.md)。**冻结凭据**=「三关色相 × 五组类型微光」互辨抽测闭合(机检 17 项 0 红+目检四条全过;抽测样图与 2026-11-05 出图件同哈希,目检面未重跑)+ §1.4 格子样张重跑机检 30/31 绿(唯一红灯=改前/改后对拍一件,因在途素材区无改前基线件、属素材区环境坑不属色板回归,沿革查 git 提交史)——砖面形态与色板维持冻结。验收:机检〈三关行两槽终值与互辨抽测执行件的实测读数同值(该件三行铺底代表值判定全过),且本节三关行不含色值字面量〉
- **三关背景变体**:§6.1 的三张背景取本节三关方向作为岩体形态、剪影语言与色族差异(dungeon 暖石棕+地精巢穴支洞/木栈道/木桩围栏;underdark 冷蓝灰+卓尔巨柱/石笋/蛛网/螺旋塔剪影/巨菇/石桥;deep_underdark 灰黑+灰矮人石笋城郭/棱角石厅/矿道口/烟囱塔);背景不复用 `wall_ambient` tint(该槽作用于棋盘/世界),背景色值归战斗屏场景环境子板。验收:目检〈三关背景可辨为不同洞窟,非同一图换色〉
- **深度轴叙事**(§2.7 下探过渡):色相层进预告「更深更险」,明度档不动——
- **dungeon 地精洞窟**(第一关):现行掩尘系暖石棕(`#C9AF83` 基)即基准档,`wall_ambient` 暖棕;
- **underdark 幽暗地域**(第二关;方向:**冷调幽暗**):主调**灰白蓝**候选(低饱和蓝灰域,`tile_closed`),少量紫黑倾向点缀——紫系取紫罗兰域(≈256°)候选,禁入带 300°–345° 不变;`wall_ambient` 冷蓝灰;
- **deep_underdark 灰矮人矿城**(第三关;方向:**灰黑主调 + 矿脉金属色点缀**候选,守 §4.1 明度地板 L≥0.30):矿脉点缀走金属质感族(冷银/铜灰候选)——「金属色」以材质感承载,奖励金亮金仍禁上格底(§4.2),不占用收益语义金;`wall_ambient` 铁灰。
- **共同纪律**:三套候选色相均须与五组类型微光色带(§4.2)抽测互辨(格底与微光同在未开格面,邻近色相有吞没风险);避 300°–345° 禁入带;L≥0.30、饱和 ≤0.55(§4.1 硬指标)。
- **dungeon 地精洞窟**(第一关):现行掩尘系暖石棕(掩尘枚基)即基准档,`wall_ambient` 暖棕;
- **underdark 幽暗地域**(第二关;方向:**冷调幽暗**):主调**灰白蓝**候选(低饱和蓝灰域,`tile_closed`),少量紫黑倾向点缀——紫系取紫罗兰域(微光魔法组同域)候选,禁入带不变;`wall_ambient` 冷蓝灰;
- **deep_underdark 灰矮人矿城**(第三关;方向:**灰黑主调 + 矿脉金属色点缀**候选,守 §4.1 明度地板):矿脉点缀走金属质感族(冷银/铜灰候选)——「金属色」以材质感承载,奖励金亮金仍禁上格底(§4.2),不占用收益语义金;`wall_ambient` 铁灰。
- **共同纪律**:三套候选色相均须与五组类型微光色带(§4.2)抽测互辨(格底与微光同在未开格面,邻近色相有吞没风险);避禁入带;亮度地板与饱和上限同 §4.1 硬指标(门值定值面=互辨抽测件)。
### 6.4 关卡间下探过渡
@@ -418,10 +418,10 @@
> **白话**:战斗棋盘不再整板可见——只有以角色为中心的菱形灯光区看得清,区外没开过的格子沉入全黑,开过的格子留下灰阶的「记忆」。像在洞穴里举灯探索。机制规则(可见性/生命周期/纯呈现纪律)的现行事实源 =《HUD框架》「视野迷雾:菱形灯光区与黑暗边界」节(全项目唯一事实源,引用只指路),该节点名「黑暗区域渲染规格(暗淡态明度、迷雾过渡)归 art-bible」,本节即其承载——只管"怎么画",不复述机制。纯呈现层:格态、数字真值、清图判定零影响;零素材新增(全部程序化遮罩/调制);类型微光语义零改动。
- **菱形灯光区(遮罩几何)**:灯光区 = 以角色所在格为中心、**曼哈顿距离 ≤ LIGHT_RADIUS** 的格集,区内照常渲染。LIGHT_RADIUS 走表值/常量参数化,**基准 8**——现行事实源「灯光区起步半径=微光环 8 格」的落码取值(半径数值沿微光「周围 8 格」的 8 起步,实测后可调)。**两圈分立注**:类型微光作用圈 = 英雄贴身 8 邻格(与可挖域同圈,现行事实源《HUD框架》「未开格类型微光」节),**不随灯光区扩**(权威文档配套裁决)——灯光区只裁可见性,微光锚仍是可挖域,两圈几何分立、半径参数互不读写。提灯插值位:FOG_LANTERN_BONUS = **+2**(flat 整数档,权威文档配套裁决;落码常量名 `board_view.gd FOG_LANTERN_BONUS`),**已接效果入库**(载体=秘宝·同调位 fog_lantern「魔法提灯」行,组合根每战装配链显式重算接线;呈现画法零改动——本节只管"怎么画",机制现行事实源仍归《HUD框架》)。边界随角色格位逐格重算,无半径插值动画。←现行事实源;§2 光照氛围允许域
- **菱形灯光区(遮罩几何)**:灯光区 = 以角色所在格为中心、**曼哈顿距离 ≤ 灯光半径**的格集,区内照常渲染。灯光半径走表值/常量参数化(半径定值面=棋盘渲染常量——沿微光「周围 8 格」的圈起步,实测后可调)。**两圈分立注**:类型微光作用圈 = 英雄贴身邻格圈(与可挖域同圈,现行事实源《HUD框架》「未开格类型微光」节),**不随灯光区扩**(权威文档配套裁决)——灯光区只裁可见性,微光锚仍是可挖域,两圈几何分立、半径参数互不读写。提灯插值位:FOG_LANTERN_BONUS(flat 整数档,权威文档配套裁决;定值面=棋盘渲染常量),**已接效果入库**(载体=秘宝·同调位 fog_lantern「魔法提灯」行,组合根每战装配链显式重算接线;呈现画法零改动——本节只管"怎么画",机制现行事实源仍归《HUD框架》)。边界随角色格位逐格重算,无半径插值动画。←现行事实源;§2 光照氛围允许域
- **区外未开格:全黑不渲染(不透明档,照抄现行事实源)**:现行事实源原文「区外**未开格=全黑不渲染**」——不透明纯黑(L=0),**非高遮蔽半透档**。理由注记(为何不用高遮蔽档):①三档信息阶梯干净——未开格不可见=零信息、记忆格=弱信息、活格=全信息,叠读不打架;②高遮蔽档下砖面纹理隐约残留,与「类型微光=未开格唯一信息通道」(§4.2/§4.6.3)冲突——纹理残影泄格面观感;③现行事实源验收线「区外未开格不可见」须二值态才能逐格断言。←现行事实源;§4.2
- **区外已开格:暗淡记忆态(灰显可读档)**:画法 = **地板纹理原样 + 灰罩压顶**——纹理直画后 `FOG_MEMORY_PLATE #3A3A3A` α0.66 灰罩盖顶,素材零改动(原「程序化素色记忆板平涂」已弃用);格内元素灰阶随罩隐现:**记忆墨 #C4C4C4(中性灰 L≈0.55)**。双峰板色牌格在记忆态**退牌归板**——牌面并入记忆态、数字以记忆墨直画。**封印印记不在记忆态面**:印记只落在未开格,区外未开格全黑——印记随格隐没、灯光区移回复显(纯呈现,封印数据零影响,现行事实源的显式推论)。←HUD框架 可访问性基线;§4.1;§3.2
- **记忆态可读性判据**:数字对合成底**归一后(真实渲染面)三关 ≥4.5:1**(WCAG 硬指标;合成底 L1 #4C4038/L2 #3F4147/L3 #3E4048;行值与素材随动,测点=ui_contrast_probe 迷雾段)。**归一注**:装载亮度归一是现行生产路径(`board_view._normalize_floor_luma`),原图均值≠渲染面,复算须落归一后底。可辨性自查(三通道,随样张/实机自检):①对全黑未开格——合成底 #3E3731(L≈0.036)对 L0,实机目检常光档可分(暗房档一并抽检);②对灯光区内活态已开格——主判据=数字墨灰度差(记忆墨 L0.55 对亮墨三档 L≥0.75 / 色牌 #F5EAD3 L≈0.83,灰度 ΔL≥0.20)+ 色相通道(记忆态近中性灰,对活态暖底暖墨);③格态三形在记忆态保持灰度可辨——形通道经纹理+灰罩形态不变,沿 §1.4 验收 2 同源判据。验收:机检〈ui_contrast_probe 迷雾段记忆墨对比 ≥4.5:1〉←§1.4
- **区外已开格:暗淡记忆态(灰显可读档)**:画法 = **地板纹理原样 + 灰罩压顶**——纹理直画后 `FOG_MEMORY_PLATE` 灰罩盖顶(定值面=ui_kit 迷雾常量组),素材零改动(原「程序化素色记忆板平涂」已弃用);格内元素灰阶随罩隐现:**记忆墨**(定值面=ui_kit 迷雾记忆墨枚,中性灰档)。双峰板色牌格在记忆态**退牌归板**——牌面并入记忆态、数字以记忆墨直画。**封印印记不在记忆态面**:印记只落在未开格,区外未开格全黑——印记随格隐没、灯光区移回复显(纯呈现,封印数据零影响,现行事实源的显式推论)。←HUD框架 可访问性基线;§4.1;§3.2
- **记忆态可读性判据**:数字对合成底**归一后(真实渲染面)三关过 WCAG AA**(合成底行值与素材随动——素材侧色即迷雾合成底件;测点=ui_contrast_probe 迷雾段)。**归一注**:装载亮度归一是现行生产路径(棋盘装载链归一化目标常量),原图均值≠渲染面,复算须落归一后底。可辨性自查(三通道,随样张/实机自检):①对全黑未开格——合成底对 L0,实机目检常光档可分(暗房档一并抽检);②对灯光区内活态已开格——主判据=数字墨灰度差(记忆墨中性灰对亮墨三档与色牌暖纸白;灰度差门槛定值面=对比探针)+ 色相通道(记忆态近中性灰,对活态暖底暖墨);③格态三形在记忆态保持灰度可辨——形通道经纹理+灰罩形态不变,沿 §1.4 验收 2 同源判据。验收:机检〈ui_contrast_probe 迷雾段记忆墨对比过门槛〉←§1.4
- **迷雾过渡边:硬边(逐格二值)**:灯光区边界 = **整格二值切换**(区内全渲染 / 区外全黑或记忆态),**不做渐变过渡带、不做半透明晕边**。理由:①边界是信息边界不是氛围晕——渐变中间态 =「看得见但看不清」,破数字可读硬指标与记忆态明度档;②现行事实源验收断言(边界格呈态、两态逐位一致)须格级二值可判;③与砖面整格表达(§3.2 高墙瓦片体系)、ITB 格内信息分层气质同轴。无动画,减动效无涉。←现行事实源;§1.2 原则一;§3.2
- **与结算期去饱和的叠加共存**:结算期去饱和偏移(settlement_fx_view,同族先例)与迷雾调制叠加规则 = **记忆态为终态档**——区外已开格在结算期保持记忆态档、**不再叠加**结算去饱和(灰显已含去饱和语义,二次调制无信息增量且明度不可控);灯光区内格照常吃结算去饱和;全黑格两态无差。叠加态随实施批共存校验 + 探针断言(provisional,实机目检可代拍)。验收:机检〈叠加态下记忆态灰显不被二次调制〉
@@ -436,33 +436,33 @@
**半拟物:容器穿戏服,数据素面。**面板=石板圆角矩形(与地砖同圆角率,全 UI 恒定),按钮=凸圆角的"可按的砖"(按压态=下沉一档,运动手段 §2),仪式性确认(胜利等)=圆形蜡封(呼应 §2.4);数字框、准线、进度条一律直角细线、无纹理;**数字色牌 = 直角小素牌**(后备件)——宽随数字位、无纹理无装饰,仅复杂格底兜底时垫于数字正下方一层(色值 §4.1),属"须精确的信息"侧、走直角律。判据:圆角=可触摸的物件,直角=须精确的信息。与参考分界:取 ITB 的信息分层,弃其冷硬斜切 HUD;取 Moonlighter 的木石亲和,不做全拟物。验收:目检〈面板圆角/按钮凸圆角/数据直角三态可辨〉
- **极性强调冗余**(§4.5⑦):UI 红/金强调对必须补图标+文案冗余;破坏性确认与常规确认禁止同位(位置通道)。验收:目检〈红/金强调位有图标+文案,破坏性确认独立位〉
- **圆角率单点注记**:容器/按钮圆角值收敛为全站唯一 `RADIUS_OBJECT = 5`(ui_kit 单点;面板与按钮同圆角率即满足本节「全 UI 恒定圆角率」);数据框/数字牌/AP 点阵/准线/血条维持 0 直角;**例外三件保留**=标题屏底座椭圆 17/结算金印 200(圆形蜡封)/状态脉冲环 100(圆形)。验收:机检〈ui_kit 圆角取值仅 RADIUS_OBJECT 与例外三件〉
- **九宫格切片注记**:panel 石皮 `PANEL_SLICE = 16`(button 维持 8、仪式框维持 12——素材 panel_stone/button_stone 均 48×48 不动);`panel_skinned` 工厂内 **content margin clamp**=低于切片的分量自动抬到切片(石框纹理不吃内容;工厂单点,调用点零改)。验收:机检〈九宫格面板切片 16、边角无错位〉
- **圆角率单点注记**:容器/按钮圆角值收敛为全站唯一 `RADIUS_OBJECT`(ui_kit 单点;面板与按钮同圆角率即满足本节「全 UI 恒定圆角率」);数据框/数字牌/AP 点阵/准线/血条维持直角;**例外三件保留**(标题屏底座椭圆/结算金印圆形蜡封/状态脉冲环圆形——取值定值面=ui_kit 例外常量组)。验收:机检〈ui_kit 圆角取值仅 RADIUS_OBJECT 与例外三件〉
- **九宫格切片注记**:panel 石皮 `PANEL_SLICE`(button/仪式框各维持其档——素材件不动;切片值定值面=ui_kit 切片常量组);`panel_skinned` 工厂内 **content margin clamp**=低于切片的分量自动抬到切片(石框纹理不吃内容;工厂单点,调用点零改)。验收:机检〈九宫格面板切片与 ui_kit 常量一致、边角无错位〉
- **资产渠道**:♻ 九宫格面板/按钮改色过复用闸优先(清单 §0),⚙ 兜底;样式终稿随 §1.4 样张闸后定稿。验收:方向性
- **占位完成条款**:程序化占位 = **临时态**,任何屏的终稿闸 = §1.4 整屏样张过闸;占位态禁止跨里程碑。验收:目检〈过闸屏无程序化占位残留〉
- **实现侧边界**:样式收敛 ui_kit;ui_kit 的工程契约归《HUD框架》,本节不重述。
### 7.2 UI 色板细则(自 §4.4 迁入)
**全局文字可读性硬指标**:**一切文字**(含菜单/说明/tooltip/按钮/底栏,无区域例外)对其直接背景 **≥4.5:1**(WCAG AA);大字(≥18px 或加粗档)底线 3:1、目标 4.5:1;**文字禁直接压纹理底**——垫容器或罩层。**站桩石板地台面同理**(显式落法):地台板身 `#968264` 是 §6.1 定死的世界中层承载面,暖白 `#F0E2C8` 对其实测仅 2.89:1,文字禁直接压地台面——须垫容器、素牌或罩层,或落进结算明细带的素底。核验闸 = §1.4 整屏样张。验收:机检〈ui_contrast_probe 全文字位 ≥4.5:1;B 区站桩文字位正下方像素非地台板身色 #968264〉
**全局文字可读性硬指标**:**一切文字**(含菜单/说明/tooltip/按钮/底栏,无区域例外)对其直接背景过 **WCAG AA**;大字按 WCAG 大字档(底线与目标分级);**文字禁直接压纹理底**——垫容器或罩层。**站桩石板地台面同理**(显式落法):地台板身 `STAND_STONE`(定值面=ui_kit)是 §6.1 定死的世界中层承载面,暖白墨对其实测不达门槛,文字禁直接压地台面——须垫容器、素牌或罩层,或落进结算明细带的素底。核验闸 = §1.4 整屏样张。验收:机检〈ui_contrast_probe 全文字位过门槛;B 区站桩文字位正下方像素非地台板身色(定值面=ui_kit 地台枚)〉
**数据素面的墨来自世界的墨**:UI 数字、进度、准线一律主墨 `#33261B` 系——棋盘与面板读同一种墨;容器穿木石材质色,数据只穿墨。**营地与棋盘**:菜单容器背景用全作最暖的烛光黄 `#F6C667` 与木色 `#8A5A34`(§2.8;场景构成 §6.2);战斗容器转中性石色,防暖色渗入棋盘分走数字对比预算——氛围色向可读色让路。UI 不新增语义色,一切强调沿用 §4.2。**暗底呈现态双色墨制**(样张冻结):暗底系(已过/未来/候选/Boss 方块、暗数据框)图标与读数一律暖白 `#F0E2C8`(WARM)、亮底(当前金 `#F0A828`)转深墨 `#181410`(INK_ROUTE)——各态对比 ≥4.5:1;已过节点暗金冻结 `GOLD_DONE #68562C`(专用呈现态值;旧 GOLD_DIM 对双色墨不达标、已退出该呈现位);Boss 描边 = 紫赤 2px + 外缘 1px 深墨环(灰度冗余通道——§4.2 色相独占本色不变,§4.5 灰度可分类承载)。验收:机检〈暗底/亮底各态文字对比 ≥4.5:1〉
**数据素面的墨来自世界的墨**:UI 数字、进度、准线一律主墨系——棋盘与面板读同一种墨(定值面=ui_kit 主墨枚);容器穿木石材质色,数据只穿墨。**营地与棋盘**:菜单容器背景用全作最暖的烛光黄与木色(§2.8;场景构成 §6.2;烛光黄 token 定值面=ui_kit `CANDLE`,木色随场景子板);战斗容器转中性石色,防暖色渗入棋盘分走数字对比预算——氛围色向可读色让路。UI 不新增语义色,一切强调沿用 §4.2。**暗底呈现态双色墨制**(样张冻结):暗底系(已过/未来/候选/Boss 方块、暗数据框)图标与读数一律暖白、亮底(当前金)转深墨(各态对比过门槛;各态呈现态值——含已过节点暗金专用态——定值面=ui_kit 暗底呈现态常量组);Boss 描边 = 紫赤细边 + 外缘深墨环(灰度冗余通道——§4.2 色相独占本色不变,§4.5 灰度可分类承载)。验收:机检〈暗底/亮底各态文字对比过门槛〉
- **琥珀双岗注记**:主操作色与收益金分轨——主按钮/候选节点/钥石徽章底用烛光黄 `#F6C667`(CANDLE,独立 token),奖励数字/钥石读数/地图「当前位置」仍独占 §4.1 奖励金 `#F0A828`。烛光黄族身兼「主操作 + 收益邻近氛围」双岗系主动取舍,非疏忽,防回改。底色三件套:BG_ROOT `#3A2E22`/BG_OVERLAY `#362B20`/BG_BRIGHT `#453723`(配色总纲「提暖提亮禁近黑」);暖米族 WARM_SOFT `#E8D5A8`/WARM_FAINT `#CDB88C`(「米色去灰」)。验收:方向性
- **色板五件对齐注记(来源 = 原型 demo)**:数据板 `PANEL_DATA #E9D9B8`/板线 `PANEL_BORDER #786E58`/状态槽底 `SLOT_BACKDROP #3E362C`/血条深底 `HP_BAR_BACK #282220`/营地头带 `CAMP_HEADER_BAND #6E4526` 五 token 取值向原型 v2.1 对齐(Δ≤6/255 目视不可辨)。色板唯一来源 = ui_kit 单点不变;原型文件只读不改(artwork 红线)。验收:机检〈ui_kit 五 token 与本表一致〉
- **琥珀双岗注记**:主操作色与收益金分轨——主按钮/候选节点/钥石徽章底用烛光黄(CANDLE,独立 token),奖励数字/钥石读数/地图「当前位置」仍独占 §4.1 奖励金。烛光黄族身兼「主操作 + 收益邻近氛围」双岗系主动取舍,非疏忽,防回改。底色三件套(`BG_ROOT`/`BG_OVERLAY`/`BG_BRIGHT`)与暖米族(`WARM_SOFT`/`WARM_FAINT`)定值面=ui_kit(配色总纲「提暖提亮禁近黑」「米色去灰」)。验收:方向性
- **色板五件对齐注记(来源 = 原型 demo)**:数据板 `PANEL_DATA`/板线 `PANEL_BORDER`/状态槽底 `SLOT_BACKDROP`/血条深底 `HP_BAR_BACK`/营地头带 `CAMP_HEADER_BAND` 五 token 取值向原型对齐(容差内目视不可辨;容差定值面=ui_kit 对齐注记)。色板唯一来源 = ui_kit 单点不变;原型文件只读不改(artwork 红线)。验收:机检〈ui_kit 五 token 与对齐注记一致〉
### 7.3 布局栅格
- **结构**:双舞台三区(B 战斗画面/C 数据框/D 棋盘;字母保持不重编)为结构冻结项,分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`,分区尺寸与像素级裁决归 battle.md(HUD框架只载 1280×800 基座口径,不复写数值)。验收:机检〈三区结构常驻〉
- **栅格规则(候选)**:面板间距/内边距按 4px 步进档(8/12/16/24 候选),全 UI 恒定;数据区直角细线不占圆角预算。终值归样张。验收:目检〈间距落在步进档〉
- **结构**:双舞台三区(B 战斗画面/C 数据框/D 棋盘;字母保持不重编)为结构冻结项,分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`,分区尺寸与像素级裁决归 battle.md(HUD框架只载基座档口径,不复写数值)。验收:机检〈三区结构常驻〉
- **栅格规则(候选)**:面板间距/内边距按步进档(步长与档位候选,定值面=ui_kit 间距常量或样张冻结),全 UI 恒定;数据区直角细线不占圆角预算。终值归样张。验收:目检〈间距落在步进档〉
### 7.4 字体与字号
- **字体**:全局一套像素字,单套即终稿——缝合像素字体 Fusion Pixel(OFL,已接入 `game/assets/fonts/ui_font_fusion_pixel_zh_hans.ttf`),拉丁字符与数字沿用其自带拉丁字形,不另设拉丁专件(现状即终稿;旧拉丁候选 Kenney Fonts 已弃;生产工单=清单 §3.6);墨色走主墨系(§7.2);换字体 = 全局决策。验收:机检〈主题字体指向 Fusion Pixel 件〉
- **字号**:像素字体**整数倍缩放,禁非整数缩放**(像素模糊);下限(1280×800 基座):棋盘数字 ≥18px(公式 = `max(18, ceil(格边长 × 0.5))`不变)、**正文/明细 ≥16px、tooltip ≥14px**(1280×800 低于 1080p 基准,同字号实际更小)。验收:机检〈静态文字位点字号 ≥ 档位表值〉
- **字号档位表(六档)**:全站 UI 文字字号只经 `UiKit.FS_*` 单点取值,裸数字字号弃用——`FS_CAPTION 12`/`FS_HINT 14`/`FS_BODY 16`/`FS_SUB 18`/`FS_TITLE 24`/`FS_H1 34`。旧实测档按就近归档收编(10/11/12→CAPTION、13/14→HINT、15/16→BODY、17/18/20→SUB、21/22/24/26→TITLE、32/40→H1;静态位点全归档,数据驱动动态字号位点除外);棋盘数字公式 `maxi(18, ceil(格边长×0.5))` 与站桩血数 11px(条带内读数豁免)不入表。注:六档相邻比 12→14→16→18 三段 <1.25×,系裁决值优先于字重纪律的档差参考线,该参考线对新层级设计仍有效。验收:机检〈全站无裸数字字号,位点走 FS_*〉
- **小字号豁免条款(合并单条不开两口子)**:下款两类**豁免于本节下限**——①**条带内读数**:压在窄条带(血条/进度条等 ≤12px 高带)内居中的数字,受条带高度物理约束,维持 11px 下限,且必须按 §7.2 垫素色牌后计对比(实装=B 区站桩血数 11px 压 HP_BAR_BACK 牌 14.3:1);②**装饰性 overline/caption**:不承载须精确读取的信息、仅作分区标题或氛围小字者,可至 **12px**。**豁免逐处清单(撤除史归 git 提交史,余清单如下)**:条带内读数=B 区站桩血数一处;装饰 caption 档(FS_CAPTION)在册面=棋盘底操作提示条/营地柜台说明文与结构位预留注记/图例 RAP 词条说明/设置警示文两处/关卡地图底栏组标(生命/属性/特性)与分隔系/站桩消散提示/B 区状态槽微计数(×N●○)/bcard 脚注/RAP 反馈行/刷新余量徽标——清单外 11-13px 文字一律按正文/tooltip 下限提档,新增 caption 位须同批增补本清单。**站桩顺位徽标 ①②③ 不增列本清单**:既不在①条带内读数在册面、也不在②装饰 caption 在册面,按本条纪律取 `FS_HINT` 14 归六档;为它单独入册等于开第二口子,与「合并单条不开两口子」的立条理由正面相撞。**站桩名字行同理**:名字行(敌人名与护甲文字)承载须精确读取的信息,不在①②两在册面,按本条纪律取 `FS_HINT` 14 归六档、不增列②在册面,名字行几何(素底牌矩形、文字基线、宽度测量)随档位联动。②装饰 caption 在册面逐处维持不变。验收:机检〈豁免文字位均可对上本清单,清单外无 <14px;站桩顺位徽标与站桩名字行绘制点取 UiKit.FS_HINT,且②在册面不含该两位〉
- **字重纪律(字重两档不启用)**:层级手段为两件——**字号档差(相邻层级 ≥1.25×)+ 墨色深浅**;全局单字重,不上第二个字重(**重开钩子已注销**——整屏样张复核确认:屏内各级文字全部能归进本节六档字号,顺位徽标与站桩名字行两处按本节纪律提档即可,屏内实测对比全部达标(暖白对舞台底 9.49:1、GOLD_BRIGHT 6.47:1、血数 14.3:1),**未实证标题层级不足**,维持单字重,不另立条目);数字禁描边/阴影伪加粗不变(字形为唯一数值载体,§4.1 同源纪律)。验收:机检〈主题仅注册单字重〉/目检〈屏内标题与正文层级仅靠字号档差与墨色深浅两件即可分辨,无一处需要第二字重才读得清〉
- **字号**:像素字体**整数倍缩放,禁非整数缩放**(像素模糊);下限(基座档;基座档低于 1080p 基准,同字号实际更小):棋盘数字(公式与下限定值面=ui_kit 字号常量与棋盘格公式,不随本节复述)、正文/明细与 tooltip 下限走字号档位表。验收:机检〈静态文字位点字号 ≥ 档位表值〉
- **字号档位表(六档)**:全站 UI 文字字号只经 `UiKit.FS_*` 单点取值,裸数字字号弃用——六档(caption/hint/body/sub/title/h1)档值定值面=ui_kit 字号常量组。旧实测档按就近归档收编(归档映射沿革查 git 提交史;静态位点全归档,数据驱动动态字号位点除外);棋盘数字公式与站桩血数(条带内读数豁免,见下条)不入表。注:相邻档比有不足 1.25× 的段,系裁决值优先于字重纪律的档差参考线,该参考线对新层级设计仍有效(档差比定值面=ui_kit 常量组)。验收:机检〈全站无裸数字字号,位点走 FS_*〉
- **小字号豁免条款(合并单条不开两口子)**:下款两类**豁免于本节下限**——①**条带内读数**:压在窄条带(血条/进度条等)内居中的数字,受条带高度物理约束,维持条带读数豁免下限(豁免下限与实装对比定值面=ui_kit 豁免常量与对比探针读数),且必须按 §7.2 垫素色牌后计对比(实装=B 区站桩血数压 HP_BAR_BACK 牌);②**装饰性 overline/caption**:不承载须精确读取的信息、仅作分区标题或氛围小字者,可至 caption 档(`FS_CAPTION`)。**豁免逐处清单(撤除史归 git 提交史,余清单如下)**:条带内读数=B 区站桩血数一处;装饰 caption 档(FS_CAPTION)在册面=棋盘底操作提示条/营地柜台说明文与结构位预留注记/图例 RAP 词条说明/设置警示文两处/关卡地图底栏组标(生命/属性/特性)与分隔系/站桩消散提示/B 区状态槽微计数(×N●○)/bcard 脚注/RAP 反馈行/刷新余量徽标——清单外低于 hint 档的文字一律按正文/tooltip 下限提档,新增 caption 位须同批增补本清单。**站桩顺位徽标 ①②③ 不增列本清单**:既不在①条带内读数在册面、也不在②装饰 caption 在册面,按本条纪律取 `FS_HINT` 归六档;为它单独入册等于开第二口子,与「合并单条不开两口子」的立条理由正面相撞。**站桩名字行同理**:名字行(敌人名与护甲文字)承载须精确读取的信息,不在①②两在册面,按本条纪律取 `FS_HINT` 归六档、不增列②在册面,名字行几何(素底牌矩形、文字基线、宽度测量)随档位联动。②装饰 caption 在册面逐处维持不变。验收:机检〈豁免文字位均可对上本清单,清单外无低于 hint 档文字;站桩顺位徽标与站桩名字行绘制点取 UiKit.FS_HINT,且②在册面不含该两位〉
- **字重纪律(字重两档不启用)**:层级手段为两件——**字号档差(相邻层级按档差参考线)+ 墨色深浅**;全局单字重,不上第二个字重(**重开钩子已注销**——整屏样张复核确认:屏内各级文字全部能归进本节六档字号,顺位徽标与站桩名字行两处按本节纪律提档即可,屏内实测对比全部达标(读数在案),**未实证标题层级不足**,维持单字重,不另立条目);数字禁描边/阴影伪加粗不变(字形为唯一数值载体,§4.1 同源纪律)。验收:机检〈主题仅注册单字重〉/目检〈屏内标题与正文层级仅靠字号档差与墨色深浅两件即可分辨,无一处需要第二字重才读得清〉
### 7.5 营地界面
@@ -475,18 +475,18 @@
**(一)按钮五态矩阵(冒烟五态断言在闸)**
- **五态齐全**:全站按钮(普通/主/危险三厂)必须五态非空——常态 / 悬停 / 按下 / 禁用 / 键盘焦点;任一态缺档即违本条。验收:机检〈冒烟五态断言全绿〉
- **悬停 = 常态图 + modulate 提亮**:提亮档 `Color(1.06,1.06,1.06)`,零素材;主钮承 `CANDLE.lightened(0.06)` 同纪律。验收:机检〈悬停态样式非空且非常态图直贴〉
- **按下 = 本族下沉**:石纹钮 `button_stone_pressed` 九宫格;危险钮补本族 pressed 深档(深红 `darkened(0.18)`)。验收:机检〈三厂 pressed 样式各归本族〉
- **禁用 = 本族底 + α0.45 幽灵化**:flat 两厂 bg+border 同 α 全幽灵化;文字禁用色同档。(注:本条管 **UI 按钮**;营地场景图里的**物件**禁用态另按 §6.2——降明度 + 去饱和,不走 α 幽灵化。)验收:机检〈禁用态非按压图、α0.45〉
- **键盘焦点 = INK 2px 内缩 1px 环**:负 expand margin 实现内缩;引擎 focus 样式盒叠加绘制、不遮钮底;逐实例 override、**主题层零新增词条**(冒烟双红线在闸)。验收:机检〈焦点样式在位、主题词条数不增〉
- **悬停 = 常态图 + modulate 提亮**:提亮档定值面=ui_kit 悬停提亮常量,零素材;主钮承烛光黄提亮同纪律。验收:机检〈悬停态样式非空且非常态图直贴〉
- **按下 = 本族下沉**:石纹钮 `button_stone_pressed` 九宫格;危险钮补本族 pressed 深档(深档派生定值面=ui_kit 按下派生常量)。验收:机检〈三厂 pressed 样式各归本族〉
- **禁用 = 本族底 + α 幽灵化**:flat 两厂 bg+border 同透明度全幽灵化(透明度定值面=ui_kit 禁用透明度常量);文字禁用色同档。(注:本条管 **UI 按钮**;营地场景图里的**物件**禁用态另按 §6.2——降明度 + 去饱和,不走 α 幽灵化。)验收:机检〈禁用态非按压图、按禁用透明度常量幽灵化〉
- **键盘焦点 = 主墨细环内缩**:负 expand margin 实现内缩(环宽与内缩定值面=ui_kit 焦点常量);引擎 focus 样式盒叠加绘制、不遮钮底;逐实例 override、**主题层零新增词条**(冒烟双红线在闸)。验收:机检〈焦点样式在位、主题词条数不增〉
- 新增按钮位须同批过五态清单;验收 = §1.4 样张 + 冒烟五态断言。验收:机检〈新增按钮位入冒烟五态清单〉
**(二)引擎原生控件组件规格(15 类型词条全覆盖,预盖件零实役)**
- **滚动条**:V/HScrollBar 的 scroll 槽(直角)+ grabber 三态;**引擎事实 = grabber 走 StyleBox 非 Icon**(4.7.2 源码实证),滚动条无位图、无箭头按钮(increment/decrement 默认主题未定义);粗细 = content margin 4(8px)、柄最小 8px。验收:目检〈滚动条非引擎默认灰〉
- **滑轨**:HSlider/VSlider 的 slider(槽轨)+ grabber_area(填充段)两段必须**一眼可辨**(§7.2 可读性硬条款的滑轨侧落法——判据 = 拖到中点两段可辨,机检对 ≥4.5:1 文字位不覆盖该面,归样张目检);抓子三态位图;H/V 边距为旋转换位。验收:目检〈拖到中点两段可辨〉
- **悬停气泡(Tooltip)**:TooltipPanel/TooltipLabel 深底 + 边 + 暖字,标题屏观感承旧值原样迁入;字号走 §7.4 既有档(tooltip 14)。验收:目检
- **输入件**:LineEdit(数据框惯例:牌色底 + 板线 + `RADIUS_OBJECT` 圆角 + 占位色)、SpinBox(updown 合并箭头位图 + 箭头底 hover/pressed 覆盖)、H/VSeparator(单线 1px,默认灰 #808080 实证在位须接管)。验收:目检
- **滚动条**:V/HScrollBar 的 scroll 槽(直角)+ grabber 三态;**引擎事实 = grabber 走 StyleBox 非 Icon**(4.7.2 源码实证),滚动条无位图、无箭头按钮(increment/decrement 默认主题未定义);粗细与柄最小尺寸定值面=ui_kit 滚动条常量。验收:目检〈滚动条非引擎默认灰〉
- **滑轨**:HSlider/VSlider 的 slider(槽轨)+ grabber_area(填充段)两段必须**一眼可辨**(§7.2 可读性硬条款的滑轨侧落法——判据 = 拖到中点两段可辨,机检对过 WCAG AA 文字位不覆盖该面,归样张目检);抓子三态位图;H/V 边距为旋转换位。验收:目检〈拖到中点两段可辨〉
- **悬停气泡(Tooltip)**:TooltipPanel/TooltipLabel 深底 + 边 + 暖字,标题屏观感承旧值原样迁入;字号走 §7.4 既有 tooltip 档。验收:目检
- **输入件**:LineEdit(数据框惯例:牌色底 + 板线 + `RADIUS_OBJECT` 圆角 + 占位色)、SpinBox(updown 合并箭头位图 + 箭头底 hover/pressed 覆盖)、H/VSeparator(单线,默认灰实证在位须接管——线宽定值面=ui_kit)。验收:目检
- **预盖件**(零实役,备案待启用时复查):CheckBox/CheckButton 共用一套 `checked`/`unchecked`(+_disabled) 四态图标(**引擎事实 = 4.7 无 on/off 词条,两类同名同套——否则预盖静默空转**)、OptionButton(button_stone 九宫格 + 箭头位图)、PopupMenu(panel + hover 高亮 + 字色字号)。验收:方向性
- **字体防御**:主题 `default_font` 显式指向全局像素字(与 project.godot `theme/custom_font` 同文件),冒烟双断言(主题非空 + Label 实取非空);`default_font_size` 不设——全站字号走 §7.4 `UiKit.FS_*` 逐实例 override。验收:机检〈冒烟字体双断言全绿〉
- **组件新增位**:新引擎控件入 UI 须同批在本节登记规格(尺寸档/圆角/对比度底线),禁裸用引擎默认灰圆角现代风。验收:目检〈新控件无默认灰样式〉
@@ -503,29 +503,28 @@
> **白话**:这一章是给所有出图者(人与脚本)的技术底线——多大的画布、什么格式、怎么命名。屏级格边长定值的裁决权在 battle.md;本节锁资产侧:分辨率档位、像素基准与缩放纪律、导出与命名、帧数规格。生产工单视图 = art-assets-checklist。
> **定值单点纪律**:全文数字定值只落在**两张表**——**§4.1 主色板**(全部色值+明度/饱和边界)与 **§8.2**(画布/体量/立绘源档/圆角率/缩放);其余章节一律**指路、禁复述数字**(修订改值只动单点处);character-design §5.5 为档位**语义**表(普通/精英/Boss + 例外),数值权威 = §8.2。
> **定值单点纪律(2026-11-07 换代)**:全文不落数字定值(头注定值单点纪律全文生效)——数量面定值单点=执行件,登记面=[art-pipeline-tools](art-pipeline-tools.md)「执行件门值登记」;character-design §5.5 为档位**语义**表(普通/精英/Boss + 例外),数值权威=对应执行件。
### 8.1 分辨率档位与格边长
- **两档定案**:1280×800(基座)+ 1920×1080,窗口不可调;后续调整走修订。验收:机检〈工程分辨率配置与两档一致〉
- **格边长取值**:按档位与板形计算——固定档位下格子量增加则格边长相应变小;公式、单位与现行算例的唯一出处 = [battle.md](../ux/battle.md)「棋盘格尺寸公式」,本节不复述数值。资产侧锁两条比例:**瓦片整格铺满**(32×32 源随格边长缩放,允许非整数倍——瓦片不适用 §8.2 甲类整数倍纪律)、**棋盘小人显示占位 ≤ 0.75× 格边长**。(1920 档已裁决全局等比缩放)验收:机检〈瓦片显示尺寸随格边长、小人占位 ≤0.75×〉
- **两档定案**:基座档 + 高清档,窗口不可调(档位定值面=工程分辨率配置;基座口径归 battle.md/HUD框架);后续调整走修订。验收:机检〈工程分辨率配置与两档一致〉
- **格边长取值**:按档位与板形计算——固定档位下格子量增加则格边长相应变小;公式、单位与现行算例的唯一出处 = [battle.md](../ux/battle.md)「棋盘格尺寸公式」,本节不复述数值。资产侧锁两条比例:**瓦片整格铺满**(瓦片源随格边长缩放,允许非整数倍——瓦片不适用 §8.2 甲类整数倍纪律)、**棋盘小人显示占位 ≤ 0.75× 格边长**。(高清档已裁决全局等比缩放)验收:机检〈瓦片显示尺寸随格边长、小人占位不超比例〉
### 8.2 像素基准与画布
- **缩放纪律(硬规则,按资产两类分级;不做个案豁免)**:
- **甲类·文本与语义件**(数字、图标、格面纹样):维持严格整数倍缩放硬规则——可读性与语义精确性优先,**禁非整数缩放不变**。封印印记不属本类(参数化绘制件,见本条末「封印印记参数表」)。砖面 tile 亦不属本类,随格边长整格铺满(见 §8.1)。验收:机检〈甲类件显示尺寸为源整数倍〉
- **全局纹理过滤与平滑渐变件例外**:`project.godot` `default_texture_filter=0`(Nearest)全局——像素风 UI 皮(九宫格/主题石纹样式盒/滑轨抓子/勾选/箭头图标)翻 Nearest=意图面;**显式 LINEAR 豁免清单(有意例外)= vignette / gradient_base / beams 三件程序化平滑渐变件**——保平滑连续 alpha 的程序化氛围件(§7.6 三已裁);新增平滑件须同批入册本清单,禁静默挂 LINEAR。翻转面枚举与冒烟断言(6 条)在闸。验收:机检〈过滤面枚举与 LINEAR 清单逐项一致〉
- **显示档登记例外(64 源 0.5×,待素材批消除)**:柜台四枚 `icon_forge/workshop/atlas/keystone`(64×64 源)显示档统一 **32px = 0.5×**;状态九枚(32×32 源)mini(站桩)档 **16px = 0.5×**。两处均系「显示尺寸侧唯一可调、素材一字节禁改」红线下的人工检整数半倍档,登记为**待消除例外**——素材设计出 32px 源后回归 1×。常规档显示一律 1×(状态九枚 32px、手绘十枚 20px/40px 双档、BCard 图标槽 40px=2×、**护甲类型图标三枚 24px=1×**——源 24×24,归甲类整数倍纪律)。验收:机检〈显示档与登记表一致〉
- **显示档登记例外(待素材批消除)**:柜台四枚与状态九枚 mini 档现走整数半倍显示档——系「显示尺寸侧唯一可调、素材一字节禁改」红线下的人工检整数半倍档,登记为**待消除例外**——素材设计出目标源档后回归 1×(源档与显示档定值面=入包素材件与消费常量)。常规档显示一律 1×(状态九枚、手绘十枚双档、BCard 图标槽与**护甲类型图标三枚**等各件显示档定值面=消费常量组与素材件;护甲图标源归甲类整数倍纪律)。验收:机检〈显示档与登记表一致〉
- **乙类·角色与单位精灵**(有机形体、非文字):允许运行时非整数倍缩放(NEAREST 过滤不变),容忍轻度像素宽窄不均;判据 = 实机目检,可感不适即回整数档。乙类免逐案豁免。验收:目检〈立绘无可感拉花〉
- **站桩立绘槽位=高定宽随**:立绘/精灵槽位只定「高度的绝对档(档高取整数像素值)」,宽度随源图宽高比自适应——**禁止把全部立绘塞进统一方框强拉**(纵横倍率必须恒等)。反面实例:统一方框把窄条生物源(细长本体裁掉透明边)按主角比例横拉压扁发花。乙类的非整数豁免只覆盖**等比**缩放,不含纵横异倍变形。验收:机检〈立绘纵横倍率恒等〉
- **1920×1080 档策略**:全局等比(stretch=canvas_items+aspect **keep**)——16:10 设计在 16:9 窗口=等比 1.35×+左右黑边各 ~96px,构图与 1280×800 基准档完全一致;甲类 1.35 非整数缩放例外注记:轻度宽窄不均系本档位接受代价(像素游戏 shipped 常态),实机目检可感不适→回乙案(1920 独立 2× 基准)重议;乙类同前款。验收:目检〈1920 档构图与 1280 档一致〉
- **高清档策略**:全局等比(stretch=canvas_items+aspect **keep**)——16:10 设计在 16:9 窗口=等比缩放+左右黑边,构图与基座档完全一致(倍率与黑边宽为档位比派生读数,非定值);甲类非整数缩放例外注记:轻度宽窄不均系本档位接受代价(像素游戏 shipped 常态),实机目检可感不适→回乙案(高清档独立 2× 基准)重议;乙类同前款。验收:目检〈高清档构图与基座档一致〉
- **画布基准(暂定值)**:
- **主角人设原图 = 48×72**(1× 基准,暂定;与站姿降采样可读性验证一致);
- **棋盘小人 = 32×32 二头身派生版(暂定,允许更小)**——独立资产,自人设定稿压缩派生(character-design §5.4),不吞数字位、占位 ≤ 0.75× 格边长;板越小占比摩擦越大(13×13 / 14×14 更小,算例见 [battle.md](../ux/battle.md)「棋盘格尺寸公式」),32px 源档的去留已定终值 = **保留 32×32 源档**(沿「独立小源档」路线;N=12 板下显示占位上限 27px = 0.84 倍,正落本节乙类非整数缩放许可范围,**连豁免都不用再办**),待决标注注销;
- **封印印记参数表(绘制件,非贴图件)**:形与画法见 §3.2。定值——**环外径 = 0.82 × 格边**(26 格 21.3px/46 格 37.7px);**环壁厚 = 0.11 × 环径**(≈2.3/4.1px);**十字臂宽 = 0.156 × 环径**(≈3.3/5.9px);**环外光圈宽 = 0.09 × 格边**(≈2.3/4.1px),向外衰减指数 1.6、峰值 alpha 0.50;圆心 = 格心。色 = 封印黑单色(光圈只改 alpha)。本件随格边连续缩放,**不适用甲类整数倍纪律**(非贴图件,见上条清单)。参数单点 = `ui_kit.gd` 六枚常量 `SEAL_RING_FRAC`/`SEAL_WALL_FRAC`/`SEAL_ARM_FRAC`/`SEAL_HALO_ALPHA`/`SEAL_HALO_GAMMA`/`SEAL_HALO_FRAC`,本节为条款侧对照值。改值须本节与 §3.2 同批修订。验收:机检〈ui_kit 六常量与本表逐值一致〉+目检〈渲染帧量环径落 82%±1px、光圈不越格边〉
- **站桩立绘显示档 = 三档绝对高**:小型 96 / 中型 144 / 大型 188。逐件归档——小:地精、巨蜘蛛、灰矮人;中:主角、钩爪恐魔、熊地精;大:食人魔酋长、蛛化卓尔、灰矮人石君王。**源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;显示倍率 = 档高 ÷ 源高,NEAREST,宽度随源图比例(高定宽随不变,见上条)。定档依据 = 生物体型(体量=物种体型,非强度线性映射,见 character-design §5.2),**顺序由显示档承载、不由源高承载**。已接受项:中型三件与地精/巨蜘蛛的源高(92/94/123/90/81)低于档高,属放大显示;食人魔酋长显示宽 157 超桩盒 150。验收:机检〈standee_asset_check 逐件显示档高与归档一致、纵横倍率恒等〉+目检〈同屏体量顺序成立〉
- **站桩立绘排版**:① 区高 B 区 ≈1/3 屏 / C 区 ≈2/3 屏,**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(显示 >150px 级:食人魔酋长/蛛化卓尔/灰矮人石君王)**允许向上溢出盒顶 N px**(N 按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,x 基准 110/900/1055/1210@1280,`battle_stage_view.gd:47-56`〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限用真图复算 x 区间定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉
- **站桩石板地台件**:`scene_stage_plaza.png`,源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形;跨三关恒定、不吃 §4.3 `wall_ambient` tint(独立理由见 §6.1 近景地台独立件条)。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉
- **主角人设原图与人设派生小人**:源档定值面=入包素材件本身(1× 基准,暂定;与站姿降采样可读性验证一致);**棋盘小人 = 二头身派生版(暂定,允许更小)**——独立资产,自人设定稿压缩派生(character-design §5.4),不吞数字位、占位 ≤ 0.75× 格边长;板越小占比摩擦越大(小板算例见 [battle.md](../ux/battle.md)「棋盘格尺寸公式」),小源档的去留已定终值 = **保留小源档**(沿「独立小源档」路线;最小板下显示占位正落本节乙类非整数缩放许可范围,**连豁免都不用再办**),待决标注注销;
- **封印印记参数表(绘制件,非贴图件)**:形与画法见 §3.2。定值全部落码——**参数单点=ui_kit 六枚封印常量(`SEAL_RING_FRAC`/`SEAL_WALL_FRAC`/`SEAL_ARM_FRAC`/`SEAL_HALO_ALPHA`/`SEAL_HALO_GAMMA`/`SEAL_HALO_FRAC`:环外径比/环壁厚比/十字臂宽比/光圈峰值 alpha/衰减指数/光圈宽比),本节不复述数值**;圆心 = 格心,色 = 封印黑单色(光圈只改 alpha)。本件随格边连续缩放,**不适用甲类整数倍纪律**(非贴图件,见上条清单)。改值=ui_kit 常量修订,§3.2 验收句同批核对。验收:机检〈ui_kit 六常量在位(封印守门测试)〉+目检〈渲染帧量环径与光圈边界符合常量、光圈不越格边〉
- **站桩立绘显示档 = 三档绝对高**(小型/中型/大型;档高定值面=站桩呈现守门测试与素材检查件)。逐件归档——小:地精、巨蜘蛛、灰矮人;中:主角、钩爪恐魔、熊地精;大:食人魔酋长、蛛化卓尔、灰矮人石君王。**源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;显示倍率 = 档高 ÷ 源高,NEAREST,宽度随源图比例(高定宽随不变,见上条)。定档依据 = 生物体型(体量=物种体型,非强度线性映射,见 character-design §5.2),**顺序由显示档承载、不由源高承载**。已接受项:中型档三件与地精、巨蜘蛛两件的源高低于档高,属放大显示;食人魔酋长显示宽超桩盒(逐件读数归素材检查件报告)。验收:机检〈素材检查件逐件显示档高与归档一致、纵横倍率恒等〉+目检〈同屏体量顺序成立〉
- **站桩立绘排版**:① 区高两区占比(读布局表),**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(大档三件:食人魔酋长/蛛化卓尔/灰矮人石君王)**允许向上溢出盒顶**(溢出量按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,落码见战斗舞台视图〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限用真图复算定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉
- **站桩石板地台件**:`scene_stage_plaza.png`——源档与顶缘受光线规格定值面=入包素材件,九宫格横向拉伸、顶缘受光线不随拉伸变形;跨三关恒定、不吃 §4.3 `wall_ambient` tint(独立理由见 §6.1 近景地台独立件条)。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒定(定值面=素材件)〉
### 8.3 导出格式与命名规范
@@ -536,7 +535,7 @@
### 8.4 帧数规格(样张冻结)
- **帧数规格(样张冻结)**:待机循环 4 帧;攻击/技能准备 6 帧单次;受击 2 帧;死亡 = 灰化+碎裂退场(§4.6.4 语义硬规则),序列帧归 ✦ 缺料清单;帧时长与结算节拍对齐(预告时序见 §4.6.4)。验收:机检〈序列帧数与档位一致〉
- **帧数规格(样张冻结)**:帧数档定值面=动画帧数规格守门测试(规格表随件——待机循环/攻击准备单次/受击;序列帧资产入包后逐件判帧数);死亡 = 灰化+碎裂退场(§4.6.4 语义硬规则),序列帧归 ✦ 缺料清单;帧时长与结算节拍对齐(预告时序见 §4.6.4)。验收:机检〈序列帧数与守门测试规格表一致〉
- **方向集**:棋盘小人=**一份画稿+左右镜像**(现行资产=朝左帧两态 idle/walk,右向 = `flip_h`;下/上向无独立帧);斜向移动/挖掘按**主导轴吸附最近正交向**呈现,不出 45° 斜向帧(斜向信息由位移轨迹与目标格预告承载,ITB 实态同款)。镜像与「旗面恒画右」纪律(character-design.md 冒险背包条)的相容归属:棋盘小人默认镜像豁免、旗右纪律限立绘侧——代拟口径已追认(棋盘小人朝左时旗面朝左,与立绘侧「旗面恒画右」并存;画稿维持一份 + 镜像,零新增资产)。验收:目检〈侧向镜像无破绽〉
### 8.5 结构件完整性与参考核验
+23 -2
View File
@@ -1,7 +1,28 @@
# 美术后处理与校验工具清单
> **性质**:本文件是 `tools/` 下美术资产处理与校验脚本的用法清单。回答三件事:这类资产该跑哪件工具、命令怎么敲、判据与坑在哪。
> **边界**:只管工具用法,不立美术规格。色值、画布、体量、命名与验收条款归 [art-bible](art-bible.md)(§4.1 主色板、§8 资产与技术规范)和 [art-assets-checklist](art-assets-checklist.md);命令与源码冲突时以源码现行为准,美术规格冲突时以 art-bible 为准。素材入库与代码接线归 [asset-path-map](asset-path-map.md),不在本文件。
> **性质**:本文件是 `tools/` 下美术资产处理与校验脚本的用法清单,兼**执行件门值登记面**——美术数值定值(色值、阈值、档位、帧数、区间)的唯一事实源索引。回答三件事:这类资产该跑哪件工具、命令怎么敲、判据与坑在哪。
> **边界**:只管工具用法与定值落点登记,不立美术规格。概念、规则与方向归 [art-bible](art-bible.md)(其定值单点纪律指向本登记面);命令与源码冲突时以源码现行为准,美术规格冲突时以 art-bible 为准。素材入库与代码接线归 [asset-path-map](asset-path-map.md),不在本文件。
## 执行件门值登记(定值单点索引,2026-11-07 立)
art-bible 数量面定值的落点登记——每行=一个定值面与其承载件;改值=改对应执行件并跑其守门断言,art-bible 不改值只同批核对指针:
| 定值面 | 承载件 |
|---|---|
| 色值 token 全板(语义色/墨族/材质色/呈现态) | `game/presentation/views/ui_kit.gd` 常量组(色板唯一来源)+ theme README 溯源表 |
| token 存量近色互查与新增色第二道门 | `tools/palette_check.py`(素材侧)+ `palette_token_pairwise_test.gd`(常量面守门,含在册豁免账) |
| 微光五组色值与呈现参数 | `ui_kit.gd` 微光常量组+`type_glow_test.gd` 守门断言 |
| 未开格底/图类型色板准入门(亮度地板/饱和上限/禁入带/近色容差)与**世界底层两子带** | `tools/glow_discrimination_sheet.py` 门值常量(本件「判据或口径」节) |
| 已开格底渲染面亮度 | `game/presentation/views/tile_palette.gd` 归一化目标常量;对比判据=`game/probe/ui_contrast_probe.gd` |
| 文字对比门槛(WCAG AA)与整屏有效色数上限 | `tools/shot_checker.py` 常量(`ui_contrast_probe` 同源) |
| 封印印记六参数 | `ui_kit.gd` `SEAL_*` 六常量+`seal_mark_params_test.gd` |
| 站桩显示档三档与源档逐件 | `standee_present_values_test.gd` 钉值+`tools/standee_asset_check.py` |
| 动画帧数档(待机/攻击/受击) | `animation_frame_spec_test.gd` 规格表(序列帧资产入包后逐件判) |
| 字号六档与下限 | `ui_kit.gd` `FS_*` 常量组 |
| 屏级分区几何/带高 | `game/data/tables/battle_layout.tres`(数据索引,art-bible 直指) |
| 营地场景坐标群(落盘矩形/命中矩形/z 序/桩柱高) | `camp-scene-prompts.md` 坐标表+落盘件 |
| 棋盘结构件 px(墨线/暗带/投影/悬崖) | `board_world.gd`/`board_view.gd` 常量+渲染闸 golden 基线 |
| 视野迷雾半径/提灯加成/记忆态常量 | `board_view.gd` `FOG_*` 常量+`ui_kit.gd` 迷雾常量组 |
> **分工**:[art-prompts](art-prompts.md) 管角色级提示词与五步出图流程,[camp-scene-prompts](camp-scene-prompts.md) 管营地场景分层提示词与四步流程;两卡只把「后处理」一步指到本文件。提示词怎么写出图、出完图怎么处理,是两件事。
> **命令前提**:以下命令均在仓库根执行。素材不入 git,worktree 缺件时部分脚本回退主检出 `D:/code/g-plan2`,部分直接返回错误,见各节「已知坑与适用边界」。
+2 -2
View File
@@ -17,8 +17,8 @@
| 素材 | 状态 | 需求文档 |
|---|---|---|
| 主角战斗小人(待机/攻击/受击三态) | ✅ 已交付:B 区站桩三态按原稿分辨率入包、显示按档缩放落位(显示档=中档 144,源=手修 2× 三态稿,art-bible §8.2),机检全绿;挂事件切换、结算回 idle 短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役 | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 |
| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ 已交付:B 区站桩八敌真图服役——八件源=原稿不降采样入包、显示按档缩放落位(三档绝对高 96/144/188,art-bible §8.2),闸件全绿;character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘 | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 |
| 主角战斗小人(待机/攻击/受击三态) | ✅ 已交付:B 区站桩三态按原稿分辨率入包、显示按档缩放落位(显示档=中档,源=手修 2× 三态稿,art-bible §8.2),机检全绿;挂事件切换、结算回 idle 短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役 | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 |
| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ 已交付:B 区站桩八敌真图服役——八件源=原稿不降采样入包、显示按档缩放落位(三档绝对高,art-bible §8.2),闸件全绿;character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘 | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 |
| 意图准备动画三档 | ◐ | [art-bible](art-bible.md) §4.6.4 |
## P2 图标与格面(可与样张并行)
+1 -1
View File
@@ -67,7 +67,7 @@
- **主色域 = 物种本色**,不受圣经 §4.2 语义色禁则约束(该禁则管格面与 UI 的逻辑色,角色身体主色豁免);**两例外**:禁入带 300°–345° 全角色禁入(仅 drider/duergar_king 两 Boss 独占)、蓝族禁入敌方主色(§5.4 同款)。
- **L2 熊地精 = bugbear 复用**(第二关三行,显示名熊地精系,非独立键):同剪影**换色板不换形**(色板替换走脚本管线——原则三"先换色板"的角色侧应用);变体主色避小人蓝族与禁入带。
- 每敌种出 2–3 版候选(清单 §2.2);受击反馈/死亡表现/顺位标记三类呈现下限见圣经 §4.6.4 资产需求行。
- **立绘显示档(定值单点 = 圣经 §8.2 站桩立绘显示档条,本档指路不复述)**:三档绝对高 96/144/188,逐件归档、源档与缩放规则一律见圣经 §8.2——**数值权威 = 圣经 §8.2**(定值单点纪律,圣经 §8 头注);归档经三体型约束校验(§5.2)确认;派生管线与排版规范同归圣经 §8.2。
- **立绘显示档(定值单点 = 圣经 §8.2 站桩立绘显示档条,本档指路不复述)**:三档绝对高,逐件归档、源档与缩放规则一律见圣经 §8.2——**数值权威 = 圣经 §8.2 指向的执行件**(定值单点纪律,圣经头注);归档经三体型约束校验(§5.2)确认;派生管线与排版规范同归圣经 §8.2。
- **钩爪恐魔「宽≥高」豁免登记(待样张终审)**:定档源 58 高窄条束状剪影(长臂圆钩),宽高比 <1,与 §5.1 普通怪「近圆墩形宽≥高」冲突——按体量=生物天性(§5.2)登记豁免:以长臂束状轮廓为识别锚,不强行压成墩形;样张(圣经 §1.4)终审复验灰度剪影可辨性。
## 5.6 意图准备动画三档(规格承载节)
+1 -1
View File
@@ -147,7 +147,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 棋盘瓦片与格面资源图标 | [美术圣经](../art/art-bible.md) | 在役 |
| 未开格类型微光(五组色相+明度档) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役(明度档 provisional 值登记见 art-bible 的 git 提交史;观感复核已随战斗一屏样张过闸完成——用户实机目检核销,沿革查 git 提交史) |
| 棋盘观感(第二 / 三关亮度与对比度) | [待办清单](../../待办清单.md) | 待做(开工前置=先做素材轴/UI 轴对照截图定性,再按定轴修复;旧卡 v1.4 存 reports/ 作素材、非已写卡状态,重启须重新立卡;出口=用户实机目检第二、三关不再判「看着费劲」) |
| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(原稿分辨率入包禁降采样、显示按三档绝对高 96/144/188 缩放、现有形象即终稿;定值单点=art-bible §8.2;实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) |
| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(原稿分辨率入包禁降采样、显示按三档绝对高缩放、现有形象即终稿;定值单点=art-bible §8.2(档值定值面=站桩守门测试);实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) |
| 敌人立绘(全敌种) | [角色设计](../art/character-design.md) | 在役 |
| 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 |
| 状态图标 | [美术圣经](../art/art-bible.md) | 在役 |
+1 -1
View File
@@ -111,7 +111,7 @@
| 图类型 | 棋盘生成产物 `board_type` 的中文名——三关换皮的单位(同款地砖换色板) |
| 方向稿 | 冻结前的方向性候选稿,供气质目检;过目检后才进机检冻结 |
| 站桩 | 战斗画面区(B 区)里角色直立立绘的显示形态(配血条与状态行) |
| 显示档 | 站桩立绘的显示尺寸规则——源用原稿分辨率入包(禁降采样),显示按三档绝对高(小型 96/中型 144/大型 188)缩放、宽随源比例;定值单点见[美术圣经](../art/art-bible.md) §8.2 站桩立绘显示档条 |
| 显示档 | 站桩立绘的显示尺寸规则——源用原稿分辨率入包(禁降采样),显示按三档绝对高缩放、宽随源比例;定值单点见[美术圣经](../art/art-bible.md) §8.2 站桩立绘显示档条(档值定值面=站桩呈现守门测试) |
| 徽章 | 库存条与结算明细用的小图标(与格面类型微光预读相区分) |
## 开发流程
+2 -2
View File
@@ -29,7 +29,7 @@
- **首次到达**:从关卡首节点(战×2 的第一战)进入。MVP 无引导流,chord 肌肉记忆提示等非模态提示承担首次教学(见 §States)
- **到达前刚在做**:关卡画面(独立屏)上点击战斗节点(关卡推进方受理);或上一场战斗胜利后返回关卡画面再选下一节点
- **情绪状态**:棋手式清明专注(art-bible §2.1,能量 2/10)——挖掘期画面必须无杂音;结算期转为清算爽感(7/10)
- **情绪状态**:棋手式清明专注(art-bible §2.1,能量低位)——挖掘期画面必须无杂音;结算期转为清算爽感(能量高位)
- **到达方式**:游戏推进送入(非自愿导航),进入即处于挖掘阶段(棋盘已 install、初始 3×3 已展开、小人出生)
---
@@ -334,7 +334,7 @@
无障碍基线权威 = [HUD框架](../gdd/systems/表现与支撑/HUD框架.md)「可访问性基线」节;不再另立专项文档(2026-09-27 拍板,见 OQ2)。本 spec 内建基线承诺(呈现侧落地):
- **对比**:全部格底/面板底对数字墨 ≥4.5:1(WCAG AA)——art-bible §4.1 硬指标已可测(#33261B/#C9AF83 = 6.9:1 实测);UI 数据一律墨族素面
- **对比**:全部格底/面板底对数字墨过 WCAG AA——art-bible §4.1 硬指标已可测(判据由对比机检件承载);UI 数据一律墨族素面
- **色弱冗余**:无任何信息仅靠色相承载——格态靠完整/碎裂形;奖励金 vs 危险红靠剪影+运动;UI 红/金强调对加图标+文案冗余;Boss 靠形状独占(art-bible §4.5 清单逐项成立)
- **灰度可辨**:变异格纹带、格态在灰度截图下可分类(art-bible §3.2 验收标准)
- **非色彩破坏性确认**:弃图刷新(消耗 RAP 8 点)的确认交互与常规确认**不同位**(位置通道,色弱清单 #7)
+1 -1
View File
@@ -38,7 +38,7 @@
## 顶栏
钥石余额常驻画面顶部一行小 HUD 栏:高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**。栏体底=营地头带深棕 `#6E4526`(token `CAMP_HEADER_BAND`,色值出处 [art-bible](../art/art-bible.md) §7.2 五 token 对齐表)× **不透明度 0.80**——半透明系定值,底下画面透出 20%。栏内**只放钥石徽章一件**,右位、顶格落座(徽章自高 48px=栏高,无顶距可言),左位不放件。验收:目检〈顶栏成一条可辨窄带、徽章落在带内〉+机检〈栏体呈色对其下方落位带底色对比 ≥3:1〉。刷新入口已实装=营地刷新单口(进档与营地内写口尾触发,现开界面与顶栏余额同步取现值)。
钥石余额常驻画面顶部一行小 HUD 栏:高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**。栏体底=营地头带深棕(token `CAMP_HEADER_BAND`,色值定值面=ui_kit 常量,token 对齐注记见 [art-bible](../art/art-bible.md) §7.2)× **不透明度 0.80**——半透明系定值,底下画面透出 20%。栏内**只放钥石徽章一件**,右位、顶格落座(徽章自高 48px=栏高,无顶距可言),左位不放件。验收:目检〈顶栏成一条可辨窄带、徽章落在带内〉+机检〈栏体呈色对其下方落位带底色对比 ≥3:1〉。刷新入口已实装=营地刷新单口(进档与营地内写口尾触发,现开界面与顶栏余额同步取现值)。
## 叠层与开合
+1 -1
View File
@@ -27,7 +27,7 @@ func _pairs() -> Array:
["RAP标签", UiKit.INK_LABEL, UiKit.PANEL_DATA, 1.0], # N1-7(T0 实测已合规,显式化)
["锚·正文墨/数据板", UiKit.INK, UiKit.PANEL_DATA, 1.0], # 全站锚点:正文墨对数据板
["锚·暖白/屏根", UiKit.WARM, UiKit.BG_ROOT, 1.0], # 全站锚点:暗底正文
["锚·暖白弱/舞台底", UiKit.WARM_FAINT, UiKit.SLOT_BACKDROP, 1.0], # 全站锚点:B区辅助墨(合并目标——art-bible §4.1 换色合并③)
["锚·暖白弱/舞台底", UiKit.WARM_FAINT, UiKit.SLOT_BACKDROP, 1.0], # 全站锚点:B区辅助墨(合并目标色,换色合并沿革查 git 提交史)
["钥石徽·深墨/烛光黄", UiKit.INK_ON_GOLD, UiKit.CANDLE, 1.0], # badge 工厂件文字(营地徽+状态面板余额行同形制)
["生涯页·行名墨/暖亮页底", UiKit.WARM, UiKit.BG_BRIGHT, 1.0], # 生涯页行名列/提示文(WARM_SOFT 同族亮墨)
["生涯页·行值墨/暖亮页底", UiKit.CANDLE, UiKit.BG_BRIGHT, 1.0], # 生涯页数值列(烛光黄 bold)
+2 -1
View File
@@ -135,13 +135,14 @@ tests/
| 模态句柄分域寻址面 | HUD框架 | 局内/菜单/营地三子容器句柄经注册面合同寻址(`UiRegistry.node()` 逐键取层)+模态编排口开合(`ModalFlow.open()`/`ModalFlow.close()`) | `ui_struct_probe.gd:_modal_registry_contract`(registry 合同序段+分域句柄段) |
| 未开格类型微光(8 邻作用集/五组色相/零玩法写入) | HUD框架 | `BoardView.type_glow_probe()`/`UiKit.glow_group_for_cell_type()` | `theme_projection_test.gd:_smoke_type_glow`;`type_glow_test.gd:_test_grouping_closed`;`type_glow_test.gd:_test_frozen_hue_face` |
| 棋盘悬停反馈(三语义光标/目标格边框/路径预览点迹) | HUD框架 | `ui_input_probe` 合成鼠标事件→`BoardView._gui_input()`;读面 `BoardView.hover_probe()` | `ui_input_probe.gd:_ready`(case①到达②禁入③路径预览三语义) |
| UI 全局主题与按钮五态(含对比度锚) | HUD框架 | `UiKit.button()`/`UiKit.primary_button()` | `theme_projection_test.gd:_smoke_global_theme`;`theme_projection_test.gd:_smoke_button_five_states`;`theme_projection_test.gd:_smoke_contrast_inks` |
| UI 全局主题与按钮五态(含对比度锚) | HUD框架 | `UiKit.button()`/`UiKit.primary_button()` | `theme_projection_test.gd:_smoke_global_theme`;`theme_projection_test.gd:_smoke_button_five_states`;`theme_projection_test.gd:_smoke_contrast_inks`;`palette_token_pairwise_test.gd:_test_pairwise`(色板近色纪律存量面) |
| 中文字体随包与字形覆盖 | HUD框架 | `UiKit.load_font()` | `ui_font_asset_test.gd:_init`;`theme_projection_test.gd:_smoke_global_theme` |
| 地形瓦片套与格面数字可读 | HUD框架 | `TilePalette.digit_ink_mode()`/`TilePalette.normalize_floor_luma()` | `terrain_tile_sets_test.gd:_test_set_completeness`;`terrain_tile_sets_test.gd:_test_hue_domains`;`terrain_tile_sets_test.gd:_test_digit_ink_modes` |
| 站桩敌人呈现与结算演出落点 | 战斗表现 | `BattleStageView.enemy_standee_center()`/`BattleEndOverlay.open_victory()` | `standee_fx_sweep_test.gd:_init`;`pacing_queue_test.gd:_init` |
| 站桩呈现定值与素材绑定 | 战斗表现 | `UiKit.load_tex()`/`StandeeBody.name_line_probe()` | `standee_present_values_test.gd:_init` |
| 站桩显示档与素材分辨率绑定 | 战斗表现 | `StandeeBody.portrait_probe()`/`StandeeMotion.PORTRAIT_DISPLAY_H` | `standee_present_values_test.gd:_check_display_tier` |
| B 区舞台背景三关变体与连续地面层(按 board_type 选图/地面层高度读布局表/四柱光柱退役) | HUD框架 | `BattleStageView.set_board_type()` | `stage_background_test.gd:_test_background_selection`;`stage_background_test.gd:_test_ground_layer_geometry`;`stage_background_test.gd:_test_beams_retired` |
| 动画帧数规格(待机/攻击/受击;现役单帧形制锚定) | 战斗表现 | `UiKit.load_tex()`(`TEX_HERO_*` 四态件装载链——棋盘站立/行走与舞台三态同源) | `animation_frame_spec_test.gd:_test_spec_table`;`animation_frame_spec_test.gd:_test_current_form` |
| 战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) | HUD框架 | `BoardView.set_cell_area()`(D 区可用面积 → 格边长);读面 `BoardView.cell_size` | `layout_probe.gd:_ready`;`board_gen_reward_test.gd:_smoke_layout_cell_formula` |
| 调参测速批量模拟(逐帧步进与统计读数) | 调参测量 | `TuneSimController.run()`(调试浮窗批量模拟入口) | `tune_sim_batch_parity_test.gd:_init`(配对对拍套件) |
| sim 驱动循环单点(缺省零变化与策略/日志回调形态) | 调参测量 | `BattleDriver.drive_round()`(两参缺省与五参回调两形态) | `battle_driver_drive_test.gd:_smoke_drive_round_contract` |
+2
View File
@@ -206,6 +206,8 @@ func _suites() -> Array:
{"path": "res://tests/unit/presentation/forge_workbench_test.gd", "expect": 0}, # 工作间两区六路线 UI 直验(V13 自动化前置面)
{"path": "res://tests/unit/presentation/camp_scene_layout_test.gd", "expect": 0}, # 营地场景布局数据件校验(V14——fail-fast 判据+七命中区几何红线)
{"path": "res://tests/unit/presentation/stage_background_test.gd", "expect": 0}, # B 区舞台背景三关变体与连续地面层(V1–V5/V8——ground_h 表单源/board_type 选图/缺图回退/地面几何/光柱退役)
{"path": "res://tests/unit/presentation/animation_frame_spec_test.gd", "expect": 0}, # 动画帧数规格守门(帧数档定值面=本套件——规格表冻结+现役单帧形制锚定)
{"path": "res://tests/unit/presentation/palette_token_pairwise_test.gd", "expect": 0}, # token 板两两互查守门(色板增量纪律存量面——豁免账外零近色对,六对欠账在册)
{"path": "res://tests/unit/battle_settlement/damage_math_test.gd", "expect": 0},
{"path": "res://tests/unit/battle_settlement/damage_controller_test.gd", "expect": 0},
{"path": "res://tests/unit/battle_settlement/effect_port_test.gd", "expect": 0}, # 效果端口件(效果端口与掷格分件批 V1–V3——端口单实例/业务类零引擎直连源码锚/事实面闭集两对照)
@@ -0,0 +1 @@
uid://ccl0nket4ybvu
@@ -0,0 +1,44 @@
# tests/unit/presentation/animation_frame_spec_test.gd — 动画帧数规格守门(定值面=本测试)
# 断言面:①帧数规格表冻结(待机循环 4 帧/攻击准备 6 帧单次/受击 2 帧——样张冻结定值落码于本表,
# 文档侧只述规则并指路本测试);②现役四态单帧形制锚定(idle/walk 32×32、attack 92×92、
# hit 88×92——现役为单帧状态件,序列帧资产入包时按规格表逐件判帧数并同批换代本套件);
# ③死亡=灰化+碎裂退场(非帧件,无帧数断言面)。
# 运行:godot --headless --path game --script res://tests/unit/presentation/animation_frame_spec_test.gd
extends SceneTree
const Kit := preload("res://tests/unit/test_kit.gd")
# 帧数规格表(样张冻结值——多帧序列帧资产的生产规格;现役单帧占位件不适用本表)
const SPEC := {"idle": 4, "attack": 6, "hit": 2}
# 现役单帧形制(宽,高)——序列帧资产替换形制时同批修订本表并激活规格逐件断言
const CURRENT_FORM := {
"character_hero_idle.png": Vector2i(32, 32),
"character_hero_walk.png": Vector2i(32, 32),
"character_hero_attack.png": Vector2i(92, 92),
"character_hero_hit.png": Vector2i(88, 92),
}
func _init() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格条——样张冻结定值组)
_test_spec_table()
_test_current_form()
quit(Kit.finish("animation_frame_spec_test"))
# ① 规格表冻结面(帧数档定值单点=本表)
func _test_spec_table() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格表冻结组)
Kit.check("待机循环 4 帧在表〔帧规格 V1〕", SPEC.get("idle", 0) == 4)
Kit.check("攻击准备 6 帧单次在表〔帧规格 V2〕", SPEC.get("attack", 0) == 6)
Kit.check("受击 2 帧在表〔帧规格 V3〕", SPEC.get("hit", 0) == 2)
# ② 现役单帧形制锚定(真实加载链——资产被换形制而未走规格表时此处红)
func _test_current_form() -> void:
# oracle: design/art/art-bible.md:538 (现役单帧形制组)
for fn: String in CURRENT_FORM:
var tex: Texture2D = load("res://assets/art/character/" + fn)
var want := Vector2(CURRENT_FORM[fn])
Kit.check("现役件在库且形制冻结:%s %s〔帧规格 V4〕" % [fn, want],
tex != null and tex.get_size() == want)
@@ -0,0 +1 @@
uid://d0afgefg84yin
@@ -0,0 +1,101 @@
# tests/unit/presentation/palette_token_pairwise_test.gd — 语义/UI token 板两两互查守门
# 断言面:ui_kit 全部 Color 常量两两 RGB 三通道差禁止全部 <8/255(色板增量纪律第二道门的存量面;
# 文档侧只述纪律并指路本测试,数值门=本件 NEAR_EPS);六对已登记欠账走豁免账(清偿批逐对销账,
# 债务登记=待办清单「色板近色欠账六对清偿」条;新增欠账禁直入本账,须走待办清单修订)。
# 豁免账中两对伙伴色(3e3731/3e4048/3f4147)为迷雾合成底素材侧色——不在 ui_kit 常量面,
# 其清偿随素材批处理;本测试扫常量面,素材侧对子由互辨抽测件近色读数承载。
# 运行:godot --headless --path game --script res://tests/unit/presentation/palette_token_pairwise_test.gd
extends SceneTree
const Kit := preload("res://tests/unit/test_kit.gd")
const UI_KIT_PATH := "res://presentation/views/ui_kit.gd"
const NEAR_EPS := 8
# 存量近色关系在册账(键=两色 hex 升序拼接,值=性质标签)。账面=常量面全量现状的机器真值;
# 闸只拦「账外新增」。标「欠账」四对=art-bible 原六对债的常量面部分(清偿批销账);
# 另两对(3e362c3e3731/3e40483f4147)伙伴为迷雾合成底素材侧色,不在常量面,随素材批清偿。
# 同一键可覆盖多名对(同值别名与其伙伴构成的同 hex 对)。
const EXEMPT_LEDGER := {
"140f0d18120c": "深墨族(DIM↔DIM_NIGHT)",
"140f0d181410": "深墨族(DIM↔INK_ROUTE)",
"18120c181410": "深墨族(DIM_NIGHT↔INK_ROUTE)〔欠账〕",
"18120c1e1812": "深墨族(DIM_NIGHT↔FOG_OUTLINE)",
"291f172e2218": "暗底族(INK_LABEL↔TIP_BG)",
"2820182e2218": "暗底族(CAMP_BADGE_PANEL↔INK_LABEL)",
"282018291f17": "暗底族(CAMP_BADGE_PANEL↔TIP_BG)",
"33261b342a20": "墨族近结构件(E_FACADE_FOOT_COL↔INK)",
"33261b362b20": "墨族近屏底(INK↔BG_OVERLAY)〔欠账〕",
"342a20362b20": "结构件暗棕近屏底(E_FACADE_FOOT_COL↔BG_OVERLAY)",
"342a203a2e22": "结构件暗棕近屏底(E_FACADE_FOOT_COL↔BG_ROOT)",
"362b203a2e22": "屏底双件(BG_OVERLAY↔BG_ROOT)〔欠账〕",
"3a3a3a403a34": "暗板族(DARK_UPCOMING↔FOG_MEMORY_PLATE)",
"4537234a3b2a": "暖亮底双件(BG_BRIGHT↔BG_MAP_TOP)〔欠账〕",
"4a3b2a4a3e30": "同域暗棕(BG_MAP_TOP↔HINT_STRIP_EDGE)",
"6e45266e4526": "α 派生别名(CAMP_HEADER_BAND↔CAMP_HUD_BAND,非色板新增)",
"786e58786e58": "文档别名(DOT_OFF↔PANEL_BORDER——兼熄灭点阵)",
"1a17141e1812": "深墨族(FOG_OUTLINE↔ICON_TINT_ON_GOLD)",
"1814101a1714": "深墨族(ICON_TINT_ON_GOLD↔INK_ROUTE)",
"1a17141e1a16": "深墨族(ICON_TINT_ON_GOLD↔INK_TITLE)",
"1814101e1812": "深墨族(FOG_OUTLINE↔INK_ROUTE)",
"1e18121e1a16": "深墨族(FOG_OUTLINE↔INK_TITLE)",
"1814101e1a16": "深墨族(INK_ROUTE↔INK_TITLE)",
"1a1a1c1e1a16": "深墨族(HP_BAR_TRACK↔INK_TITLE)",
"2e221833261b": "墨族(INK↔INK_LABEL)",
"c9b88ecdb88c": "暖米族(MAP_VDIV↔WARM_FAINT)",
"e0b860e6be5a": "金族亮档双件(GOLD_BRIGHT↔GOLD_LIT)",
"f0e2c8f0e2c8": "同值别名(INK_L_WARM↔WARM)",
"f0e2c8f0e4c8": "暖米板族(INK_L_WARM/MAP_BAR_PLATE/WARM 同 hex 双名对)",
"f0e2c8f0e6ce": "暖米板族(CAMP_ROW_PLATE↔INK_L_WARM/WARM 同 hex 双名对)",
"f0e4c8f0e6ce": "暖米板族(CAMP_ROW_PLATE↔MAP_BAR_PLATE)",
"f0e6cef5ead3": "暖米板族(CAMP_ROW_PLATE↔DIGIT_PLATE)",
"f0e8d6f5ead3": "暖纸板族(DIGIT_PLATE↔TOAST_BG)",
"f5ead3f6eeda": "暖纸板族(DIGIT_PLATE↔INK_ON_DEEP)",
"f0e8d6f6eeda": "暖纸板族(INK_ON_DEEP↔TOAST_BG)",
"f8e2a8f8e3a8": "同族亮金墨(INK_L_GOLD↔RAP_DOT_CORE_WARM)",
}
func _init() -> void:
# oracle: design/art/art-bible.md:220 (色板增量纪律条——存量两两互查组)
_test_pairwise()
quit(Kit.finish("palette_token_pairwise_test"))
func _token_colors() -> Dictionary:
var script: Script = load(UI_KIT_PATH)
var cmap: Dictionary = script.get_script_constant_map()
var out: Dictionary = {}
for name: String in cmap:
if cmap[name] is Color:
out[name] = cmap[name]
return out
func _hex(c: Color) -> String:
return "%02x%02x%02x" % [c.r8, c.g8, c.b8]
# 存量两两互查:豁免账外零近色对(扫描面>0 前置防静默绿)
func _test_pairwise() -> void:
# oracle: design/art/art-bible.md:220 (色板增量纪律条——存量两两互查组)
var tokens := _token_colors()
Kit.check("token 面非空(扫描面>0)〔token互查 V1〕", tokens.size() >= 40)
var names: Array = tokens.keys()
names.sort()
var bad: Array = []
for i in range(names.size()):
for j in range(i + 1, names.size()):
var a: Color = tokens[names[i]]
var b: Color = tokens[names[j]]
if absi(a.r8 - b.r8) < NEAR_EPS and absi(a.g8 - b.g8) < NEAR_EPS \
and absi(a.b8 - b.b8) < NEAR_EPS:
var pair: Array = [_hex(a), _hex(b)]
pair.sort()
var key: String = pair[0] + pair[1]
if not EXEMPT_LEDGER.has(key):
bad.append("%s↔%s(%s)" % [names[i], names[j], key])
Kit.check("豁免账外零新增近色对〔token互查 V2〕", bad.is_empty())
if not bad.is_empty():
for item: String in bad:
print(" [近色对] ", item)
@@ -1,5 +1,5 @@
# tests/unit/presentation/seal_mark_params_test.gd — 封印印记参数化绘制守门(卡④ R1–R4)
# 断言面:五常量取值逐项相等(ui_kit ↔ art-bible §8.2 对照);着色器文件存在且七个 uniform 名在文;
# 断言面:五常量取值逐项相等(封印六参数定值面=本测试断言);着色器文件存在且七个 uniform 名在文;
# 迷雾门控(seal_on × fog_state → 封印子件可见性)〔seal批 V1–V4〕。
# 运行:godot --headless --path game --script res://tests/unit/presentation/seal_mark_params_test.gd
extends SceneTree
@@ -17,7 +17,7 @@ func _init() -> void:
quit(Kit.finish("seal_mark_params_test"))
# R1–R3/R7 前置:五常量取值逐项相等(art-bible §8.2 定值)
# R1–R3/R7 前置:五常量取值逐项相等(定值面=本组断言)
func _test_param_values() -> void:
# oracle: design/ux/battle.md:128 (环径与法阵定值组)
Kit.check("SEAL_RING_FRAC = 0.82〔seal批 V1〕", UiKit.SEAL_RING_FRAC == 0.82)
@@ -122,7 +122,7 @@ func _init() -> void:
# ---- V13–V18 立绘显示档(迭代 48 卡②——显示档 = 三档绝对高,入包件 = 原稿紧裁零降采样) ----
# 规格钉值(显示档定值单点 = art-bible §8.2;源高 = 原稿表值——旧降采样稿必红;
# 规格钉值(显示档定值单点 = 本测试钉值;源高 = 原稿表值——旧降采样稿必红;
# 显示宽 = round(源宽×档高/源高),食人魔酋长 157 为已接受超宽项):
# 键 → [源高, 显示档高, 显示宽]
const _DISPLAY_SPEC := {
@@ -673,7 +673,7 @@ func _smoke_contrast_inks() -> void:
# oracle: design/gdd/systems/表现与支撑/HUD框架.md:281 (对比度墨色锚组)
print("--- UI 残余 <4.5:1 文字位换墨(V4 对比度锚定)---")
var uikit_s = load("res://presentation/views/ui_kit.gd")
var stage: Color = uikit_s.SLOT_BACKDROP # 舞台底对比锚改读合并目标(art-bible §4.1 换色合并③——阈值与判据不变)
var stage: Color = uikit_s.SLOT_BACKDROP # 舞台底对比锚读合并目标色(换色合并沿革查 git 提交史——阈值与判据不变)
var r_order := _theme_contrast(uikit_s.GOLD_BRIGHT, stage)
Kit.check("V4 顺位徽标/重甲徽标 GOLD_BRIGHT 对舞台底 %.2f:1 ≥4.5:1" % r_order, r_order >= 4.5)
var r_ward := _theme_contrast(uikit_s.HERO_BLUE_BRIGHT, stage)
@@ -1,7 +1,7 @@
# tests/unit/presentation/type_glow_test.gd — 未开格类型微光数据面直验
# 断言面 = 纯函数/常量域(无渲染):① 九 cell_type → 五组封闭判定(含清单外显式失败、
# 禁子串匹配、与卡顶带 tg_band 的归组差异锚定——Q3 甲案两带并存);② 五组色值冻结面
# (HSV 对照 art-bible §4.2 冻结值只准动明度档——群伤组
# (冻结值落码于本文件 FROZEN/IMPL,只准动明度档——群伤组
# #A61D37 为终值,本测试即该判据的守门件);③ 呈现参数锚定(α170/带宽 cell÷8);④ 合成空间
# 阶梯单调 + 相邻组模型 CR ≥1.20(色弱灰度互辨的数据面预判,终审在渲染取证探针实测);
# ⑤ probe API 形状(默认开/空态键集)。
@@ -13,13 +13,13 @@ const Kit := preload("res://tests/unit/test_kit.gd")
const UiKitScript := preload("res://presentation/views/ui_kit.gd")
const BoardViewScript := preload("res://presentation/views/board_view.gd")
# art-bible §4.2 样张 v2 冻结五组(F3 抄录表——本测试的冻结面基准)
# 样张 v2 冻结五组(F3 定值面=本表——本测试的冻结面基准)
const FROZEN := {
"BUFF": Color8(0xD6, 0xC1, 0x3A), "HEAL": Color8(0x5C, 0xB8, 0x3A),
"PIERCE": Color8(0x2E, 0x9E, 0x9E), "MAGIC": Color8(0x7B, 0x5B, 0xD6),
"AOE": Color8(0xFF, 0x2D, 0x55),
}
# 九 cell_type 全值域 → 期望组号(art-bible §4.2 成员集合逐字照抄)
# 九 cell_type 全值域 → 期望组号(微光五组成员集合,与 ui_kit 封闭判定逐字一致)
const TYPE_EXPECT := {
"attack": UiKitScript.GLOW_BUFF, "defense": UiKitScript.GLOW_BUFF,
"weaken": UiKitScript.GLOW_BUFF, "action": UiKitScript.GLOW_BUFF,
@@ -79,7 +79,7 @@ func _test_grouping_closed() -> void:
UiKitScript.glow_color_for_group(99) == Color(0, 0, 0, 0))
# ② 冻结色相面:逐组 HSV 对照 art-bible §4.2 冻结值——只准动明度(ΔH≤0.2°/ΔS≤0.01)
# ② 冻结色相面:逐组 HSV 对照本文件 FROZEN 冻结值——只准动明度(ΔH≤0.2°/ΔS≤0.01)
func _test_frozen_hue_face() -> void:
# oracle: design/engineering/test-conventions.md:56 (判定上报通道——验证函数组)
for g in FROZEN:
@@ -98,7 +98,7 @@ func _test_frozen_hue_face() -> void:
Kit.check("群伤组专项:V=0.65 明度档( provisional 域内)", absf(aoe_m.v - 166.0 / 255.0) < 0.002)
# ③ 呈现参数锚定(art-bible §4.2 v2 冻结参数)
# ③ 呈现参数锚定(v2 冻结参数,定值面=本测试与 ui_kit 常量)
func _test_render_params() -> void:
# oracle: design/engineering/test-conventions.md:56 (判定上报通道——验证函数组)
Kit.check("泛光强度 α = 170/255(v2 呈现参数冻结)",
+37 -1
View File
@@ -49,6 +49,10 @@ FLOOR_L = 0.30 # 未开格底相对亮度地板(线性域)
CEIL_SAT = 0.55 # 饱和度上限
BANNED_HUE = (300.0, 345.0) # 禁入色相带(Boss 紫赤独占)
NEAR_EPS = 8 # 近色容差(三通道差全 <此值 即近色)
# 世界底层两子带门值(art-bible §2 只述「底层分两子带、间隔不小于门值」,数值归本件)──
BAND_LOW_TOP = 0.06 # 底层下沿带上沿(背景/舞台底件不得越界侵入上沿带)
BAND_HIGH = (0.08, 0.14) # 底层上沿带(已开格底——渲染面由 tile_palette 归一化目标 0.10 落带承载)
BAND_GAP = 0.02 # 两子带最小间隔
B_MIN_CH_DIFF = 8 # 机检 B|格底-微光可辨底线(三通道至少一通道 ≥此值)
C_MODEL_TOL = 2 # 机检 C|样图与合成模型容差(±此值 /255)
BOARD_TYPES = ["dungeon", "underdark", "deep_underdark"]
@@ -237,6 +241,36 @@ def gate_d(tiles):
return all_pass, rows
# ── 机检 E:世界底层两子带(资产侧门;下沿带成员=三关背景件,上沿带成员=已开格底,
# 其渲染面由 tile_palette.gd 归一化目标常量 0.10 承载、对比判据由 ui_contrast_probe 兜——
# 原图瓦片亮度≠渲染面〔装载归一化路径〕,不作本门判据)──
def gate_e():
rows = []
all_pass = True
# 结构自检:两子带不重叠且间隔达门值(常量自身恒真——防改常量时破结构)
check("E-struct", "下沿带上沿+间隔 ≤ 上沿带下沿(两子带不重叠)",
BAND_LOW_TOP + BAND_GAP <= BAND_HIGH[0],
"下沿带上沿 %.2f 间隔 %.2f 上沿带 %s" % (BAND_LOW_TOP, BAND_GAP, BAND_HIGH))
# 三关背景件 → 下沿带(只判上沿不越界;逐件读数落 stdout 供观感对照)
scene_dir = os.path.join(REPO, "game", "assets", "art", "scene")
for bt in BOARD_TYPES:
fn = "scene_stage_bg_%s.png" % bt
path = os.path.join(scene_dir, fn)
if not os.path.exists(path):
print("[阻塞] 素材缺位:%s" % path, file=sys.stderr)
sys.exit(2)
img = Image.open(path).convert("RGB")
pts = [(x, y) for x in range(img.width) for y in range(img.height)]
rgb = mean_rgb(img.load(), pts)
lin = rel_lum(rgb)
ok = lin <= BAND_LOW_TOP
all_pass = all_pass and ok
rows.append(("bg", bt, lin, ok))
check("E-bg-%s" % bt, "背景件 L ≤ 下沿带上沿 %.2f(不侵入上沿带)" % BAND_LOW_TOP,
ok, "RGB=%s L=%.4f%s" % (rgb, lin, "" if ok else " [越界红]"))
return all_pass, rows
# ── 样图绘制 ──
PAGE_W, PAGE_H = 640, 1120
MARGIN, HEAD, BLOCK_TITLE, GAP, LEGEND = 10, 60, 20, 30, 80
@@ -447,8 +481,10 @@ def main():
tiles = load_tiles()
print("== S1 机检 D:三关铺底代表值 ==")
d_ok, d_rows = gate_d(tiles)
print("== S1b 机检 E:世界底层两子带 ==")
e_ok, _e_rows = gate_e()
if args.no_sheet:
return 0 if d_ok else 1
return 0 if (d_ok and e_ok) else 1
os.makedirs(args.art, exist_ok=True)
out = os.path.join(args.art, "glow-discrimination-sheet-2026-11-05.png")
print("== S2 出并列样图 ==")
+11 -5
View File
@@ -335,11 +335,17 @@
#### 美术圣经去数值化——定值改由机检件与数据表承载(2026-11-06 登记,来源=会话提及)
**实况**:本条立文档分层规矩——美术圣经与 GDD 同级属 Meta 层,只写概念与方向(可写「两者存在相对亮度关系」),不写具体数值约束;阈值与准入判定归执行件,执行件登记面=[art-pipeline-tools](design/art/art-pipeline-tools.md)(三关色板互辨抽测件本批已入册)。
- 相关文档:纪律出处=[doc-conventions §5 禁实现内容行](design/engineering/doc-conventions.md);同款先例=[08-Alpha版本标准](design/gdd/08-Alpha版本标准.md) 二节「面值一律不在此抄录,以数据表为准」
**缺口**:还差一次清点与归属设计讨论——圣经全部定值逐条定落点(机检件/代码常量/数据表/golden 基线)、定文档侧指针句式、核下游反向引用面(ux 文档、需求卡片、探针注引圣经定值之处)。
**实况**:文档设计已闭合(2026-11-07 用户裁两准则:有落点补指针、无落点建脚本承载)——art-bible v3.44 全文定值剥离+指针句式(定值单点纪律入头注,执行件门值登记面=[art-pipeline-tools](design/art/art-pipeline-tools.md)「执行件门值登记」节);同批落地=世界底层两子带门(互辨抽测件 E 门)+动画帧数规格守门测试+token 板两两互查守门测试(86 套 manifest);下游复写换代=术语表/08-Alpha/camp/battle/character-design/两清单。
- 相关文档:[art-bible](design/art/art-bible.md) v3.44;纪律出处=[doc-conventions §5](design/engineering/doc-conventions.md);同款先例=[08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)
**改动面**:文档+工具代码
**状态**:待文档设计
**状态**:文档设计已闭合+待执行
#### 色板近色欠账六对清偿(2026-11-07 登记,来源=批次移交)
**实况**:art-bible §4.1 全板重扫六对三通道差全低于容差的清偿义务自圣经迁出(去数值化批);常量面四对(DIM_NIGHT↔INK_ROUTE/INK↔BG_OVERLAY/BG_OVERLAY↔BG_ROOT/BG_BRIGHT↔BG_MAP_TOP)在册于 `palette_token_pairwise_test.gd` 豁免账(标〔欠账〕),素材侧两对(迷雾合成底 3e3731/3e4048/3f4147 伙伴)随素材批清偿。清偿=逐对并入最近既有色并从豁免账移除。证据=`game/tests/unit/presentation/palette_token_pairwise_test.gd` 豁免账四对标〔欠账〕+art-bible §4.1 换色合并欠账条迁出句。
**改动面**:游戏代码+美术素材
**状态**:待执行