From 1e42e6ef282d5b92b7b0237d3de38cc6c814f7fe Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Wed, 7 Oct 2026 04:23:54 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=AB=8B=E7=BB=98=E5=AE=9A=E6=A1=A3?= =?UTF-8?q?=E4=B8=8E=E7=AB=99=E6=A1=A9=E9=87=8D=E6=8E=92=E5=AE=9E=E8=A3=85?= =?UTF-8?q?=E6=89=B9=E7=AB=8B=E9=A1=B9=EF=BC=88=E7=BE=8E=E6=9C=AF=E7=BA=BF?= =?UTF-8?q?=E8=87=AA=E7=AB=8B=E6=89=B9=20v0.1=20=E8=8D=89=E6=A1=88?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=85=88=E4=BA=A7=E5=9B=BE=E5=90=8E=E6=94=B9?= =?UTF-8?q?=E7=A0=81=E5=9B=9B=E6=AE=B5=20A=20=E4=BA=A7=E5=9B=BE/B=20?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E9=97=B8/C=20=E5=BC=95=E6=93=8E=E5=AE=9E?= =?UTF-8?q?=E8=A3=85/D=20=E4=BA=BA=E9=97=B8=EF=BC=9BT0=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=80=83=E8=AF=81=E5=8D=81=E9=A1=B9+=E4=B8=89?= =?UTF-8?q?=E7=AC=94=E5=BE=85=E7=AE=97=E8=B4=A6=EF=BC=9BP1-P3=20=E5=BE=85?= =?UTF-8?q?=E8=A3=81=E7=82=B9=E5=85=A8=E5=88=97=E5=A4=87=E9=80=89=E6=A1=88?= =?UTF-8?q?=E5=90=AB=E6=B7=98=E6=B1=B0=E4=BE=9D=E6=8D=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...务书-立绘定档与站桩重排实装批-2026-10-07.md | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 design/research/任务书-立绘定档与站桩重排实装批-2026-10-07.md diff --git a/design/research/任务书-立绘定档与站桩重排实装批-2026-10-07.md b/design/research/任务书-立绘定档与站桩重排实装批-2026-10-07.md new file mode 100644 index 00000000..6402042d --- /dev/null +++ b/design/research/任务书-立绘定档与站桩重排实装批-2026-10-07.md @@ -0,0 +1,179 @@ +# 任务书:立绘定档与站桩重排实装批(美术线自立批)· v0.1 草案 + +> **批次归属口径(2026-10-07 用户明确)**:**迭代只装「代码实现」类批次**;**美术素材生成 + 文档修改不进迭代**,走自立批 / 自由批次(更灵活、不排队、不占 roadmap 迭代序列)。 +> 故本任务书**不登记进 roadmap 迭代序列表**,只落 `design/research/` + `art-status-checklist` + `06-待办清单` + `active.md`。 +> **推进顺序(用户裁定)= 先产图、后改代码**:素材尺寸是实测值,容器(立绘盒 / 区高 / 血条位)依实测定,避免二次返工。 +> **上游**:讨论批已落籍 master `4359445`(art-bible v3.7/v3.11、character-design v1.8/v1.9、battle.md 区表、`tools/pixelize_candidates.py` 的 `STANDEE_TIER_H`)。本文只负责「把文档承诺变成盘上事实」。 +> **起草**:2026-10-07;T0 时点 master = `4359445`(已并入并行会话推进)。 + +--- + +## 1. 目标与完成定义 + +### 1.1 一句话目标 + +把八敌站桩立绘从「全敌共用 48 档」换成**按生物体型逐键定档(源高 36–94、显示 ×2 整数 = 72–188)**,并把 B 区站桩排版换成**方案二**(演出区占 1/3 屏、立绘落台、血条+状态/名字行落底排全场一线),最终过**整屏样张人闸**。 + +### 1.2 完成定义(出口判定清单;按新立的条款验收标注纪律分三档) + +| # | 判定项 | 验收方式 | +|---|---|---| +| C1 | 八敌源档高逐键 == `STANDEE_TIER_H`(36/38/46/58/62/74/90/94),主角 48 | ←机检:脚本读 PNG 尺寸逐键断言 | +| C2 | 每张新档色数 ≤32、无新增非整数倍缩放痕迹、描边亮度达暖白族档(主角例外档单列) | ←机检:`standee_asset_check` 升级后跑 | +| C3 | 新档拷贝进 `game/assets/art/character/character_enemy_<键>.png` 且 `.import` 同步;原 48 档归档 | ←机检:文件存在 + md5 对拍 | +| C4 | B 区 252→270、C/D 548→530;**扫雷盘 438×438 与格边长零改动** | ←机检:`ui_struct_probe` 断言值随改 + 棋盘格尺寸断言零漂移 | +| C5 | 站桩内容矩形 ⊆ 舞台矩形(内缩 8px)、底缘距舞台底 ≥8px | ←机检:⑥standee 断言族随批扩展 | +| C6 | 血条 + 状态/名字行落底排、全场血条对齐一线 | ←机检:新增断言(血条 y 逐站桩相等,容差 1px) | +| C7 | 大体档(drider 90 / duergar_king 94)头部探出盒顶进入光柱区、不裁切内容主体 | ←目检:样张看头部是否自然压进光柱、血条仍落底 | +| C8 | 意图徽标不溢出盒顶(弹入峰值 ×1.6 后仍在界内) | ←机检:探针按动画峰值矩形断言 | +| C9 | 八敌同屏一眼分得开(地精最小 72px ↔ 石君王 188px) | ←目检:整屏样张 | +| D1 | 数字/名行/徽标对比度 ≥4.5:1(承迭代 16 `ui_contrast_probe`) | ←机检:既有探针零新增红 | +| D2 | 玩家可感知「演出区变大了、怪物大小有差别了」 | ←方向性:人闸目检 | + +--- + +## 2. 现状事实(T0 代码级考证 · 2026-10-07 实查) + +| 事实 | 位置 | 值 | +|---|---|---| +| B 区高度 | `ui_assembler.gd:22` / `battle_stage_view.gd:44` | **252**(`custom_minimum_size=(0,252)`) | +| C/D 两列 | `ui_assembler.gd:26` | **548** | +| 站桩盒宽 | `battle_stage_view.gd:26` / `standee_body.gd:29` | `box = Vector2(150, 176)` | +| **立绘盒净高** | `standee_body.gd:231-234` | `176 − 44 − 36 = ` **96px** | +| 立绘缩放 | `standee_body.gd:237` | 固定 `scale = (2.0, 2.0)`、NEAREST | +| 立绘定位 | `standee_body.gd:238` | **盒内居中**(方案二要改底锚落台) | +| 脚底余量 | `standee_body.gd:27` | `STANDEE_FOOT_MARGIN = 12`;名行基线 `box.y-1-12` | +| 意图徽标 | `standee_body.gd:475` + `:194-197` | 绘制 y=86;`_intent_scale` 峰值 **1.6**(另有 1.26/1.22 变体) | +| 站桩结构断言 | `ui_struct_probe.gd:235-256` | 内容矩形 ⊆ **252px** 舞台(内缩 8px)+ 底缘 ≥8px | +| 现役素材 | `game/assets/art/character/character_enemy_<键>.png` | 八张,**48 档** | +| 重产源 | `artwork/remote-gen-2026-09-26/<键>/pixel-1.png` | 八敌齐全(含 `hero-ref`) | + +### 2.1 待算清的三笔账(T0 必答,答案决定任务卡能否成立) + +1. **盒高账(硬约束)**:新档最大显示高 = 94×2 = **188px**,而立绘盒净高只有 96px。B 区抬到 270 后,可用 = 270 − 顶部轮次指示行 − 底部结算明细带(24 摘要 / 84 结算期)− 血条状态名行(约 30)。**188 + 30 是否塞得下、84 结算期态要不要改覆盖层**——这笔账没算清之前不动代码。 +2. **84px 明细带账**:`BattleLogView` 的 24/84 两态与 176 的盒如何共存(现 252 − 176 = 76,装不下 84)——需实查是压缩盒还是覆盖层。 +3. **探顶 clip 账**:大体档「头部探出盒顶压进光柱区」是真裁切还是允许溢出绘制(SubViewport 世界层能否溢出到光柱层)——决定 `standee_body.gd` 是加 `ClipChildren` 还是改盒。 + +--- + +## 3. 范围边界(🔴 不可越界) + +- **不动玩法与数值**:零核心/数据层改动,MC 零跑(纯呈现批,diff=0 实证,同迭代 16 口径)。 +- **不动棋盘**:扫雷盘 438×438、格边长、迷雾口径零改动(压缩全部由面板空档吸收)。 +- **不动主角档**:主角维持 48(定档已锁),本批只重产八敌。 +- **不动棋盘小人**:32×32 派生不随本批(重产归后续「棋盘小人重出批」)。 +- **不新增色值**:新档色数 ≤32 且色板不增色(§4.1 增量纪律双层门)。 +- **非本批**:站桩帧动画(Alpha 定版闸前)、3349 草稿整理、口号条款机检化——各自有闸,不并入。 + +--- + +## 4. 设计契约(🔴 触碰 = L3 停机) + +1. **整数倍缩放**:显示一律 ×2 NEAREST,禁非整数倍(圣经 §8.2)。 +2. **高定宽随**:只定高度整数倍档、宽度随源图宽高比,禁统一方框强拉(v3.6 教训)。 +3. **定值单点**:档位数值权威 = 圣经 §8.2 / `STANDEE_TIER_H`,代码不得硬编码第二份数字。 +4. **素材不入 git**:产物拷回 `game/assets/art/` 并同步 `.import`;过程稿归档(`artwork/` + 择机对象存储),**worktree 产图必须拷回主区,否则分支一清即丢**。 +5. **派生管线锁死**:`pixel-1` 紧裁 → 等比缩至档高 → `dom_block_resize`;**禁走 `pixelfixer recon`、禁重跑 `remove_bg`**(recon 会把同色大块抹成一坨,2026-10-06 实测)。 +6. **零新素材外的零改动**:本批不新增除八敌立绘与舞台排版以外的任何素材。 + +--- + +## 5. 任务卡(分批执行;每批独立闸) + +### 批 A · 素材重产(先做,产出实测尺寸) + +| 卡 | 内容 | 产出 | 闸 | +|---|---|---|---| +| A0 | 基线:记录八敌现役 48 档尺寸/色数;确认八份 `pixel-1` 源在盘 | 基线表 | — | +| A1 | 按 `STANDEE_TIER_H` 跑 `build_standee48()` 重产八敌 | 八张新档 + 尺寸/色数读数 | C1/C2 | +| A2 | 九人同图对照总图(八敌 + 主角,真实相对体量) | 对照总图 | 目检 | +| A3 | 拷回主区 `game/assets/art/character/` + `.import` 同步 + 旧档归档 | 盘上落位 | C3 | + +> A 批不碰任何 `.gd`。若 A2 目检发现某档偏糊 → **只改 `STANDEE_TIER_H` 重跑**(本批最便宜的返工点,这正是「先产图」的意义)。 + +### 批 B · 工具闸(把纪律变成代码) + +| 卡 | 内容 | 闸 | +|---|---|---| +| B1 | `standee_asset_check.py` 硬闸升级:按 §8.2 **逐键校验档高**(现「宽 1–75」虚设区间退役)+ 色数 ≤32 + 非整数倍痕迹 + 描边亮度 | 负向验证(喂 48 档应红) | +| B2 | 色板检查器(48 上限 + 近色 ≥8/255) | 跑现役素材零误报 | +| B3 | 路径核对器(悬空/退役命名即报) | 首跑读数 | + +### 批 C · 引擎实装(拿到实测尺寸后才动) + +| 卡 | 内容 | 依赖 | +|---|---|---| +| C0 | **T0 盒高账实算**(§2.1 三笔账)+ 定探顶方案 | 批 A 实测尺寸 | +| C1 | `ui_assembler` B 252→270、C/D 548→530 | C0 | +| C2 | `standee_body` 立绘盒抬高 + 居中改底锚落台 | C0 | +| C3 | 血条 + 状态/名字行落底排、全场血条对齐一线 | C2 | +| C4 | 大体档探顶(clip 或溢出绘制)+ 意图徽标改位(探顶档压胸) | C2 | +| C5 | 探针断言族:`ui_struct_probe` 252→270、⑥standee 扩展(血条一线 / 名行不压盒 / 探顶不出血条 / 意图峰值不溢出) | C1-C4 | + +### 批 D · 样张人闸(唯一必经人审) + +| 卡 | 内容 | +|---|---| +| D1 | 整屏样张一屏(方案二排版真图) | +| D2 | 人闸材料包(目检清单 + 代拍板追认单)+ 出口报告 | + +--- + +## 6. 验证闸 + +- **轻闸(每卡)**:`run_smoke` 全量 + `probe_gate`(含 click)+ `ui_struct_probe` + `ui_contrast_probe`。 +- **重闸(批末)**:轻闸 + `run_all` 全套 + doc 三闸(对基线零新增)+ 熵增闸 + **MC 零跑**(零数值改动,同迭代 16 口径)+ 素材机检(B 批三件)。 +- **人闸**:D 批整屏样张目检,用户亲口确认才算通过。 + +--- + +## 7. 待用户裁决点(P1–P3;全列备选案 + 淘汰依据) + +**P1 · 大体档探顶怎么落** +- 甲(推荐):**盒按最高档抬**,超出部分允许溢出绘制到光柱区(不裁切)——视觉最自然,符合「头部探出盒顶压进光柱区」原文。 +- 乙:真 `clip` 裁掉头部——省事但会切掉石君王的王冠,破坏识别。**淘汰:剪影完整性是 §5.1 硬规则。** +- 丙:大体档降倍率(×1.5)——**淘汰:非整数倍违反契约 1。** + +**P2 · 结算期 84px 明细带与 188px 立绘共存** +- 甲(推荐):明细带结算期态改**覆盖层**,不挤压站桩盒。 +- 乙:结算期态压缩立绘盒——**淘汰:会造成站桩跳动(减动效纪律)**。 +- 丙:84 → 改小——需用户另裁数值,越权本批。 + +**P3 · 棋盘小人是否顺带重出** +- 甲(推荐):**不随本批**,保持 32×32,重出另行立项(依赖 = 本批派生管线先验证)。 +- 乙:顺带重出——本批体积超软时间盒,且混料不利于归因。 + +--- + +## 8. 批次工作流十三条对照(合规自证) + +| 条 | 本批落实 | +|---|---| +| 1 先检索后提问 | 已查在册记忆(pixelfixer 坑、档位语义)+ 正主文档(§8.2) | +| 2 任务书全列备选案 | §7 三裁点各列全案含淘汰依据 | +| 3 用户发开工令才动手 | **待 U0**(P1-P3 裁决后) | +| 4 独立 worktree + 拷导入缓存 | 复用 `D:/code/g-plan2-standee-tier`;新 worktree 先拷 `.godot/` 与字体 `.import` | +| 5 改码前定基线三查 | 冒烟 / 单测套数 / 探针读数(A0 记录;涉呈现无模拟锚) | +| 6 涉数值先采改前读数 | **不适用**(零数值改动 = 零 MC) | +| 7 新功能必配新测试 | C5 探针断言族 + B 批三件脚本机检 | +| 8 验收改动先行声明 | §1.2 完成定义表 + §6 闸序列(含 252→270 随改) | +| 9 批末四闸全绿才合并 | §6(素材批以「素材机检 + 探针 + 冒烟」替代 MC 对拍) | +| 10 合并后主区全量复跑 | 批末在主区复跑全套 | +| 11 会话收口落记 | active.md 快照 + 台账 | +| 12 实机目检归用户 | D 批人闸 | +| 13 —— | 批 A/B/C/D 每段独立提交,段末合一次 | + +--- + +## 9. 异常分级 + +L1 自救(一次重试)→ L2 记录继续(连续 3 次同红灯升级)→ L3 停机写报告等用户(触碰 §4 契约任一)。 + +--- + +## 10. 风险与遗留 + +1. **盒高账可能推翻方案二的 270**:若 188 + 血条 + 明细带算下来 > 270,需回到用户重裁(要么再抬 B 区、要么把最高档从 94 降到 ~84)。这是本批最大的单点风险,故排在 C0。 +2. **worktree 素材丢失风险**:A3 拷贝回主区是硬步骤(素材不入 git),漏做即丢。 +3. **并行会话冲突**:主区有在飞会话(iter17-enemy / uialign),合并采取「分支内先并入 master、再 ff 主区」,不直动主区脏件。 +4. **遗留**:站桩帧动画、3349 草稿整理、口号条款机检化、三个「0 张」缺口(19 徽章 / 6 纹带 / 舞台背景)各自有闸,不并入本批。