diff --git a/.commit.sh b/.commit.sh new file mode 100644 index 00000000..a97827a9 --- /dev/null +++ b/.commit.sh @@ -0,0 +1,4 @@ +#!/bin/bash +cd /d/code/g-plan2-restructure +git add -A +git commit --amend --no-edit -q diff --git a/.zcode/hooks/session-snapshot.sh b/.zcode/hooks/session-snapshot.sh index 9fa947cf..66b68875 100644 --- a/.zcode/hooks/session-snapshot.sh +++ b/.zcode/hooks/session-snapshot.sh @@ -9,7 +9,7 @@ mkdir -p "$state" date +%s git -C "$proj" status --porcelain 2>/dev/null | sort | sha1sum | cut -d' ' -f1 git -C "$proj" diff HEAD 2>/dev/null | sha1sum | cut -d' ' -f1 - sha1sum "$proj/production/session-state/active.md" 2>/dev/null | cut -d' ' -f1 || echo 0 + sha1sum "$proj/active.md" 2>/dev/null | cut -d' ' -f1 || echo 0 } > "$state/$sid.snap" rm -f "$state/$sid.reminded" exit 0 diff --git a/.zcode/hooks/stop-active-md-guard.sh b/.zcode/hooks/stop-active-md-guard.sh index d962ac95..68b33ca3 100644 --- a/.zcode/hooks/stop-active-md-guard.sh +++ b/.zcode/hooks/stop-active-md-guard.sh @@ -7,7 +7,7 @@ proj="${ZCODE_PROJECT_DIR:-$PWD}" sid="${CLAUDE_SESSION_ID:-default}" state="/tmp/zcode-active-md-guard" snap="$state/$sid.snap" -active_md="$proj/production/session-state/active.md" +active_md="$proj/active.md" [ -f "$snap" ] || exit 0 [ -f "$state/$sid.reminded" ] && exit 0 start_status=$(sed -n 2p "$snap") @@ -20,6 +20,6 @@ now_content=$(sha1sum "$active_md" 2>/dev/null | cut -d' ' -f1 || echo 0) [ "$now_content" = "$start_content" ] || exit 0 touch "$state/$sid.reminded" cat >&2 <<'MSG' -[会话收口检查] 本会话产生了工作区改动,但 production/session-state/active.md 内容未变(本会话内未真更新)。若本会话包含实质工作(代码/文档/数值/设计拍板/缺陷修复),请:① 先更新 active.md 顶部「当前状态快照」节(在飞/可做/阻塞/锚点/下一步——先改快照再记账);② 再在 active.md 末尾追加一条编号批次条目(做了什么·拍板了什么·验证结果·遗留与下一步)。完成后结束;若本次确无可登记事项(纯问答、只读核查),忽略本提醒直接结束。另:待办事项登记 design/gdd/06-待办清单.md(裁决后改状态列留痕),不要写进 active.md 条目表。 +[会话收口检查] 本会话产生了工作区改动,但 根目录 active.md 内容未变(本会话内未真更新)。若本会话包含实质工作(代码/文档/数值/设计拍板/缺陷修复),请:① 先更新根目录 active.md 顶部「当前状态快照」节(在飞/可做/阻塞/锚点/下一步——先改快照再记账);② 再在根目录 active.md 末尾追加一条编号批次条目(做了什么·拍板了什么·验证结果·遗留与下一步)。完成后结束;若本次确无可登记事项(纯问答、只读核查),忽略本提醒直接结束。另:待办事项登记 design/gdd/06-待办清单.md(裁决后改状态列留痕),不要写进 active.md 条目表。 MSG exit 2 diff --git a/.zcode/hooks/worktree-guard.sh b/.zcode/hooks/worktree-guard.sh index 4ab5128a..8dce2498 100644 --- a/.zcode/hooks/worktree-guard.sh +++ b/.zcode/hooks/worktree-guard.sh @@ -49,7 +49,7 @@ def trunk_branch(repo): return "" TRUNK = {"master", "main"} -WHITELIST = [os.path.abspath(winpath(os.path.join(proj, "production", "session-state"))), +WHITELIST = [os.path.abspath(winpath(os.path.join(proj, "active.md"))), os.path.abspath(winpath(os.path.join(proj, ".zcode")))] if tool in ("Edit", "Write", "MultiEdit", "NotebookEdit"): @@ -64,7 +64,7 @@ if tool in ("Edit", "Write", "MultiEdit", "NotebookEdit"): sys.stderr.write( "[worktree 铁律] 主工作区(%s 分支)禁止直接改动:%s\n" "先建独立 worktree 再改:git worktree add ../g-plan2-<任务名> -b <任务分支>;" - "收尾在主工作区 git merge --no-ff 合回。豁免面仅 production/session-state/ 与 .zcode/。\n" % (b, fp)) + "收尾在主工作区 git merge --no-ff 合回。豁免面仅根目录 active.md 与 .zcode/。\n" % (b, fp)) sys.exit(2) elif tool == "Bash": diff --git a/CLAUDE.md b/CLAUDE.md index f2820f37..312acabf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,7 +12,7 @@ ## Engine Version Reference -@docs/engine-reference/godot/VERSION.md +@design/dev/engine-reference/godot/VERSION.md ## 运行与验证(垂直切片) @@ -21,33 +21,38 @@ - 冒烟(全量 headless 断言):`python tools/run_smoke.py`(包装器三闸:退出码+摘要失败数+SCRIPT ERROR 扫描——脚本错误不计冒烟失败数且静默中断所在函数剩余断言,2026-09-19 台账 84 立闸)。底层命令 = `…console.exe --headless --path . --script res://smoke/smoke_all.gd` - 场景级探针(呈现层回归):`…console.exe --headless --path . res://smoke/ui_probe.tscn`;另有 `ui_tune_probe.tscn`(数值调整板)、`ui_click_probe.tscn`(合成鼠标事件行为探针) - 调参期批量工具:`--script res://smoke/adventure_monte_carlo.gd`(全冒险期望扫描)· `--script res://smoke/reward_expectation.gd`(奖励获取期望)——单关直入口口径已退役(2026-09-23 用户拍板),通关率/难度类测量一律走全冒险(原 level_monte_carlo/level_debug 已删) -- 数值验证工具:`python tools/balance_verifier.py`(零强化冒险逐关条件通关率+止步节点归因+营地循环爬升战役——采集端 `--script res://smoke/verifier_batch.gd`,报告落 `production/qa/`;元进度换算率标定与曲线调参的自动化评判面,2026-09-22 数值验证工具批;直入口带判定随口径退役暂停,带重锚归曲线调参批) -- 交付前验收 = smoke + 全部场景探针全绿(测试细则见 `docs/code-conventions.md`) +- 数值验证工具:`python tools/balance_verifier.py`(零强化冒险逐关条件通关率+止步节点归因+营地循环爬升战役——采集端 `--script res://smoke/verifier_batch.gd`,报告落 `design/qa/`;元进度换算率标定与曲线调参的自动化评判面,2026-09-22 数值验证工具批;直入口带判定随口径退役暂停,带重锚归曲线调参批) +- 交付前验收 = smoke + 全部场景探针全绿(测试细则见 `design/dev/code-conventions.md`) ## Project Layout -- `design/gdd/` — 现行设计文档树(根索引 `02-系统清单.md`;文档增删必须同步它) +- `design/gdd/` — 现行设计文档树(根索引 `02-系统清单.md`;文档增删必须同步它;`gdd/ux/` 战斗画面与交互规格) - `design/archive/gdd-2026-09-14/` — 旧版 GDD 归档(只读参考,不作事实引用) -- `design/registry/` — 跨系统事实登记(术语规范名、已锁数值) +- `design/registry/` — 跨系统事实登记(entities.yaml 术语与已锁数值、architecture.yaml 架构登记) - `design/art/` — 美术**纯文档**:定稿规范 md(圣经/清单/提示词卡)+ `references/` 参考池;评估/调研 md 一律 `design/research/`;**不放任何图片** +- `design/dev/` — 工程规范:code-conventions / doc-conventions / architecture(ADR) / engine-reference +- `design/qa/` — 验证报告 md(balance-verifier/playtest/等价证明;raw 数据归 `sim-data/`) +- `design/research/` — 调研/提案/评估记录/历史验收/执行工单 - `artwork/` — **在途图像素材唯一工作区**(2026-09-27 用户三层裁定:文档归文档/在途图归一处/终稿归游戏):生图候选批次(每批一目录+每资产一目录+vN 命名)、像素稿、样张渲染、实机截图全在这里;图不入 git(md 指引例外);收口归档 `archive/` -- `production/` — 过程产物区:stage、session-state、roadmap、gate-checks、qa、执行工单;**不放图片** - `game/assets/art/` — 已验收终稿(入包被游戏加载) -- `game/` — 游戏工程本体(垂直切片转正 2026-09-24 结构批;概念 demo 已删,验证报告留档 `docs/prototype-report-minesweeper-battle-concept.md`) -- `docs/` — 规范与参考文档(权威清单见下方导航) +- `game/` — 游戏工程本体:代码三件套+`smoke/` 冒烟套件+`tests/` 单元/集成测试(2026-09-27 根 tests/ 并入) +- `sim-data/` — 机器读数据产物:模拟试玩 CSV/JSON、verifier raw 基线、日志样例输出 +- `tools/` — python 工具脚本本体(验证/审计/像素化/仪表盘/日志分析) +- 根目录运行文件:`active.md`(会话快照+台账)、`roadmap.md`(里程碑)、`stage.txt`/`review-mode.txt`(运行开关) +- `archive/` — 收口归档 zip(gitignored) ## 规范导航(动手前先查表) | 时机 | 权威文档 | |---|---| -| **写代码 / 改代码前** | `docs/code-conventions.md`——结构 / 契约 / 测试 / 语言 / 数值 / 流程六类硬纪律 + 反面案例对照表 | -| **写文档 / 改文档前** | `docs/doc-conventions.md`——可读性第一、白话写作、概念封装、引用纪律、文档骨架 | +| **写代码 / 改代码前** | `design/dev/code-conventions.md`——结构 / 契约 / 测试 / 语言 / 数值 / 流程六类硬纪律 + 反面案例对照表 | +| **写文档 / 改文档前** | `design/dev/doc-conventions.md`——可读性第一、白话写作、概念封装、引用纪律、文档骨架 | | 查系统设计 / 增删文档 | `design/gdd/02-系统清单.md`——根索引 + 中文规范名↔英文代号对照表 | -| 架构与决策记录 | `docs/architecture/architecture.md` + 同目录 `adr-*.md` | -| 引擎版本与参考 | `docs/engine-reference/godot/`(版本表已在上方 @ 引入) | +| 架构与决策记录 | `design/dev/architecture/architecture.md` + 同目录 `adr-*.md` | +| 引擎版本与参考 | `design/dev/engine-reference/godot/`(版本表已在上方 @ 引入) | | 术语、已锁数值 | `design/registry/entities.yaml`——仅 owner 文档可修订,冲突须显式提出 | -| 会话进度记录 | `production/session-state/active.md`——顶部「当前状态快照」节 + 批次台账;收口先改快照再记账,每条 ≤3 行,详情外链 | -| 工程路线图 | `production/roadmap.md`——里程碑时间线与下一步顺序(批级视图;实时状态看快照节) | +| 会话进度记录 | 根目录 `active.md`——顶部「当前状态快照」节 + 批次台账;收口先改快照再记账,每条 ≤3 行,详情外链 | +| 工程路线图 | 根目录 `roadmap.md`——里程碑时间线与下一步顺序(批级视图;实时状态看快照节) | ## 分支纪律(worktree 铁律,2026-09-19 用户立规) @@ -55,7 +60,7 @@ 1. **开工**:每个任务批次先建独立 worktree 分支再动手:`git worktree add ../g-plan2-<任务名> -b <任务分支>`。所有代码/文档/数值改动与验证跑测都在 worktree 内进行(注意:未跟踪文件不会出现在新 worktree,需手工搬运) 2. **收尾**:验证全绿(冒烟 + 场景探针)后,在主工作区 `git merge --no-ff <任务分支>` 落回 master,然后 `git worktree remove` + 删分支;合并前先看 active.md 尾部台账,避免与并行会话撞号/漏捎带 -3. **豁免面(仅这两处允许主工作区直改)**:`production/session-state/`(会话收口)与 `.zcode/`(钩子配置)——其余一律走 worktree;主工作区 `git commit` 会被钩子直接拦截 +3. **豁免面(仅这两处允许主工作区直改)**:根目录 `active.md`(会话收口)与 `.zcode/`(钩子配置)——其余一律走 worktree;主工作区 `git commit` 会被钩子直接拦截 4. 本铁律由 PreToolUse 钩子 `.zcode/hooks/worktree-guard.sh` 强制兜底;钩子只约束 agent 侧,用户本人手工改动不受限 ## 硬性红线(勿违反) diff --git a/production/session-state/active.md b/active.md similarity index 100% rename from production/session-state/active.md rename to active.md diff --git a/docs/architecture/adr-0001-event-bus-and-orchestration-carrier.md b/design/dev/architecture/adr-0001-event-bus-and-orchestration-carrier.md similarity index 100% rename from docs/architecture/adr-0001-event-bus-and-orchestration-carrier.md rename to design/dev/architecture/adr-0001-event-bus-and-orchestration-carrier.md diff --git a/docs/architecture/adr-0002-renderer-and-window-config.md b/design/dev/architecture/adr-0002-renderer-and-window-config.md similarity index 100% rename from docs/architecture/adr-0002-renderer-and-window-config.md rename to design/dev/architecture/adr-0002-renderer-and-window-config.md diff --git a/docs/architecture/adr-0003-scene-structure-and-board-rendering.md b/design/dev/architecture/adr-0003-scene-structure-and-board-rendering.md similarity index 100% rename from docs/architecture/adr-0003-scene-structure-and-board-rendering.md rename to design/dev/architecture/adr-0003-scene-structure-and-board-rendering.md diff --git a/docs/architecture/adr-0004-test-carrier-and-ci.md b/design/dev/architecture/adr-0004-test-carrier-and-ci.md similarity index 100% rename from docs/architecture/adr-0004-test-carrier-and-ci.md rename to design/dev/architecture/adr-0004-test-carrier-and-ci.md diff --git a/docs/architecture/adr-0005-save-contract-and-schema-versioning.md b/design/dev/architecture/adr-0005-save-contract-and-schema-versioning.md similarity index 100% rename from docs/architecture/adr-0005-save-contract-and-schema-versioning.md rename to design/dev/architecture/adr-0005-save-contract-and-schema-versioning.md diff --git a/docs/architecture/adr-0006-board-node2d-rendering.md b/design/dev/architecture/adr-0006-board-node2d-rendering.md similarity index 100% rename from docs/architecture/adr-0006-board-node2d-rendering.md rename to design/dev/architecture/adr-0006-board-node2d-rendering.md diff --git a/docs/architecture/architecture.md b/design/dev/architecture/architecture.md similarity index 100% rename from docs/architecture/architecture.md rename to design/dev/architecture/architecture.md diff --git a/docs/architecture/board-node2d-migration-plan.md b/design/dev/architecture/board-node2d-migration-plan.md similarity index 100% rename from docs/architecture/board-node2d-migration-plan.md rename to design/dev/architecture/board-node2d-migration-plan.md diff --git a/docs/architecture/code-architecture-review-2026-09-13.md b/design/dev/architecture/code-architecture-review-2026-09-13.md similarity index 100% rename from docs/architecture/code-architecture-review-2026-09-13.md rename to design/dev/architecture/code-architecture-review-2026-09-13.md diff --git a/docs/architecture/gdd-concept-map.architecture.json b/design/dev/architecture/gdd-concept-map.architecture.json similarity index 100% rename from docs/architecture/gdd-concept-map.architecture.json rename to design/dev/architecture/gdd-concept-map.architecture.json diff --git a/docs/architecture/gdd-concept-map.html b/design/dev/architecture/gdd-concept-map.html similarity index 100% rename from docs/architecture/gdd-concept-map.html rename to design/dev/architecture/gdd-concept-map.html diff --git a/docs/architecture/gdd-concept-map.visual-check.1440x900.dark.png b/design/dev/architecture/gdd-concept-map.visual-check.1440x900.dark.png similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.1440x900.dark.png rename to design/dev/architecture/gdd-concept-map.visual-check.1440x900.dark.png diff --git a/docs/architecture/gdd-concept-map.visual-check.1440x900.light.png b/design/dev/architecture/gdd-concept-map.visual-check.1440x900.light.png similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.1440x900.light.png rename to design/dev/architecture/gdd-concept-map.visual-check.1440x900.light.png diff --git a/docs/architecture/gdd-concept-map.visual-check.2048x1320.dark.png b/design/dev/architecture/gdd-concept-map.visual-check.2048x1320.dark.png similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.2048x1320.dark.png rename to design/dev/architecture/gdd-concept-map.visual-check.2048x1320.dark.png diff --git a/docs/architecture/gdd-concept-map.visual-check.2048x1320.light.png b/design/dev/architecture/gdd-concept-map.visual-check.2048x1320.light.png similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.2048x1320.light.png rename to design/dev/architecture/gdd-concept-map.visual-check.2048x1320.light.png diff --git a/docs/architecture/gdd-concept-map.visual-check.html b/design/dev/architecture/gdd-concept-map.visual-check.html similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.html rename to design/dev/architecture/gdd-concept-map.visual-check.html diff --git a/docs/architecture/gdd-concept-map.visual-check.json b/design/dev/architecture/gdd-concept-map.visual-check.json similarity index 100% rename from docs/architecture/gdd-concept-map.visual-check.json rename to design/dev/architecture/gdd-concept-map.visual-check.json diff --git a/docs/architecture/requirements-traceability.md b/design/dev/architecture/requirements-traceability.md similarity index 100% rename from docs/architecture/requirements-traceability.md rename to design/dev/architecture/requirements-traceability.md diff --git a/docs/code-conventions.md b/design/dev/code-conventions.md similarity index 100% rename from docs/code-conventions.md rename to design/dev/code-conventions.md diff --git a/docs/doc-conventions.md b/design/dev/doc-conventions.md similarity index 100% rename from docs/doc-conventions.md rename to design/dev/doc-conventions.md diff --git a/docs/engine-reference/godot/VERSION.md b/design/dev/engine-reference/godot/VERSION.md similarity index 100% rename from docs/engine-reference/godot/VERSION.md rename to design/dev/engine-reference/godot/VERSION.md diff --git a/docs/engine-reference/godot/breaking-changes.md b/design/dev/engine-reference/godot/breaking-changes.md similarity index 100% rename from docs/engine-reference/godot/breaking-changes.md rename to design/dev/engine-reference/godot/breaking-changes.md diff --git a/docs/engine-reference/godot/current-best-practices.md b/design/dev/engine-reference/godot/current-best-practices.md similarity index 100% rename from docs/engine-reference/godot/current-best-practices.md rename to design/dev/engine-reference/godot/current-best-practices.md diff --git a/docs/engine-reference/godot/deprecated-apis.md b/design/dev/engine-reference/godot/deprecated-apis.md similarity index 100% rename from docs/engine-reference/godot/deprecated-apis.md rename to design/dev/engine-reference/godot/deprecated-apis.md diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index d8dcbb99..e7120a22 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -339,7 +339,7 @@ #### 战斗屏 C 区预留区接线(魔法道具槽 + 本关强化列表,2026-09-26 登记) -**现状**:C 区精简批(台账 165,[battle.md](../ux/battle.md) §信息归属原则与分区唯一展示面)已在 C 区落两个预留区壳——魔法道具槽(4 空槽占位,数量/交互形态未定稿)、本关强化列表(空态隐藏,`set_level_bonuses` 接线面已留)。两者均零数据接线:魔法道具槽待魔法道具批定稿道具形态后接库存只读面;本关强化列表待锻造/大奖励/关卡奖励节点呈现批接 runner 加算区投影(bonus{atk,max_hp,armor_class})。 +**现状**:C 区精简批(台账 165,[battle.md](ux/battle.md) §信息归属原则与分区唯一展示面)已在 C 区落两个预留区壳——魔法道具槽(4 空槽占位,数量/交互形态未定稿)、本关强化列表(空态隐藏,`set_level_bonuses` 接线面已留)。两者均零数据接线:魔法道具槽待魔法道具批定稿道具形态后接库存只读面;本关强化列表待锻造/大奖励/关卡奖励节点呈现批接 runner 加算区投影(bonus{atk,max_hp,armor_class})。 **归属**:魔法道具批(道具槽)/ 表现层升级批(本关强化列表)· 载体 `hero_info_panel_view.gd` diff --git a/design/gdd/07-体验验证清单.md b/design/gdd/07-体验验证清单.md index bac582b8..cd251bba 100644 --- a/design/gdd/07-体验验证清单.md +++ b/design/gdd/07-体验验证清单.md @@ -61,7 +61,7 @@ 弃图率 / 每轮刷新率随试玩日志采集;预警阈值须有基线读数才能定(2026-09-18 拍板:现在定是拍脑袋)——随验收读数重测批出基线,数字与调参联动复核。挖掘期当场刷新无结算发生,两读数均不影响对账。 -**基线已采(2026-09-19 验收重测批,读数详见 [判读报告](../../production/qa/acceptance-rerun-20260919.md))**:MC 完美档弃图 ~0.1 次/局量级(L1 基线格 0.23 / L2 0.03)、normal 档零弃图(模拟画像不主动刷新);每轮刷新率 ≤0.6%。阈值数字仍归调参批。两读数已固化进 `log_analysis.py` 关卡级统计列(分析器随批升级)。 +**基线已采(2026-09-19 验收重测批,读数详见 [判读报告](../qa/acceptance-rerun-20260919.md))**:MC 完美档弃图 ~0.1 次/局量级(L1 基线格 0.23 / L2 0.03)、normal 档零弃图(模拟画像不主动刷新);每轮刷新率 ≤0.6%。阈值数字仍归调参批。两读数已固化进 `log_analysis.py` 关卡级统计列(分析器随批升级)。 ### ⑧ 旗行为基线监控(插旗不可逆批 2026-09-19 落地后的行为监控;原「提案评估前置采集」使命随提案转正终结) @@ -88,7 +88,7 @@ **局后随手记**(一句话即可,事后对日志):每局大概掉了多少血 / 有没有整轮一点血没掉的轮次 / 通关与否 / 有没有"这局特别顺/特别倒霉"的体感(种子体感核对用)。 -**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位,预警线 k<0.3)并入[判读报告](../../production/qa/acceptance-rerun-20260919.md)终稿;①–⑤ 体感按各条目的回流位分流。 +**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位,预警线 k<0.3)并入[判读报告](../qa/acceptance-rerun-20260919.md)终稿;①–⑤ 体感按各条目的回流位分流。 ## 验收读数重测批义务(给下一批的输入,非手工项) diff --git a/design/gdd/systems/冒险循环/元进度.md b/design/gdd/systems/冒险循环/元进度.md index f1729326..786cf0ff 100644 --- a/design/gdd/systems/冒险循环/元进度.md +++ b/design/gdd/systems/冒险循环/元进度.md @@ -74,7 +74,7 @@ 解锁让玩家变强,难度验收区间随之需要平移——双方约定(难度曲线与Boss 定稿口径)永久强化的影响**不直接改难度判据**,而是按统一换算率折算成通关率带的平移量后套用:完美档 gate 与 normal 目标带的判读口径不变,带随解锁等级平移。 -换算率表(registry 键 `meta_progression_conversion_table`,数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(2026-09-23 换算率标定批投值——OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径 + 当日数值包现行态;报告 `production/qa/conversion-calibration/calibration.raw.md`,判定端 ④ 段可复判): +换算率表(registry 键 `meta_progression_conversion_table`,数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(2026-09-23 换算率标定批投值——OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径 + 当日数值包现行态;报告 `../../../qa/conversion-calibration/calibration.raw.md`,判定端 ④ 段可复判): | 换算行 | 折算语义 | 每级带平移量(现行表值) | |---|---|---| diff --git a/design/gdd/systems/冒险循环/关卡节点地图.md b/design/gdd/systems/冒险循环/关卡节点地图.md index a93b4629..156a2544 100644 --- a/design/gdd/systems/冒险循环/关卡节点地图.md +++ b/design/gdd/systems/冒险循环/关卡节点地图.md @@ -105,7 +105,7 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 2. 定位信息只有两样:**关卡序号 + 节点编号**。战斗侧拿编号查表、配敌、掷数量、跑技能池、兑踩雷负向——一切战斗内部初始化归战斗循环文档(原"叠伏击"随 2026-09-20 八型批伏击退役改述),图的初始化不为战斗初始化做任何决定。 3. 本文不预掷任何战斗数值、不读敌人数量;教学位节点同样掷骰、没有结构豁免("任何掷骰结果下都稳过"的保证是[难度曲线与Boss](难度曲线与Boss.md)的数值责任)。 -第二关的"新内容 = 既有池新技能"([技能池提案](../../../../docs/proposal-skill-pool.md)已定)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。 +第二关的"新内容 = 既有池新技能"([技能池提案](../../../research/proposal-skill-pool.md)已定)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。 **节点奖励 = 功能道具的正式渠道**(2026-09-17 拍板,原 06 清单条目已解决移除):奖励节点兑付 = 获得一件功能道具并进入持有域。道具内容、持有域归属与使用窗口语义归[魔法道具](../排雷循环/魔法道具.md)内容重定批——切片期道具内容整批后置,奖励节点**零兑付直通是合法空态**,不是缺陷。 @@ -185,4 +185,4 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 | v1.0 | 2026-09-17 | **定稿**(逐问题拍板,全用户裁决):① 形态重开——用户拍板重开[05-不做清单](../../05-不做清单.md)「路径分支地图后置」裁定,定稿为**分支节点图**(分层节点图,杀戮尖塔 / 哥布林弹珠同构;方块地牢美术观感、逻辑为节点图),P0 图定稿 + 单链特例先行;② 节点类型定稿四类封闭枚举不扩类;③ 行进交互定稿全节点确认 + 兑付后确认、零自动推进;④ 遭遇构成收窄为编排面三条(战斗内部初始化全归战斗小循环),寻址定稿节点编号升级(`node_depth` 语义升级为关卡内唯一节点编号,表键与字段名零改动,单链零漂移);⑤ 节点奖励拍板为功能道具的正式渠道(内容归魔法道具内容重定批,切片期直通为合法空态);⑥ 「精英与 Boss 编码位」(同层多遭遇由节点编号消解,不设编码位)与「多敌数量的消费面」(关卡层零消费)两悬案收口,同场多敌种面拆归战斗侧;⑦ 切片行进代码对照的接口漂移清单登记 06 | | v1.0.1 | 2026-09-17 | **P1 分支节点图内容与实现批落地**(用户拍板任务批——切片代码 / 难度曲线与Boss v0.7 / registry / 06 待办同批):首张分支图 = 切片关卡 2「第二层 · 幽暗地域」行集落地(9 节点网状图:入口 0 → 中间三层 2/3/2 → Boss 8,真实岔路 4 处,奖励点 + 恢复点各 1,战斗节点 6 + Boss);行进器图版推进(`choices_presented` 选路态 + `pick_next_node`——零自动推进,战斗胜利不再自动推进、`continue_after_node` 泛化为兑付确认,06 接口漂移清单 ④⑤⑧ 清偿);图合法性校验落地 `LevelTable.validate`(单链与图同一套算法,L1 零迁移过校验,违规加载致命);节点图选路 UI(选路覆盖层整图自绘——房间方块 + 通道连线 + 当前/候选高亮,占位图形质量;顶栏图形态渲染行进序列 + 候选);首页"关卡 2 试玩"直入口(测试模式,≠ 两关序列生效)。本版本号只记实现批状态,图规则口径零改动 | | v1.1 | 2026-09-20 | **商店房扩类(GP+商店房批,用户拍板——与冒险结构 / 战斗结算 / 地图战斗资源 / 难度曲线与Boss / registry / 切片同批)**:① 节点封闭枚举四类→五类(+商店房);② 编排规则定稿——每关恰 1、关底 Boss 前一位必经位(哈迪斯式"决战前最后一个补给点"定位);必经位由冒烟断言承载、图合法性六检零新增;③ 兑付定稿——打开商店覆盖层、购买即时生效写统一冒险加算区(与关卡大奖励同账,归冒险结构)、离开后兑付确认;商店房不携带战斗行;④ 节点兑付表 / 纪律表 / 依赖表 / P0 闭环 / 验收标准 / P2「事件类节点候选」注记同步 | -| v1.2 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `docs/architecture/adr-0006-board-node2d-rendering.md` 与 `docs/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 行进循环改停点前移口径——关卡开始即呈现节点图选路停点(关卡画面 = 选路覆盖层常驻化,入口节点不自动进入,第一次选路就是"出发"),选路确认进节点,兑付确认后返回关卡画面再选路(战后回图);兑付后确认、零自动推进两条纪律语义不变,只改承载位;② 呈现侧口径补进度承载条款——关卡画面本体即节点链进度呈现载体(节点态直接读图:已过暗金 / 当前金 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件(战斗屏 A 区进度条随批退役);③ P0 闭环两条、依赖表 HUD 框架行、验收标准「行进自主」条同步。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行;③ 关卡画面进度呈现由选路覆盖层节点态承载(登记面见 HUD框架 v0.8) | +| v1.2 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 行进循环改停点前移口径——关卡开始即呈现节点图选路停点(关卡画面 = 选路覆盖层常驻化,入口节点不自动进入,第一次选路就是"出发"),选路确认进节点,兑付确认后返回关卡画面再选路(战后回图);兑付后确认、零自动推进两条纪律语义不变,只改承载位;② 呈现侧口径补进度承载条款——关卡画面本体即节点链进度呈现载体(节点态直接读图:已过暗金 / 当前金 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件(战斗屏 A 区进度条随批退役);③ P0 闭环两条、依赖表 HUD 框架行、验收标准「行进自主」条同步。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行;③ 关卡画面进度呈现由选路覆盖层节点态承载(登记面见 HUD框架 v0.8) | diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index 91bbd23a..5fb968f0 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -285,4 +285,4 @@ GP(显示名「金币」)是冒险内的一次性属性提升货币:战斗 | v0.6 | 2026-09-21 | **冒险结构实现批落地登记(切片 AdventureRunner + LevelRunner 账本外置 + AdventureTable 建表——与切片代码 / registry / 03 / 06 / roadmap 同批)**:本批只记实现批状态,正文规则口径零改动。落地面 = 三关正式序列生效(首页「开始冒险」)、接口契约四件套正式侧承载(开始关卡 start_level_external / 战斗结果上报共享账本直写 / 治疗封顶回报 apply_rest / 关卡结束 level_finished)、生命账本与 GP 冒险账本上交冒险结构层、大奖励非末关恰兑付一次(末关钥石照记)、冒险摘要五件事产出、主种子恰一次注入(registry rng_service new_adventure 调用权同批登记)、结算受理只算一次;06 待办「两关序列未生效」「切片行进代码与定稿的接口漂移」「冒险表未建表」三条随批解决移除。**规划书冲突按代码为准登记两处**:①大奖励 `_pending_next_level` 置位先于 emit(信号同步派发——处理器内立即确认需标记已就位);②放弃受理补 state=running 守卫(契约 7 结算受理只算一次的 abandoned 侧对齐) | | v0.7 | 2026-09-21 | **放弃入口界面呈现批(用户拍板「放弃接口也要有」——台账 119,推翻本文原「MVP 无界面入口、呈现后置」条款)**:① 放弃入口挂[关卡节点地图](关卡节点地图.md)选路覆盖层(选路停点 = 天然非战斗期;战斗中拒绝转为防御兜底分支——入口在战斗期不可达);② 入口只在冒险模式开放,单关测试直入口没有可放弃的冒险对象;③ 正文改现行口径(放弃节 / 验收标准放弃条),P1 后置表「放弃入口的界面呈现」随落地移除(同表「两关序列生效」系 v0.6 已落地漏收口,顺手同口径移除);④ 验收闸 = ui_probe 三断言(默认隐藏 / 冒险模式可见 / 首战中按下被拒 state 保持 running)+ 冒烟既有放弃两态 API 断言 | | v0.8 | 2026-09-23 | **单关测试直入口退役(用户拍板——唯一试玩入口 = 完整三关冒险)**:正文改现行口径两处(放弃节「按钮只在冒险模式开放」的理由从「单关直入口无冒险对象」改为「选路覆盖层只在冒险模式出现」;验收标准放弃条同步去单关直入口从句)——放弃语义对象(整局冒险)与拒绝分支零改动。版本历史行(v0.7)按 ADR 纪律不回改 | -| v0.9 | 2026-09-23 | **停点前移批流程口径对齐(用户 2026-09-23 拍板冒险入口流程倒置修复——与 HUD框架 / 关卡节点地图 / battle.md / `docs/architecture/adr-0006-board-node2d-rendering.md` 同批)**:P0 闭环「开始关卡」条改新流程口径——关卡节点地图加载节点图后停在入口选路停点(关卡画面,选路覆盖层常驻形态),行进自玩家首次选路开始;通读复核其余章节——「通关自动进下一关」属关卡序列层语义(进入下一关后仍出图选路,零矛盾)、接口契约四件套、收束点先清库后宣布、放弃入口(选路停点 = 天然非战斗期)等既有裁决零改动。**批内代拍板三项已追认(2026-09-24 用户确认)**(字母不重编 / 28px 归 C/D 底行 / 进度呈现由选路覆盖层节点态承载)不落本文修订面,登记见 HUD框架 v0.8 | +| v0.9 | 2026-09-23 | **停点前移批流程口径对齐(用户 2026-09-23 拍板冒险入口流程倒置修复——与 HUD框架 / 关卡节点地图 / battle.md / `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 同批)**:P0 闭环「开始关卡」条改新流程口径——关卡节点地图加载节点图后停在入口选路停点(关卡画面,选路覆盖层常驻形态),行进自玩家首次选路开始;通读复核其余章节——「通关自动进下一关」属关卡序列层语义(进入下一关后仍出图选路,零矛盾)、接口契约四件套、收束点先清库后宣布、放弃入口(选路停点 = 天然非战斗期)等既有裁决零改动。**批内代拍板三项已追认(2026-09-24 用户确认)**(字母不重编 / 28px 归 C/D 底行 / 进度呈现由选路覆盖层节点态承载)不落本文修订面,登记见 HUD框架 v0.8 | diff --git a/design/gdd/systems/战斗循环/战斗表现.md b/design/gdd/systems/战斗循环/战斗表现.md index 34534f8d..319b1bff 100644 --- a/design/gdd/systems/战斗循环/战斗表现.md +++ b/design/gdd/systems/战斗循环/战斗表现.md @@ -14,7 +14,7 @@ ## 系统范围 -边界这样划:战斗屏上"发生什么、摆在哪里、是什么意思"已经由两份现行文档定稿——屏级呈现形态归 [战斗屏 UX 规格 battle.md](../../../ux/battle.md),视觉基调与剪影色彩归 [美术圣经 art-bible](../../../art/art-bible.md)。本文只负责"这些东西怎么动",而且是排期靠后的打磨项(见 [不做清单](../../05-不做清单.md):战斗动画演出是 MVP 内的打磨项,一律排后)。 +边界这样划:战斗屏上"发生什么、摆在哪里、是什么意思"已经由两份现行文档定稿——屏级呈现形态归 [战斗屏 UX 规格 battle.md](../../ux/battle.md),视觉基调与剪影色彩归 [美术圣经 art-bible](../../../art/art-bible.md)。本文只负责"这些东西怎么动",而且是排期靠后的打磨项(见 [不做清单](../../05-不做清单.md):战斗动画演出是 MVP 内的打磨项,一律排后)。 负责: @@ -28,7 +28,7 @@ | 不负责 | 归谁 | |---|---| -| 屏级呈现形态与呈现语义(四区布局、敌人呈现〔站桩形态〕、明细带、高光行) | [battle.md](../../../ux/battle.md) 与 [HUD 框架](../表现与支撑/HUD框架.md),本文只引用 | +| 屏级呈现形态与呈现语义(四区布局、敌人呈现〔站桩形态〕、明细带、高光行) | [battle.md](../../ux/battle.md) 与 [HUD 框架](../表现与支撑/HUD框架.md),本文只引用 | | 视觉基调、剪影哲学、色彩与图标键契约 | [art-bible](../../../art/art-bible.md),本文只引用 | | 结算逻辑与逐行流水本身 | [战斗结算](战斗结算.md) | | 敌种视觉状态的数据面(哪个敌种有几态、什么姿态) | [敌人系统](敌人系统.md) | @@ -49,7 +49,7 @@ ### 不另起场景:在既有呈现上叠加动画密度 -战斗屏是挖掘与结算两种形态共用的同一张屏:常驻双舞台(白话:战斗画面与扫雷图同屏常驻,像同一块屏上的两个舞台),结算期不切换场景,裁决与理由见 [battle.md 布局决策 1](../../../ux/battle.md)。所以战斗表现的工作不是另做一个战斗场景,而是在既有呈现上叠加动画密度与演出——这是本系统范围边界的第一条。 +战斗屏是挖掘与结算两种形态共用的同一张屏:常驻双舞台(白话:战斗画面与扫雷图同屏常驻,像同一块屏上的两个舞台),结算期不切换场景,裁决与理由见 [battle.md 布局决策 1](../../ux/battle.md)。所以战斗表现的工作不是另做一个战斗场景,而是在既有呈现上叠加动画密度与演出——这是本系统范围边界的第一条。 "发生什么"与"怎么动"因此分了工:敌人死亡是血条归零后灰化加碎裂退场、禁止瞬间消失,结算明细带逐行滚动,完美排雷与标中旗有高光行强调——这些呈现语义已由 battle.md 与 HUD 框架定稿,本文不复述。本文将来承接的只是其上的动画密度:受击反馈、弹道、退场动画等类别。 @@ -81,7 +81,7 @@ 样张是前置美术测试的判定物;本节把"怎么算过"在测试组织前写成文,避免临场现定标准。成文做法参照 [art-bible](../../../art/art-bible.md) §1.4 格子样张测试(内容清单、按序验收项、判定与回退),判据全部落到已冻结的现行口径上——本节不定任何新的视觉参数。 -样张内容清单(一组齐备,缺项即无效):按 [battle.md 布局决策 1](../../../ux/battle.md) 的常驻双舞台四区布局整屏出样;角色剪影按棋盘格、结算明细带、战斗舞台三个语境同图摆放;~~敌人卡两候选形态对照(卡片式与站桩式各一版,其余内容不变)~~——**本项已由 2026-09-20 形态裁决提前收口(全站桩定稿、卡片式退役),正式样张按站桩形态单版出样即可**(owner 修订,对照义务解除;见 06 待办「敌人卡形态」销项,台账 99);受击、退场、高光兑现三组动画关键帧条(每组至少起、中、末三帧);敌人姿态精灵与数字、旗、小人同格叠放的遮挡对照组至少一组。 +样张内容清单(一组齐备,缺项即无效):按 [battle.md 布局决策 1](../../ux/battle.md) 的常驻双舞台四区布局整屏出样;角色剪影按棋盘格、结算明细带、战斗舞台三个语境同图摆放;~~敌人卡两候选形态对照(卡片式与站桩式各一版,其余内容不变)~~——**本项已由 2026-09-20 形态裁决提前收口(全站桩定稿、卡片式退役),正式样张按站桩形态单版出样即可**(owner 修订,对照义务解除;见 06 待办「敌人卡形态」销项,台账 99);受击、退场、高光兑现三组动画关键帧条(每组至少起、中、末三帧);敌人姿态精灵与数字、旗、小人同格叠放的遮挡对照组至少一组。 验收项按序判定,第一项不过 = 整张否决(继承格子样张"数字可读性定风格"的次序): @@ -105,7 +105,7 @@ | 上游 | [HUD 框架](../表现与支撑/HUD框架.md) | 四区布局、战斗画面区(四区中的 B 区)演出区结构、敌人呈现(站桩形态)与明细带呈现语义——本文在其上叠加密度 | | 上游 | [敌人系统](敌人系统.md) | 资产需求下限三类与敌种姿态数据面——数据已锁,本文出终稿;另登记一项随样张一并裁决的事项:敌人层绘制优先级的插入位置 | | 上游 | [art-bible](../../../art/art-bible.md)(现行权威) | 剪影、色彩、图标键契约、各阶段氛围——表现侧约束 | -| 上游 | [battle.md](../../../ux/battle.md)(现行权威) | 屏级呈现形态与呈现语义 | +| 上游 | [battle.md](../../ux/battle.md)(现行权威) | 屏级呈现形态与呈现语义 | | 协作 | [音频](../表现与支撑/音频.md) | 坍塌显形动画与音效方向系同批配对登记,将来对位设计(挂点未定) | ## P0 最小闭环 diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index 19620dc7..3c3ba1c2 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -12,7 +12,7 @@ HUD框架把各玩法系统产生的事实变成玩家看得见、点得动、 ## 系统范围 -边界这样划:本系统管"怎么呈现、怎么翻译输入、弹层怎么排队"。一个动作合不合法、结果算什么意思,归排雷玩法、行动经济、战斗结算等上游裁定;画面具体长什么样、组件落在哪一像素,屏级权威是 [battle.md](../../../ux/battle.md)——本文只锁系统级契约。 +边界这样划:本系统管"怎么呈现、怎么翻译输入、弹层怎么排队"。一个动作合不合法、结果算什么意思,归排雷玩法、行动经济、战斗结算等上游裁定;画面具体长什么样、组件落在哪一像素,屏级权威是 [battle.md](../../ux/battle.md)——本文只锁系统级契约。 负责: @@ -33,7 +33,7 @@ HUD框架把各玩法系统产生的事实变成玩家看得见、点得动、 |---|---| | 任何玩法状态与玩法数值 | 各玩法系统;数值表本体归[数据配置](数据配置.md) | | 合法性判定与机制语义裁定 | [排雷玩法](../排雷循环/排雷玩法.md)、[行动经济](../排雷循环/行动经济.md)、[战斗结算](../战斗循环/战斗结算.md) | -| 屏级布局与动画时长的像素级裁决 | [battle.md](../../../ux/battle.md) | +| 屏级布局与动画时长的像素级裁决 | [battle.md](../../ux/battle.md) | | 美术终稿与动画密度 | [art-bible](../../../art/art-bible.md)与[战斗表现](../战斗循环/战斗表现.md) | | 音频、教学内容、本地化文本生产 | [音频](音频.md)、[教学引导](教学引导.md)、[设置与本地化](设置与本地化.md) | | 任何随机消费 | 无——呈现层零随机 | @@ -62,9 +62,9 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | C 角色信息 | 左下 240×548 | 生命 / 攻击 / 储备数据框、状态效果槽、小人立绘 | | D 扫雷图 | 中下约 1036×548(原右下面板删除后横向加宽) | 行动点条与按钮组、棋盘本体、toast 槽 | -分区尺寸与组件落位的像素级裁决归 [battle.md](../../../ux/battle.md);三区结构与双舞台常驻是结构冻结项,修订走文档修订而非调参。节点链进度不在战斗屏呈现——它由关卡画面(选路覆盖层常驻形态)的节点态承载,见[关卡节点地图](../冒险循环/关卡节点地图.md)。 +分区尺寸与组件落位的像素级裁决归 [battle.md](../../ux/battle.md);三区结构与双舞台常驻是结构冻结项,修订走文档修订而非调参。节点链进度不在战斗屏呈现——它由关卡画面(选路覆盖层常驻形态)的节点态承载,见[关卡节点地图](../冒险循环/关卡节点地图.md)。 -**结论**:棋盘格边长取两档定值——12×12 的板用 36px、10×10 的板用 45px([battle.md](../../../ux/battle.md) 拍板值);下式不推导这两档,只在装板时校验"定值塞得进扫雷图区",违例立即报错中止。 +**结论**:棋盘格边长取两档定值——12×12 的板用 36px、10×10 的板用 45px([battle.md](../../ux/battle.md) 拍板值);下式不推导这两档,只在装板时校验"定值塞得进扫雷图区",违例立即报错中止。 ``` 可行性校验(装板期断言): @@ -250,6 +250,6 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | v0.5 | 2026-09-17 | 数值纪律收口批:调参表标注文档自持口径(无表承载常量的唯一事实源声明) | | v0.6 | 2026-09-20 | **敌人卡形态裁决收口批(与 battle.md / 战斗表现 / 06 清单同批,台账 99)**:全站桩形态拍板——B 区主角与敌人均为无框立绘+底座、状态小图标挂血条正下方,英雄卡/敌人卡退役;B 区行、敌人呈现义务行(载体由卡改立绘,意图占位/共享层数各立绘同值/死亡灰化退场等义务面平移)、下游战斗表现交付行、就地更新示例措辞四处同步;攻击值等规划数据仍归 C 区数据框(C 区不动)。呈现快照数据面零改动(消费字段不变,只换呈现载体) | | v0.7 | 2026-09-20 | **表现层三批落地 + 义务清单补行(代码同日三批:样式收敛 / 站桩改造 / 结算演出链)**:呈现义务来源清单补「关卡节点地图」行(节点链进度常显 + 选路覆盖层只读呈现——此前漏登记);新增结算演出覆盖层(跨区弹道/光带载体,兑现演出因果可视);减动效承诺落地(UiKit.motion 单点包装全部呈现层 tween 时长,开启时长减半、可挖域呼吸停格;切片期入口 = TunePanel 开关,正式设置层归设置批)。代码侧站桩载体(StandeeView)与卡片退役随 v0.6 裁决执行 | -| v0.8 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `docs/architecture/adr-0006-board-node2d-rendering.md` 与 `docs/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 战斗屏布局四区 → 三区——删 A 区关卡进度条行(LevelStripView 退役删除,节点链进度呈现移出战斗屏、只留关卡画面);C/D 区纵向 520 → 548;装板校验变量与实算同步(棋盘区高 504、可用高度 488);② 呈现义务来源清单「关卡节点地图」行改承载口径——节点链进度由关卡画面选路覆盖层节点态承载(暗金已过 / 金当前 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件;③ 「四区」措辞全线改「三区」(负责表、节题、结构冻结、验收、下游战斗表现交付行),双舞台常驻语义不动。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编(字母是跨文档/代码注释的承载标识);② A 区 28px 纵向空间划归 C/D 底行(520 → 548;1920 档换算仍归表现层升级批);③ 关卡画面进度呈现由选路覆盖层节点态直接承载、不另设进度条组件 | +| v0.8 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 战斗屏布局四区 → 三区——删 A 区关卡进度条行(LevelStripView 退役删除,节点链进度呈现移出战斗屏、只留关卡画面);C/D 区纵向 520 → 548;装板校验变量与实算同步(棋盘区高 504、可用高度 488);② 呈现义务来源清单「关卡节点地图」行改承载口径——节点链进度由关卡画面选路覆盖层节点态承载(暗金已过 / 金当前 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件;③ 「四区」措辞全线改「三区」(负责表、节题、结构冻结、验收、下游战斗表现交付行),双舞台常驻语义不动。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编(字母是跨文档/代码注释的承载标识);② A 区 28px 纵向空间划归 C/D 底行(520 → 548;1920 档换算仍归表现层升级批);③ 关卡画面进度呈现由选路覆盖层节点态直接承载、不另设进度条组件 | | v0.9 | 2026-09-23 | 渲染技术注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘本体 Node2D 化——BoardView 内部由 GridContainer+逐格控件改为 Control 壳 + SubViewport + Node2D 世界,类名/信号/公共方法契约不变、探针零改造;三区布局与性能预算(同屏 draw calls < 200)不变;程序化占位视觉等价平移,素材终稿按 art-bible §8.2 格面 32×32 暂定档槽位 1:1 换入 | | v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明见 production/qa/battle-stage-node2d-等价证明-2026-09-26.md) | diff --git a/design/gdd/systems/表现与支撑/设置与本地化.md b/design/gdd/systems/表现与支撑/设置与本地化.md index 3bc82a1f..bc4def77 100644 --- a/design/gdd/systems/表现与支撑/设置与本地化.md +++ b/design/gdd/systems/表现与支撑/设置与本地化.md @@ -29,7 +29,7 @@ | 不负责 | 归谁 | |---|---| | 呈现语义与可访问性基线本体(字号下限、闪烁上限、纯鼠标可玩等) | [HUD 框架](HUD框架.md) | -| 逐行结算的呈现规则 | [battle.md](../../../ux/battle.md) 与 [HUD 框架](HUD框架.md),本文只引用 | +| 逐行结算的呈现规则 | [battle.md](../../ux/battle.md) 与 [HUD 框架](HUD框架.md),本文只引用 | | 减动效开启后动画怎么演 | [战斗表现](../战斗循环/战斗表现.md)——本文提供开关,动画侧兑现归对方 | | 音量调节对声音怎么生效 | [音频](音频.md)——生效侧归对方,口径已对齐(2026-09-18 音频成文) | | 文案内容本体(教学条目、界面用语等写了什么) | 各系统文档——本文只做翻译生产,不改含义 | @@ -61,7 +61,7 @@ | 输入 | 登记处 | 将来要做的 | |---|---|---| -| 减动效开关 | [HUD 框架](HUD框架.md)的可访问性基线与 [battle.md](../../../ux/battle.md)的呈现承诺;[战斗表现](../战斗循环/战斗表现.md)已登记承接其动画侧 | 提供开关:开启后全部动画有时长减半或直达终态的通路。呈现侧的约束以 battle.md 与 HUD 框架为权威,本文不复述 | +| 减动效开关 | [HUD 框架](HUD框架.md)的可访问性基线与 [battle.md](../../ux/battle.md)的呈现承诺;[战斗表现](../战斗循环/战斗表现.md)已登记承接其动画侧 | 提供开关:开启后全部动画有时长减半或直达终态的通路。呈现侧的约束以 battle.md 与 HUD 框架为权威,本文不复述 | | 音量控制入口 | 归档对本系统的常规分工登记;[音频](音频.md)已登记同款分工 | 在设置里提供音量入口;生效侧归音频(口径已对齐) | | 键位映射表 | [HUD 框架](HUD框架.md)定稿登记的交付物输入(全键族) | 如何转化成设置项(比如是否允许改键)待设计 | | 结算风味词 | 归档概念层增补批随巢穴隐喻换轴登记("封印 / 镇 / 反制"一类类型风味词),只登记了存在、各归各的时机 | 内容与形态未定,本文只登记这条输入在 | diff --git a/design/ux/battle.md b/design/gdd/ux/battle.md similarity index 96% rename from design/ux/battle.md rename to design/gdd/ux/battle.md index c69b7674..b0a2cf22 100644 --- a/design/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -48,7 +48,7 @@ 战斗屏是**上下文相关屏**(仅由战斗节点进入),非顶层常驻。关卡内节点进度常驻关卡画面(选路覆盖层的常驻形态,节点态即进度呈现:已过暗金、当前金、候选通道亮金、Boss 紫赤描边),战斗屏零进度承载——战斗结束返回关卡画面,玩家始终知道自己身处图中第几环。 - 上游屏:关卡节点图(分支节点图形态,切片第一关为单链特例) -- 下游屏:节点奖励/恢复覆盖层(NodeOverlay,已有 demo 组件——建议后续单独出 spec `design/ux/node-reward.md`) +- 下游屏:节点奖励/恢复覆盖层(NodeOverlay,已有 demo 组件——建议后续单独出 spec `design/gdd/ux/node-reward.md`) - 平行屏:结算明细回看 overlay(本屏内域屏)、图例面板 overlay(本屏内域屏) --- @@ -142,7 +142,7 @@ | B | 主角站桩立绘 | 站桩(无框立绘+底座) | HP 条悬浮头顶、状态效果小图标一排挂血条正下方(形状+色相双通道、层数角标)——**HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板,原 C 区状态槽职责〔悬停 tooltip 来源+语义+剩余结算次数〕并入本组件)**;攻击值等规划数据仍归 C 区数据框(2026-09-20 全站桩拍板,英雄卡退役) | 悬停状态小图标看 tooltip | HUDView 拆分改造 | | B | 敌人站桩立绘 ×1–3 | 站桩(无框立绘+底座) | 血条+顺位徽标悬浮头顶、状态小图标挂血条正下方(敌方 side-wide 增益各立绘同值呈现——蓄力/硬化/削弱/暴走/警觉;伏击层数通道随 2026-09-20 八型批退役——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;2026-09-16 敌人技能池批改型:行为环点拆除〔proposal §2.4〕,意图占位 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,敌方增益〔蓄力/硬化〕入状态图标行);死亡灰化加碎裂退场直接演在立绘上(2026-09-20 全站桩拍板,敌人卡退役);底座下名字行 = 纯名字 + 护甲类型图标(形状+色相双通道),AC 数值不展示——2026-09-26 终裁(用户口径:HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性——类型可读、数值隐藏) | 只读 | 新建 | | B | 轮次·阶段指示 | 标签 | "第 N 轮 · 挖掘中/结算中"(终局定格「战斗结束」;Boss 变体附 Boss 名) | 只读 | 新建 | -| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 9 类行协议);挖掘期收起为上轮摘要 1 行 | 点击展开明细回看 overlay | battle_log_view.gd 改造 | +| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 9 类行协议);挖掘期收起为上轮摘要 1 行 | 点击展开明细回看 overlay | battle_log_view.gd 改造 | | B | 结算明细回看 | 模态 overlay | 完整流水逐行(现行 9 类行协议;未生效类行聚合计数) | 关闭 | battle_log_view.gd 改造 | | C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;原「HP/攻击/RAP 显示」——HP 与 RAP 随信息归属拍板迁出本组件) | 只读 | HUDView 拆分 | | C | 魔法道具槽(预留) | 图标槽(数量待魔法道具定稿) | 随身战斗用道具的唯一展示面;空槽虚线占位,不预设交互(挖掘期指向交互归 E 区既有裁决) | 悬停 tooltip(道具语义) | 新建(随魔法道具批) | @@ -273,7 +273,7 @@ | 弃图刷新(挖掘期,非轮出口) | `ux_refresh_attempt` | {result: accepted/rejected_rap/rejected_cap, round_refresh_index: 1..2}——刷新使用(难度曲线与Boss OQ6)与行动经济 OQ3 预警阈值观测;每轮 0–2 次(布局决策 4 cap=2) | | 拒绝/voided | `ux_reject` | {source: board/resource/phase, sub_reason} | | 提示触发/关闭 | `ux_hint_shown` | {hint_id: chord/no_adjacent} | -| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / battle_over / level_clear | 载荷 schema 成文义务见 §Data Requirements——旧版台账 entry 17①(HUD框架硬性要求) | +| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / battle_over / level_clear | 载荷 schema 成文义务见 §Data Requirements——旧版台账 entry 17①(HUD框架硬性要求) | **持久状态写入**全部经组合根唯一路径(settle_batch / request_refresh / runner 推进)——UI 层禁直调核心写(架构七原则"依赖单向组合根")。 @@ -305,7 +305,7 @@ | BFS 移动路径 | 排雷玩法 `compute_move_path` | Read | 布局决策 3 合法性指示消费 | | 拒绝原因 | 排雷玩法 `sub_reason` 封闭枚举 + 行动经济 资源面 | Read | 三源(board/resource/phase)映射文案——呈现层契约成文;资源面原因无上游载荷(行动经济 仅 bool + debug 诊断),客户端按动作上下文推断 | | AP / RAP / 本轮刷新计数 | 行动经济 | Read | 常显;刷新入口可用性 = RAP 读数客户端预判(RAP≥8)+ `request_refresh` 返回值(行动经济 无 `can_request_refresh` API——仅 bool 返回 + 只读观测量;行动经济 EC13 拒绝合法可见) | -| 结算流水行(9 类封闭协议) | [战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 流水协议 | Read | 逐行来源标注(P2);未生效类行(奖励未生效)聚合计数呈现 | +| 结算流水行(9 类封闭协议) | [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 流水协议 | Read | 逐行来源标注(P2);未生效类行(奖励未生效)聚合计数呈现 | | 判定 verdict | 战斗结算 判定段 | Read | 终局画面数据锚 | | 敌单位 hp/顺位/摇定动作(pending_skill/type/name)/敌方增益/enemy_id/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**despawn 前捕获**(旧版台账 entry 17③——缺陷②教训) | | 状态效果投影(含空态/极性/溢出) | 增益状态 投影口径 | Read | 极性映射数据源 = 战斗结算 SettlementTable 效果语义,非 magnitude 符号(增益状态×③) | @@ -391,12 +391,12 @@ 1. **Player journey map 未建**——建议实现前补建(`design/player-journey.md`),校准挖掘→结算→终局情绪曲线与 art-bible §2 能量档的匹配 2. **`design/accessibility-requirements.md` 未建**(gate-check Pre-Production 缺口)——本 spec 内建 WCAG AA 基线承诺,正式分层(文本缩放/色盲模式/按键重映射)待该文档定稿 -3. **`design/ux/interaction-patterns.md` 未建**——本 spec 新引入待入库 pattern:toast 双源拒绝、逐行兑现明细带、悬停预承诺光标、点阵资源显示(/ux-design patterns 批次入库) +3. **`design/gdd/ux/interaction-patterns.md` 未建**——本 spec 新引入待入库 pattern:toast 双源拒绝、逐行兑现明细带、悬停预承诺光标、点阵资源显示(/ux-design patterns 批次入库) 4. **战斗表现美术测试**(game-concept 已登记,战斗表现批次前强制):本 spec 的常驻双舞台分屏(布局决策 1)是测试的布局输入——**敌人卡形态已裁决(2026-09-20 用户看对照样张拍板):全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条下,卡片式整体退役**;本 spec 已随裁决改写(原"按卡片式起草"条款作废),站桩式不改变分区结构。对照样张存档 `production/mockups/enemy-card-vs-standee-mockup.html` 5. **移动动画形态**(布局决策 3):≤150ms 短滑为推荐值,playtest 观测「移动太瞬/太拖」反馈后调 6. **明细带挖掘期是否常驻上轮摘要**:常驻(现方案)vs 结算后即收起——playtest 观测回看频率 7. **Gamepad 导航序**:Partial 支持(非 MVP 门禁)——焦点环顺序待 gamepad 批次定 -8. **NodeOverlay / 关卡结算屏**:相邻域屏,建议后续 spec `design/ux/node-reward.md` + `design/ux/level-clear.md`(本 spec 只锁出口锚点) +8. **NodeOverlay / 关卡结算屏**:相邻域屏,建议后续 spec `design/gdd/ux/node-reward.md` + `design/ux/level-clear.md`(本 spec 只锁出口锚点) 9. **TunePanel 退役计划**:正式侧归元进度(天赋树),切片调试入口在《HUD框架》标注退役时点 10. **提示文案定稿**:chord 提示/空态文案归实现期文案 pass,本 spec 只锁必含要点与形态约束 11. **弃图刷新上游修订(已落稿 2026-09-12,布局决策 4)**:行动经济(Active 相位受理 + 每轮上限 2 次 + Waiting 代理退役 + 旧旗作废裁决 + 时间税失效预警)、排雷玩法(Active·仅刷新路径装板受理)、战斗结算(stopped/ap_exhausted 恒 same_board + `refresh_board` 挖掘期刷新编排;AC-29 改写/AC-30 恒 same_board)、registry `rap_rules` 同步、旧版 systems-index 修订块登记。遗留观察项:当场刷新的节奏健康由行动经济 OQ3 弃图率/刷新率预警承载,playtest 复核 @@ -435,7 +435,7 @@ | 2026-09-15 | 雾格残留清理:格态收窄为已开 / 未开两态(删除雾图变体状态行、四格态 AC 与已开雾格 tint / 雾区全开信号两条 AC);图例面板与 toast 槽去掉雾条目与雾首遇提示;BoardView 纹带、绘制优先级与色弱冗余改按通用变异纹带表述;`ux_hint_shown` 的 hint_id 枚举去掉 fog_first;输入义务与 §13 义务对照表去掉 地形变异×3 一项;目标感知示例与提示文案 OQ 措辞同步。本 spec 不装载被移除机制的呈现义务 | | 2026-09-16 | 格面资源批 UI 欠账收口(随 2026-09-15 可选类道具删除的代码收口同步文档):① 布局四区化——删 E 区道具面板行、布局决策 2(道具窗口形态=右栏原位激活)整段删除(编号留空防交叉引用失锚)、ASCII 线框图重绘为 A/B/C/D 四区(D 区横向加宽 ~1036px)、A 区节点链示例改文字签槽实际渲染(战/赏/疗/王);② States 删道具窗口态与零库存空态(「道包空空」);③ 结算口径五段化(授予→增益/减益→战斗→衰减→判定)与明细行 10 类封闭协议(删 15 类行、四类行旧口径;「奖励未生效」行保留);④ 交互/动效/事件表删道具窗口行、跳过按钮、`ux_window_choice`、`submit_window_selection`;⑤ 数据源登记删 `query_inventory` 与窗口载荷,奖励身份按现行 `query_identity` 只读回调口径校正;⑥ 验收清单删窗口断言、五区改四区、未生效类行改现行两型(溢出未生效/奖励未生效);⑦ 关卡末清库反馈义务改载魔法道具背包(随魔法道具 P0 落地,本批不设计具体呈现);⑧ OQ7(道具窗口原位激活)删除、OQ 重编号,「囤刀待机」等旧可选类措辞清理。本 spec 不装载被删除机制的呈现义务 | | 2026-09-20 | **敌人卡形态裁决收口(2026-09-20 用户看对照样张拍板,06 待办「敌人卡形态」解决移除——台账 99)**:全站桩形态定稿——① B 区主角与敌人均为无框立绘+底座(站桩式),**英雄卡/敌人卡组件整体退役,卡片式不再作为候选**;主角血条悬浮头顶、状态效果小图标一排挂血条正下方,敌人血条+顺位徽标悬浮头顶、状态小图标同款挂血条下;攻击值等规划数据仍归 C 区数据框(C 区不动);② 布局表 B 区行、Component Inventory 英雄卡/敌人卡两行随裁决改写(敌方 side 池共享层数各立绘同值、意图动画占位等既有语义平移到站桩载体,不随形态改变);③ ASCII 线框图 B 区重绘(旧"意图:爪击/环点"示意早已随行为环退役,本次一并清掉);④ OQ4 改写为裁决已收口注记,对照样张存档 `production/mockups/`;呈现义务细节重述(受击/退场演出挂点等)随表现层升级批执行 | -| 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `docs/architecture/adr-0006-board-node2d-rendering.md` 与 `docs/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 布局四区 → 三区——删布局表 A 区关卡进度条行与 Component Inventory LevelStripView 行(LevelStripView 退役删除,节点链进度只留关卡画面,战斗屏零进度承载);C/D 底行 520 → 548;ASCII 线框图重绘为 B/C/D 三区;② 新流程口径落文——关卡画面(选路覆盖层常驻形态)为关卡内常驻枢纽:Navigation Position 图、到达语境、Entry 表、信息层级第 5 层、Data Requirements 节点图行改「关卡开始即出图选路、战后返回关卡画面再选路」;③ AC 四区措辞改三区。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行(520 → 548);③ 关卡画面进度呈现由选路覆盖层节点态承载(暗金已过 / 金当前 / 亮金候选通道 / 旗朱 Boss)、不另设进度条组件 | +| 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 布局四区 → 三区——删布局表 A 区关卡进度条行与 Component Inventory LevelStripView 行(LevelStripView 退役删除,节点链进度只留关卡画面,战斗屏零进度承载);C/D 底行 520 → 548;ASCII 线框图重绘为 B/C/D 三区;② 新流程口径落文——关卡画面(选路覆盖层常驻形态)为关卡内常驻枢纽:Navigation Position 图、到达语境、Entry 表、信息层级第 5 层、Data Requirements 节点图行改「关卡开始即出图选路、战后返回关卡画面再选路」;③ AC 四区措辞改三区。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行(520 → 548);③ 关卡画面进度呈现由选路覆盖层节点态承载(暗金已过 / 金当前 / 亮金候选通道 / 旗朱 Boss)、不另设进度条组件 | | 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 | | 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) | | 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 | diff --git a/design/ux/interaction-patterns.md b/design/gdd/ux/interaction-patterns.md similarity index 96% rename from design/ux/interaction-patterns.md rename to design/gdd/ux/interaction-patterns.md index 5daf9ed9..764efb7c 100644 --- a/design/ux/interaction-patterns.md +++ b/design/gdd/ux/interaction-patterns.md @@ -4,7 +4,7 @@ > **Author**: user + ux-designer > **Last Updated**: 2026-09-20(退役术语扫描批:pattern 2 退役留档、pattern 8 消费面注记、未生效类行枚举收敛,见文末修订记录) > **Template**: Interaction Pattern Library -> **来源**: `design/ux/battle.md`(2026-09-12 /ux-review APPROVED)已拍板内容的成文固化——本库不引入新设计决策 +> **来源**: `design/gdd/ux/battle.md`(2026-09-12 /ux-review APPROVED)已拍板内容的成文固化——本库不引入新设计决策 --- @@ -84,7 +84,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Description**: 轮末结算逐行流水实时呈现 + 可回看——「扫雷之因逐行兑现为战果」(P2 归因)的承载面。挖掘期收起为 1 行上轮摘要;结算期展开 84px 实时流;点击开完整回看 overlay。 **Specification**: -- 数据源:[战斗结算](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行封闭协议(现行);公共字段 `type/source_class/origin_cell/round_index/display_name/value/highlight?`);**无来源行 = 断言失败** +- 数据源:[战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行封闭协议(现行);公共字段 `type/source_class/origin_cell/round_index/display_name/value/highlight?`);**无来源行 = 断言失败** - 行模板:「{行为} {值} → {目标}(来源)」——来源标注(第 N 轮 · 安全格式);行文案最长 token = 道具名(4 汉字),模板预留 40% 膨胀宽度 - 聚合纪律:未生效类行(奖励未生效——现行 9 类行协议唯一未生效型,2026-09-20 收敛)按聚合计数呈现(防逐行惩罚轰炸);衰减行聚合计数;效果行 value=单次贡献值、禁与 pool_value(池合成值)相加呈现;零值行可见不吞(免伤轮归因不断点) - 高亮:highlight 字段 {flag_hit, clear_reward_h2, perfect_broken} → 金框强调;完美排雷 = 独立高光行 + 全屏喝彩级反馈 @@ -92,7 +92,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab - 击杀标记呈现(H3 数据源 = 战斗结算流水击杀结果字段) **When to Use**: 任何「因果可归因」的逐行流水呈现 -**When NOT to Use**: 自造行类型/字段(9 类封闭枚举(现行)——增删 = 接口漂移,须走[《战斗结算》](../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)修订) +**When NOT to Use**: 自造行类型/字段(9 类封闭枚举(现行)——增删 = 接口漂移,须走[《战斗结算》](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)修订) **Reference**: battle.md §Component Inventory 结算明细带、§AC 信息与归因;归档《战斗结算》(b1-settlement.md)Core Rule 14 / Visual Req diff --git a/production/qa/acceptance-rerun-20260919.md b/design/qa/acceptance-rerun-20260919.md similarity index 100% rename from production/qa/acceptance-rerun-20260919.md rename to design/qa/acceptance-rerun-20260919.md diff --git a/production/qa/balance-verifier-20260922-200721.md b/design/qa/balance-verifier-20260922-200721.md similarity index 100% rename from production/qa/balance-verifier-20260922-200721.md rename to design/qa/balance-verifier-20260922-200721.md diff --git a/production/qa/balance-verifier-20260923-043341.md b/design/qa/balance-verifier-20260923-043341.md similarity index 100% rename from production/qa/balance-verifier-20260923-043341.md rename to design/qa/balance-verifier-20260923-043341.md diff --git a/production/qa/balance-verifier-20260923-050222.md b/design/qa/balance-verifier-20260923-050222.md similarity index 100% rename from production/qa/balance-verifier-20260923-050222.md rename to design/qa/balance-verifier-20260923-050222.md diff --git a/production/qa/battle-stage-node2d-等价证明-2026-09-26.md b/design/qa/battle-stage-node2d-等价证明-2026-09-26.md similarity index 100% rename from production/qa/battle-stage-node2d-等价证明-2026-09-26.md rename to design/qa/battle-stage-node2d-等价证明-2026-09-26.md diff --git a/production/qa/conversion-calibration/calibration.raw.jsonl b/design/qa/conversion-calibration/calibration.raw.jsonl similarity index 100% rename from production/qa/conversion-calibration/calibration.raw.jsonl rename to design/qa/conversion-calibration/calibration.raw.jsonl diff --git a/production/qa/conversion-calibration/calibration.raw.md b/design/qa/conversion-calibration/calibration.raw.md similarity index 100% rename from production/qa/conversion-calibration/calibration.raw.md rename to design/qa/conversion-calibration/calibration.raw.md diff --git a/production/qa/conversion-calibration/collect_all.sh b/design/qa/conversion-calibration/collect_all.sh similarity index 100% rename from production/qa/conversion-calibration/collect_all.sh rename to design/qa/conversion-calibration/collect_all.sh diff --git a/production/qa/conversion-calibration/recollect_adventure.sh b/design/qa/conversion-calibration/recollect_adventure.sh similarity index 100% rename from production/qa/conversion-calibration/recollect_adventure.sh rename to design/qa/conversion-calibration/recollect_adventure.sh diff --git a/production/qa/conversion-calibration/recollect_armor.sh b/design/qa/conversion-calibration/recollect_armor.sh similarity index 100% rename from production/qa/conversion-calibration/recollect_armor.sh rename to design/qa/conversion-calibration/recollect_armor.sh diff --git a/production/qa/mc-reinvest-baseline-2026-09-20.md b/design/qa/mc-reinvest-baseline-2026-09-20.md similarity index 100% rename from production/qa/mc-reinvest-baseline-2026-09-20.md rename to design/qa/mc-reinvest-baseline-2026-09-20.md diff --git a/production/qa/playtests/playtest-2026-09-11-designer.md b/design/qa/playtests/playtest-2026-09-11-designer.md similarity index 100% rename from production/qa/playtests/playtest-2026-09-11-designer.md rename to design/qa/playtests/playtest-2026-09-11-designer.md diff --git a/production/qa/playtests/playtest-2026-09-12-designer.md b/design/qa/playtests/playtest-2026-09-12-designer.md similarity index 100% rename from production/qa/playtests/playtest-2026-09-12-designer.md rename to design/qa/playtests/playtest-2026-09-12-designer.md diff --git a/docs/registry/architecture.yaml b/design/registry/architecture.yaml similarity index 100% rename from docs/registry/architecture.yaml rename to design/registry/architecture.yaml diff --git a/docs/acceptance-ap6-ac.md b/design/research/acceptance-ap6-ac.md similarity index 100% rename from docs/acceptance-ap6-ac.md rename to design/research/acceptance-ap6-ac.md diff --git a/production/alpha-acceptance-battle-screen.md b/design/research/alpha-acceptance-battle-screen.md similarity index 94% rename from production/alpha-acceptance-battle-screen.md rename to design/research/alpha-acceptance-battle-screen.md index 1becff8d..5a7c5861 100644 --- a/production/alpha-acceptance-battle-screen.md +++ b/design/research/alpha-acceptance-battle-screen.md @@ -1,7 +1,7 @@ # Alpha 验收清单 · 战斗屏(初稿) > 状态:**初稿成文于循环 1(2026-09-26,战斗舞台 Node2D 迁移批 T0)**。本文件 = Alpha 验收批(三段式程序第三段)的销项底单;循环 1 只成文不销项,随批更新状态列。 -> 来源拼装(六源):① `design/ux/battle.md` AC 与 §13 上游义务对照表 ② `design/gdd/systems/表现与支撑/HUD框架.md` 验收标准与基线表 ③ `design/art/art-bible.md` 美术判据(§1.4/§2/§4.5/§8)④ `design/gdd/07-体验验证清单.md` §⑨ 真人试玩指引 ⑤ `design/gdd/06-待办清单.md` 挂 Alpha 条目 ⑥ 工程回归面(冒烟/五探针/文档三闸/MC)。 +> 来源拼装(六源):① `design/gdd/ux/battle.md` AC 与 §13 上游义务对照表 ② `design/gdd/systems/表现与支撑/HUD框架.md` 验收标准与基线表 ③ `design/art/art-bible.md` 美术判据(§1.4/§2/§4.5/§8)④ `design/gdd/07-体验验证清单.md` §⑨ 真人试玩指引 ⑤ `design/gdd/06-待办清单.md` 挂 Alpha 条目 ⑥ 工程回归面(冒烟/五探针/文档三闸/MC)。 > 验法分档:**[headless]** = 场景探针或脚本可自动判定;**[真机渲染]** = 开窗口跑游戏读日志/截图测量(draw calls、灰度、帧率类,agent 可窗口化自动测大半);**[人]** = 用户目检或真人试玩,agent 只备料。 > 数值带(ap6-ac 阶段二压力验收)**不在本清单**——归调参批(2026-09-26 裁决⑦)。 diff --git a/design/research/audit-clear-dominance-2026-09-19.md b/design/research/audit-clear-dominance-2026-09-19.md index 2db88e95..d105a4fe 100644 --- a/design/research/audit-clear-dominance-2026-09-19.md +++ b/design/research/audit-clear-dominance-2026-09-19.md @@ -4,7 +4,7 @@ **性质**:只读对账作业——履行 06 待办「清图支配性保守地板缺口」的对账义务(用户指令:从难度曲线调参批提前执行)。本报告不动任何数值;调参建议仅呈报,拍板归用户。 **判式权威**:[registry entities.yaml `clause5_dominance`](../registry/entities.yaml)(挖穿残余池计价,模型本体不变) **配套工具**:`tools/clear_dominance_audit.py`(重算器,判式全参数可配——难度曲线调参批的常设重跑入口)+ `game/smoke/board_stat_probe.gd`(实测板形统计探针) -**归属**:[难度曲线与Boss](../gdd/systems/冒险循环/难度曲线与Boss.md)(裁决方)× [地图战斗资源](../gdd/systems/战斗循环/地图战斗资源.md)(清图奖励供给方)× [行动经济](../gdd/systems/排雷循环/行动经济.md)(契约本体)× [战斗结算](../gdd/systems/战斗循环/战斗结算.md)(对账责任方) +**归属**:[难度曲线与Boss](../gdd/systems/冒险循环/难度曲线与Boss.md)(裁决方)× [地图战斗资源](../gdd/systems/战斗循环/地图战斗资源.md)(清图奖励供给方)× [行动经济](../gdd/systems/排雷循环/行动经济.md)(契约本体)× [战斗结算](../systems/战斗循环/战斗结算.md)(对账责任方) --- diff --git a/production/gate-checks/gate-check-systems-design-2026-09-07.md b/design/research/gate-check-systems-design-2026-09-07.md similarity index 100% rename from production/gate-checks/gate-check-systems-design-2026-09-07.md rename to design/research/gate-check-systems-design-2026-09-07.md diff --git a/docs/lean-gdd-sample-b1.md b/design/research/lean-gdd-sample-b1.md similarity index 100% rename from docs/lean-gdd-sample-b1.md rename to design/research/lean-gdd-sample-b1.md diff --git a/docs/playnote.md b/design/research/playnote.md similarity index 100% rename from docs/playnote.md rename to design/research/playnote.md diff --git a/docs/proposal-skill-pool.md b/design/research/proposal-skill-pool.md similarity index 100% rename from docs/proposal-skill-pool.md rename to design/research/proposal-skill-pool.md diff --git a/docs/proposal-status-vocabulary.md b/design/research/proposal-status-vocabulary.md similarity index 100% rename from docs/proposal-status-vocabulary.md rename to design/research/proposal-status-vocabulary.md diff --git a/docs/prototype-report-minesweeper-battle-concept.md b/design/research/prototype-report-minesweeper-battle-concept.md similarity index 100% rename from docs/prototype-report-minesweeper-battle-concept.md rename to design/research/prototype-report-minesweeper-battle-concept.md diff --git a/game/route_overlay_preview.png b/game/route_overlay_preview.png deleted file mode 100644 index 1c1f3ff4..00000000 Binary files a/game/route_overlay_preview.png and /dev/null differ diff --git a/tests/README.md b/game/tests/README.md similarity index 100% rename from tests/README.md rename to game/tests/README.md diff --git a/tests/evidence/README.md b/game/tests/evidence/README.md similarity index 100% rename from tests/evidence/README.md rename to game/tests/evidence/README.md diff --git a/tests/integration/README.md b/game/tests/integration/README.md similarity index 100% rename from tests/integration/README.md rename to game/tests/integration/README.md diff --git a/tests/run_all.gd b/game/tests/run_all.gd similarity index 100% rename from tests/run_all.gd rename to game/tests/run_all.gd diff --git a/tests/smoke/critical-paths.md b/game/tests/smoke/critical-paths.md similarity index 100% rename from tests/smoke/critical-paths.md rename to game/tests/smoke/critical-paths.md diff --git a/tests/static_scan.sh b/game/tests/static_scan.sh similarity index 100% rename from tests/static_scan.sh rename to game/tests/static_scan.sh diff --git a/tests/unit/README.md b/game/tests/unit/README.md similarity index 100% rename from tests/unit/README.md rename to game/tests/unit/README.md diff --git a/tests/unit/example_test.gd b/game/tests/unit/example_test.gd similarity index 100% rename from tests/unit/example_test.gd rename to game/tests/unit/example_test.gd diff --git a/production/loop-dashboard.html b/production/loop-dashboard.html deleted file mode 100644 index 0eeb7934..00000000 --- a/production/loop-dashboard.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - -迭代闭环仪表盘 · Dungeon Sweeper - - - -
-

迭代闭环仪表盘

-
阶段: Vertical Slice Implementation · 生成于 2026-09-19 05:34 · 只读视图,重跑 python tools/loop_dashboard.py 刷新
- -

当前状态快照(active.md)

-
- -

迭代闭环四问

-
-

① 什么在飞(git 未提交 12 + 未跟踪 8)

-
分组文件数
切片代码5
GDD 文档3
数据表2
其他1
会话产物1
-

未跟踪:

  • .zcode/plans/
  • design/art/asset-checklist.md
  • design/research/proposal-reward-cell-differentiation-2026-09-17.md
  • docs/proposal-status-vocabulary.md
  • production/loop-dashboard.html
  • production/qa/dashboard-preview.png
  • game/smoke/config_fatal_probe.gd.uid
  • tools/loop_dashboard.py
-

② 什么待拍板 / 待执行(06 清单 53 条)

-

待办 44 · 部分收口 6 · 拍板待执行 3 · -解决态残留 0(按「解决即移除」口径待清)

-
循环开放总条数
排雷循环99
战斗循环2222
冒险循环1212
表现与支撑1010
-

完整清单见下方「待办清单全目」专区。

-

③ 什么要人玩(07 体验验证 8 项)

-
  • ① Boss 战节奏(最高优先)
  • ② 削弱续时后的承伤压力
  • ③ 增伤全段覆盖的数值手感
  • ④ 乏力的可感知性
  • ⑤ 失衡换轴的归因可读性(P2 关注)
  • ⑥ 速杀退化预警(监控口径,2026-09-18 定案)
  • ⑦ 刷新经济监控(日志先行,阈值等基线)
  • ⑧ 旗行为基线监控(插旗提案评估前置采集,2026-09-19 拍板)
-

④ 验证是否落后于文档(失效面检测)

-

07 头部批次来源: **战斗数值四连批**(2026-09-18 ~ 09-19,版本锚 = 战斗结算 v0.16 / 增益状态 v0.9 / 地图战斗资源 v0.11)——① 战斗数值结构修复批(乘区接线四件套 + 削弱续时,v0.14)→ ② 甲效矩阵用户

-
文档07 引用现行版本判定
战斗结算v0.16v0.16一致
增益状态v0.9v0.9一致
地图战斗资源v0.11v0.11一致
-

引用与现行版本一致。

-

重测批义务(07 原文)

-
  • **Boss 战必须单独出列**(硬化行为变化——旧 Boss 承伤 84.8% 等读数全部作废)。
  • 普通场承伤带、通关率基线全量重测(削弱续时 + 乘区接线 + 甲效量纲换装 + 充能退役 多变量叠加,禁与任何旧读数混算)。
  • 旧读数作废清单:池触底免伤轮相关读数、硬化翻倍期全部战斗读数、乏力死效果期格面调研读数、充能期(三分量输出)全部战斗读数。
  • 工具就位:`analyze_playtest.py`(反事实分析,吃新日志)、`level_monte_carlo`(MC 基线重跑)、JSONL 日志含池值与快照。
-
- -

GDD 文档新鲜度(28 份,按改动时间)

-
文档版本版本日期文件改动标题
顶层文档(8)
06-待办清单 在飞——09-19 05:3206-待办清单
07-体验验证清单 在飞——09-19 05:3207-体验验证清单
01-核心循环——09-19 01:57核心循环
02-系统清单v0.72026-09-1709-18 18:44系统清单
03-内容规模v0.32026-09-1709-18 00:35内容规模
05-不做清单——09-17 01:25不做清单
00-游戏概念——09-16 00:41游戏概念
04-美术音频方向——09-14 21:40美术音频方向
- -

待办清单全目(按循环)

-

排雷循环 · 开放 9/9

  • 待办行动经济 · 刷新经济性监控(基线后定阈值)
  • 待办地形变异 · 首批变异类型(岩浆/冰冻)机制未定
  • 待办地形变异 · 生成期布置的约束与参数未定稿
  • 待办地形变异 · 全局作用域变异
  • 待办地形变异 · 变异格对初始展开的影响语义
  • 待办地形变异 · 显影尘效果重定
  • 待办地形变异 · 地穴全图卷效果重定
  • 待办地形变异 · 反制维度承载失义
  • 待办地形变异 · 探宝罗盘效果重定——两方案评估(2026-09-19 立项)

战斗循环 · 开放 22/22

  • 待办战斗结算 · 挖掘风险不等式对账破线
  • 待办战斗结算 · 清图支配性保守地板缺口
  • 待办敌人系统 · 单拍行为环的体验验证(改型:技能池节奏体验验证)
  • 待办敌人系统 · 伏击量纲与上限的联动复核
  • 待办敌人系统 · 零伤害 / 无威胁组合的跨字段护栏
  • 部分收口敌人系统 · 同深度第二敌种与精英 / Boss 编码位
  • 拍板待执行敌人系统 · 敌方护甲等级(armor_class)正式行值
  • 待办敌人系统 · 技能池情境条件触发器
  • 待办敌人系统 · 个体化变体池
  • 待办敌人系统 · 全局特殊间隔旋钮
  • 拍板待执行敌人系统 · 技能池新效应词汇批
  • 待办敌人系统 · 第二关技能池与投放
  • 待办敌人系统 · 敌方技能图鉴 / 学习呈现
  • 待办敌人系统 · Alpha:全怪物技能池数值验证与合理性设计
  • 待办增益状态 · 叠层不续命的读感
  • 待办增益状态 · 削弱档位的最终数值
  • 待办增益状态 · 单体寻址的接口扩展位
  • 待办增益状态 · 空刷新的可见性
  • 部分收口地图战斗资源 · heal 负向直伤的量级锚
  • 待办地图战斗资源 · 雷格与安全格的资源分布差异化(Alpha 批)
  • 待办地图战斗资源 · 冒险前资源配比预设(构筑提案)
  • 待办战斗表现 · 敌人卡形态

冒险循环 · 开放 12/12

  • 拍板待执行关卡节点地图 · 首遇位教学敌可被棋盘火力一轮击杀
  • 部分收口关卡节点地图 · 切片行进代码与定稿的接口漂移
  • 待办关卡节点地图 · 两关序列未生效
  • 待办关卡节点地图 · 大奖励数值随难度曲线联动
  • 待办关卡节点地图 · 冒险循环内成长提案(临时资源 GP + 商店房节点)
  • 待办难度曲线与Boss · 基线通关率越带,加难杠杆扫描未执行
  • 待办难度曲线与Boss · 完美策略档的结构性加难杠杆
  • 待办难度曲线与Boss · 真人通关率标定
  • 待办难度曲线与Boss · 区间平移换算率数值未定
  • 部分收口难度曲线与Boss · 三方向各自的解锁清单与定价
  • 部分收口难度曲线与Boss · 解锁注入的实现口径
  • 部分收口难度曲线与Boss · 解锁界面与钥石呈现的交互形态

表现与支撑 · 开放 10/10

  • 待办HUD框架 · 未开格类型徽章呈现时机(2026-09-18 方向已拍板,待实施批)
  • 待办HUD框架 · 分辨率档位与棋盘格边长口径
  • 待办数据配置 · 变异表旧字段集是否沿用
  • 待办数据配置 · 冒险表未建表(原「关卡表与冒险表未入表清单」关卡表半边已收口)
  • 待办存档序列化 · 存档契约条目的登记方式
  • 待办教学引导 · 教学形态未定
  • 待办教学引导 · 因果教学顺序
  • 待办教学引导 · 图例面板的条目全集与分组方式
  • 待办教学引导 · 教学文案定稿权与本地化流程的分工
  • 待办教学引导 · "再教一次"入口与图例面板兼任手册
- - -

路线图(production/roadmap.md)

-
  1. 1. **技能池实施批(已落地,smoke 263 全绿;待一笔收编提交)**:批 1 核心机制 + 批 2 呈现替代 + 批 3 文档与 registry 已完成;收编提交后本站闭合。设计权威 = `docs/proposal-skill-pool.md`。
  2. 2. **验收批**(门 = 技能池批收编 + 工作区净 + smoke 全绿):按 `docs/acceptance-ap6-ac.md` v1.0 跑三数据源(蒙特卡洛双档 / 真人 3–5 局 / 日志分析器),无道具基线;产出判读结论与选档建议。
  3. 3. **难度曲线阶段二调参批**(门 = 验收读数):四级阶梯落档 + 三杠杆扫描(血量锚走廊 / 群战上探 / 注入衰减)+ 挖掘风险不等式与清图支配性两对账重跑 + AC 行值投值。
  4. 4. **第二关内容批**(门 = 调参行值):深度轴行值 D1–D4 填充 + 新内容投放(技能池定稿后 = 既有池新技能);填齐后两关序列生效。
  5. 5. **并行 / 后置轨道**:关卡节点地图 GDD 定稿批(已解锁,与在飞批零文件冲突);魔法道具内容批(排切片收尾后);真人通关率标定(挂 playtest 批);元进度定稿(排 Alpha 前收口——资源关系已裁统一钥石〔2026-09-17〕,剩解锁清单/定价与钥石产出细则)。
- -

台账健康

-

台账区(「Session Extract — /review-all-gdds 2026-09-14」之后)最新编号 82,下一编号建议 83;检出撞号 72, 75, 76, 77, 78(编号有效、历史不改写)。

- -

近期提交

-
- - -
- - \ No newline at end of file diff --git a/production/mockups/enemy-card-style.png b/production/mockups/enemy-card-style.png deleted file mode 100644 index 3d7f08fc..00000000 Binary files a/production/mockups/enemy-card-style.png and /dev/null differ diff --git a/production/mockups/enemy-card-vs-standee-full.png b/production/mockups/enemy-card-vs-standee-full.png deleted file mode 100644 index dc55a06f..00000000 Binary files a/production/mockups/enemy-card-vs-standee-full.png and /dev/null differ diff --git a/production/mockups/enemy-card-vs-standee-mockup.html b/production/mockups/enemy-card-vs-standee-mockup.html deleted file mode 100644 index fb6e0071..00000000 --- a/production/mockups/enemy-card-vs-standee-mockup.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - -敌人卡形态对照样张 — 卡片式 vs 站桩式 - - - - -

敌人卡形态对照样张(卡片式 vs 站桩式)

-
仅裁决「B 区敌人怎么呈现」这一件事:两版除 B 区敌人呈现外完全一致(四区布局按 battle.md 现行口径;意图预告=普攻零表示/特殊技动画占位;剪影为程序化占位,非美术终稿)。战斗场景:第 1 关,地精一伙 ×2,第 3 轮挖掘中。
- - -
-
形态 A · 卡片式 —— 带框信息卡,信息有固定卡位
-
-
- 战→战→赏→战→战→疗→王 -
-
-
第 3 轮 · 挖掘中
-
-
- -
-
HP 42/50
-
-
攻 6 (+50%)
-
⬆ +50% ·2🛡 坚守 ·1
-
-
-
[ 兑现演出区 ]
-
▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 [展开明细 ▾]
-
-
-
-
①
-
-
地精
-
-
HP 7/10
-
伏击 ×2
- ⚔ 特殊技·攻击系 -
-
-
②
-
-
地精
-
-
HP 4/10
-
伏击 ×2
- 普攻 · 无表示 -
-
-
-
-
-
HP 42 / 50
-
攻击 6 (+50%)
-
RAP 3 / 8
-
状态效果
-
- ⬆ 攻击+50% ○ 1 - 🛡 坚守 ○ ● -
-
[ 小人立绘占位 ]
-
-
-
- - 4/6 - - - - -
-
-
AP 不足 · 剩 0 点
-
-
-
-
卡片式读法:每个敌人一只带框卡——敌像、血条、顺位徽标①②、状态槽(伏击层数为全体共享、各卡同值)、特殊技动画占位都有固定卡位;信息不随站位漂移,排版最稳。代价:框多、界面感重,战斗画面区更像"面板"而非"场景"。
-
- - -
-
形态 B · 站桩式 —— 无框立绘 + 底座,信息悬浮跟随
-
-
- 战→战→赏→战→战→疗→王 -
-
-
第 3 轮 · 挖掘中
-
-
- -
-
HP 42/50
-
-
攻 6 (+50%)
-
⬆ +50% ·2🛡 坚守 ·1
-
-
-
-
-
-
⚔
-
①
伏击×2
- -
-
-
-
②
伏击×2
- -
-
-
[ 兑现演出区 ]
-
-
▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 [展开明细 ▾]
-
-
-
-
-
HP 42 / 50
-
攻击 6 (+50%)
-
RAP 3 / 8
-
状态效果
-
- ⬆ 攻击+50% ○ 1 - 🛡 坚守 ○ ● -
-
[ 小人立绘占位 ]
-
-
-
- - 4/6 - - - - -
-
-
AP 不足 · 剩 0 点
-
-
-
-
站桩式读法:敌人是"站在战斗画面里的角色"——立绘 + 椭圆底座,血条/顺位/状态徽标全部悬浮在头顶跟随站位;场景感强、受击与退场动画直接演在角色身上。代价:信息位置随站位浮动、悬浮件之间可能互撞(上图已能看出 ①头顶三件悬浮件的拥挤),三敌满编时右侧更挤。
-
- - -
-
✅ 定稿形态 · 全站桩 —— 主角与敌人均无卡片立绘+底座;状态小图标挂血条下(2026-09-20 用户拍板)
-
-
- 战→战→赏→战→战→疗→王 -
-
-
第 3 轮 · 挖掘中
-
-
- -
-
-
-
-
- ⬆2 - 🛡1 -
- -
-
-
[ 兑现演出区 ]
- -
-
⚔
-
①
-
伏2
- -
-
-
-
②
-
伏2
- -
-
-
▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 [展开明细 ▾]
-
-
-
-
-
HP 42 / 50
-
攻击 6 (+50%)
-
RAP 3 / 8
-
状态效果
-
- ⬆ 攻击+50% ○ 1 - 🛡 坚守 ○ ● -
-
[ 小人立绘占位 ]
-
-
-
- - 4/6 - - - - -
-
-
AP 不足 · 剩 0 点
-
-
-
-
定稿形态读法:主角与敌人都以"立绘+底座"站在战斗画面区——主角在左(绿色血条悬浮头顶,状态小图标一排挂血条正下方),敌人在右(红色血条+顺位徽标,伏击等状态图标同款挂在血条下);全部无框、无卡片。C 区角色信息数据框保留(那是规划数据面,不是战斗内卡片)。
-
- - - - diff --git a/production/mockups/enemy-standee-final.png b/production/mockups/enemy-standee-final.png deleted file mode 100644 index b447ffb9..00000000 Binary files a/production/mockups/enemy-standee-final.png and /dev/null differ diff --git a/production/mockups/enemy-standee-style.png b/production/mockups/enemy-standee-style.png deleted file mode 100644 index 5b40efa7..00000000 Binary files a/production/mockups/enemy-standee-style.png and /dev/null differ diff --git a/production/mockups/sample-v1-机检报告-2026-09-26.md b/production/mockups/sample-v1-机检报告-2026-09-26.md deleted file mode 100644 index d805c174..00000000 --- a/production/mockups/sample-v1-机检报告-2026-09-26.md +++ /dev/null @@ -1,20 +0,0 @@ -# 样张 v1 机检报告(2026-09-26) - -生成:`python tools/render_sample_sheet.py`;断言事实源 = 画法参数四源对照表-2026-09-26.md §6。 - -| 断言 | 判据 | 结果 | 明细 | -|---|---|---|---| -| F1 | 方案甲 8 邻拼装(词表查表,禁整块) | PASS | 错位 0 处;用件 15 种 ['center', 'center_crack', 'center_speckle', 'end_n', 'end_s', 'end_w', 'hrun', 'in_nw', 'in_sw', 'n', 'nw', 's', 'sw', 'vrun', 'w'] | -| F2 | 旗仅出现于未开格 | PASS | 旗位 (1, 2) 格态=W | -| F3 | 小人脚锚=自底边 25% 线(两态) | PASS | 脚 y=[213.75, 258.75] 期望=[213.75, 258.75] | -| F4 | 数字 0 格无字形(0=纯安全格裸地面) | PASS | 0 态格 40 个(示例 (4,4));数字表含 0 键=False | -| F5a | 接触带微光⊆英雄格周界(空间侧,不进墙格) | PASS | 微光 bbox=(86, 176, 119, 230) 英雄格=(90, 180, 135, 225) | -| F5b | 类型微光禁整格染色(中心 50% 区零染色像素) | PASS | 五格中心区全净 | -| A1a | 色板对表圣经 §4.1 冻结值 | PASS | {'INK': '#33261B', '青墨': '#132E36', '赭墨': '#3C250C', '锈墨': '#4A1E14', 'PLATE': '#F5EAD3', '旗朱': '#C63D22', '危险红': '#A8321F', '奖励金': '#F0A828'} | -| A1b | 禁入带 HSV300°-345° 零命中 | PASS | 命中 0 像素(抽样) | -| A2 | 拼缝周界闭合(墙侧 2px 墨线 <70) | PASS | 全部墙地边界墨线在位 | -| A3 | 墨×牌 WCAG≥4.5:1 + 图底分离 | PASS | [('青墨', 12.0), ('赭墨', 12.0), ('锈墨', 11.8)];墙顶 113 vs 地面 51 | -| A5 | 画布四缘 2px 净空(零溢出) | PASS | 缘带内容像素 0 | -| A4 | 混排相融(游戏在库资产+UiKit 语义色) | PASS | 小人源 32×32(裁透明留白后 (19, 20))/立绘 48×48/状态图标 32×32 原件;INK/旗朱/奖励金 == ui_kit.gd | - -结论:**全绿**(12/12 PASS)。气质终审 = 用户(异步,不阻塞 T2-T7)。 diff --git a/production/mockups/画法参数四源对照表-2026-09-26.md b/production/mockups/画法参数四源对照表-2026-09-26.md deleted file mode 100644 index d6aa2340..00000000 --- a/production/mockups/画法参数四源对照表-2026-09-26.md +++ /dev/null @@ -1,74 +0,0 @@ -# 画法参数四源对照表(样张 v1 · T1 对表先行,2026-09-26) - -> 任务书:`.zcode/plans/battle-stage-node2d-loop-plan-2026-09-26.md` T1①。四源 = A battle.md 布局线框 / B 机制代码(格态·旗语义·脚锚)/ C 引擎常量 / D art-bible 画法章节。**一处对不上 = L3**。本表逐参数登记取值与出处;样张 v1 脚本(tools/render_sample_sheet.py)只准消费本表参数。 - -## 1. 屏面布局(源 A:battle.md §Layout + §2 现状) - -| 参数 | 取值 | 出处 | -|---|---|---| -| 基座分辨率 | 1280×800 | art-bible §8.1 两档定案 | -| B 区 | 全宽 × 252px:主角站桩(左)+ 兑现演出区(中)+ 敌方站桩 ×1–3(右);顶部中央轮次·阶段指示;底部结算明细带(挖掘期收起 24px) | battle.md §Layout / battle_stage_view.gd `_init`(custom_minimum_size 0×252) | -| C 区 | 左下 240px × 548px:攻击数据框(攻击值+修正来源角标+护甲 AC)+ 魔法道具槽(预留 4)+ 本关强化列表(预留) | battle.md §Layout(2026-09-26 信息归属批后口径)/ hero_info_panel_view | -| D 区 | 右侧余幅(~1036px):顶行 AP 点阵+RAP+弃图刷新+图例+停手;下为棋盘 | battle.md §Layout / ap_bar_view | -| 站桩盒 | 150×176:血条(10px)+状态行(16px)头顶悬浮;立绘盒 96px;底座底条(10px);敌名行(护甲图标+纯名字,12px);顺位徽标①②③ | standee_view.gd `_init` 几何 | -| B 区立绘 | 主角 = 48×48 朝右贴图(96px 盒 = 48×2 整数档);敌人 = 字形占位(▂地精/▆熊地精/█食人魔酋长——素材零张在库) | battle_stage_view.gd:38 / standee_view.gd `_refresh_portrait_glyph` / §2 现状「敌人立绘素材一张都不存在」 | - -## 2. 格态与语义(源 B:机制代码) - -| 参数 | 取值 | 出处 | -|---|---|---| -| 格态 | 未开(墙)/ 已开(地面)两态;雷 = 已开态巢穴纹更凶一档 | board_view.gd paint 分支 / art-bible §3.2 地砖条 | -| 数字 0 格 | **无字形**(`if d > 0: glyph = str(d)`——0 = 纯安全格裸地面) | board_view.gd:583-586(FATAL④ 事实源) | -| 旗语义 | 旗只插**未开格**(旗分支在 `else` 未开侧);旗 = 封印印记呈现名;旗面恒画右 | board_view.gd:589-590 / art-bible §3.2 旗条(FATAL② 事实源) | -| 悬停金框 | 预承诺光标态画在目标格(逐格指认=悬停金框) | art-bible §3.2 接触带条尾句 / board_view `_apply_hover_visuals` | -| 小人同格 | 小人与数字同格:数字色牌不废、蓝框不覆盖文本 | art-bible §1.4 小人两态条 | - -## 3. 引擎常量(源 C:board_view.gd / standee_view.gd / ui_kit.gd) - -| 参数 | 取值 | 出处 | -|---|---|---| -| 格边长(1280 基座) | 45px(10×10 板)/ 36px(12×12 板);样张 D 区按 45px 实比 | art-bible §8.1 / board_view clamp(26,46) | -| 小人脚锚 | **自底边往上 25% 线**(HERO_GROUND_FRAC=0.25;⚠ 纵向比例一律自底边口径) | board_view.gd HERO_GROUND_FRAC(FATAL③ 事实源) | -| 小人档 | 32×32 源 ×1.5 = 48px(台账 161 用户实机拍板档;45px×32 源非整数 NEAREST 已接受——台账 166 同级) | board_view.gd HERO_SPRITE_SCALE | -| 椭圆影 | 贴脚(中心=脚锚),32×12px @1×,黑 35% | board_view.gd HERO_SHADOW_PX / 台账 162 | -| 立绘缩放 | B 区 96px 盒 = 48 源 ×2 整数(C5) | standee_view.gd set_portrait_texture | -| 变异遮蔽 | hide_number 数字格显示 `?`(样张不含变异格——六类型纹带另批) | board_view.gd:584 | -| 游戏 UiKit 语义色 | INK #33261B / FLAG_RED #C63D22 / GOLD #F0A828 / RED_DEEP #963C30 / 数字=INK | ui_kit.gd 常量(A4 混排对表基准) | - -## 4. 画法章节(源 D:art-bible) - -| 参数 | 取值 | 出处 | -|---|---|---| -| 未开格 | **方案甲高墙瓦片 8 邻拼装**:16 唯一件+运行时 flip_h 镜像(禁旋转);词表=board-tile-vocab-plan-a;板外视为墙;center 变体 crack/speckle 60/20/20 哈希分配 | §3.2 高墙瓦片体系条 / design/research/board-tile-vocab-plan-a-2026-09-26.md(FATAL① 事实源) | -| 墨线纪律 | 墙/地分界 1px 深墨线贴格边(缘件自带,实测朝地边亮度 ~22-36 vs 本体 ~122);南缘立面窄暗条;北缘内侧 1px 提亮 | §3.2 墨线纪律 / v9.3 实测 | -| 图底分离 | 已开地面明度 < 未开墙顶(实测 Δ≈75,0-255 简易亮度) | §8.5 图底分离条 | -| 已开格 | 地面瓦片 5 变体哈希;产资源格 = 家族物件纹样(道具点剪影)角嵌砖缘+**砖心留白予数字色牌**;纯安全格 = 干净裸地面 | §3.2 结果整格表达 / §1.2 原则三 | -| 数字色牌 | #F5EAD3 素色直角小牌,恒定不随格底;数字墨三档:1-3 青墨 #132E36 / 4-5 赭墨 #3C250C / 6-8 锈墨 #4A1E14;对牌对比 ≥4.5:1(实测 11.8-12.3:1);字号下限 ≥18px | §4.1 / HUD框架 基线表 | -| 语义色 | 掩尘 #C9AF83 / 裸土 #B39A78 / 旗朱 #C63D22 / 危险红 #A8321F / 奖励金 #F0A828 | §4.1 冻结 | -| 类型角嵌 | 未开格四角/边框墨族单色纹样(九家族键 §4.6.3),砖心留白;形状主通道 | §3.2 类型角嵌条 | -| 类型微光 | 五组候选:通用增益 #D6C13A / 治疗 #5CB83A / 穿刺 #2E9E9E / 魔法 #7B5BD6 / 群伤 #FF2D55;底效泛光层不入遮挡栈;**禁整格染色**(v1 画法=内缘带状泛光,机检断言中心 50% 区零微光像素);不以明度增量承载信息 | §4.2 类型微光色带 / §1.4 验收 2(FATAL⑤ 事实源之一) | -| 接触带微光 | 英雄格周界**空间侧**:正交邻墙=整条边、斜向=共享角点+两侧各半条边;蓝族浅一档;光不进墙格 | §3.2 可挖域接触带微光条 / §2.1(FATAL⑤ 事实源之二) | -| 禁入带 | HSV 色相 300°–345° 全场禁入(微光群伤组 349° 刻意避开) | §4.2 紫赤条 | -| 换皮 | §4.3 四槽换色(tile_closed/tile_open/wall_ambient/variant_tint),信息层恒定;样张 ≥两套(dungeon+underdark) | §4.3 / §1.4 内容清单 | -| 小人占位 | 独立资产 32×32;样张 48px ≈ 0.75× 格边符合 §8.2 占位上限 | §8.2 画布基准 | - -## 5. 候选值与偏差登记(非矛盾,样张批冻结项) - -1. **小人蓝**:art-bible §4.1 = #2E86DE(候选,样张批冻结终稿);游戏 UiKit = #2E6E8E。两值并存系圣经明标「候选值」——样张以 #2E86DE 出图;冻结后游戏侧换色归循环 2,本批不改代码。 -2. **接触带微光色值**:空间侧+蓝族已定稿(v2.8),具体色值样张批冻结——v1 取小人蓝族浅两档 #D6ECFF(近白蓝)出样。 -3. **格底 L≥0.30 的适用面**:§4.1/§4.3 系换皮四槽**色槽参数域**(新图类型色板须守);dungeon 定稿瓦片(v9.3 用户验收入本体)为素材实态,本样张不再以 L≥0.30 复裁(防对已验收资产误报 FATAL),改以图底分离+可读性硬指标承载。 -4. **巢穴纹/封印印记**:素材缺口,程序化占位画面内标注(§1.4 允许——「素材缺口见清单」v0 先例);正式纹样归绘画批。 - -## 6. 机检断言映射(v0 五画错 + 程序化四件 → 生成脚本自检) - -| 断言 | 判据 | -|---|---| -| F1 方案甲拼装 | 每墙瓦片位 = 词表查表(四邻+对角)结果;禁整块(center 之外的件 ≥6 种实出);变体 60/20/20 | -| F2 旗∈未开格 | 旗位集 ⊆ 墙位集 | -| F3 脚锚自底 25% | 两小人态脚 y = 格底 − 0.25×45;影心=脚点 | -| F4 0 格无字形 | 数字 0 格 glyph 记录 = 空 | -| F5 微光带限 | 接触带微光像素 ⊆ 英雄格∩带几何(≤8px 距离);类型微光中心 50% 区零像素 | -| A1 色板+禁入带 | 冻结色逐字节对表 §4.1;微光五组对表 §4.2;全图像素扫 HSV 300°-345°(S>0.15,V>0.20)零命中 | -| A2 周界闭合 | 每段墙↔地边界墙侧 2px 带均亮度 <70(墨线在位);墙群外轮廓无缺口 | -| A3 明度对比 | 三档墨×色牌 WCAG ≥4.5:1;地面均亮 < 墙顶均亮 −40 | -| A4 混排相融 | 语义色 == 游戏 UiKit 常量(小人蓝候选偏差见 §5.1);小人/立绘/状态图标 = 游戏在库资产原件 | diff --git a/production/qa/dashboard-preview.png b/production/qa/dashboard-preview.png deleted file mode 100644 index c07b3251..00000000 Binary files a/production/qa/dashboard-preview.png and /dev/null differ diff --git a/production/review-mode.txt b/review-mode.txt similarity index 100% rename from production/review-mode.txt rename to review-mode.txt diff --git a/production/roadmap.md b/roadmap.md similarity index 100% rename from production/roadmap.md rename to roadmap.md diff --git a/qa-data/.gitignore b/sim-data/.gitignore similarity index 100% rename from qa-data/.gitignore rename to sim-data/.gitignore diff --git a/qa-data/README.md b/sim-data/README.md similarity index 100% rename from qa-data/README.md rename to sim-data/README.md diff --git a/qa-data/_snap.json b/sim-data/_snap.json similarity index 100% rename from qa-data/_snap.json rename to sim-data/_snap.json diff --git a/qa-data/analysis_battles.csv b/sim-data/analysis_battles.csv similarity index 100% rename from qa-data/analysis_battles.csv rename to sim-data/analysis_battles.csv diff --git a/qa-data/analysis_battles_B2_max.csv b/sim-data/analysis_battles_B2_max.csv similarity index 100% rename from qa-data/analysis_battles_B2_max.csv rename to sim-data/analysis_battles_B2_max.csv diff --git a/qa-data/analysis_battles_B2_min.csv b/sim-data/analysis_battles_B2_min.csv similarity index 100% rename from qa-data/analysis_battles_B2_min.csv rename to sim-data/analysis_battles_B2_min.csv diff --git a/qa-data/analysis_battles_B3_max.csv b/sim-data/analysis_battles_B3_max.csv similarity index 100% rename from qa-data/analysis_battles_B3_max.csv rename to sim-data/analysis_battles_B3_max.csv diff --git a/qa-data/analysis_battles_B3_min.csv b/sim-data/analysis_battles_B3_min.csv similarity index 100% rename from qa-data/analysis_battles_B3_min.csv rename to sim-data/analysis_battles_B3_min.csv diff --git a/qa-data/analysis_battles_B4_max.csv b/sim-data/analysis_battles_B4_max.csv similarity index 100% rename from qa-data/analysis_battles_B4_max.csv rename to sim-data/analysis_battles_B4_max.csv diff --git a/qa-data/analysis_battles_B4_min.csv b/sim-data/analysis_battles_B4_min.csv similarity index 100% rename from qa-data/analysis_battles_B4_min.csv rename to sim-data/analysis_battles_B4_min.csv diff --git a/qa-data/analysis_battles_B5_max.csv b/sim-data/analysis_battles_B5_max.csv similarity index 100% rename from qa-data/analysis_battles_B5_max.csv rename to sim-data/analysis_battles_B5_max.csv diff --git a/qa-data/analysis_battles_B5_min.csv b/sim-data/analysis_battles_B5_min.csv similarity index 100% rename from qa-data/analysis_battles_B5_min.csv rename to sim-data/analysis_battles_B5_min.csv diff --git a/qa-data/analysis_battles_B6_max.csv b/sim-data/analysis_battles_B6_max.csv similarity index 100% rename from qa-data/analysis_battles_B6_max.csv rename to sim-data/analysis_battles_B6_max.csv diff --git a/qa-data/analysis_battles_B6_min.csv b/sim-data/analysis_battles_B6_min.csv similarity index 100% rename from qa-data/analysis_battles_B6_min.csv rename to sim-data/analysis_battles_B6_min.csv diff --git a/qa-data/analysis_battles_B_max.csv b/sim-data/analysis_battles_B_max.csv similarity index 100% rename from qa-data/analysis_battles_B_max.csv rename to sim-data/analysis_battles_B_max.csv diff --git a/qa-data/analysis_battles_B_min.csv b/sim-data/analysis_battles_B_min.csv similarity index 100% rename from qa-data/analysis_battles_B_min.csv rename to sim-data/analysis_battles_B_min.csv diff --git a/qa-data/analysis_battles_M0.csv b/sim-data/analysis_battles_M0.csv similarity index 100% rename from qa-data/analysis_battles_M0.csv rename to sim-data/analysis_battles_M0.csv diff --git a/qa-data/analysis_battles_M1.csv b/sim-data/analysis_battles_M1.csv similarity index 100% rename from qa-data/analysis_battles_M1.csv rename to sim-data/analysis_battles_M1.csv diff --git a/qa-data/analysis_battles_M2.csv b/sim-data/analysis_battles_M2.csv similarity index 100% rename from qa-data/analysis_battles_M2.csv rename to sim-data/analysis_battles_M2.csv diff --git a/qa-data/analysis_battles_U2_max.csv b/sim-data/analysis_battles_U2_max.csv similarity index 100% rename from qa-data/analysis_battles_U2_max.csv rename to sim-data/analysis_battles_U2_max.csv diff --git a/qa-data/analysis_battles_U2_min.csv b/sim-data/analysis_battles_U2_min.csv similarity index 100% rename from qa-data/analysis_battles_U2_min.csv rename to sim-data/analysis_battles_U2_min.csv diff --git a/qa-data/analysis_battles_U_max.csv b/sim-data/analysis_battles_U_max.csv similarity index 100% rename from qa-data/analysis_battles_U_max.csv rename to sim-data/analysis_battles_U_max.csv diff --git a/qa-data/analysis_battles_U_min.csv b/sim-data/analysis_battles_U_min.csv similarity index 100% rename from qa-data/analysis_battles_U_min.csv rename to sim-data/analysis_battles_U_min.csv diff --git a/qa-data/analysis_battles_b3re_max.csv b/sim-data/analysis_battles_b3re_max.csv similarity index 100% rename from qa-data/analysis_battles_b3re_max.csv rename to sim-data/analysis_battles_b3re_max.csv diff --git a/qa-data/analysis_battles_b3re_min.csv b/sim-data/analysis_battles_b3re_min.csv similarity index 100% rename from qa-data/analysis_battles_b3re_min.csv rename to sim-data/analysis_battles_b3re_min.csv diff --git a/qa-data/analysis_battles_routemax.csv b/sim-data/analysis_battles_routemax.csv similarity index 100% rename from qa-data/analysis_battles_routemax.csv rename to sim-data/analysis_battles_routemax.csv diff --git a/qa-data/analysis_battles_routemax_norm.csv b/sim-data/analysis_battles_routemax_norm.csv similarity index 100% rename from qa-data/analysis_battles_routemax_norm.csv rename to sim-data/analysis_battles_routemax_norm.csv diff --git a/qa-data/analysis_report.txt b/sim-data/analysis_report.txt similarity index 100% rename from qa-data/analysis_report.txt rename to sim-data/analysis_report.txt diff --git a/qa-data/analysis_report_routemax.txt b/sim-data/analysis_report_routemax.txt similarity index 100% rename from qa-data/analysis_report_routemax.txt rename to sim-data/analysis_report_routemax.txt diff --git a/qa-data/analysis_report_routemax_norm.txt b/sim-data/analysis_report_routemax_norm.txt similarity index 100% rename from qa-data/analysis_report_routemax_norm.txt rename to sim-data/analysis_report_routemax_norm.txt diff --git a/qa-data/analyze.py b/sim-data/analyze.py similarity index 100% rename from qa-data/analyze.py rename to sim-data/analyze.py diff --git a/production/qa/balance-verifier-20260922-200721.raw.jsonl b/sim-data/balance-verifier-20260922-200721.raw.jsonl similarity index 100% rename from production/qa/balance-verifier-20260922-200721.raw.jsonl rename to sim-data/balance-verifier-20260922-200721.raw.jsonl diff --git a/production/qa/balance-verifier-20260923-043341.raw.jsonl b/sim-data/balance-verifier-20260923-043341.raw.jsonl similarity index 100% rename from production/qa/balance-verifier-20260923-043341.raw.jsonl rename to sim-data/balance-verifier-20260923-043341.raw.jsonl diff --git a/production/qa/balance-verifier-20260923-050222.raw.jsonl b/sim-data/balance-verifier-20260923-050222.raw.jsonl similarity index 100% rename from production/qa/balance-verifier-20260923-050222.raw.jsonl rename to sim-data/balance-verifier-20260923-050222.raw.jsonl diff --git a/qa-data/board_calibration.csv b/sim-data/board_calibration.csv similarity index 100% rename from qa-data/board_calibration.csv rename to sim-data/board_calibration.csv diff --git a/qa-data/board_calibration_B6.csv b/sim-data/board_calibration_B6.csv similarity index 100% rename from qa-data/board_calibration_B6.csv rename to sim-data/board_calibration_B6.csv diff --git a/qa-data/growth_model.py b/sim-data/growth_model.py similarity index 100% rename from qa-data/growth_model.py rename to sim-data/growth_model.py diff --git a/qa-data/iteration_log.md b/sim-data/iteration_log.md similarity index 100% rename from qa-data/iteration_log.md rename to sim-data/iteration_log.md diff --git a/qa-data/report_B2_max.txt b/sim-data/report_B2_max.txt similarity index 100% rename from qa-data/report_B2_max.txt rename to sim-data/report_B2_max.txt diff --git a/qa-data/report_B2_min.txt b/sim-data/report_B2_min.txt similarity index 100% rename from qa-data/report_B2_min.txt rename to sim-data/report_B2_min.txt diff --git a/qa-data/report_B3_max.txt b/sim-data/report_B3_max.txt similarity index 100% rename from qa-data/report_B3_max.txt rename to sim-data/report_B3_max.txt diff --git a/qa-data/report_B3_min.txt b/sim-data/report_B3_min.txt similarity index 100% rename from qa-data/report_B3_min.txt rename to sim-data/report_B3_min.txt diff --git a/qa-data/report_B4_max.txt b/sim-data/report_B4_max.txt similarity index 100% rename from qa-data/report_B4_max.txt rename to sim-data/report_B4_max.txt diff --git a/qa-data/report_B4_min.txt b/sim-data/report_B4_min.txt similarity index 100% rename from qa-data/report_B4_min.txt rename to sim-data/report_B4_min.txt diff --git a/qa-data/report_B5_max.txt b/sim-data/report_B5_max.txt similarity index 100% rename from qa-data/report_B5_max.txt rename to sim-data/report_B5_max.txt diff --git a/qa-data/report_B5_min.txt b/sim-data/report_B5_min.txt similarity index 100% rename from qa-data/report_B5_min.txt rename to sim-data/report_B5_min.txt diff --git a/qa-data/report_B6_max.txt b/sim-data/report_B6_max.txt similarity index 100% rename from qa-data/report_B6_max.txt rename to sim-data/report_B6_max.txt diff --git a/qa-data/report_B6_min.txt b/sim-data/report_B6_min.txt similarity index 100% rename from qa-data/report_B6_min.txt rename to sim-data/report_B6_min.txt diff --git a/qa-data/report_B_max.txt b/sim-data/report_B_max.txt similarity index 100% rename from qa-data/report_B_max.txt rename to sim-data/report_B_max.txt diff --git a/qa-data/report_B_min.txt b/sim-data/report_B_min.txt similarity index 100% rename from qa-data/report_B_min.txt rename to sim-data/report_B_min.txt diff --git a/qa-data/report_M0.txt b/sim-data/report_M0.txt similarity index 100% rename from qa-data/report_M0.txt rename to sim-data/report_M0.txt diff --git a/qa-data/report_M1.txt b/sim-data/report_M1.txt similarity index 100% rename from qa-data/report_M1.txt rename to sim-data/report_M1.txt diff --git a/qa-data/report_M2.txt b/sim-data/report_M2.txt similarity index 100% rename from qa-data/report_M2.txt rename to sim-data/report_M2.txt diff --git a/qa-data/report_U2_max.txt b/sim-data/report_U2_max.txt similarity index 100% rename from qa-data/report_U2_max.txt rename to sim-data/report_U2_max.txt diff --git a/qa-data/report_U2_min.txt b/sim-data/report_U2_min.txt similarity index 100% rename from qa-data/report_U2_min.txt rename to sim-data/report_U2_min.txt diff --git a/qa-data/report_U_max.txt b/sim-data/report_U_max.txt similarity index 100% rename from qa-data/report_U_max.txt rename to sim-data/report_U_max.txt diff --git a/qa-data/report_U_min.txt b/sim-data/report_U_min.txt similarity index 100% rename from qa-data/report_U_min.txt rename to sim-data/report_U_min.txt diff --git a/qa-data/report_b3re_max.txt b/sim-data/report_b3re_max.txt similarity index 100% rename from qa-data/report_b3re_max.txt rename to sim-data/report_b3re_max.txt diff --git a/qa-data/report_b3re_min.txt b/sim-data/report_b3re_min.txt similarity index 100% rename from qa-data/report_b3re_min.txt rename to sim-data/report_b3re_min.txt diff --git a/qa-data/runsum_300_routemax_normal.jsonl b/sim-data/runsum_300_routemax_normal.jsonl similarity index 100% rename from qa-data/runsum_300_routemax_normal.jsonl rename to sim-data/runsum_300_routemax_normal.jsonl diff --git a/qa-data/runsum_600.jsonl b/sim-data/runsum_600.jsonl similarity index 100% rename from qa-data/runsum_600.jsonl rename to sim-data/runsum_600.jsonl diff --git a/qa-data/runsum_600_routemax.jsonl b/sim-data/runsum_600_routemax.jsonl similarity index 100% rename from qa-data/runsum_600_routemax.jsonl rename to sim-data/runsum_600_routemax.jsonl diff --git a/qa-data/runsum_B2_max.jsonl b/sim-data/runsum_B2_max.jsonl similarity index 100% rename from qa-data/runsum_B2_max.jsonl rename to sim-data/runsum_B2_max.jsonl diff --git a/qa-data/runsum_B2_min.jsonl b/sim-data/runsum_B2_min.jsonl similarity index 100% rename from qa-data/runsum_B2_min.jsonl rename to sim-data/runsum_B2_min.jsonl diff --git a/qa-data/runsum_B3_max.jsonl b/sim-data/runsum_B3_max.jsonl similarity index 100% rename from qa-data/runsum_B3_max.jsonl rename to sim-data/runsum_B3_max.jsonl diff --git a/qa-data/runsum_B3_min.jsonl b/sim-data/runsum_B3_min.jsonl similarity index 100% rename from qa-data/runsum_B3_min.jsonl rename to sim-data/runsum_B3_min.jsonl diff --git a/qa-data/runsum_B4_max.jsonl b/sim-data/runsum_B4_max.jsonl similarity index 100% rename from qa-data/runsum_B4_max.jsonl rename to sim-data/runsum_B4_max.jsonl diff --git a/qa-data/runsum_B4_min.jsonl b/sim-data/runsum_B4_min.jsonl similarity index 100% rename from qa-data/runsum_B4_min.jsonl rename to sim-data/runsum_B4_min.jsonl diff --git a/qa-data/runsum_B5_max.jsonl b/sim-data/runsum_B5_max.jsonl similarity index 100% rename from qa-data/runsum_B5_max.jsonl rename to sim-data/runsum_B5_max.jsonl diff --git a/qa-data/runsum_B5_min.jsonl b/sim-data/runsum_B5_min.jsonl similarity index 100% rename from qa-data/runsum_B5_min.jsonl rename to sim-data/runsum_B5_min.jsonl diff --git a/qa-data/runsum_B6_max.jsonl b/sim-data/runsum_B6_max.jsonl similarity index 100% rename from qa-data/runsum_B6_max.jsonl rename to sim-data/runsum_B6_max.jsonl diff --git a/qa-data/runsum_B6_min.jsonl b/sim-data/runsum_B6_min.jsonl similarity index 100% rename from qa-data/runsum_B6_min.jsonl rename to sim-data/runsum_B6_min.jsonl diff --git a/qa-data/runsum_B_max.jsonl b/sim-data/runsum_B_max.jsonl similarity index 100% rename from qa-data/runsum_B_max.jsonl rename to sim-data/runsum_B_max.jsonl diff --git a/qa-data/runsum_B_min.jsonl b/sim-data/runsum_B_min.jsonl similarity index 100% rename from qa-data/runsum_B_min.jsonl rename to sim-data/runsum_B_min.jsonl diff --git a/qa-data/runsum_M0_min.jsonl b/sim-data/runsum_M0_min.jsonl similarity index 100% rename from qa-data/runsum_M0_min.jsonl rename to sim-data/runsum_M0_min.jsonl diff --git a/qa-data/runsum_M1_min.jsonl b/sim-data/runsum_M1_min.jsonl similarity index 100% rename from qa-data/runsum_M1_min.jsonl rename to sim-data/runsum_M1_min.jsonl diff --git a/qa-data/runsum_M2_min.jsonl b/sim-data/runsum_M2_min.jsonl similarity index 100% rename from qa-data/runsum_M2_min.jsonl rename to sim-data/runsum_M2_min.jsonl diff --git a/qa-data/runsum_U2_max.jsonl b/sim-data/runsum_U2_max.jsonl similarity index 100% rename from qa-data/runsum_U2_max.jsonl rename to sim-data/runsum_U2_max.jsonl diff --git a/qa-data/runsum_U2_min.jsonl b/sim-data/runsum_U2_min.jsonl similarity index 100% rename from qa-data/runsum_U2_min.jsonl rename to sim-data/runsum_U2_min.jsonl diff --git a/qa-data/runsum_U_max.jsonl b/sim-data/runsum_U_max.jsonl similarity index 100% rename from qa-data/runsum_U_max.jsonl rename to sim-data/runsum_U_max.jsonl diff --git a/qa-data/runsum_U_min.jsonl b/sim-data/runsum_U_min.jsonl similarity index 100% rename from qa-data/runsum_U_min.jsonl rename to sim-data/runsum_U_min.jsonl diff --git a/qa-data/runsum_b3re_max.jsonl b/sim-data/runsum_b3re_max.jsonl similarity index 100% rename from qa-data/runsum_b3re_max.jsonl rename to sim-data/runsum_b3re_max.jsonl diff --git a/qa-data/runsum_b3re_min.jsonl b/sim-data/runsum_b3re_min.jsonl similarity index 100% rename from qa-data/runsum_b3re_min.jsonl rename to sim-data/runsum_b3re_min.jsonl diff --git a/qa-data/优化方案.md b/sim-data/优化方案.md similarity index 100% rename from qa-data/优化方案.md rename to sim-data/优化方案.md diff --git a/qa-data/分析报告_零加成全流程.md b/sim-data/分析报告_零加成全流程.md similarity index 100% rename from qa-data/分析报告_零加成全流程.md rename to sim-data/分析报告_零加成全流程.md diff --git a/qa-data/实现计划书_PackageB.md b/sim-data/实现计划书_PackageB.md similarity index 100% rename from qa-data/实现计划书_PackageB.md rename to sim-data/实现计划书_PackageB.md diff --git a/qa-data/数值设计_关卡成长×永久成长_v1.md b/sim-data/数值设计_关卡成长×永久成长_v1.md similarity index 100% rename from qa-data/数值设计_关卡成长×永久成长_v1.md rename to sim-data/数值设计_关卡成长×永久成长_v1.md diff --git a/game/tools/样例输出_4200批600局.txt b/sim-data/样例输出_4200批600局.txt similarity index 100% rename from game/tools/样例输出_4200批600局.txt rename to sim-data/样例输出_4200批600局.txt diff --git a/game/tools/样例输出_种子1234局.txt b/sim-data/样例输出_种子1234局.txt similarity index 100% rename from game/tools/样例输出_种子1234局.txt rename to sim-data/样例输出_种子1234局.txt diff --git a/game/tools/样例输出_种子5678局.txt b/sim-data/样例输出_种子5678局.txt similarity index 100% rename from game/tools/样例输出_种子5678局.txt rename to sim-data/样例输出_种子5678局.txt diff --git a/production/stage.txt b/stage.txt similarity index 100% rename from production/stage.txt rename to stage.txt diff --git a/tools/balance_verifier.py b/tools/balance_verifier.py index a35920b8..b994c546 100644 --- a/tools/balance_verifier.py +++ b/tools/balance_verifier.py @@ -33,7 +33,7 @@ r"""数值验证工具(判定端)——自动化评判 + 元进度爬升测 python tools/balance_verifier.py --na 60 --k 60 --seed0 9000 --spend atk_first python tools/balance_verifier.py --only adventure --inject max_hp:3 --na 100 python tools/balance_verifier.py --from-raw # 免重跑,对既有采集重新判定/出报告 -输出:控制台判定结论 + production/qa/balance-verifier-<时间戳>.md(报告)+ 同名 .raw.jsonl(原始逐局数据)。 +输出:控制台判定结论 + design/qa/balance-verifier-<时间戳>.md(报告)+ 同名 .raw.jsonl(原始逐局数据)。 兼容注:2026-09-23 前的旧 raw.jsonl 含 level 段(直入口单关)行——本版判定自动忽略, 逐关读数一律由冒险行派生。 """ @@ -51,7 +51,7 @@ ROOT = Path(__file__).resolve().parent.parent SLICE = ROOT / "game" GODOT = r"D:\code\godot\Godot_v4.7.2-stable_win64_console.exe" SCRIPT = "res://smoke/verifier_batch.gd" -QA_DIR = ROOT / "production" / "qa" +QA_DIR = ROOT / "design" / "qa" VJSON_PREFIX = "VJSON " ERROR_MARKERS = ("SCRIPT ERROR", "Parse Error") diff --git a/game/tools/log_analysis.py b/tools/log_analysis.py similarity index 100% rename from game/tools/log_analysis.py rename to tools/log_analysis.py diff --git a/tools/loop_dashboard.py b/tools/loop_dashboard.py index 21494735..20f6e144 100644 --- a/tools/loop_dashboard.py +++ b/tools/loop_dashboard.py @@ -2,7 +2,7 @@ r"""loop_dashboard.py — 迭代闭环仪表盘生成器 用法: - python tools/loop_dashboard.py # 生成 production/loop-dashboard.html + 控制台摘要 + python tools/loop_dashboard.py # 生成 sim-data/loop-dashboard.html + 控制台摘要 python tools/loop_dashboard.py --open # 生成后用系统默认浏览器打开 python tools/loop_dashboard.py --out @@ -32,12 +32,12 @@ from pathlib import Path ROOT = Path(__file__).resolve().parent.parent GDD_DIR = ROOT / "design" / "gdd" -ACTIVE_MD = ROOT / "production" / "session-state" / "active.md" -ROADMAP_MD = ROOT / "production" / "roadmap.md" +ACTIVE_MD = ROOT / "active.md" +ROADMAP_MD = ROOT / "roadmap.md" TODO_MD = GDD_DIR / "06-待办清单.md" VERIFY_MD = GDD_DIR / "07-体验验证清单.md" -STAGE_TXT = ROOT / "production" / "stage.txt" -DEFAULT_OUT = ROOT / "production" / "loop-dashboard.html" +STAGE_TXT = ROOT / "stage.txt" +DEFAULT_OUT = ROOT / "sim-data" / "loop-dashboard.html" LOOP_ORDER = ["顶层文档", "排雷循环", "战斗循环", "冒险循环", "表现与支撑"] @@ -65,18 +65,22 @@ def classify_path(rel: str): rel = rel.replace("\\", "/") if rel.startswith("design/gdd/"): return "GDD 文档" + if rel == "active.md" or rel == "roadmap.md": + return "会话与路线" + if rel.startswith("design/qa/") or rel.startswith("design/research/"): + return "验证与调研" if rel.startswith("design/"): - return "设计侧其他(registry/ux/art/research)" + return "设计侧其他(registry/art/dev)" if rel.startswith("game/"): if rel.endswith(".gd"): return "游戏代码" if rel.endswith(".tres"): return "数据表" - return "切片其他" + return "游戏工程其他" if rel.startswith("tools/"): return "工具" - if rel.startswith("production/"): - return "会话产物" + if rel.startswith("sim-data/"): + return "数据产物" return "其他" @@ -477,7 +481,7 @@ def render_html(stage, git_info, docs, active, todos, verify, roadmap, out_path)
{"".join(todo_cards)}
{'

解决态残留(按「解决即移除」口径应从 06 移除,去向归台账与 git 历史)

    ' + "".join(f"
  • {esc(t['system'])} · {esc(t['title'])}
  • " for t in resolved_all) + '
' if resolved_all else ''} -

路线图(production/roadmap.md)

+

路线图(roadmap.md)

    {route}

台账健康

@@ -487,7 +491,7 @@ def render_html(stage, git_info, docs, active, todos, verify, roadmap, out_path)
    {commits}
diff --git a/tools/render_sample_sheet.py b/tools/render_sample_sheet.py index 737a535c..7ffd8e9a 100644 --- a/tools/render_sample_sheet.py +++ b/tools/render_sample_sheet.py @@ -18,8 +18,8 @@ v0 四 FATAL 案底(2026-09-26 用户否决)全部断言化——生成即验, 素材源 = game/assets/art(board 21 瓦片 + character 小人/立绘)+ ui/icons 状态图标; 素材不入 git——先查本仓库,缺位回退主检出(D:/code/g-plan2)。 词表事实源 = design/research/board-tile-vocab-plan-a-2026-09-26.md;画法参数事实源 = -production/mockups/画法参数四源对照表-2026-09-26.md(四源对表先行产物)。 -输出 = production/mockups/sample-batch-v1-2026-09-26.png + sample-v1-机检报告-2026-09-26.md。 +artwork/mockups/画法参数四源对照表-2026-09-26.md(四源对表先行产物)。 +输出 = artwork/mockups/sample-batch-v1-2026-09-26.png + sample-v1-机检报告-2026-09-26.md。 用法:python tools/render_sample_sheet.py """ from PIL import Image, ImageDraw, ImageFilter, ImageChops, ImageFont @@ -45,8 +45,8 @@ def asset_root(*parts): BOARD_DIR = ("game", "assets", "art", "board") CHAR_DIR = ("game", "assets", "art", "character") ICON_DIR = ("game", "assets", "ui", "icons") -OUT_PNG = os.path.join(ROOT, "production", "mockups", "sample-batch-v1-2026-09-26.png") -OUT_REPORT = os.path.join(ROOT, "production", "mockups", "sample-v1-机检报告-2026-09-26.md") +OUT_PNG = os.path.join(ROOT, "artwork", "mockups", "sample-batch-v1-2026-09-26.png") +OUT_REPORT = os.path.join(ROOT, "artwork", "mockups", "sample-v1-机检报告-2026-09-26.md") T_FONT = asset_root("design", "art", "candidates", "ui-reuse-2026-09-23", "4-字体", "fusion-pixel-12px(OFL)", "fusion-pixel-12px-proportional-latin.ttf") ZH_FONT = r"C:\Windows\Fonts\msyh.ttc" diff --git a/game/tools/指标口径说明.md b/tools/指标口径说明.md similarity index 100% rename from game/tools/指标口径说明.md rename to tools/指标口径说明.md