diff --git a/design/research/handoff-立绘定档与站桩重排批-2026-10-07.md b/design/research/handoff-立绘定档与站桩重排批-2026-10-07.md new file mode 100644 index 00000000..43231283 --- /dev/null +++ b/design/research/handoff-立绘定档与站桩重排批-2026-10-07.md @@ -0,0 +1,105 @@ +# 交接说明:立绘定档与站桩重排实装批(美术线自立批) + +> **用途**:本批由 2026-10-07 会话推进到「立项完成 + P1–P3 全裁 + U0 可发令」状态后交接。接手 agent 请先读本文件,再读 `任务书-立绘定档与站桩重排实装批-2026-10-07.md`(本目录)。 +> **交接时点**:2026-10-07 17:35 · 主仓 `master` 已推进到 `3e9360d`(台账到 395)。 + +--- + +## 1. 这批在做什么(一句话) + +把八敌站桩立绘从「全敌共用 48 档」换成**按生物体型逐键定档(源高 36–94、显示 ×2 整数 = 72–188)**,并把 B 区站桩排版换成**方案二**(演出区占 1/3 屏、立绘落台、血条+状态/名字行落底排全场一线)。它修的是 playnote 里的两条实机批评:**像素粒度过低看不清 / 怪物大小比例不合理**。 + +## 2. 批次归属口径(用户 2026-10-07 明确,务必遵守) + +- **迭代(roadmap 迭代位)只装「代码实现」类批次。** +- **美术素材生成 + 文档修改不进迭代**,走自立批 / 自由批次(不排队、不占 roadmap 迭代序列)。 +- **推进顺序 = 先产图、后改代码**(素材尺寸是实测值,容器依实测定)。 +- 实现类改动一律走 worktree;主工作区只读(豁免仅 `active.md` 与 `.zcode/`)。 + +## 3. 已完成(全部在分支 `art-standee-20261006`) + +| 提交 | 内容 | +|---|---| +| `0aa85dd` | 讨论批 9 文件主提交(art-bible v3.7/v3.11、character-design v1.8/v1.9、battle.md 区表与组件、`pixelize_candidates.py` 新增 `STANDEE_TIER_H`、06 四条、asset-path-map、art-status-checklist、两份生图单) | +| `5953af3` | 分支内并入 master 80 提交,解 `06-待办清单` 冲突一处 | +| `c688670` | active.md 快照 + 台账(后并入 master 时改登 **386**,因 385 被并行会话占用) | +| → `4359445` | **主区 `merge --no-ff`**(以上三件已进 master;台账 386 在案) | +| `1e42e6e` | **立项任务书 v0.1**(四段 A/B/C/D + T0 十项考证 + 三笔待算账 + P1–P3 全列备选案) | +| `9556539` | **P1–P3 全裁归档** + 光柱区表述解耦 + 06 新登「战斗区背景图替换」 | + +## 4. 当前磁盘状态(重要) + +- **worktree**:`D:/code/g-plan2-standee-tier`,分支 `art-standee-20261006`,**工作区干净**(无未提交改动)。 +- **未并入 master**:`1e42e6e` 与 `9556539` 两个提交**尚未合并**。master 此时已推进 53 个提交到 `3e9360d`。 +- **合并姿势(接手者做,别直动主区)**: + 1. 在 worktree 内 `git merge master`(**先**在分支里解冲突); + 2. 预期冲突点 = `active.md`(并行会话台账已到 395,**本批的 386 会撞号 → 按先例改登下一个空号**,先例见台账 374/383)、可能 `06-待办清单.md`; + 3. 解完再在主区 `git merge --no-ff art-standee-20261006`; + 4. **不要**动主区在飞的脏件(`.gitignore` / `.zcode/config.json` / `playnote.md` / `project.godot`)。 + +## 5. 待办(按优先级) + +### P0 · A 段产图(U0 已具备,可直接开工) + +| 卡 | 动作 | +|---|---| +| A0 | 记录八敌现役 48 档尺寸/色数基线 | +| A1 | 按 `STANDEE_TIER_H` 重产八敌(**命令见 §7**) | +| A2 | 出「九人对照总图」(八敌 + 主角,真实相对体量) | +| A3 | 拷回主区 `game/assets/art/character/` + 同步 `.import` + **旧 48 档归档** | + +### P1 · B 段工具闸(建议提到 A3 之前跑通,理由见 §6) +B1 `standee_asset_check` 硬闸升级(逐键档高 / 色数 ≤32 / 非整数倍痕迹 / 描边亮度)· B2 色板检查器 · B3 路径核对器。 + +### P2 · C 段引擎实装 +C0 **盒高账**(见下) → C1 区高 252→270 / 548→530 → C2 底锚落台 → C3 血条落底 → C4 探顶溢出 + 意图徽标 → C5 探针断言族。 + +### P3 · D 段样张人闸 +整屏样张 + 目检清单 + 追认单 + 出口报告(人闸归用户)。 + +## 6. 关键事实速查(别再重查) + +- `ui_assembler.gd:22` B 区 **252**;`:26` C/D **548**(文档已改 270/530,**代码未动**)。 +- `standee_body.gd:29` `box = Vector2(150,176)`;`:231-234` 立绘盒净高 = 176−44−36 = **96px**;`:237` scale 2.0 NEAREST;`:238` **盒内居中**(方案二要改底锚);`:27` `STANDEE_FOOT_MARGIN=12`;`:475` 意图徽标 y=86;`:194-197` `_intent_scale` 峰值 **1.6**。 +- `battle_stage_view.gd:44` 舞台 `custom_minimum_size=(0,252)`;`:55-63` 顶光柱氛围层(四柱 x 110/900/1055/1210@1280,层序 bg < 光柱 < 世界);`:66-72` `_svp_container` FULL_RECT + `stretch=true` + **无 clip** ⇒ 立绘画到盒顶之上照样渲染。 +- `ui_struct_probe.gd:235-256` ⑥standee 断言族:内容矩形 ⊆ **252px** 舞台(内缩 8px)+ 底缘 ≥8px(改 270 须随改)。 +- **C0 三笔待算账**:① 188px 立绘 vs 96px 盒净高 vs 270 区高 vs 24/84 明细带;② `BattleLogView` 24/84 与 176 盒如何共存(252−176=76 装不下 84);③ 探顶溢出上限 **N**(受顶部中央轮次指示横向约束,暂按 ≤32px 量级,需真图复算)。 + +### 已裁决(P1–P3 全裁甲案,2026-10-07) +- **P1 探顶 = 甲**:盒按最高档抬,**允许向上溢出盒顶 N px,不裁切**。判定**与光柱/背景解耦**(光柱是临时氛围层,正式 `stage/stage_bg.png` 到位后退役,判定不变)。乙(真 clip)淘汰:会切掉石君王王冠;丙(降倍率 ×1.5)淘汰:非整数倍。 +- **P2 结算期 84px 明细带 = 甲**:改**覆盖层**,不挤压站桩盒。乙(压缩盒)淘汰:站桩跳动违反减动效。 +- **P3 棋盘小人 = 甲**:不随本批,保持 32×32。 + +### ⚠ 两个必知的坑 +1. **`.gitignore:50` 忽略整个 `artwork/`** ⇒ **worktree 里没有 `artwork/`**。产图脚本在 worktree 直接跑会**静默产出 0 张**。必须传主区绝对路径。 +2. **素材不入 git** ⇒ 无版本历史、不能 git 回滚 ⇒ **替换前必须归档旧档**,且 **B 段机检是唯一防线**(不是可选项)。 + +## 7. A 段执行命令(已验证可直接跑) + +```bash +# 解释器(Pillow 12.3.0 已装) +PY=D:/dev/python/envs/gamedev/Scripts/python.exe + +# A1 重产八敌 + 主角(源用主区绝对路径,输出先落 worktree 临时目录) +cd D:/code/g-plan2-standee-tier +$PY tools/pixelize_candidates.py \ + D:/code/g-plan2/artwork/remote-gen-2026-09-26 \ + --standee48 --standee-out ./_tmp_standee_new +``` + +源在盘状态(已核实,2026-10-07):八敌 `pixel-1.png` 齐全;`hero-ref/edit/{normal,attack,hit}_1x.png` 齐全。 +输出名 = `character_enemy_<键>.png` / `character_hero_portrait.png` / `character_hero_{attack,hit}.png`。 +档高表 `STANDEE_TIER_H`:goblin 36 / giant_spider 38 / duergar 46 / hook_horror 58 / bugbear 62 / ogre_chief 74 / drider 90 / **duergar_king 94**;主角 48。 + +## 8. 三项未决(等用户拍板,接手者先别自行决定) + +1. **旧 48 档归档位置**:建议 `archive/art/standee-48-legacy-20261007/`(用户若另有素材管理体系则按其路径)。 +2. **B 段是否提前到 A3 之前**(我的建议是提前:素材无 git 保护,机检应在入包前跑通)。 +3. **`artwork/` 独立 git 子仓库**:用户提议(不想素材影响文档/程序实现)。已给方案 = 就地 `git init` 成独立仓库(**不用 submodule**,会污染主仓历史),只入定稿/源(124M 里立绘源仅 2.7M;`ui-reuse-2026-09-23/` 49M 草稿先经 P2-1 dry-run 整理再定)。**待办第一步 = 出 dry-run 入库/排除清单,不动任何文件、不建仓库。** + +## 9. 关联登记 + +- 任务书:`design/research/任务书-立绘定档与站桩重排实装批-2026-10-07.md` +- 06 新登五条:站桩帧动画(Alpha 定版闸前)/ 主角描边素材侧复核 / 3349 草稿 dry-run 整理 / 口号型条款机检化 / **战斗区背景图替换(B 区舞台插画 + 临时光柱退役)** +- art-status-checklist 已对账至 ✅4 / ◐8 / ⬜3(共 15 条) +- 台账:active.md **386**(合并时若撞号按先例改登)