refactor: production 解散+docs 并入 design+tests 归 game 三层收敛——active.md/roadmap/stage/review-mode 升根目录;qa 报告→design/qa(gate-checks/alpha 验收/任务书→research);docs/→design/dev+registry 并档+散提案→research;tests/→game/tests(空架子 README+示例,真测试在 game/smoke);game/tools→tools+样例输出→sim-data;qa-data→sim-data;design/ux→gdd/ux;删 loop-dashboard.html(可再生成)+route_overlay_preview(零引用);钩子三件+loop_dashboard/balance_verifier/render_sample_sheet 路径随迁;断链修复 12 文件,余 7 条全为搬前幽灵链
This commit is contained in:
1 parent
97e20d51fb
commit
7f24b640ea
179 files changed
+81
-579
No files matched your search
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
cd /d/code/g-plan2-restructure
|
||||
git add -A
|
||||
git commit --amend --no-edit -q
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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":
|
||||
|
||||
@@ -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 侧,用户本人手工改动不受限
|
||||
|
||||
## 硬性红线(勿违反)
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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`
|
||||
|
||||
|
||||
@@ -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)终稿;①–⑤ 体感按各条目的回流位分流。
|
||||
|
||||
## 验收读数重测批义务(给下一批的输入,非手工项)
|
||||
|
||||
|
||||
@@ -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`,判定端 ④ 段可复判):
|
||||
|
||||
| 换算行 | 折算语义 | 每级带平移量(现行表值) |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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) |
|
||||
@@ -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 |
|
||||
@@ -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 最小闭环
|
||||
|
||||
@@ -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) |
|
||||
@@ -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)定稿登记的交付物输入(全键族) | 如何转化成设置项(比如是否允许改键)待设计 |
|
||||
| 结算风味词 | 归档概念层增补批随巢穴隐喻换轴登记("封印 / 镇 / 反制"一类类型风味词),只登记了存在、各归各的时机 | 内容与形态未定,本文只登记这条输入在 |
|
||||
|
||||
@@ -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 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 |
|
||||
@@ -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
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -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 裁决⑦)。
|
||||
|
||||
@@ -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)(对账责任方)
|
||||
|
||||
---
|
||||
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
|
Before Width: | Height: | Size: 71 KiB |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,92 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>迭代闭环仪表盘 · Dungeon Sweeper</title>
|
||||
<style>
|
||||
:root{--bg:#14161a;--card:#1d2026;--line:#2c3038;--tx:#d8dce3;--dim:#8b919c;
|
||||
--acc:#5b9dd9;--warn:#d9a05b;--bad:#d95b6a;--ok:#6fbf7f;}
|
||||
*{box-sizing:border-box}
|
||||
body{margin:0;background:var(--bg);color:var(--tx);
|
||||
font-family:"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;font-size:14px;line-height:1.6}
|
||||
main{max-width:1080px;margin:0 auto;padding:24px 20px 60px}
|
||||
h1{font-size:22px;margin:0 0 4px}
|
||||
h2{font-size:17px;margin:36px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
|
||||
.meta{color:var(--dim);font-size:12.5px;margin-bottom:8px}
|
||||
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
|
||||
@media(max-width:800px){.grid{grid-template-columns:1fr}}
|
||||
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 16px}
|
||||
.card h3{margin:0 0 8px;font-size:14px;color:var(--acc)}
|
||||
.card ul{margin:0;padding-left:18px}
|
||||
.card li{margin:3px 0}
|
||||
table{width:100%;border-collapse:collapse;background:var(--card);
|
||||
border:1px solid var(--line);border-radius:8px;overflow:hidden;font-size:13px}
|
||||
th,td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
|
||||
th{color:var(--dim);font-weight:600;background:#22252c}
|
||||
tr:last-child td{border-bottom:none}
|
||||
.dirty{color:var(--warn);font-weight:600}
|
||||
.tag{display:inline-block;padding:0 8px;border-radius:10px;font-size:12px;margin-right:6px}
|
||||
.tag.open{background:#2b3a4a;color:#9cc7ec}
|
||||
.tag.partial{background:#463d2b;color:#e0c08a}
|
||||
.tag.decided{background:#3a3350;color:#c3b3ec}
|
||||
.tag.resolved{background:#3c2b30;color:#e0999f}
|
||||
.stale{color:var(--bad);font-weight:600}
|
||||
.ok{color:var(--ok)}
|
||||
.dim{color:var(--dim)}
|
||||
footer{margin-top:40px;color:var(--dim);font-size:12px;border-top:1px solid var(--line);padding-top:12px}
|
||||
code{background:#262a31;padding:1px 5px;border-radius:4px;font-size:12.5px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<h1>迭代闭环仪表盘</h1>
|
||||
<div class="meta">阶段: Vertical Slice Implementation · 生成于 2026-09-19 05:34 · 只读视图,重跑 <code>python tools/loop_dashboard.py</code> 刷新</div>
|
||||
|
||||
<h2>当前状态快照(active.md)</h2>
|
||||
<div class="card"><ul><li>**更新于**:2026-09-19(旗行为基线前置采集批:拔旗定价复核+插旗不可逆提案两条自 06 清单销项〔用户拍板标记完成〕,观测面以 07-体验验证清单⑧承接——纯日志侧零玩法改动,读数全部可由现役 JSONL 推导,随真人试玩批次 2 出基线、回流 Alpha 插旗提案评估;清单 55→53 条;台账 82)+(并行对答会话)技能池新效应词汇批四拍板落地:两词定案〔妨害技=新增第四技能类型、载荷复用乏力/失衡既有轴;必中附加分量=攻击基线×0.75 不吃骰不出暴击,替代"固定值伤害"〕、多段命中退役〔无防御磨损体系〕、实装面收窄=仅 L2 Boss 蛛化卓尔精灵、其余敌种不动;妨害首发轴待用户点选后出 proposal 一批执行(06 条目状态已更)</li><li>**在飞**:表现层升级批未启动(前置 = 美术清单 P0 样张 + 用户看图拍板敌人卡形态);两份美术清单合并待拍板;多批工作区未提交</li><li>**已完成**:06 待办清理批(清单 87→80 条;三裁决落地:变异死分支删/快照域进 Alpha 首批/未开格微光拍板;排雷玩法节新增禁拔旗提案登记)+ 冒险内成长提案登记批(GP 临时资源+商店房提案登记 06 清单关卡节点地图节,未评估;台账 74)</li><li>**已完成**:**数值语言拍板批(加法核,台账 75)**——全项目数值语言=小整数加法核(模板 C 骨架+模板 A 成长语言)成文 01-核心循环;甲效矩阵 percent→三档点数 +1/0/−1(pierce×heavy=0 用户拍板,今晨五档 percent 调参〔台账 71〕随批退役);增益池/AC 折扣档/暴击保留百分比+粒度口径成文;元进度/GP 投值语言锁 flat;冒烟 300 全绿+四探针 PASS+flat vs percent A/B(L1 逐值全同、L2 Boss 战基础攻击 +1 生效 hp+100 档 50→60%)</li><li>**已解锁可做**:验收读数重测批(结构修复批+调参批+换装批三次数值行为变更叠加,基线彻底归零须重测;击杀区间复算义务随批);敌方技能攻击类型轴(敌方攻击入矩阵消费面后主角 armor_type 轴才生效)</li><li>**阻塞等待**:曲线调参批(门 = 验收读数重测);状态层重设计批(临时值终值 + 池百分比量纲复核)</li><li>**锚点提交**:b51af08 结构修复批 · b7d1b56 收口杂项 · 0da19a5 场景一三落地 · a2fc39f 伤害道具+护甲重配 · c5c52b5 元进度定稿</li><li>**下一步顺序**:验收读数重测 → 状态层重设计批 → 曲线调参批 → 魔法道具内容批 → 表现层升级批(详见 production/roadmap.md)</li><li>**并行会话标旗**:本会话(数值语言批)改面 = 甲效矩阵 7 切片件+战斗结算 v0.16+难度曲线 v0.12+元进度 v1.1+01+registry+06 GP 注记一行;其余在飞改动(06 清理 143 行/board_data.gd/07/冒险结构/增益状态/战斗表现/行动经济/数据配置/设置与本地化/音频/battle.md/analyze_playtest.py)均非本批未碰;design/ 三未跟踪文件维持标旗</li></ul></div>
|
||||
|
||||
<h2>迭代闭环四问</h2>
|
||||
<div class="grid">
|
||||
<div class="card"><h3>① 什么在飞(git 未提交 12 + 未跟踪 8)</h3>
|
||||
<table><tr><th>分组</th><th>文件数</th></tr><tr><td>切片代码</td><td>5</td></tr><tr><td>GDD 文档</td><td>3</td></tr><tr><td>数据表</td><td>2</td></tr><tr><td>其他</td><td>1</td></tr><tr><td>会话产物</td><td>1</td></tr></table>
|
||||
<p class="dim" style="margin:8px 0 0">未跟踪: </p><ul><li>.zcode/plans/</li><li>design/art/asset-checklist.md</li><li>design/research/proposal-reward-cell-differentiation-2026-09-17.md</li><li>docs/proposal-status-vocabulary.md</li><li>production/loop-dashboard.html</li><li>production/qa/dashboard-preview.png</li><li>game/smoke/config_fatal_probe.gd.uid</li><li>tools/loop_dashboard.py</li></ul></div>
|
||||
<div class="card"><h3>② 什么待拍板 / 待执行(06 清单 53 条)</h3>
|
||||
<p>待办 44 · 部分收口 6 · 拍板待执行 3 ·
|
||||
<span class="stale">解决态残留 0</span>(按「解决即移除」口径待清)</p>
|
||||
<table><tr><th>循环</th><th>开放</th><th>总条数</th></tr><tr><td>排雷循环</td><td>9</td><td>9</td></tr><tr><td>战斗循环</td><td>22</td><td>22</td></tr><tr><td>冒险循环</td><td>12</td><td>12</td></tr><tr><td>表现与支撑</td><td>10</td><td>10</td></tr></table>
|
||||
<p class="dim" style="margin:8px 0 0">完整清单见下方「待办清单全目」专区。</p></div>
|
||||
<div class="card"><h3>③ 什么要人玩(07 体验验证 8 项)</h3>
|
||||
<ul><li>① Boss 战节奏(最高优先)</li><li>② 削弱续时后的承伤压力</li><li>③ 增伤全段覆盖的数值手感</li><li>④ 乏力的可感知性</li><li>⑤ 失衡换轴的归因可读性(P2 关注)</li><li>⑥ 速杀退化预警(监控口径,2026-09-18 定案)</li><li>⑦ 刷新经济监控(日志先行,阈值等基线)</li><li>⑧ 旗行为基线监控(插旗提案评估前置采集,2026-09-19 拍板)</li></ul></div>
|
||||
<div class="card"><h3>④ 验证是否落后于文档(失效面检测)</h3>
|
||||
<p class="dim">07 头部批次来源: **战斗数值四连批**(2026-09-18 ~ 09-19,版本锚 = 战斗结算 v0.16 / 增益状态 v0.9 / 地图战斗资源 v0.11)——① 战斗数值结构修复批(乘区接线四件套 + 削弱续时,v0.14)→ ② 甲效矩阵用户</p>
|
||||
<table><tr><th>文档</th><th>07 引用</th><th>现行版本</th><th>判定</th></tr><tr><td>战斗结算</td><td>v0.16</td><td>v0.16</td><td><span class="ok">一致</span></td></tr><tr><td>增益状态</td><td>v0.9</td><td>v0.9</td><td><span class="ok">一致</span></td></tr><tr><td>地图战斗资源</td><td>v0.11</td><td>v0.11</td><td><span class="ok">一致</span></td></tr></table>
|
||||
<p class="ok">引用与现行版本一致。</p>
|
||||
<h3 style="margin-top:12px">重测批义务(07 原文)</h3>
|
||||
<ul><li>**Boss 战必须单独出列**(硬化行为变化——旧 Boss 承伤 84.8% 等读数全部作废)。</li><li>普通场承伤带、通关率基线全量重测(削弱续时 + 乘区接线 + 甲效量纲换装 + 充能退役 多变量叠加,禁与任何旧读数混算)。</li><li>旧读数作废清单:池触底免伤轮相关读数、硬化翻倍期全部战斗读数、乏力死效果期格面调研读数、充能期(三分量输出)全部战斗读数。</li><li>工具就位:`analyze_playtest.py`(反事实分析,吃新日志)、`level_monte_carlo`(MC 基线重跑)、JSONL 日志含池值与快照。</li></ul></div>
|
||||
</div>
|
||||
|
||||
<h2>GDD 文档新鲜度(28 份,按改动时间)</h2>
|
||||
<table><tr><th>文档</th><th>版本</th><th>版本日期</th><th>文件改动</th><th>标题</th></tr><tr><td colspan='5' class='dim' style='background:#22252c'>顶层文档(8)</td></tr><tr><td>06-待办清单 <span class="dirty">在飞</span></td><td>—</td><td class='dim'>—</td><td class='dim'>09-19 05:32</td><td class='dim'>06-待办清单</td></tr><tr><td>07-体验验证清单 <span class="dirty">在飞</span></td><td>—</td><td class='dim'>—</td><td class='dim'>09-19 05:32</td><td class='dim'>07-体验验证清单</td></tr><tr><td>01-核心循环</td><td>—</td><td class='dim'>—</td><td class='dim'>09-19 01:57</td><td class='dim'>核心循环</td></tr><tr><td>02-系统清单</td><td>v0.7</td><td class='dim'>2026-09-17</td><td class='dim'>09-18 18:44</td><td class='dim'>系统清单</td></tr><tr><td>03-内容规模</td><td>v0.3</td><td class='dim'>2026-09-17</td><td class='dim'>09-18 00:35</td><td class='dim'>内容规模</td></tr><tr><td>05-不做清单</td><td>—</td><td class='dim'>—</td><td class='dim'>09-17 01:25</td><td class='dim'>不做清单</td></tr><tr><td>00-游戏概念</td><td>—</td><td class='dim'>—</td><td class='dim'>09-16 00:41</td><td class='dim'>游戏概念</td></tr><tr><td>04-美术音频方向</td><td>—</td><td class='dim'>—</td><td class='dim'>09-14 21:40</td><td class='dim'>美术音频方向</td></tr></table>
|
||||
|
||||
<h2>待办清单全目(按循环)</h2>
|
||||
<div class="grid"><div class='card'><h3>排雷循环 · 开放 9/9</h3><ul><li><span class="tag open">待办</span>行动经济 · 刷新经济性监控(基线后定阈值)</li><li><span class="tag open">待办</span>地形变异 · 首批变异类型(岩浆/冰冻)机制未定</li><li><span class="tag open">待办</span>地形变异 · 生成期布置的约束与参数未定稿</li><li><span class="tag open">待办</span>地形变异 · 全局作用域变异</li><li><span class="tag open">待办</span>地形变异 · 变异格对初始展开的影响语义</li><li><span class="tag open">待办</span>地形变异 · 显影尘效果重定</li><li><span class="tag open">待办</span>地形变异 · 地穴全图卷效果重定</li><li><span class="tag open">待办</span>地形变异 · 反制维度承载失义</li><li><span class="tag open">待办</span>地形变异 · 探宝罗盘效果重定——两方案评估(2026-09-19 立项)</li></ul></div><div class='card'><h3>战斗循环 · 开放 22/22</h3><ul><li><span class="tag open">待办</span>战斗结算 · 挖掘风险不等式对账破线</li><li><span class="tag open">待办</span>战斗结算 · 清图支配性保守地板缺口</li><li><span class="tag open">待办</span>敌人系统 · 单拍行为环的体验验证(改型:技能池节奏体验验证)</li><li><span class="tag open">待办</span>敌人系统 · 伏击量纲与上限的联动复核</li><li><span class="tag open">待办</span>敌人系统 · 零伤害 / 无威胁组合的跨字段护栏</li><li><span class="tag partial">部分收口</span>敌人系统 · 同深度第二敌种与精英 / Boss 编码位</li><li><span class="tag decided">拍板待执行</span>敌人系统 · 敌方护甲等级(armor_class)正式行值</li><li><span class="tag open">待办</span>敌人系统 · 技能池情境条件触发器</li><li><span class="tag open">待办</span>敌人系统 · 个体化变体池</li><li><span class="tag open">待办</span>敌人系统 · 全局特殊间隔旋钮</li><li><span class="tag decided">拍板待执行</span>敌人系统 · 技能池新效应词汇批</li><li><span class="tag open">待办</span>敌人系统 · 第二关技能池与投放</li><li><span class="tag open">待办</span>敌人系统 · 敌方技能图鉴 / 学习呈现</li><li><span class="tag open">待办</span>敌人系统 · Alpha:全怪物技能池数值验证与合理性设计</li><li><span class="tag open">待办</span>增益状态 · 叠层不续命的读感</li><li><span class="tag open">待办</span>增益状态 · 削弱档位的最终数值</li><li><span class="tag open">待办</span>增益状态 · 单体寻址的接口扩展位</li><li><span class="tag open">待办</span>增益状态 · 空刷新的可见性</li><li><span class="tag partial">部分收口</span>地图战斗资源 · heal 负向直伤的量级锚</li><li><span class="tag open">待办</span>地图战斗资源 · 雷格与安全格的资源分布差异化(Alpha 批)</li><li><span class="tag open">待办</span>地图战斗资源 · 冒险前资源配比预设(构筑提案)</li><li><span class="tag open">待办</span>战斗表现 · 敌人卡形态</li></ul></div><div class='card'><h3>冒险循环 · 开放 12/12</h3><ul><li><span class="tag decided">拍板待执行</span>关卡节点地图 · 首遇位教学敌可被棋盘火力一轮击杀</li><li><span class="tag partial">部分收口</span>关卡节点地图 · 切片行进代码与定稿的接口漂移</li><li><span class="tag open">待办</span>关卡节点地图 · 两关序列未生效</li><li><span class="tag open">待办</span>关卡节点地图 · 大奖励数值随难度曲线联动</li><li><span class="tag open">待办</span>关卡节点地图 · 冒险循环内成长提案(临时资源 GP + 商店房节点)</li><li><span class="tag open">待办</span>难度曲线与Boss · 基线通关率越带,加难杠杆扫描未执行</li><li><span class="tag open">待办</span>难度曲线与Boss · 完美策略档的结构性加难杠杆</li><li><span class="tag open">待办</span>难度曲线与Boss · 真人通关率标定</li><li><span class="tag open">待办</span>难度曲线与Boss · 区间平移换算率数值未定</li><li><span class="tag partial">部分收口</span>难度曲线与Boss · 三方向各自的解锁清单与定价</li><li><span class="tag partial">部分收口</span>难度曲线与Boss · 解锁注入的实现口径</li><li><span class="tag partial">部分收口</span>难度曲线与Boss · 解锁界面与钥石呈现的交互形态</li></ul></div><div class='card'><h3>表现与支撑 · 开放 10/10</h3><ul><li><span class="tag open">待办</span>HUD框架 · 未开格类型徽章呈现时机(2026-09-18 方向已拍板,待实施批)</li><li><span class="tag open">待办</span>HUD框架 · 分辨率档位与棋盘格边长口径</li><li><span class="tag open">待办</span>数据配置 · 变异表旧字段集是否沿用Line truncated
|
||||
|
||||
|
||||
<h2>路线图(production/roadmap.md)</h2>
|
||||
<div class="card"><ol><li>1. **技能池实施批(已落地,smoke 263 全绿;待一笔收编提交)**:批 1 核心机制 + 批 2 呈现替代 + 批 3 文档与 registry 已完成;收编提交后本站闭合。设计权威 = `docs/proposal-skill-pool.md`。</li><li>2. **验收批**(门 = 技能池批收编 + 工作区净 + smoke 全绿):按 `docs/acceptance-ap6-ac.md` v1.0 跑三数据源(蒙特卡洛双档 / 真人 3–5 局 / 日志分析器),无道具基线;产出判读结论与选档建议。</li><li>3. **难度曲线阶段二调参批**(门 = 验收读数):四级阶梯落档 + 三杠杆扫描(血量锚走廊 / 群战上探 / 注入衰减)+ 挖掘风险不等式与清图支配性两对账重跑 + AC 行值投值。</li><li>4. **第二关内容批**(门 = 调参行值):深度轴行值 D1–D4 填充 + 新内容投放(技能池定稿后 = 既有池新技能);填齐后两关序列生效。</li><li>5. **并行 / 后置轨道**:关卡节点地图 GDD 定稿批(已解锁,与在飞批零文件冲突);魔法道具内容批(排切片收尾后);真人通关率标定(挂 playtest 批);元进度定稿(排 Alpha 前收口——资源关系已裁统一钥石〔2026-09-17〕,剩解锁清单/定价与钥石产出细则)。</li></ol></div>
|
||||
|
||||
<h2>台账健康</h2>
|
||||
<div class="card"><p>台账区(「Session Extract — /review-all-gdds 2026-09-14」之后)最新编号 <b>82</b>,下一编号建议 <b>83</b>;检出撞号 72, 75, 76, 77, 78(编号有效、历史不改写)。</p></div>
|
||||
|
||||
<h2>近期提交</h2>
|
||||
<div class="card"><ul><li><code>e66d156</code> feat(slice): 充能退役+board_type 词表定稿+06 待办两轮清理批(2026-09-19 用户逐项拍板)——含并行会话未提交工作一并入库</li><li><code>03264bd</code> docs(gdd): 战斗数值四议题收口批——议题二/四登记补全+叠层调研报告(修复批 b51af08 的讨论场残留)——①06-待办关卡节点图节新增「首遇位教学敌可被棋盘火力一轮</li><li><code>b51af08</code> fix(slice): 战斗数值结构修复批——乘区接线四件套+削弱续时(2026-09-18 盘问会话用户拍板,直接执行)——①主角侧乘区接线:主角攻击 Σ三分量后 ×(100+h</li><li><code>b7d1b56</code> chore(session): 收口杂项批——Stop 守卫强判据升级(active.md 登记判据 mtime→内容哈希,touch/意外改时间不再蒙混;三态实测 0/2/0)+</li><li><code>0da19a5</code> feat(slice): 措辞收口+数值对齐+场景一/三拍板落地批——①registry 指路化收口:主角条目去 MVP 值改读 hero.tres、技能条目七行枚举(补收撕咬/毒</li></ul></div>
|
||||
|
||||
<footer>
|
||||
数据源: production/session-state/active.md · production/roadmap.md · production/stage.txt ·
|
||||
design/gdd/06-待办清单.md · design/gdd/07-体验验证清单.md · design/gdd/** · git status/log。
|
||||
生成工具 tools/loop_dashboard.py;六处信息源格式变更时同步改解析约定(见工具头注)。
|
||||
</footer>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 204 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 404 KiB |
@@ -1,325 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>敌人卡形态对照样张 — 卡片式 vs 站桩式</title>
|
||||
<style>
|
||||
* { margin:0; padding:0; box-sizing:border-box; }
|
||||
body { background:#0d0b09; color:#cfc4b0; font-family:"Microsoft YaHei","PingFang SC",sans-serif; padding:24px; }
|
||||
h1 { font-size:18px; color:#d9a441; margin-bottom:4px; }
|
||||
.note { font-size:12px; color:#8a7f6d; margin-bottom:20px; }
|
||||
.screen-wrap { margin-bottom:36px; }
|
||||
.screen-title { font-size:15px; color:#e8d9b0; margin-bottom:8px; font-weight:bold; }
|
||||
.screen-title small { color:#8a7f6d; font-weight:normal; }
|
||||
/* ===== 战斗屏 1280x800 ===== */
|
||||
.screen { width:1280px; height:800px; background:#171310; border:1px solid #3a322a; position:relative; display:flex; flex-direction:column; }
|
||||
/* A 区 */
|
||||
.zone-a { height:28px; background:#1f1a15; border-bottom:1px solid #3a322a; display:flex; align-items:center; padding:0 16px; gap:6px; font-size:12px; }
|
||||
.node-tag { padding:1px 8px; border:1px solid #4a4036; border-radius:3px; color:#8a7f6d; }
|
||||
.node-tag.past { color:#6b5f34; border-color:#3a322a; }
|
||||
.node-tag.now { color:#d9a441; border-color:#d9a441; background:rgba(217,164,65,.12); }
|
||||
.node-tag.boss { border-color:#c0392b; color:#c0392b; }
|
||||
.arrow { color:#4a4036; }
|
||||
/* B 区 */
|
||||
.zone-b { height:252px; background:#221c16; border-bottom:1px solid #3a322a; position:relative; display:flex; }
|
||||
.round-ind { position:absolute; top:10px; left:50%; transform:translateX(-50%); font-size:14px; color:#e8d9b0; letter-spacing:2px; background:#171310; border:1px solid #3a322a; padding:2px 14px; border-radius:10px; z-index:5;}
|
||||
.hero-card { width:190px; margin:34px 0 34px 18px; background:#2a231c; border:1px solid #4a4036; border-radius:6px; padding:8px; }
|
||||
.hero-sil { height:70px; display:flex; align-items:center; justify-content:center; }
|
||||
.stat-row { font-size:12px; color:#cfc4b0; margin-top:6px; }
|
||||
.hpbar { height:10px; background:#171310; border:1px solid #4a4036; border-radius:2px; overflow:hidden; margin-top:3px; }
|
||||
.hpbar > div { height:100%; background:#5da35d; }
|
||||
.hpbar.enemy > div { background:#c0574a; }
|
||||
.status-chips { display:flex; gap:4px; margin-top:6px; min-height:18px; }
|
||||
.chip { font-size:11px; padding:1px 6px; border-radius:3px; border:1px solid; }
|
||||
.chip.buff { color:#8fd18f; border-color:#3f6b3f; background:rgba(93,163,93,.12); }
|
||||
.chip.debuff { color:#d98a7f; border-color:#6b3f3a; background:rgba(192,87,74,.12); }
|
||||
.stage { flex:1; position:relative; }
|
||||
.detail-band { position:absolute; bottom:0; left:0; right:0; height:24px; background:#171310; border-top:1px solid #3a322a; font-size:11px; color:#9a8f7c; display:flex; align-items:center; padding:0 12px; gap:8px; }
|
||||
.detail-band .expand { margin-left:auto; color:#d9a441; }
|
||||
/* 卡片式敌人 */
|
||||
.enemy-cards { display:flex; gap:12px; align-items:center; margin:34px 18px 34px 0; }
|
||||
.ecard { width:150px; background:#2a231c; border:1px solid #4a4036; border-radius:6px; padding:8px; position:relative; }
|
||||
.ecard .order { position:absolute; top:-8px; left:-8px; width:22px; height:22px; border-radius:50%; background:#d9a441; color:#171310; font-size:12px; font-weight:bold; display:flex; align-items:center; justify-content:center; border:2px solid #171310; }
|
||||
.ecard .portrait { height:56px; background:#171310; border:1px solid #3a322a; border-radius:4px; display:flex; align-items:center; justify-content:center; margin-bottom:6px; }
|
||||
.ecard .ename { font-size:12px; color:#e8d9b0; text-align:center; margin-bottom:4px; }
|
||||
.fx-icon { font-size:11px; color:#d98a7f; border:1px dashed #6b3f3a; border-radius:3px; padding:1px 6px; display:inline-block; margin-top:5px;}
|
||||
/* 站桩式敌人 */
|
||||
.standee-stage { position:relative; flex:1; height:100%; }
|
||||
.ground { position:absolute; bottom:24px; left:8%; right:8%; height:2px; background:linear-gradient(90deg,transparent,#4a4036 20%,#4a4036 80%,transparent); }
|
||||
.standee { position:absolute; bottom:26px; display:flex; flex-direction:column; align-items:center; }
|
||||
.standee .floaters { display:flex; gap:4px; margin-bottom:4px; align-items:center; }
|
||||
.fbar { width:64px; height:8px; background:#171310; border:1px solid #4a4036; border-radius:2px; overflow:hidden; }
|
||||
.fbar > div { height:100%; background:#c0574a; }
|
||||
.fbar.hero > div { background:#5da35d; }
|
||||
.forder { width:18px; height:18px; border-radius:50%; background:#d9a441; color:#171310; font-size:11px; font-weight:bold; display:flex; align-items:center; justify-content:center; }
|
||||
.standee .base { width:70px; height:12px; border-radius:50%; background:radial-gradient(ellipse,#3a322a,#221c16); margin-top:-4px; }
|
||||
.standee .fx-flash { position:absolute; top:-14px; font-size:18px; color:#e8b04a; text-shadow:0 0 8px rgba(232,176,74,.6); }
|
||||
.status-icons { display:flex; gap:3px; margin-top:3px; }
|
||||
.sicon { width:16px; height:16px; border-radius:3px; border:1px solid #4a4036; background:#241f19; font-size:10px; display:flex; align-items:center; justify-content:center; }
|
||||
.sicon.buff { color:#8fd18f; border-color:#3f6b3f; }
|
||||
.sicon.debuff { color:#d98a7f; border-color:#6b3f3a; }
|
||||
.sicon .stack { font-size:8px; transform:translate(5px,5px); }
|
||||
/* 下半区 */
|
||||
.lower { flex:1; display:flex; }
|
||||
.zone-c { width:240px; background:#1f1a15; border-right:1px solid #3a322a; padding:12px; }
|
||||
.zone-d { flex:1; background:#1b1611; padding:8px; position:relative; }
|
||||
.databox { border:1px solid #4a4036; padding:6px 8px; font-size:12px; margin-bottom:8px; background:#241f19; }
|
||||
.databox b { color:#e8d9b0; }
|
||||
.ap-bar { height:44px; display:flex; align-items:center; gap:10px; padding:0 8px; font-size:13px; }
|
||||
.ap-dot { width:14px; height:14px; border-radius:50%; border:1px solid #d9a441; display:inline-block; margin-right:3px; }
|
||||
.ap-dot.full { background:#d9a441; }
|
||||
.btn { border:1px solid #4a4036; background:#2a231c; color:#cfc4b0; font-size:12px; padding:4px 10px; border-radius:4px; }
|
||||
.btn.accent { border-color:#d9a441; color:#d9a441; }
|
||||
.board { display:grid; grid-template-columns:repeat(12,36px); grid-auto-rows:36px; gap:2px; justify-content:center; margin-top:4px; }
|
||||
.cell { background:#2e2820; border-radius:3px; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:bold; color:#e8d9b0; font-family:Consolas,monospace; position:relative; }
|
||||
.cell.open { background:#3d352a; }
|
||||
.cell.flag::after { content:"🚩"; font-size:16px; }
|
||||
.cell.reward::before { content:""; position:absolute; bottom:2px; right:2px; width:8px; height:8px; border-radius:50%; }
|
||||
.cell.reward.r1::before { background:#8fd18f; }
|
||||
.cell.reward.r2::before { background:#7fa8d9; }
|
||||
.pawn { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
|
||||
.pawn i { width:14px; height:14px; border-radius:50% 50% 40% 40%; background:#e8d9b0; display:block; box-shadow:0 10px 0 -3px #e8d9b0; }
|
||||
.toast { position:absolute; top:52px; left:50%; transform:translateX(-50%); background:#171310; border:1px solid #6b3f3a; color:#d98a7f; font-size:12px; padding:4px 12px; border-radius:4px; }
|
||||
.callout { font-size:12px; color:#d9a441; margin-top:8px; line-height:1.7; }
|
||||
.callout b { color:#e8d9b0; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>敌人卡形态对照样张(卡片式 vs 站桩式)</h1>
|
||||
<div class="note">仅裁决「B 区敌人怎么呈现」这一件事:两版除 B 区敌人呈现外完全一致(四区布局按 battle.md 现行口径;意图预告=普攻零表示/特殊技动画占位;剪影为程序化占位,非美术终稿)。战斗场景:第 1 关,地精一伙 ×2,第 3 轮挖掘中。</div>
|
||||
|
||||
<!-- ============ 卡片式 ============ -->
|
||||
<div class="screen-wrap">
|
||||
<div class="screen-title">形态 A · 卡片式 <small>—— 带框信息卡,信息有固定卡位</small></div>
|
||||
<div class="screen">
|
||||
<div class="zone-a">
|
||||
<span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag now">赏</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">疗</span><span class="arrow">→</span><span class="node-tag boss">王</span>
|
||||
</div>
|
||||
<div class="zone-b">
|
||||
<div class="round-ind">第 3 轮 · 挖掘中</div>
|
||||
<div class="hero-card">
|
||||
<div class="hero-sil">
|
||||
<svg width="46" height="64" viewBox="0 0 46 64"><path d="M23 4 L30 10 L28 18 C36 22 38 32 37 44 L40 60 L30 60 L28 48 L18 48 L16 60 L6 60 L9 44 C8 32 10 22 18 18 L16 10 Z" fill="#cfc4b0"/></svg>
|
||||
</div>
|
||||
<div class="stat-row">HP 42/50</div>
|
||||
<div class="hpbar"><div style="width:84%"></div></div>
|
||||
<div class="stat-row">攻 6 <span style="color:#8fd18f">(+50%)</span></div>
|
||||
<div class="status-chips"><span class="chip buff">⬆ +50% ·2</span><span class="chip buff">🛡 坚守 ·1</span></div>
|
||||
</div>
|
||||
<div class="stage">
|
||||
<div style="position:absolute;inset:34px 0 24px;display:flex;align-items:center;justify-content:center;color:#5a5044;font-size:13px;">[ 兑现演出区 ]</div>
|
||||
<div class="detail-band">▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 <span class="expand">[展开明细 ▾]</span></div>
|
||||
</div>
|
||||
<div class="enemy-cards">
|
||||
<div class="ecard">
|
||||
<div class="order">①</div>
|
||||
<div class="portrait"><svg width="36" height="46" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#9a8f7c"/></svg></div>
|
||||
<div class="ename">地精</div>
|
||||
<div class="hpbar enemy"><div style="width:70%"></div></div>
|
||||
<div class="stat-row" style="font-size:11px;color:#8a7f6d">HP 7/10</div>
|
||||
<div class="status-chips"><span class="chip debuff">伏击 ×2</span></div>
|
||||
<span class="fx-icon">⚔ 特殊技·攻击系</span>
|
||||
</div>
|
||||
<div class="ecard">
|
||||
<div class="order">②</div>
|
||||
<div class="portrait"><svg width="36" height="46" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#9a8f7c"/></svg></div>
|
||||
<div class="ename">地精</div>
|
||||
<div class="hpbar enemy"><div style="width:40%"></div></div>
|
||||
<div class="stat-row" style="font-size:11px;color:#8a7f6d">HP 4/10</div>
|
||||
<div class="status-chips"><span class="chip debuff">伏击 ×2</span></div>
|
||||
<span class="fx-icon" style="color:#5a5044;border-color:#3a322a">普攻 · 无表示</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lower">
|
||||
<div class="zone-c">
|
||||
<div class="databox"><b>HP</b> 42 / 50</div>
|
||||
<div class="databox"><b>攻击</b> 6 <span style="color:#8fd18f">(+50%)</span></div>
|
||||
<div class="databox"><b>RAP</b> 3 / 8</div>
|
||||
<div class="databox" style="margin-top:14px"><b>状态效果</b></div>
|
||||
<div class="status-chips" style="flex-direction:column;align-items:flex-start">
|
||||
<span class="chip buff">⬆ 攻击+50% ○ 1</span>
|
||||
<span class="chip buff">🛡 坚守 ○ ●</span>
|
||||
</div>
|
||||
<div style="margin-top:18px;text-align:center;color:#5a5044;font-size:11px">[ 小人立绘占位 ]</div>
|
||||
</div>
|
||||
<div class="zone-d">
|
||||
<div class="ap-bar">
|
||||
<span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot"></span><span class="ap-dot"></span>
|
||||
<span style="color:#8a7f6d">4/6</span>
|
||||
<button class="btn">⏹ 停手</button>
|
||||
<span style="margin-left:auto"></span>
|
||||
<button class="btn">? 图例</button>
|
||||
<button class="btn accent">↻ 刷新 −8 |剩 2</button>
|
||||
</div>
|
||||
<div class="board" id="boardA"></div>
|
||||
<div class="toast">AP 不足 · 剩 0 点</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="callout"><b>卡片式读法:</b>每个敌人一只带框卡——敌像、血条、顺位徽标①②、状态槽(伏击层数为全体共享、各卡同值)、特殊技动画占位都有固定卡位;信息不随站位漂移,排版最稳。代价:框多、界面感重,战斗画面区更像"面板"而非"场景"。</div>
|
||||
</div>
|
||||
|
||||
<!-- ============ 站桩式 ============ -->
|
||||
<div class="screen-wrap">
|
||||
<div class="screen-title">形态 B · 站桩式 <small>—— 无框立绘 + 底座,信息悬浮跟随</small></div>
|
||||
<div class="screen">
|
||||
<div class="zone-a">
|
||||
<span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag now">赏</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">疗</span><span class="arrow">→</span><span class="node-tag boss">王</span>
|
||||
</div>
|
||||
<div class="zone-b">
|
||||
<div class="round-ind">第 3 轮 · 挖掘中</div>
|
||||
<div class="hero-card">
|
||||
<div class="hero-sil">
|
||||
<svg width="46" height="64" viewBox="0 0 46 64"><path d="M23 4 L30 10 L28 18 C36 22 38 32 37 44 L40 60 L30 60 L28 48 L18 48 L16 60 L6 60 L9 44 C8 32 10 22 18 18 L16 10 Z" fill="#cfc4b0"/></svg>
|
||||
</div>
|
||||
<div class="stat-row">HP 42/50</div>
|
||||
<div class="hpbar"><div style="width:84%"></div></div>
|
||||
<div class="stat-row">攻 6 <span style="color:#8fd18f">(+50%)</span></div>
|
||||
<div class="status-chips"><span class="chip buff">⬆ +50% ·2</span><span class="chip buff">🛡 坚守 ·1</span></div>
|
||||
</div>
|
||||
<div class="stage">
|
||||
<div class="standee-stage">
|
||||
<div class="ground"></div>
|
||||
<div class="standee" style="right:230px;">
|
||||
<div class="fx-flash">⚔</div>
|
||||
<div class="floaters"><span class="forder">①</span><div class="fbar"><div style="width:70%"></div></div><span class="chip debuff">伏击×2</span></div>
|
||||
<svg width="52" height="72" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#9a8f7c"/></svg>
|
||||
<div class="base"></div>
|
||||
</div>
|
||||
<div class="standee" style="right:80px;">
|
||||
<div class="floaters"><span class="forder">②</span><div class="fbar"><div style="width:40%"></div></div><span class="chip debuff">伏击×2</span></div>
|
||||
<svg width="46" height="64" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#8a7f6d"/></svg>
|
||||
<div class="base"></div>
|
||||
</div>
|
||||
<div style="position:absolute;top:8px;left:50%;transform:translateX(-50%);color:#5a5044;font-size:13px;">[ 兑现演出区 ]</div>
|
||||
</div>
|
||||
<div class="detail-band">▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 <span class="expand">[展开明细 ▾]</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lower">
|
||||
<div class="zone-c">
|
||||
<div class="databox"><b>HP</b> 42 / 50</div>
|
||||
<div class="databox"><b>攻击</b> 6 <span style="color:#8fd18f">(+50%)</span></div>
|
||||
<div class="databox"><b>RAP</b> 3 / 8</div>
|
||||
<div class="databox" style="margin-top:14px"><b>状态效果</b></div>
|
||||
<div class="status-chips" style="flex-direction:column;align-items:flex-start">
|
||||
<span class="chip buff">⬆ 攻击+50% ○ 1</span>
|
||||
<span class="chip buff">🛡 坚守 ○ ●</span>
|
||||
</div>
|
||||
<div style="margin-top:18px;text-align:center;color:#5a5044;font-size:11px">[ 小人立绘占位 ]</div>
|
||||
</div>
|
||||
<div class="zone-d">
|
||||
<div class="ap-bar">
|
||||
<span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot"></span><span class="ap-dot"></span>
|
||||
<span style="color:#8a7f6d">4/6</span>
|
||||
<button class="btn">⏹ 停手</button>
|
||||
<span style="margin-left:auto"></span>
|
||||
<button class="btn">? 图例</button>
|
||||
<button class="btn accent">↻ 刷新 −8 |剩 2</button>
|
||||
</div>
|
||||
<div class="board" id="boardB"></div>
|
||||
<div class="toast">AP 不足 · 剩 0 点</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="callout"><b>站桩式读法:</b>敌人是"站在战斗画面里的角色"——立绘 + 椭圆底座,血条/顺位/状态徽标全部悬浮在头顶跟随站位;场景感强、受击与退场动画直接演在角色身上。代价:信息位置随站位浮动、悬浮件之间可能互撞(上图已能看出 ①头顶三件悬浮件的拥挤),三敌满编时右侧更挤。</div>
|
||||
</div>
|
||||
|
||||
<!-- ============ 定稿形态:全站桩(主角+敌人) ============ -->
|
||||
<div class="screen-wrap">
|
||||
<div class="screen-title">✅ 定稿形态 · 全站桩 <small>—— 主角与敌人均无卡片立绘+底座;状态小图标挂血条下(2026-09-20 用户拍板)</small></div>
|
||||
<div class="screen">
|
||||
<div class="zone-a">
|
||||
<span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag past">战</span><span class="arrow">→</span><span class="node-tag now">赏</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">战</span><span class="arrow">→</span><span class="node-tag">疗</span><span class="arrow">→</span><span class="node-tag boss">王</span>
|
||||
</div>
|
||||
<div class="zone-b">
|
||||
<div class="round-ind">第 3 轮 · 挖掘中</div>
|
||||
<div class="standee-stage" style="width:100%;display:flex;">
|
||||
<div class="ground" style="left:40px;right:40px;"></div>
|
||||
<!-- 主角站桩 -->
|
||||
<div class="standee" style="position:absolute;left:80px;">
|
||||
<div class="floaters">
|
||||
<div class="fbar hero" style="width:80px"><div style="width:84%"></div></div>
|
||||
</div>
|
||||
<div class="status-icons">
|
||||
<span class="sicon buff">⬆<span class="stack">2</span></span>
|
||||
<span class="sicon buff">🛡<span class="stack">1</span></span>
|
||||
</div>
|
||||
<svg width="56" height="80" viewBox="0 0 46 64"><path d="M23 4 L30 10 L28 18 C36 22 38 32 37 44 L40 60 L30 60 L28 48 L18 48 L16 60 L6 60 L9 44 C8 32 10 22 18 18 L16 10 Z" fill="#e0d6c2"/></svg>
|
||||
<div class="base" style="width:80px"></div>
|
||||
</div>
|
||||
<div style="position:absolute;top:40px;left:50%;transform:translateX(-50%);color:#5a5044;font-size:13px;">[ 兑现演出区 ]</div>
|
||||
<!-- 敌人站桩 ×2 -->
|
||||
<div class="standee" style="position:absolute;right:220px;">
|
||||
<div class="fx-flash">⚔</div>
|
||||
<div class="floaters"><span class="forder">①</span><div class="fbar"><div style="width:70%"></div></div></div>
|
||||
<div class="status-icons"><span class="sicon debuff">伏<span class="stack">2</span></span></div>
|
||||
<svg width="52" height="72" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#9a8f7c"/></svg>
|
||||
<div class="base"></div>
|
||||
</div>
|
||||
<div class="standee" style="position:absolute;right:70px;">
|
||||
<div class="floaters"><span class="forder">②</span><div class="fbar"><div style="width:40%"></div></div></div>
|
||||
<div class="status-icons"><span class="sicon debuff">伏<span class="stack">2</span></span></div>
|
||||
<svg width="46" height="64" viewBox="0 0 36 46"><path d="M18 2 L26 6 L24 12 L30 14 L28 20 C32 26 32 34 30 42 L8 42 C6 34 6 26 10 20 L8 14 L14 12 L12 6 Z" fill="#8a7f6d"/></svg>
|
||||
<div class="base"></div>
|
||||
</div>
|
||||
<div class="detail-band">▸ 上轮:主角攻击 3 → 地精 −3 | 攻击+50%(1结算) | 伏击+1 ×2 <span class="expand">[展开明细 ▾]</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lower">
|
||||
<div class="zone-c">
|
||||
<div class="databox"><b>HP</b> 42 / 50</div>
|
||||
<div class="databox"><b>攻击</b> 6 <span style="color:#8fd18f">(+50%)</span></div>
|
||||
<div class="databox"><b>RAP</b> 3 / 8</div>
|
||||
<div class="databox" style="margin-top:14px"><b>状态效果</b></div>
|
||||
<div class="status-chips" style="flex-direction:column;align-items:flex-start">
|
||||
<span class="chip buff">⬆ 攻击+50% ○ 1</span>
|
||||
<span class="chip buff">🛡 坚守 ○ ●</span>
|
||||
</div>
|
||||
<div style="margin-top:18px;text-align:center;color:#5a5044;font-size:11px">[ 小人立绘占位 ]</div>
|
||||
</div>
|
||||
<div class="zone-d">
|
||||
<div class="ap-bar">
|
||||
<span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot full"></span><span class="ap-dot"></span><span class="ap-dot"></span>
|
||||
<span style="color:#8a7f6d">4/6</span>
|
||||
<button class="btn">⏹ 停手</button>
|
||||
<span style="margin-left:auto"></span>
|
||||
<button class="btn">? 图例</button>
|
||||
<button class="btn accent">↻ 刷新 −8 |剩 2</button>
|
||||
</div>
|
||||
<div class="board" id="boardC"></div>
|
||||
<div class="toast">AP 不足 · 剩 0 点</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="callout"><b>定稿形态读法:</b>主角与敌人都以"立绘+底座"站在战斗画面区——主角在左(绿色血条悬浮头顶,状态小图标一排挂血条正下方),敌人在右(红色血条+顺位徽标,伏击等状态图标同款挂在血条下);全部无框、无卡片。C 区角色信息数据框保留(那是规划数据面,不是战斗内卡片)。</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function mulberry32(a){return function(){a|=0;a=a+0x6D2B79F5|0;var t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296}}
|
||||
function buildBoard(id){
|
||||
const rnd=mulberry32(20260920);
|
||||
const el=document.getElementById(id);
|
||||
const flags=new Set([3,17,40,66,90]);
|
||||
const pawn=83;
|
||||
for(let i=0;i<144;i++){
|
||||
const c=document.createElement('div');c.className='cell';
|
||||
const open=rnd()<0.55;
|
||||
if(open){
|
||||
c.classList.add('open');
|
||||
c.textContent=Math.floor(rnd()*3)+1;
|
||||
const r=rnd();
|
||||
if(r<0.10)c.classList.add('reward','r1');
|
||||
else if(r<0.16)c.classList.add('reward','r2');
|
||||
}
|
||||
if(flags.has(i))c.classList.add('flag');
|
||||
if(i===pawn){c.classList.add('open');c.innerHTML='<span class="pawn"><i></i></span>';}
|
||||
el.appendChild(c);
|
||||
}
|
||||
}
|
||||
buildBoard('boardA');buildBoard('boardB');buildBoard('boardC');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 167 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 189 KiB |
@@ -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)。
|
||||
@@ -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);小人/立绘/状态图标 = 游戏在库资产原件 |
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 677 KiB |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
|
500 Internal Server Error
An error occurred: An error occurred Gitea Version: 28.2.0 |