diff --git a/AGENTS.md b/AGENTS.md index 38630876..074f9a3d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -16,7 +16,7 @@ ## 运行与验证(工作目录 = 含 project.godot 的切片目录) -- **合回验证 = 远端 CI(2026-11-03 用户裁,取代 2026-10-30 本地 CI)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式,环境自举件=`tools/ci/mac_setup.sh`),工作流(`.gitea/workflows/ci.yml`)按改动域分流(分流算法单点=`tools/ci/domain_route.sh`):游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发。远端结果**按需现查**:`tools/ci_check.sh <合并提交>` 读该提交任务的 run `status`/`conclusion`,只呈报、不落盘(2026-11-04 用户裁:合回不等待、不唤醒;判据=run 落定后的终局态,且绿须坐实跑闸步真跑过——零触发批呈报「未验」不作绿证,细则=process-conventions §1 第 3 条)。**合回落地即向用户呈报本批总结并止回合**,禁前台 sleep/轮询等 CI。CI 红态不回滚合并——红项在案、修复批合回即再推再验追绿;开工先跑现查件读 CI 状态,红未修不开新批。同一份字节禁止第二次人手跑。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起。**runner 依赖**:Mac 需开机在线(关机=远端任务排队延后);换机/重装按 `tools/ci/mac_setup.sh` 自举 +- **合回验证 = 远端 CI(2026-11-03 用户裁)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式,环境自举件=`tools/ci/mac_setup.sh`),工作流(`.gitea/workflows/ci.yml`)按改动域分流(分流算法单点=`tools/ci/domain_route.sh`):游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发。远端结果**按需现查**:`tools/ci_check.sh <合并提交>` 读该提交任务的 run `status`/`conclusion`,只呈报、不落盘(2026-11-04 用户裁:合回不等待、不唤醒;判据=run 落定后的终局态,且绿须坐实跑闸步真跑过——零触发批呈报「未验」不作绿证,细则=process-conventions §1 第 3 条)。**合回落地即向用户呈报本批总结并止回合**,禁前台 sleep/轮询等 CI。CI 红态不回滚合并——红项在案、修复批合回即再推再验追绿;开工先跑现查件读 CI 状态,红未修不开新批。同一份字节禁止第二次人手跑。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起。**runner 依赖**:Mac 需开机在线(关机=远端任务排队延后);换机/重装按 `tools/ci/mac_setup.sh` 自举 - 单件直跑(调试期最窄确认用,**不构成验收**):冒烟测试 `python tools/run_smoke.py`(`game/tests/smoke_boot.tscn` 极小启动场景)· 系统测试 `python tools/run_system_test.py`(宿主 `game/tests/system_test.gd`)· 场景探针 `…console.exe --headless --path . res://probe/ui_probe.tscn` · 单元与集成 `… --script res://tests/run_all.gd` - 调参批量:`--script res://sim/adventure_monte_carlo.gd`(全冒险期望)· `res://sim/reward_expectation.gd`(奖励期望);关卡完成率/难度类测量一律走全冒险 - 数值验证:`python tools/balance_verifier.py`(采集端 `res://sim/verifier_batch.gd`,报告与原始数据落 `sim-data/`) diff --git a/design/art/art-assets-checklist.md b/design/art/art-assets-checklist.md index fc17a9de..ca3e8b06 100644 --- a/design/art/art-assets-checklist.md +++ b/design/art/art-assets-checklist.md @@ -1,7 +1,7 @@ # 美术资源依赖清单(Art Assets Checklist) > **性质**:表现层升级批与战斗表现批的生产侧清单——把散在战斗表现 / HUD框架 / 关卡节点地图 / 敌人系统里的资产需求收拢成一张可执行的工单视图,**兼资产维度单一登记处**。**规范效力归各 owner 文档**(战斗表现、美术圣经、04-美术音频方向),本文只补「生产视角的需求规格」,冲突时以 owner 文档为准。 -> **建立**:场景一(战斗画面呈现)讨论产物;原 asset-checklist.md 并入本文后删除,本文为两份清单合并后的唯一清单。历次修订明细见 git 提交史。 +> **建立**:场景一(战斗画面呈现)讨论产物;本文为唯一清单。历次修订明细见 git 提交史。 > **更新纪律**:各条目「现状」行顺带更新(未开始 / 候选已出 / 已裁决 / 已交付);做完不删条目,改状态。与待办清单的联动:本文是资产维度明细,待办清单只留指路存根。 ## 0. 生产渠道、规格与风格宪法 @@ -11,7 +11,7 @@ | 渠道 | 出什么 | 先例 | |---|---|---| | ♻ **素材站复用(轻改)** | UI 九宫格面板与按钮、字体、通用粒子与光效、通用图标、无缝纹理底噪 | 来源偏好 CC0(如 Kenney 全站、OpenGameArt 标 CC0 件、itch.io 免费包) | -| ✦ **ComfyUI(用户自跑)** | 角色、插画级素材;每个敌种/主角建议出 **2–3 版候选**供裁决,不直接出终稿 | 主角站姿样张(脚本管线产物,源文件已清理);提示词规格卡 art-prompts.md **v2.0**(按美术圣经 §5 现行重生成) | +| ✦ **ComfyUI(用户自跑)** | 角色、插画级素材;每个敌种/主角建议出 **2–3 版候选**供裁决,不直接出终稿 | 主角站姿样张(脚本管线产物,源文件已清理);提示词规格卡 art-prompts.md(按美术圣经 §5 现行重生成) | | ⚙ **脚本管线(代理出)** | 图标、格面、样张类精度资产 | 格面占位渲染与程序化徽标(现行) | **通用规格纪律**: @@ -59,14 +59,14 @@ ## 2. P1 —— 角色级(样张通过后开工,ComfyUI) -> 提示词规格卡 art-prompts.md 现行为 **v2.14**(主角三态+八敌种逐卡提示词仍在册;站桩立绘走 §5.4 按档派生、不重画)。 +> 提示词规格卡 art-prompts.md 现行为 **v2.15**(主角三态+八敌种逐卡提示词仍在册;站桩立绘走 §5.4 按档派生、不重画)。 ### 2.1 主角战斗小人 - **要什么**:待机 / 攻击 / 受击 三态起步(移动态样张后定);透明底 PNG。 - **风格/规格**:小人原型——**窄、直立、对称,轮廓凹凸 ≤2**;2~3 头身两档下剪影均成立;主色小人蓝 `#2E86DE`(候选值,样张冻结终稿);格内占位最窄、不吞数字位。 -- **来源**:✦ ComfyUI(prompt 卡 v2.0 §2);剪影原型是设计载荷(宽≥高/凹凸计数/甲档/紫赤独占),素材站无对的,不复用。 -- **现状**:战斗三态在役(迭代 6 T3 落位);2026-11-01 显示档改中档 144;2026-11-02 迭代 48 落位:三态原稿分辨率入包、显示按档缩放。 +- **来源**:✦ ComfyUI(prompt 卡 §2);剪影原型是设计载荷(宽≥高/凹凸计数/甲档/紫赤独占),素材站无对的,不复用。 +- **现状**:战斗三态在役;显示档中档 144;三态原稿分辨率入包、显示按档缩放。 ### 2.2 八敌种形象(键集事实源 = `data/tables/enemy.tres` 行键) @@ -74,15 +74,15 @@ |---|---|---|---| | 地精 goblin | 普通怪:近圆墩形,宽≥高,零锐角 | light | Peglin 式胖体量,先读轮廓后读颜色 | | 熊地精 bugbear | 普通怪或精英档(加一处垂直延伸:角/冠/棘) | light | 第一关显示名「熊地精」;**L2 熊地精 = bugbear 复用**(第二关三行,显示名熊地精系,同剪影换色板,非独立敌种键) | -| 食人魔酋长 ogre_chief | 精英档:普通怪形+恰一处垂直延伸,底盘不变 | light | 第一关关底 Boss;轻甲裸身皮条/骨饰(2026-09-25 甲档回填) | +| 食人魔酋长 ogre_chief | 精英档:普通怪形+恰一处垂直延伸,底盘不变 | light | 第一关关底 Boss;轻甲裸身皮条/骨饰 | | 巨蜘蛛 giant_spider | 普通怪(多足轮廓注意凹凸计数控制) | light | 群行 [2,3],同屏最多 3 只,剪影需小体量可辨 | -| 蛛化卓尔精灵 drider | **Boss:敌类唯一允许锐角与不对称**,体量最大 | ward | 第二关 Boss;紫赤 `#8F2F6A` 色相独占+形状独占双通道;魔法甲符纹饰带(2026-09-25 甲档回填) | +| 蛛化卓尔精灵 drider | **Boss:敌类唯一允许锐角与不对称**,体量最大 | ward | 第二关 Boss;紫赤 `#8F2F6A` 色相独占+形状独占双通道;魔法甲符纹饰带 | | 灰矮人 duergar | 精英档:垂直延伸,重甲中坚 | heavy | 第三关主力量产型;重甲语义走色板 | | 钩爪恐魔 hook_horror | 普通怪(钩爪/多足轮廓注意凹凸计数控制) | light | 第三关群行捕食者,小体量可辨 | | 灰矮人石君王 duergar_king | **Boss:锐角与不对称**,体量最大 | heavy | 第三关 Boss;紫赤色相独占+形状独占双通道 | -- **通用规格**:亮色描边+落影底盘轮廓通道硬规则;透明底 PNG;显示档三档绝对高 96/144/188、源=原稿不降采样(art-bible §8.2 v3.32);护甲类型视觉区分方案已落 art-bible §5.3(已定稿)。 -- **来源**:✦ ComfyUI(prompt 卡 v2.0 §3,八敌种+L2 熊地精变体共 9 卡);理由同 §2.1——不复用。 +- **通用规格**:亮色描边+落影底盘轮廓通道硬规则;透明底 PNG;显示档三档绝对高 96/144/188、源=原稿不降采样(art-bible §8.2);护甲类型视觉区分方案已落 art-bible §5.3(已定稿)。 +- **来源**:✦ ComfyUI(prompt 卡 §3,八敌种+L2 熊地精变体共 9 卡);理由同 §2.1——不复用。 - **联动**:显示名以 `data/tables/enemy.tres` 与敌人系统文档为准(L2 熊地精=bugbear 复用,显示名熊地精系)。 ### 2.3 意图准备动画三档 @@ -128,14 +128,14 @@ - **要什么**:HUD 状态槽挂图(敌人血条下小图标),九行键族——**键名录读 art-bible §4.6.1 与 `status_effects.tres`,本文不抄键名**(键名录指路纪律,同 §3.1)。 - **风格/规格**:♻ 素材站复用优先——通用增益/减益图标包改色为墨族,按 §4.6.1 极性列统一叠极性视觉(有利=金族满框/有害=红族缺框,art-bible §4.6 通道分配全键族通用),过复用闸四道(灰度可辨=色弱冗余通道);⚙ 兜底程序化。一键一纹样、映射按 effect_id 全局恒定禁换图(图标键契约)。 -- **现状**:已接入(2026-09-24,定稿九枚入 HUD 状态槽,合并 71ae51c;色板量化豁免=用户逐键验收的自产件,非外采)。 +- **现状**:已接入(定稿九枚入 HUD 状态槽;色板量化豁免=用户逐键验收的自产件,非外采)。 ### 3.5 营地场景图 - **要什么**:营地场景图 10 张——`scene_camp_bg`(背景层,不透明全幅=天空+远山+整片地面+门洞内一条通向远处的小路)+ `scene_camp_wall`(围墙层,透明底=横贯全宽密排木桩墙+两根门柱,门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件)。钥石顶栏图标沿用现役 `icon_keystone`。 - **来源/规格**:**✦ 插画级**(作者自跑远程生图管线);烛光黄 `#F6C667` + 木色 `#8A5A34`(art-bible §6.2);2× 源档出图、最近邻降采样到 1280×800;后处理=抠底/降采样/色板量化/描边统一。**出图登记照 [remote-gen-prompts](remote-gen-prompts.md) 头注轻量口径执行:用途+生成时间必注,其余参数有则记。** -- **排期**:已执行(随迭代 47 卡④,2026-11-01 合回)。终稿落 `game/assets/art/scene/`,消费常量 `UiKit.TEX_CAMP_*`。 -- **现状**:已入包(2026-11-01 迭代 47 卡④——十件按锁定矩形 contain 落位、营地主色板 32 色重量化;用户游戏内终审如有置换意见,按同径替换)。 +- **排期**:已执行。终稿落 `game/assets/art/scene/`,消费常量 `UiKit.TEX_CAMP_*`。 +- **现状**:已入包(十件按锁定矩形 contain 落位、营地主色板 32 色重量化;用户游戏内终审如有置换意见,按同径替换)。 ### 3.6 字体(全局 UI 像素字,已定稿单套) @@ -145,7 +145,7 @@ ### 3.7 护甲类型图标三枚 ♻优先/⚙兜底 -- **要什么**:`ui_armor_light.png` / `ui_armor_ward.png` / `ui_armor_heavy.png` 三枚,站桩名字行与护甲图标同排挂载(原为 ◇/◆ 字形占位)。 +- **要什么**:`ui_armor_light.png` / `ui_armor_ward.png` / `ui_armor_heavy.png` 三枚,站桩名字行与护甲图标同排挂载。 - **风格/规格**:源 24×24、显示 24px = 1×(甲类整数倍缩放纪律,art-bible §8.2);形状 + 色彩双通道,灰度下按甲面覆盖率三档可辨(character-design §5.3 已定稿:轻甲覆盖率≈0/魔法护甲符纹饰带/重甲金属甲板);不触 §5.1 剪影 archetype。 - **来源**:♻ 素材站通用护甲/符纹图标改色优先,过 §0 复用闸四道;⚙ 兜底程序化。 - **现状**:未开始(占位 = 站桩名字行裸 12px 字形 ◇/◆,随本条到位后改挂图形件并把名字行提到 `FS_HINT` 14)。 @@ -162,12 +162,12 @@ | B 区舞台背景层 `scene_stage_bg_deep_underdark.png` | 战斗舞台背景·deep_underdark 变体(art-bible §6.1 资产契约) | **✦ 插画级**;源 = 基准屏宽 × `stage_h`、B 区全高、显示 1×;顶部空区+纵深洞厅远景(远/中/近三层;灰黑、石笋城郭/棱角石厅/石桥/矿道口/烟囱塔、冷银/铜灰矿脉),不画近景地面;按 `board_type` 选图,不走 `wall_ambient` tint | ✦ 插画级(作者自跑远程生图管线) | | B 区连续近景地面层 `scene_stage_ground.png` | 近景泥土地面层(art-bible §6.1 图层归属) | **✦ 插画级**;源 = 基准屏宽 × `ground_h`(布局表新增字段);干净压实泥土为主、全幅只零星几颗小石、散点分布,顶缘不规则泥土边/阴影缝作分隔带;三关共用、跨三关恒定、不吃 `wall_ambient`;独立层压在 B 区底部,小石台在其上 | ✦ 插画级(作者自跑远程生图管线) | | 站桩石板地台件 `scene_stage_plaza.png` | 近景地台独立件(art-bible §6.1/§8.2) | 源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形;跨三关恒定,不吃 `wall_ambient` tint;连续地面层在其下方,先保留 | ⚙/✦ 自产 | -| 特殊技动画终稿 | 并入 §2.3 三档意图动画,不另起体系 | 攻/防两型旧口径由三档替代 | ✦/⚙ 自产(同 §2.3) | -| 连锁坍塌显形演出 | 连锁展开触发时的连锁演出 | 与音频方向同批配对登记;「坍塌显形」=连锁展开的玩家可见名 | ♻ 粒子/碎块改色 + ⚙ 坍塌结构自产 | +| 特殊技动画终稿 | 并入 §2.3 三档意图动画,不另起体系 | 攻/防两型旧口径已退役 | ✦/⚙ 自产(同 §2.3) | +| 连锁坍塌显形演出 | 连锁展开触发时的连锁演出 | 与音频方向配对登记;「坍塌显形」=连锁展开的玩家可见名 | ♻ 粒子/碎块改色 + ⚙ 坍塌结构自产 | | 封印特效 | 该动作的呈现名 = **封印**(art-bible §3.2):**施印瞬间特效 + 印记常显形态**两件 | 印记常显形态=**参数化绘制件**(着色器画环+十字+环外压暗光,形与参数见 art-bible §3.2/§8.2);施印瞬间特效**未实装**,仍缺(走运动+色相,明度分层不动) | ✦/⚙ 自产(精灵+粒子,烟尘光点可 ♻ 改色) | | 弹道/退场等动画密度 | 战斗表现输入清单,方案未定 | 样张锁动画方案后启动 | ♻ 通用弹道/光点/消散粒子改色为主 | -**现状**:三关舞台背景层与连续地面层已交付(2026-10-31 入包 `game/assets/art/scene/`:dungeon v10c / underdark v10c / deep_underdark v10c,均 1280×252;共用地面 v12b,1280×100,按作者裁保留原亮度 L≈0.132);小石台件已在役。 +**现状**:三关舞台背景层与连续地面层已交付(入包 `game/assets/art/scene/`:dungeon v10c / underdark v10c / deep_underdark v10c,均 1280×252;共用地面 v12b,1280×100,按作者裁保留原亮度 L≈0.132);小石台件已在役。 --- @@ -189,28 +189,28 @@ └─> 敌种呈现形态裁决 ✅已完成(全站桩,卡片式已弃) 徽章(3.1)/节点图(3.2)/效果图标(3.4) —— 独立线,可随时插队 ♻ 复用件(3.2/3.4/3.5/3.6/演出粒子) —— 不依赖样张,可随时插队(入包闸 = §0 复用四道) -字体(3.6)接入归表现批;营地场景图(3.5)已随迭代 47 卡④ 入包(2026-11-01) -分辨率档位 ✅已定案(1280×800 + 1920×1080,2026-09-22 用户确认);art-bible §8 资产规范 ✅已成文(2026-09-23)——像素基准/画布/命名/帧数候选值就位,终值归样张批冻结 +字体(3.6)接入归表现批;营地场景图(3.5)已入包 +分辨率档位 ✅已定案(1280×800 + 1920×1080);art-bible §8 资产规范 ✅已成文——像素基准/画布/命名/帧数候选值就位,终值归样张批冻结 ``` ## 附、已评素材包授权与结论登记(♻ 复用渠道) -> 来源:素材站复用三批复审记录(批目录已归档清退,本表为唯一仓内登记);详录已随复审出盘,沿革查 git 提交史。 +> 来源:本表为唯一仓内登记;沿革查 git 提交史。 ### 授权总表(闸④预检结论) | 素材包 | 授权 | 署名义务 | 结论 | |---|---|---|---| -| Kenney 全系(ui-pack/fantasy-ui-borders/game-icons/board-game-icons/kenney-fonts/roguelike 系/tiny-dungeon/tiny-town) | CC0 | 无 | ui-reuse 待审;tiny-dungeon 终局否决(架构不适配);余顺带否决;kenney-fonts 拉丁字候选退役(2026-10-24 用户裁:全局字体定稿 Fusion Pixel 单套,不再接入) | +| Kenney 全系(ui-pack/fantasy-ui-borders/game-icons/board-game-icons/kenney-fonts/roguelike 系/tiny-dungeon/tiny-town) | CC0 | 无 | ui-reuse 待审;tiny-dungeon 终局否决(架构不适配);余顺带否决;kenney-fonts 拉丁字候选退役(全局字体定稿 Fusion Pixel 单套,不再接入) | | OGA Pixel UI 750(Kenney 作) / PixUI(CamTatz) / Handpainted stone | CC0 | 无 | ui-reuse 待审 | | DENZI public domain art | CC0 | 无 | 否决 | -| beast-cave(OGA) | CC0 | 无 | **已选中入工程**(地砖批;2026-09-26 被 terrain_ 自产全套取代,源包归档) | +| beast-cave(OGA) | CC0 | 无 | **已退役**(源包归档;地砖现行 = terrain_ 自产全套) | | JaggedStone / Screaming Brain / ExileGL / Corey Archer(OGA) | CC0 | 无 | 否决 | | Calciumtrice / Buch / bart cobblestone(OGA) | CC-BY 3.0 | **需署名** | 否决 | | LD rogue / Evert cave / poikilos underworld(OGA) | OGA-BY 3.0 | **需署名** | 否决 | | game-icons.net 图标 | CC-BY 3.0 | **需署名** | 剪影风 26 枚已否决删除;余 10 枚节点/营地候选在 ui-reuse 待审 | -| Fusion Pixel 缝合像素字体 | SIL OFL 1.1 | 保留许可证 | **已接入终稿**(全局 UI 字体,2026-09-27 接入;2026-10-24 用户裁现状即终稿——单套单字重,拉丁沿用自带字形) | -| DCSS dngn / Lost Garden / Cavernlock / Aftertile / Voirol / oga-zelda-like(armm1998) | CC0 | 无 | 高墙批评估否决(架构/风格不适配;zelda-like 留作干净度基准) | +| Fusion Pixel 缝合像素字体 | SIL OFL 1.1 | 保留许可证 | **已接入终稿**(全局 UI 字体;用户裁现状即终稿——单套单字重,拉丁沿用自带字形) | +| DCSS dngn / Lost Garden / Cavernlock / Aftertile / Voirol / oga-zelda-like(armm1998) | CC0 | 无 | 评估否决(架构/风格不适配;zelda-like 留作干净度基准) | | Golden UI 系列 | CC-BY-SA | — | **闸④不过,未下载** | | Gemini 生图(用户自跑) | 自产 | 无 | **terrain_ 高墙瓦片材质源(现行定稿)** | diff --git a/design/art/art-bible.md b/design/art/art-bible.md index 80c28c7e..61a42a1f 100644 --- a/design/art/art-bible.md +++ b/design/art/art-bible.md @@ -59,9 +59,9 @@ **整屏样张闸**:格子样张验"格",整屏样张验"屏"——战斗屏/关卡屏/菜单屏/营地屏各出一张整屏样张,验收四项:①全部文字(含菜单/说明/tooltip/按钮)对其直接背景 ≥4.5:1(WCAG AA),大字(≥18px 或加粗档)底线 3:1、目标 4.5:1;②明度分层三档带成立(信息面层 > 世界中层 > 世界底层,层间灰度可分);③整屏焦点预算(§3.4:首焦唯一——数字区/立绘/主按钮,无第二焦点竞争;负空间服务焦点,不属空窗);④文字禁直接压纹理底(垫容器或罩层)。验收顺序 = **方向稿目检先行**(防"机检过闸但气质否决"式返工),目检过后机检冻结。执行时机 = 屏级视觉落码开工前;过闸前一切屏级视觉为占位临时态(§7.1 完成条款)。**样张判定物的产出手段与素材输入级别不进圣经定值**——圣经只定样张要验什么,不定样张以何种手段产出、也不定它取哪一级别素材输入。验收:机检〈整屏样张四项断言全绿,且目检先行过审〉 -**战斗一屏样张登记(合并提交 3b66d1a6)**:战斗一屏样张批整屏四项机检全绿——抽样读数:文字对比最弱 5.34:1;舞台底 L0.036/已开格底 L0.089 落两子带、间隔 0.053;首焦=数字区高对比能量占比 59%;名字行素底牌平底零地台色。样张整体过闸(方向稿目检已通过,凭据=体验验证清单 ㊶) +**战斗一屏样张**:整屏样张闸已过——整屏四项机检全绿,方向稿目检已通过(用户实机目检核销,沿革查 git 提交史) -**样张现状**:格子样张已冻结,冻结凭据 = git 提交 7a847c7(机检报告)与 §4.1/§8.2 定值表;样张 v3 产物原件已丢失、未入 git。现行冻结态:色板与帧数档维持冻结;数字形制 = 亮墨三档直画 + 色牌后备(值见 §4.1);新增图类型/变异色板须重跑本节测试。验收:机检〈冻结项定值均以 §4.1/§8.2 对应 owner 表为准〉 +**样张现状**:格子样张已冻结,冻结凭据 = §4.1/§8.2 定值表;样张 v3 产物原件已丢失、未入 git。现行冻结态:色板与帧数档维持冻结;数字形制 = 亮墨三档直画 + 色牌后备(值见 §4.1);新增图类型/变异色板须重跑本节测试。验收:机检〈冻结项定值均以 §4.1/§8.2 对应 owner 表为准〉 --- @@ -199,7 +199,7 @@ - **棋盘数字呈现 = 按板自适应三态**:暗纹理板(dungeon 系)= **亮族**三档 1–3 冷亮青白 #D8ECF0/4–5 暖白 #F0E2C8/6–8 金亮 #F8E3A8 直画(判据 = 族最弱成员对 p90 ≥4.5:1 且对均值 ≥2.5:1);双峰纹理板(underdark/deep_underdark 系)= **色牌垫底**(素牌 DIGIT_PLATE + 深墨 #33261B 12:1,纹理免疫——双峰纹理板上任何墨族直画都不可读,渲染帧取证;判据 = 亮深两族皆不过门,深族均值门 3.0);缺盘平色回退态(#B39A78 中明度底)默认深墨直画。选模式管线落码单点 `board_view._digit_ink_mode`(三态:亮直/深直/落牌),机检面 = `terrain_tile_sets_test` 三关呈现模式断言;目视验证面 = board_shot_probe 渲染帧取证(机检≠看得清)。验收:机检〈terrain_tile_sets_test 三关呈现模式断言全绿,board_shot_probe 渲染帧目视复核〉 - **垫牌与 UI 数据墨 = 深墨族 `#33261B` 系**(L≤0.027,§7.2)。验收:机检〈垫牌与 UI 数据墨取深墨族,L≤0.027〉 - **八色弃用**:八色必与红/金/蓝/紫赤语义冲突,故弃。验收:方向性 -- **封印黑 `#000000`**|封印宣告色,无色相:玩家的宣告"此格封印"。封印现行 = 无色相黑——紫色与微光蓝族(魔法微光 256° 等)色相冲突,黑色无色相天然避开 300°–345° 禁入带与全部微光色带;未开格墙顶明度 ≈113 对纯黑对比 ≥4.4:1,纯黑实心剪影单靠明度差即成立,不依赖任何浅色细件。封印紫已被封印黑取代、不再用于棋盘(色史归 git 提交史);红族棋盘侧只剩危险红;主角随身背包件为朱红矩形件(人设侧见 character-design),与棋盘封印色脱钩。验收:机检〈封印宣告色 = #000000,未开格墙顶对其对比 ≥4.4:1〉 ←原一;P2 +- **封印黑 `#000000`**|封印宣告色,无色相:玩家的宣告"此格封印"。封印现行 = 无色相黑——紫色与微光蓝族(魔法微光 256° 等)色相冲突,黑色无色相天然避开 300°–345° 禁入带与全部微光色带;未开格墙顶明度 ≈113 对纯黑对比 ≥4.4:1,纯黑实心剪影单靠明度差即成立,不依赖任何浅色细件。封印紫不再用于棋盘(色史归 git 提交史);红族棋盘侧只剩危险红;主角随身背包件为朱红矩形件(人设侧见 character-design),与棋盘封印色脱钩。验收:机检〈封印宣告色 = #000000,未开格墙顶对其对比 ≥4.4:1〉 ←原一;P2 - **危险红 `#A8321F`**|危险色:雷 = 被惊动的巢穴,兑现档红,更深更沉。验收:机检〈危险语义色 = #A8321F〉 ←原三;P2 - **奖励金 `#F0A828`**|已兑现的收益:GP/宝箱/蜡封,全作唯一亮金。验收:机检〈收益语义色 = #F0A828〉 ←P2;§2.3/2.4 - **小人蓝 `#2E86DE`**|小人主色:棋盘唯一"己方",与光标准线同族。验收:机检〈己方语义色 = #2E86DE〉 ←P1;§2.1 @@ -209,11 +209,11 @@ - **图标槽柔和档 `#806A4E`(SLOT_BACKDROP_SOFT)**|BCard 图标槽底:对米色卡面 PANEL_DATA 3.69:1(深档 SLOT_BACKDROP #3E362C 8.53:1 过强、像硬贴补丁,故槽底另立柔和档),槽内白图标 5.14:1,满足 ≥3:1 图形参考线硬约束;仅 BCard 图标槽换档,B 区状态槽仍用深档 SLOT_BACKDROP。验收:机检〈槽内白图标对槽底 ≥3:1〉 - **群伤微光暗档 `#A61D37`(TG_GLOW_AOE)**|类型微光群伤组的**明度档**(UI token 板,占 1 枚额度,**余量 3→2**):色相 349° 与亮档 `#FF2D55` 零移动,明度落 V=0.65 档——即 §4.2「微光 = 色相+明度双码」里明度侧的落法;与 §4.2「红只说危险」不相撞(微光组色相刻意错开语义红,见 §4.2「类型微光色带」条)。已在役(`ui_kit.gd` 常量与 `type_glow_test.gd` 守门断言),本节为登记转正。验收:机检〈ui_kit.gd TG_GLOW_AOE 与 type_glow_test 断言的 H/S 逐位一致、V 落 0.65 档〉 - **站桩石板地台板身 `#968264`(STAND_STONE)**|战斗屏场景环境子板(分层②,不占 48 token 额度):B 区站桩地台板身与顶缘的材质色,跨三关恒定、不吃 §4.3 `wall_ambient` tint(地台是 §6.1 定死的世界中层承载面,随关卡变会破 §2 明度分层的层间关系)。转正前即在役。验收:机检〈战斗屏场景环境子板色数 ≤32 且本值在册〉 -- **营地场景环境子板(分层②,不占 48 token 额度)**:营地场景十层环境色按子板制落地——各层独立量化并集 272 色经最近对合并收敛至 **32 色、违例对 0**,十层按终版色板重量化回写(2026-11-01 迭代 47 卡④)。色值不另立逐值清单,事实源=入包素材 `scene_camp_*` 十件的量化产物;换算与合并过程登记于 artwork 工作区换算式登记(git 提交 3443890d 一线可考)。验收:机检〈营地屏唯一色数判据(shot_checker 闸件承载,2026-11-01 用户裁口径)〉 -- **重甲冷灰金属材质色 `#868C9A`(ARMOR_PLATE_COLD,token 名暂拟、随实装批登记)**|语义/UI token 板(**分层①**,占 1 枚额度,**余量 2→1**;用户裁):重甲档甲材质色;character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王岩石板甲**同引本枚、不另计额度**;材质色跨屏恒定,落分层①不落分层②(环境色才随场景走)。过门情况:第二道门按宽松口径(禁止三通道全 <8)与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 222°,不占红/金/蓝/紫赤/绿语义段、不在 300°–345° 禁入带;材质色不进信息层与语义物件岗)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1(图形 ≥3:1 门槛);相对亮度 L≈0.261 落 §2 世界中层 0.22–0.45 带。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉 -- **卓尔浅紫灰皮 `#A79CB8`(DRIDER_SKIN,token 名暂拟、随实装批登记)**|语义/UI token 板(**分层①**,占 1 枚额度,**余量 1→0,额度用尽**;用户裁):蛛化卓尔精灵上体皮色(体块主色,L≈0.355 落 §2 世界中层带)。过门情况:第二道门同上行口径,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 264°,避开 300°–345° 禁入带,紫赤独占仍归 `#8F2F6A`;不占本节五语义段)。对比实测:对深素底 `#282220` **6.04:1**、对舞台底 `#3E362C` **4.57:1**——**两处均过图形 ≥3:1 门槛**(本轮新算)。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉 +- **营地场景环境子板(分层②,不占 48 token 额度)**:营地场景十层环境色按子板制落地——各层独立量化并集 272 色经最近对合并收敛至 **32 色、违例对 0**,十层按终版色板重量化回写。色值不另立逐值清单,事实源=入包素材 `scene_camp_*` 十件的量化产物;换算与合并过程登记于 artwork 工作区换算式登记。验收:机检〈营地屏唯一色数判据(shot_checker 闸件承载,2026-11-01 用户裁口径)〉 +- **重甲冷灰金属材质色 `#868C9A`(ARMOR_PLATE_COLD,token 名暂拟)**|语义/UI token 板(**分层①**,占 1 枚额度;用户裁):重甲档甲材质色;character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王岩石板甲**同引本枚、不另计额度**;材质色跨屏恒定,落分层①不落分层②(环境色才随场景走)。过门情况:第二道门按宽松口径(禁止三通道全 <8)与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 222°,不占红/金/蓝/紫赤/绿语义段、不在 300°–345° 禁入带;材质色不进信息层与语义物件岗)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1(图形 ≥3:1 门槛);相对亮度 L≈0.261 落 §2 世界中层 0.22–0.45 带。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉 +- **卓尔浅紫灰皮 `#A79CB8`(DRIDER_SKIN,token 名暂拟)**|语义/UI token 板(**分层①**,占 1 枚额度,**额度用尽**;用户裁):蛛化卓尔精灵上体皮色(体块主色,L≈0.355 落 §2 世界中层带)。过门情况:第二道门同上行口径,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 264°,避开 300°–345° 禁入带,紫赤独占仍归 `#8F2F6A`;不占本节五语义段)。对比实测:对深素底 `#282220` **6.04:1**、对舞台底 `#3E362C` **4.57:1**——**两处均过图形 ≥3:1 门槛**。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉 - **换色合并登记五处(用户裁,部件色落值)**|按本表「不过门即触发换色合并、禁加色绕行」执行,五处**零新增额度**(各件原拟新增候选一律不取):① 主角铲刃浅铁灰(原拟 `#A8AEB8`)→ 并入 `FOG_MEMORY_INK #C4C4C4`,**部件取值 = `#C4C4C4`**;② 主角提灯铜色(原拟 `#C08A3A`)→ 并入 `GOLD_DEEP #B07A14`,**部件取值 = `#B07A14`**;③ 食人魔酋长暖褐皮(原拟 `#B08050` / `#A97C4E`)→ 并入 `暖石 #B8A582`,**部件取值 = `#B8A582`**;④ 石君王灰皮(原拟 `#9A968C` / `#949089`,按**次级皮**口径——板甲视同体块主色、灰皮属次级皮故不受 L 0.22–0.45 约束)→ 并入 `STONE #786E62`,**部件取值 = `#786E62`**;⑤ 轻甲护甲图标木色 `#8A5A34`(深素底下 2.72:1 不过门;原拟新增木色亮档 `#C49A5E`)→ 并入 `WARM_FAINT #CDB88C`,**部件取值 = `#CDB88C`**(8.08:1)。**一色两岗代价已随裁定接受**:① 的 `#C4C4C4` 语义岗 = 迷雾记忆墨(§6.5)、② 的 `#B07A14` 属金族(§4.2 金只说收益与兑现)——两者均作角色随身件材质色用,不进信息层与语义物件岗;③④⑤ 无语义岗冲突。验收:机检〈五处部件取值点全部改指合并目标色,四枚原拟新增候选值零入板〉 -- **换色合并登记三处**|按本表「不过门即触发换色合并、禁加色绕行」执行,三处零新增额度:①地台顶缘受光线 `#C4AC84` 已并入 `#C9AF83`(掩尘枚 `BRICK`,与 §8.2 高墙口沿高光同枚)——源常量已删除(全仓零引用,退役断言测试串为预期例外),绘制点全部改指 `#C9AF83`;②地台描边 `#5A4C3A` 已并入 `#4C4038`(代码 `PLAZA_EDGE`,ui_kit 唯一落点)——源常量已删除,绘制点全部改指;③舞台底 `#3E342A`(代码 `STAGE_BG`)→ 并入 `#3E362C`(状态槽底)——已随 §6.1 舞台背景插画批处置完毕(2026-11-02 迭代 48):源常量已删除(常量表零键),背景资产接管该绘制面,程序化平色缺图回退改指 `SLOT_BACKDROP`(`#3E362C`)。程序化回退绘制与已落合并值的贴图保持一致。验收:机检〈①②两枚源常量全仓零引用,绘制点全部改指合并目标色〉 +- **换色合并登记三处**|按本表「不过门即触发换色合并、禁加色绕行」执行,三处零新增额度:①地台顶缘受光线 `#C4AC84` 已并入 `#C9AF83`(掩尘枚 `BRICK`,与 §8.2 高墙口沿高光同枚)——源常量已删除(全仓零引用,退役断言测试串为预期例外),绘制点全部改指 `#C9AF83`;②地台描边 `#5A4C3A` 已并入 `#4C4038`(代码 `PLAZA_EDGE`,ui_kit 唯一落点)——源常量已删除,绘制点全部改指;③舞台底 `#3E342A`(代码 `STAGE_BG`)→ 并入 `#3E362C`(状态槽底)——源常量已删除(常量表零键),背景资产接管该绘制面,程序化平色缺图回退改指 `SLOT_BACKDROP`(`#3E362C`)。程序化回退绘制与已落合并值的贴图保持一致。验收:机检〈①②两枚源常量全仓零引用,绘制点全部改指合并目标色〉 **对比硬指标(可测)**:数字可读性由**格底明度分档**承载——棋盘数字亮墨 **L≥0.75** 对**已开格底 L 0.08–0.14** ⇒ 直画对比 **≥4.5:1 恒成立**(WCAG AA,样张逐组合抽测冻结);**色牌后备**:色牌素色恒定 **L≥0.70**、牌上数字深墨 **L≤0.027** ⇒ 任意牌墨组合 ≥4.5:1(实测样例:#33261B/#F5EAD3 = 12.3:1)。未开格底槽(含全部图类型)相对亮度 **L≥0.30**(墙顶面受光档)、HSV 饱和 **≤0.55**、避 Boss 禁入色相带;已开格底走世界底层档(见上)。物件识别不依赖格底(§5.1 轮廓通道),封印印记、金色不作识别依赖。验收:机检〈亮墨对已开格底 ≥4.5:1;未开格底 L≥0.30、饱和 ≤0.55;任意牌墨组合 ≥4.5:1〉 ←原二;地形变异 AC-9 @@ -378,26 +378,26 @@ ### 6.1 战斗舞台背景(B 区环境) - **双舞台常驻下的 B 区环境**:战斗画面区(站桩立绘所在)的背景 = 明亮地窟,与 §1 风格基调同源——暖倾向、无压抑;背景整体**低对比自然后退**(§3.4 焦点预算延伸):背景禁止构成完整凸形、禁止抢 B 区立绘与 D 区数字的焦点,识别层级恒为 立绘 > 背景。验收:目检〈背景无完整凸形、立绘最抢眼〉 -- **舞台正面目标**:B 区 = **地窟看台**——立绘脚下地台/落影承载(世界中层),背景环境层低饱和后退、明度走世界底层档;角色禁止直接贴平色底。规格与终值归整屏样张闸(§1.4)冻结。**地台面上零文字**——暖白 `#F0E2C8` 对地台板身 `#968264` 实测仅 2.89:1,已越 §7.2 的 4.5:1 硬指标,落法按 §7.2「文字禁直接压纹理底」(垫容器、素牌或罩层),非新条款;站桩文字位改垫素底或落进结算明细带(实装=站桩名字行垫 `HP_BAR_BACK` 深档素底牌、文字基线上移至地台顶上方——2026-10-30 落地)。验收:目检〈立绘脚下有地台/落影,非贴平色底〉+机检〈B 区站桩文字位正下方像素非地台板身色 #968264〉 +- **舞台正面目标**:B 区 = **地窟看台**——立绘脚下地台/落影承载(世界中层),背景环境层低饱和后退、明度走世界底层档;角色禁止直接贴平色底。规格与终值归整屏样张闸(§1.4)冻结。**地台面上零文字**——暖白 `#F0E2C8` 对地台板身 `#968264` 实测仅 2.89:1,已越 §7.2 的 4.5:1 硬指标,落法按 §7.2「文字禁直接压纹理底」(垫容器、素牌或罩层),非新条款;站桩文字位改垫素底或落进结算明细带(实装=站桩名字行垫 `HP_BAR_BACK` 深档素底牌、文字基线上移至地台顶上方)。验收:目检〈立绘脚下有地台/落影,非贴平色底〉+机检〈B 区站桩文字位正下方像素非地台板身色 #968264〉 - **明度分层适用**:空间纵深与洞穴感走明度分层——世界底层档、光照氛围、色相饱和与形体承载(§3.2 同款逻辑)。验收:方向性 - **图类型联动**:背景层按 `board_type` 选三张变体(`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`,方向取 §6.3 三关色板候选);**背景不再走 §4.3 `wall_ambient` tint**(该槽保留给棋盘/世界的墙雾氛围,避免对三张背景二次染色)。紫赤仅 Boss 战允许短暂进入背景氛围纹样(§2.6 色相独占的舞台侧延伸,高饱和独占不变),非 Boss 战高饱和紫赤禁入。验收:机检〈背景吸色无非 Boss 高饱和紫赤;背景素材不引用 `wall_ambient` 槽〉 - **场景构成(2026-10-31 用户裁)**:B 区舞台从远到近分三段——**顶部空区**:洞顶以上的昏暗空间,只留深色空区,**不画钟乳石、吊锥、悬挂物或任何可辨形状**;**远景(纵深洞厅)**:不是贴墙的后壁,按远/中/近三层组织——远层暗剪影(远处洞口/通道、层叠岩体、洞底轮廓)、中层主要细节层(岩台、岩柱、凹壁、裂缝)、近层左右暗色岩框;剪影被中层部分遮挡、不贴顶、不孤立,**禁贴墙感、禁单件圆柱贴顶、禁砖石墙/规则砌缝/方整石块**;三关母题(地精=支洞/木栈道/木桩围栏;卓尔=巨柱/石笋/蛛网/螺旋塔剪影/巨菇/石桥;灰矮人=石笋城郭/棱角石厅/石桥/矿道口/烟囱塔)见 `battle-stage-prompts.md` §3.2;**分隔带**:远壁根部与近景地面之间一条不规则碎石带/阴影缝,边界清楚但不笔直,**禁瓷砖缝、踢脚线、规则台阶**;**近景地面**:干净压实泥土为主,全幅只零星几颗小石、散点分布,中央平缓留空给角色站位,**禁成排/成堆碎石、满铺砂砾、泥点噪声、瓷砖、规则铺装、草、木地板**。纵深与三段构图归 §1.4 样张;逐条要素、分层提示词与否定后缀 = `battle-stage-prompts.md`(本文件不重复维护)。验收:目检〈顶部无钟乳石/吊锥;远景有纵深、非贴墙;无孤立圆柱贴顶;近景为泥土碎石;分隔带不规则;中央无大障碍〉 -- **图层归属(2026-10-31 用户裁)**:背景层 = 三关变体 `scene_stage_bg_dungeon/_underdark/_deep_underdark.png`(顶部空区+纵深洞厅远景,不画近景地面;按 `board_type` 选一张);近景地面 = **独立连续地面层** `scene_stage_ground.png`(泥土/砂砾/碎石地面,全宽、底边贴 B 区底、顶缘即分隔带;高度读布局表 `ground_h`,字段已由实装批回填 100〔2026-11-02 迭代 48〕);现有每角色小石台 `scene_stage_plaza.png` 保留,叠在连续地面之上。连续地面层与小石台**三关共用**、跨关恒定、**不吃 `wall_ambient` tint**(世界中层承载面随关卡换明度会破 §2 层间关系);背景三张变体各自带关卡色族,不再叠 tint。验收:机检〈三张背景文件名带 board_type 后缀;地面层/小石台文件名无 board_type 后缀;背景与地面层均不引用 `wall_ambient` 槽〉 -- **资产渠道与契约**:✦ 插画级(演出类场景贴图,清单 §4 联动登记);战斗一屏样张(§1.4 清单 1.2)含背景出样。**背景层 = 三张按关卡变体** `scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`(源 = 基准屏宽 × `stage_h`,读布局表 `game/data/tables/battle_layout.tres`;显示 1×;按 `board_type` 选图;**不走 `wall_ambient` tint**);三张共用本节构图规则,仅岩体形态与色族按 §6.3 三关方向不同。**背景只画顶部空区+纵深洞厅远景,不画近景地面**:结算期明细带整条压住 B 区底带(带高 = `log_band_h_settle`,读布局表),近景地面在独立层;画进背景等于画一件永远看不见、且会随背景变体重复的东西。**连续地面层** = `scene_stage_ground.png`(源 = 基准屏宽 × `ground_h`,读布局表;显示 1×;三关共用、跨关恒定、不吃 tint);地面层是极宽薄条,出图与后处理按 `battle-stage-prompts.md` §2.2 的工艺(可平铺纹理条/最宽档裁切,禁横向拉伸)。**光柱不迁入背景**:三张背景均不画光柱/光带/光束/光晕与任何光源实体,明暗只由岩体层理与暗部承载;原四柱程序层与平色底已退役(2026-11-02 迭代 48:背景资产接管该绘制面,平色缺图回退改指状态槽底色)。资产已入包(2026-10-31);出图工单 = `battle-stage-prompts.md`,交付记录见本节「B 区舞台背景与共用地面的交付绑定」。验收:目检〈三关背景可辨为不同洞窟,非同一图换色;远景有纵深、非贴墙;无孤立圆柱贴顶;背景无地台/地面结构件、无砖石墙、无瓷砖地面、无光柱/光带;地面层为泥土/砂砾/碎石〉 -- **B 区舞台背景与共用地面的交付绑定(2026-10-31 入包)**:三张背景与一张地面已按本节契约入包 `game/assets/art/scene/`——`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png` 均 1280×252、不透明全幅、单张 ≤32 色、按 `board_type` 选图;`scene_stage_ground.png` 1280×100、顶缘以上透明、单张 ≤32 色、三关共用。地面按作者 2026-10-31 裁保留候选 v12b 原亮度(实测不透明域 L≈0.132,低于 §2 世界中层 0.22–0.45,登记为作者例外;后续调亮归调参/替换,不重开设计);背景实测 L:dungeon 0.0148、underdark 0.0132、deep_underdark 0.0111(后两者低于世界底层下沿带下限 0.014 不超过 0.003,登记读数)。验收:机检〈四件文件名与尺寸逐位相符;地面顶缘以上 alpha=0、不透明域 ≤32 色;背景不透明全幅 ≤32 色〉+目检〈三关可辨、无光柱、地面读作泥土〉。参考指针:`asset-path-map.md` `scene/` 行、`battle-stage-prompts.md` §2/§4。 -- **近景地面与地台走独立件**:连续地面层 `scene_stage_ground.png` 与角色脚下小石台 `scene_stage_plaza.png` 均为独立层,三关共用、跨关恒定。小石台源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形(规格见 §8.2);连续地面层的顶缘即分隔带(不规则碎石/阴影缝,不是直线亮边)。独立的两条理由——① 三张背景按关卡变体,地面若画进任一背景就得三张各画一遍、且三关站位面会漂移;② 结算期明细带整条压住底带(带高读 `log_band_h_settle`),地面在独立层才能跨关恒定并保持世界中层承载面不变。小石台先保留,是否退役归实装批/后续裁决。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉+目检〈连续地面为泥土碎石、顶缘不规则〉 +- **图层归属(2026-10-31 用户裁)**:背景层 = 三关变体 `scene_stage_bg_dungeon/_underdark/_deep_underdark.png`(顶部空区+纵深洞厅远景,不画近景地面;按 `board_type` 选一张);近景地面 = **独立连续地面层** `scene_stage_ground.png`(泥土/砂砾/碎石地面,全宽、底边贴 B 区底、顶缘即分隔带;高度读布局表 `ground_h`,字段值 100);现有每角色小石台 `scene_stage_plaza.png` 保留,叠在连续地面之上。连续地面层与小石台**三关共用**、跨关恒定、**不吃 `wall_ambient` tint**(世界中层承载面随关卡换明度会破 §2 层间关系);背景三张变体各自带关卡色族,不再叠 tint。验收:机检〈三张背景文件名带 board_type 后缀;地面层/小石台文件名无 board_type 后缀;背景与地面层均不引用 `wall_ambient` 槽〉 +- **资产渠道与契约**:✦ 插画级(演出类场景贴图,清单 §4 联动登记);战斗一屏样张(§1.4 清单 1.2)含背景出样。**背景层 = 三张按关卡变体** `scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`(源 = 基准屏宽 × `stage_h`,读布局表 `game/data/tables/battle_layout.tres`;显示 1×;按 `board_type` 选图;**不走 `wall_ambient` tint**);三张共用本节构图规则,仅岩体形态与色族按 §6.3 三关方向不同。**背景只画顶部空区+纵深洞厅远景,不画近景地面**:结算期明细带整条压住 B 区底带(带高 = `log_band_h_settle`,读布局表),近景地面在独立层;画进背景等于画一件永远看不见、且会随背景变体重复的东西。**连续地面层** = `scene_stage_ground.png`(源 = 基准屏宽 × `ground_h`,读布局表;显示 1×;三关共用、跨关恒定、不吃 tint);地面层是极宽薄条,出图与后处理按 `battle-stage-prompts.md` §2.2 的工艺(可平铺纹理条/最宽档裁切,禁横向拉伸)。**光柱不迁入背景**:三张背景均不画光柱/光带/光束/光晕与任何光源实体,明暗只由岩体层理与暗部承载;原四柱程序层与平色底已退役(背景资产接管该绘制面,平色缺图回退改指状态槽底色)。资产已入包;出图工单 = `battle-stage-prompts.md`,交付记录见本节「B 区舞台背景与共用地面的交付绑定」。验收:目检〈三关背景可辨为不同洞窟,非同一图换色;远景有纵深、非贴墙;无孤立圆柱贴顶;背景无地台/地面结构件、无砖石墙、无瓷砖地面、无光柱/光带;地面层为泥土/砂砾/碎石〉 +- **B 区舞台背景与共用地面的交付绑定**:三张背景与一张地面已按本节契约入包 `game/assets/art/scene/`——`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png` 均 1280×252、不透明全幅、单张 ≤32 色、按 `board_type` 选图;`scene_stage_ground.png` 1280×100、顶缘以上透明、单张 ≤32 色、三关共用。地面按作者裁保留候选 v12b 原亮度(实测不透明域 L≈0.132,低于 §2 世界中层 0.22–0.45,登记为作者例外;后续调亮归调参/替换,不重开设计);背景实测 L:dungeon 0.0148、underdark 0.0132、deep_underdark 0.0111(后两者低于世界底层下沿带下限 0.014 不超过 0.003,登记读数)。验收:机检〈四件文件名与尺寸逐位相符;地面顶缘以上 alpha=0、不透明域 ≤32 色;背景不透明全幅 ≤32 色〉+目检〈三关可辨、无光柱、地面读作泥土〉。参考指针:`asset-path-map.md` `scene/` 行、`battle-stage-prompts.md` §2/§4。 +- **近景地面与地台走独立件**:连续地面层 `scene_stage_ground.png` 与角色脚下小石台 `scene_stage_plaza.png` 均为独立层,三关共用、跨关恒定。小石台源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形(规格见 §8.2);连续地面层的顶缘即分隔带(不规则碎石/阴影缝,不是直线亮边)。独立的两条理由——① 三张背景按关卡变体,地面若画进任一背景就得三张各画一遍、且三关站位面会漂移;② 结算期明细带整条压住底带(带高读 `log_band_h_settle`),地面在独立层才能跨关恒定并保持世界中层承载面不变。小石台先保留,是否退役归后续裁决。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉+目检〈连续地面为泥土碎石、顶缘不规则〉 ### 6.2 营地场景 - **情绪与色域**:承载 §2.8——全作最暖:烛光黄 `#F6C667` × 木色 `#8A5A34`(§7.2),中等饱和,无棋盘式高对比。 - **场景构成**:一张可点击的营地场景图(1280×800,与工程档同幅面)。远景=天空与远山;中景=**独立成层的木围墙**(密排竖木桩、桩顶削尖、不透缝无横木)与**半开的营地大门**;近景=中央篝火、左侧锻炉铁砧、右侧帐篷与宝箱、帐篷旁的笔记本,另有木桩与挂在围墙上的布告板。**中景带自底部往上约 2/3 处起**;**近景物件可覆盖围墙,唯一例外=中间门洞必须留空、不被任何物件遮挡**。七个可点物件的功能绑定归 `camp.md`,本节只定画法。 - **图层拆分(10 张)**:场景按「远景/中景/近景要素各自成层」拆——`scene_camp_bg` 背景层(z0,不透明全幅)=天空+远山+整片地面+门洞内一条通向远处的小路;`scene_camp_wall` 围墙层(z1,透明底)=横贯全宽密排木桩墙(左右两段)+两根略高的门柱,**门洞处留透明缺口**透出背景层的小路;`scene_camp_board` 布告板(z2)、`scene_camp_gate` 门扇(z3)、`scene_camp_dummy` 木桩/`scene_camp_forge` 锻炉/`scene_camp_tent` 帐篷(z4)、`scene_camp_chest` 宝箱/`scene_camp_notebook` 笔记本(z5)、`scene_camp_campfire` 篝火(z6,最前)=八个物件层,各透明底单件一张。**帐篷**为承载件、不可点。围墙独立成层的好处:桩高可单独锁死、门洞做透明缺口、背景层不混入暖木色。提示词与坐标 = `camp-scene-prompts.md`,消费常量 = `asset-path-map`。 -- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序)。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条裁,不做全幅(全幅约 3.9 MB 显存,细条约 0.35 MB);**实装落盘矩形 `(0, 261, 1280, 49)`、底锚 y310**(Y 压缩按桩身 43px 终稿锁定值精确,落带内〔规划带 (0,240,1280,70)〕;备选 A′〔带高 70/桩身 62〕存档 artwork 同目录——2026-11-01 迭代 47 卡④ 实装)。 +- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序)。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条裁,不做全幅(全幅约 3.9 MB 显存,细条约 0.35 MB);**实装落盘矩形 `(0, 261, 1280, 49)`、底锚 y310**(Y 压缩按桩身 43px 终稿锁定值精确,落带内〔规划带 (0,240,1280,70)〕;备选 A′〔带高 70/桩身 62〕存档 artwork 同目录)。 - **色彩与氛围依据**:营地场景的冷暖分工(冷的大面积后退、暖的小面积前进)、空气透视三档与大面积用色规则 = `reports/提案-营地色彩与氛围脚本-2026-10-23.md`。本节不复述色值;新增环境色按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门)。 - **交互四态(零新素材,全部程序化)**:悬停=**轮廓亮边 + 浮动**(浮动须整像素吸附);按下=位移 1px;**禁用/未解锁=降明度 + 去饱和**(§2 已缩窄至情绪域,状态表达不受限),**仅锻炉(锻造工坊)与宝箱(秘宝匣)两件会有此态**;已解锁=常态。 - **钥石余额**:常驻画面顶部的一行小 HUD 栏(高 48px,**浮层覆盖,不挤压画面**)。 - **事实源边界**:解锁条件/价格/存档写入归元进度 GDD 与 `MetaProgression`;素材命名与路径归 `asset-path-map`;清单登记归 `art-assets-checklist` §3.5。 -- **已裁(2026-11-01 用户裁,随迭代 47 卡④ 开工门销号)**:① **营地环境子板色值**——不前置拍板:T1 量化场景实际用色后按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门);② **门扇与门洞的高宽比例**——门扇 240×220 追认现值,坐标按门洞 x520–760 对齐(`camp-scene-prompts.md` §2.3);③ **帐篷的落地尺寸**——300×170 追认现值(各素材第一张样本稿已过审为终稿,重定即触发重出,不裁)。 +- **已裁(2026-11-01 用户裁)**:① **营地环境子板色值**——不前置拍板:量化场景实际用色后按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门);② **门扇与门洞的高宽比例**——门扇 240×220 追认现值,坐标按门洞 x520–760 对齐(`camp-scene-prompts.md` §2.3);③ **帐篷的落地尺寸**——300×170 追认现值(各素材第一张样本稿已过审为终稿,重定即触发重出,不裁)。 ### 6.3 三关图类型色板候选(board_type 换挡方向) @@ -461,8 +461,8 @@ - **字体**:全局一套像素字,单套即终稿——缝合像素字体 Fusion Pixel(OFL,已接入 `game/assets/fonts/ui_font_fusion_pixel_zh_hans.ttf`),拉丁字符与数字沿用其自带拉丁字形,不另设拉丁专件(现状即终稿;旧拉丁候选 Kenney Fonts 已弃;生产工单=清单 §3.6);墨色走主墨系(§7.2);换字体 = 全局决策。验收:机检〈主题字体指向 Fusion Pixel 件〉 - **字号**:像素字体**整数倍缩放,禁非整数缩放**(像素模糊);下限(1280×800 基座):棋盘数字 ≥18px(公式 = `max(18, ceil(格边长 × 0.5))`不变)、**正文/明细 ≥16px、tooltip ≥14px**(1280×800 低于 1080p 基准,同字号实际更小)。验收:机检〈静态文字位点字号 ≥ 档位表值〉 - **字号档位表(六档)**:全站 UI 文字字号只经 `UiKit.FS_*` 单点取值,裸数字字号弃用——`FS_CAPTION 12`/`FS_HINT 14`/`FS_BODY 16`/`FS_SUB 18`/`FS_TITLE 24`/`FS_H1 34`。旧实测档按就近归档收编(10/11/12→CAPTION、13/14→HINT、15/16→BODY、17/18/20→SUB、21/22/24/26→TITLE、32/40→H1;静态位点全归档,数据驱动动态字号位点除外);棋盘数字公式 `maxi(18, ceil(格边长×0.5))` 与站桩血数 11px(条带内读数豁免)不入表。注:六档相邻比 12→14→16→18 三段 <1.25×,系裁决值优先于字重纪律的档差参考线,该参考线对新层级设计仍有效。验收:机检〈全站无裸数字字号,位点走 FS_*〉 -- **小字号豁免条款(合并单条不开两口子)**:下款两类**豁免于本节下限**——①**条带内读数**:压在窄条带(血条/进度条等 ≤12px 高带)内居中的数字,受条带高度物理约束,维持 11px 下限,且必须按 §7.2 垫素色牌后计对比(实装=B 区站桩血数 11px 压 HP_BAR_BACK 牌 14.3:1);②**装饰性 overline/caption**:不承载须精确读取的信息、仅作分区标题或氛围小字者,可至 **12px**。**豁免逐处清单(撤除史归 git 提交史,余清单如下)**:条带内读数=B 区站桩血数一处;装饰 caption 档(FS_CAPTION)在册面=棋盘底操作提示条/营地柜台说明文与结构位预留注记/图例 RAP 词条说明/设置警示文两处/关卡地图底栏组标(生命/属性/特性)与分隔系/站桩消散提示/B 区状态槽微计数(×N●○)/bcard 脚注/RAP 反馈行/刷新余量徽标——清单外 11-13px 文字一律按正文/tooltip 下限提档,新增 caption 位须同批增补本清单。**站桩顺位徽标 ①②③ 不增列本清单**:该处原为 13px 字形,既不在①条带内读数在册面、也不在②装饰 caption 在册面,属「清单外 11–13px 文字」,按本条纪律提档至 `FS_HINT` 14 即归六档;为它单独入册等于开第二口子,与「合并单条不开两口子」的立条理由正面相撞。**站桩名字行同理提档**:名字行(敌人名与护甲文字)承载须精确读取的信息,原取 12px 不在①②两在册面、属「清单外 11–13px 文字」,按本条纪律提档至 `FS_HINT` 14 归六档、不增列②在册面,名字行几何(素底牌矩形、文字基线、宽度测量)随档位联动。②装饰 caption 在册面逐处维持不变。验收:机检〈豁免文字位均可对上本清单,清单外无 <14px;站桩顺位徽标与站桩名字行绘制点取 UiKit.FS_HINT,且②在册面不含该两位〉 -- **字重纪律(字重两档不启用)**:层级手段为两件——**字号档差(相邻层级 ≥1.25×)+ 墨色深浅**;全局单字重,不上第二个字重(**重开钩子已注销**——整屏样张设计轮已重开并复核:屏内各级文字全部能归进本节六档字号,顺位徽标与站桩名字行两处按本节纪律提档即可,屏内实测对比全部达标(暖白对舞台底 9.49:1、GOLD_BRIGHT 6.47:1、血数 14.3:1),**未实证标题层级不足**,维持单字重,不另立条目);数字禁描边/阴影伪加粗不变(字形为唯一数值载体,§4.1 同源纪律)。验收:机检〈主题仅注册单字重〉/目检〈屏内标题与正文层级仅靠字号档差与墨色深浅两件即可分辨,无一处需要第二字重才读得清〉 +- **小字号豁免条款(合并单条不开两口子)**:下款两类**豁免于本节下限**——①**条带内读数**:压在窄条带(血条/进度条等 ≤12px 高带)内居中的数字,受条带高度物理约束,维持 11px 下限,且必须按 §7.2 垫素色牌后计对比(实装=B 区站桩血数 11px 压 HP_BAR_BACK 牌 14.3:1);②**装饰性 overline/caption**:不承载须精确读取的信息、仅作分区标题或氛围小字者,可至 **12px**。**豁免逐处清单(撤除史归 git 提交史,余清单如下)**:条带内读数=B 区站桩血数一处;装饰 caption 档(FS_CAPTION)在册面=棋盘底操作提示条/营地柜台说明文与结构位预留注记/图例 RAP 词条说明/设置警示文两处/关卡地图底栏组标(生命/属性/特性)与分隔系/站桩消散提示/B 区状态槽微计数(×N●○)/bcard 脚注/RAP 反馈行/刷新余量徽标——清单外 11-13px 文字一律按正文/tooltip 下限提档,新增 caption 位须同批增补本清单。**站桩顺位徽标 ①②③ 不增列本清单**:既不在①条带内读数在册面、也不在②装饰 caption 在册面,按本条纪律取 `FS_HINT` 14 归六档;为它单独入册等于开第二口子,与「合并单条不开两口子」的立条理由正面相撞。**站桩名字行同理**:名字行(敌人名与护甲文字)承载须精确读取的信息,不在①②两在册面,按本条纪律取 `FS_HINT` 14 归六档、不增列②在册面,名字行几何(素底牌矩形、文字基线、宽度测量)随档位联动。②装饰 caption 在册面逐处维持不变。验收:机检〈豁免文字位均可对上本清单,清单外无 <14px;站桩顺位徽标与站桩名字行绘制点取 UiKit.FS_HINT,且②在册面不含该两位〉 +- **字重纪律(字重两档不启用)**:层级手段为两件——**字号档差(相邻层级 ≥1.25×)+ 墨色深浅**;全局单字重,不上第二个字重(**重开钩子已注销**——整屏样张复核确认:屏内各级文字全部能归进本节六档字号,顺位徽标与站桩名字行两处按本节纪律提档即可,屏内实测对比全部达标(暖白对舞台底 9.49:1、GOLD_BRIGHT 6.47:1、血数 14.3:1),**未实证标题层级不足**,维持单字重,不另立条目);数字禁描边/阴影伪加粗不变(字形为唯一数值载体,§4.1 同源纪律)。验收:机检〈主题仅注册单字重〉/目检〈屏内标题与正文层级仅靠字号档差与墨色深浅两件即可分辨,无一处需要第二字重才读得清〉 ### 7.5 营地界面 @@ -470,7 +470,7 @@ ### 7.6 引擎原生控件与按钮状态规格 -> **来源与边界**:本节由迭代实现批按呈报写入(引擎原生控件皮肤、按钮五态矩阵与全局纹理过滤),现为现行规格。**定值单点纪律(§8 头注)遵守**:本节只锁形态/尺寸档/对比度底线等规则,色值一律指路——主题色值事实源 = `game/assets/theme/README.md` 溯源表(与 ui_kit 常量双源,见本节末注),本节不复述色值。 +> **边界**:**定值单点纪律(§8 头注)遵守**:本节只锁形态/尺寸档/对比度底线等规则,色值一律指路——主题色值事实源 = `game/assets/theme/README.md` 溯源表(与 ui_kit 常量双源,见本节末注),本节不复述色值。 **(一)按钮五态矩阵(冒烟五态断言在闸)** @@ -524,7 +524,7 @@ - **棋盘小人 = 32×32 二头身派生版(暂定,允许更小)**——独立资产,自人设定稿压缩派生(character-design §5.4),不吞数字位、占位 ≤ 0.75× 格边长;板越小占比摩擦越大(13×13 / 14×14 更小,算例见 [battle.md](../gdd/ux/battle.md)「棋盘格尺寸公式」),32px 源档的去留已定终值 = **保留 32×32 源档**(沿「独立小源档」路线;N=12 板下显示占位上限 27px = 0.84 倍,正落本节乙类非整数缩放许可范围,**连豁免都不用再办**),待决标注注销; - **封印印记参数表(绘制件,非贴图件)**:形与画法见 §3.2。定值——**环外径 = 0.82 × 格边**(26 格 21.3px/46 格 37.7px);**环壁厚 = 0.11 × 环径**(≈2.3/4.1px);**十字臂宽 = 0.156 × 环径**(≈3.3/5.9px);**环外光圈宽 = 0.09 × 格边**(≈2.3/4.1px),向外衰减指数 1.6、峰值 alpha 0.50;圆心 = 格心。色 = 封印黑单色(光圈只改 alpha)。本件随格边连续缩放,**不适用甲类整数倍纪律**(非贴图件,见上条清单)。参数单点 = `ui_kit.gd` 五枚常量 `SEAL_RING_FRAC`/`SEAL_WALL_FRAC`/`SEAL_ARM_FRAC`/`SEAL_HALO_ALPHA`/`SEAL_HALO_GAMMA`,本节为条款侧对照值。改值须本节与 §3.2 同批修订。验收:机检〈ui_kit 五常量与本表逐值一致〉+目检〈渲染帧量环径落 82%±1px、光圈不越格边〉 - **站桩立绘显示档 = 三档绝对高**:小型 96 / 中型 144 / 大型 188。逐件归档——小:地精、巨蜘蛛、灰矮人;中:主角、钩爪恐魔、熊地精;大:食人魔酋长、蛛化卓尔、灰矮人石君王。**源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;显示倍率 = 档高 ÷ 源高,NEAREST,宽度随源图比例(高定宽随不变,见上条)。定档依据 = 生物体型(体量=物种体型,非强度线性映射,见 character-design §5.2),**顺序由显示档承载、不由源高承载**。已接受项:中型三件与地精/巨蜘蛛的源高(92/94/123/90/81)低于档高,属放大显示;食人魔酋长显示宽 157 超桩盒 150。验收:机检〈standee_asset_check 逐件显示档高与归档一致、纵横倍率恒等〉+目检〈同屏体量顺序成立〉 - - **站桩立绘排版**:① 区高 B 区 ≈1/3 屏 / C 区 ≈2/3 屏,**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(显示 >150px 级:食人魔酋长/蛛化卓尔/灰矮人石君王)**允许向上溢出盒顶 N px**(N 由实装批按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,x 基准 110/900/1055/1210@1280,`battle_stage_view.gd:47-56`〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限由实装批用真图复算 x 区间定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉 + - **站桩立绘排版**:① 区高 B 区 ≈1/3 屏 / C 区 ≈2/3 屏,**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(显示 >150px 级:食人魔酋长/蛛化卓尔/灰矮人石君王)**允许向上溢出盒顶 N px**(N 按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,x 基准 110/900/1055/1210@1280,`battle_stage_view.gd:47-56`〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限用真图复算 x 区间定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉 - **站桩石板地台件**:`scene_stage_plaza.png`,源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形;跨三关恒定、不吃 §4.3 `wall_ambient` tint(独立理由见 §6.1 近景地台独立件条)。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉 ### 8.3 导出格式与命名规范 diff --git a/design/art/art-prompts.md b/design/art/art-prompts.md index 174b98b9..08f23887 100644 --- a/design/art/art-prompts.md +++ b/design/art/art-prompts.md @@ -1,22 +1,22 @@ -# 生图提示词卡(角色级资产)v2.14 +# 生图提示词卡(角色级资产)v2.15 -> **性质**:美术清单生图通道(✦ 用户自跑,现走线上 API)的执行侧文件——每资产一段**自包含完整提示词**:正向 = 通用底座+主体+动作已拼妥、负向 = 通用底座+增补已并妥,整段复制直接贴进工作流即可,**不需要读其他文件、不需要拼装**。人物规格转写自 [character-design.md](character-design.md)(人物设计 v1.0,自 art-bible §5 迁出,圣经 §5 为存根),风格/色彩条款转写自 [art-bible](art-bible.md)(§4.1 主色板 / §4.2 语义色规则);冲突时人物规格以 character-design 为准、色彩以 art-bible 为准。 +> **性质**:美术清单生图通道(✦ 用户自跑,现走线上 API)的执行侧文件——每资产一段**自包含完整提示词**:正向 = 通用底座+主体+动作已拼妥、负向 = 通用底座+增补已并妥,整段复制直接贴进工作流即可,**不需要读其他文件、不需要拼装**。人物规格转写自 [character-design.md](character-design.md)(人物设计 v1.0,圣经 §5 为存根),风格/色彩条款转写自 [art-bible](art-bible.md)(§4.1 主色板 / §4.2 语义色规则);冲突时人物规格以 character-design 为准、色彩以 art-bible 为准。 > **边界**:本文件只管**角色级**资产的生图通道。图标/格面/样张走脚本管线(⚙ 代理出),规格在 art-bible §4.6 与 [art-assets-checklist](art-assets-checklist.md),不需要提示词。**场景级资产(营地场景图的背景层与八个物件层)另立 [camp-scene-prompts](camp-scene-prompts.md);战斗舞台背景层与连续地面层另立 [battle-stage-prompts](battle-stage-prompts.md),本文件不覆盖**;两卡的角色/场景分工以「谁的资产谁出卡」为界,同一段提示词不两处维护。战斗舞台的小石台件与护甲类型图标三枚的**出图工单**登记在本文件 §5;§5 只把各权威节的定值收进逐件工单,不立新值。意图动画三档是动画资产,等一屏样张锁方案后另立规格卡,本文件不覆盖。 -> **状态**:提示词卡成文,出图未开始;按「美术圣经 §5 现行」重生成(正序:B 路线),继承 seed 纪律 / 色相禁入带 / `#F2F2F2` 生成底色;沿革见 git 提交史。 +> **状态**:提示词卡成文,出图未开始(正序:B 路线);继承 seed 纪律 / 色相禁入带 / `#F2F2F2` 生成底色;沿革见 git 提交史。 --- ## 0. 使用流程(五步) -1. **出图**:按下面卡片把正向/负向提示词粘进生图渠道的提示词栏(**渠道 = 远程对话式生图为主,本地 ComfyUI 为备选**——2026-10-06 拍板;对话操作纪律见 [remote-gen-prompts](remote-gen-prompts.md)),每个资产出 **2–3 版候选**(建议固定 3 个 seed 连拍,便于横评)。 +1. **出图**:按下面卡片把正向/负向提示词粘进生图渠道的提示词栏(**渠道 = 远程对话式生图为主,本地 ComfyUI 为备选**;对话操作纪律见 [remote-gen-prompts](remote-gen-prompts.md)),每个资产出 **2–3 版候选**(建议固定 3 个 seed 连拍,便于横评)。 2. **入库**:候选原图(带底)放 `artwork/candidates/<资产名>/`,文件名 `v1.png / v2.png / v3.png`。这个目录只存候选,不进引擎。 3. **裁决**:你按 §4 验收速查预筛,挑出每一资产的入围候选拍板。 4. **后处理**:喊我一声,脚本管线代跑——去底转透明、最近邻降采样到目标尺寸、色板量化、四联底测试条(掩尘底/裸土底/暗底/灰度)。后处理工具清单与用法见 [art-pipeline-tools](art-pipeline-tools.md)。 5. **转正**:终稿从 `artwork/candidates/` 转入切片资产目录,随表现层升级批接线;清单状态列改「已交付」。 -**出图通道(2026-09-23 定稿)**:线上 API,用户自跑——本地 ComfyUI 生图路线已经用户拍板**彻底关闭**(母版工作流/像素 LoRA/Z-Image 模型已清退,不留复活预案,本卡不依赖任何本地管线)。 +**出图通道**:线上 API,用户自跑——本地 ComfyUI 生图路线已经用户拍板**彻底关闭**(母版工作流/像素 LoRA/Z-Image 模型已清退,不留复活预案,本卡不依赖任何本地管线)。 -**模型适配注**:提示词按标签风格写,通用文生图模型都能吃。走自然语言类模型(如 Flux/nano-banana 系)时,把「正向提示词」整串改写成两句自然语言,语义不变——像素约束段改写为 "a true pixel-art sprite drawn on a tiny grid of chunky square pixels, hard edges, no anti-aliasing, no gradients, flat colors from a limited palette, like artwork made in Aseprite"。出图分辨率建议 1024×1024(平台可选小档则选小,像素块更粗),真像素网格靠后处理降采样落定(§0 五步第 4 步)。触发词 `Pixel art style.` **已拍板加入(2026-09-23)——所有正向提示词一律以触发词开头**,已写入下面各卡(线上无像素 LoRA,它作风格提示词用);各卡负向已并入平滑系禁词,API 无负向栏时可整段省略。 +**模型适配注**:提示词按标签风格写,通用文生图模型都能吃。走自然语言类模型(如 Flux/nano-banana 系)时,把「正向提示词」整串改写成两句自然语言,语义不变——像素约束段改写为 "a true pixel-art sprite drawn on a tiny grid of chunky square pixels, hard edges, no anti-aliasing, no gradients, flat colors from a limited palette, like artwork made in Aseprite"。出图分辨率建议 1024×1024(平台可选小档则选小,像素块更粗),真像素网格靠后处理降采样落定(§0 五步第 4 步)。触发词 `Pixel art style.` **已拍板加入——所有正向提示词一律以触发词开头**,已写入下面各卡(线上无像素 LoRA,它作风格提示词用);各卡负向已并入平滑系禁词,API 无负向栏时可整段省略。 ## 1. 通用规格(所有卡片共用) @@ -32,7 +32,7 @@ ## 2. 主角战斗小人(三态,P1) -形象锚 = 站姿样张先例经 2026-09-23 特征批+配装修订改定:**蓝兜帽(取下披肩,露棕色短发)、暖米白上衣+深棕工装裤(弃全蓝)、额前护目镜、半指手套+卷裤脚皮护膝、圆头挖掘铲(待机插地扶柄)、结构式冒险背包(1.5× 体宽)一侧插大于头的旗朱红矩形旗、腰挂提灯**(不点亮;规格见 [character-design.md](character-design.md) §5.4)。三态必须延续同一形象——**同一 seed 起步,只换动作短语(其余元素三态恒在)**。兜帽小人蓝 `#2E86DE`;上衣暖米白 `#EFE3C8`;长裤深棕 `#6B4A2E`(均候选,样张批冻结);眼用数字墨 `#33261B`;肤色白皙;皮革木色族 `#8A5A34`;背包帆布暖卡其+皮革翻盖扣带;提灯小号铜色;旗面旗朱红 `#C63D22`(2026-09-28 人设旗脱钩——人设背包旗与棋盘封印色脱钩,封印黑仅棋盘格封印旗;旗面红仅旗非服饰,由正向十六进制锁色承载)。 +形象锚 = **蓝兜帽(取下披肩,露棕色短发)、暖米白上衣+深棕工装裤(弃全蓝)、额前护目镜、半指手套+卷裤脚皮护膝、圆头挖掘铲(待机插地扶柄)、结构式冒险背包(1.5× 体宽)一侧插大于头的旗朱红矩形旗、腰挂提灯**(不点亮;规格见 [character-design.md](character-design.md) §5.4)。三态必须延续同一形象——**同一 seed 起步,只换动作短语(其余元素三态恒在)**。兜帽小人蓝 `#2E86DE`;上衣暖米白 `#EFE3C8`;长裤深棕 `#6B4A2E`(均候选,样张批冻结);眼用数字墨 `#33261B`;肤色白皙;皮革木色族 `#8A5A34`;背包帆布暖卡其+皮革翻盖扣带;提灯小号铜色;旗面旗朱红 `#C63D22`(人设旗脱钩——人设背包旗与棋盘封印色脱钩,封印黑仅棋盘格封印旗;旗面红仅旗非服饰,由正向十六进制锁色承载)。 ### 2.1 待机态 @@ -124,7 +124,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, realistic, photorealistic, 3d render, photo, dark, grimdark, horror, gore, blood, scary, creepy, text, letters, numbers, watermark, signature, logo, frame, border, ui, gradient background, scenery, dungeon background, multiple characters, crowd, black outline, heavy dark outline, back view, side view, isometric, blurry, jpeg artifacts, smooth lines, anti-aliasing, gradient shading, painterly, glossy, high detail, vector illustration, tall skinny body, sharp angles, purple, magenta ``` -- **规格**:精英档 = 普通怪形 + **恰一处**垂直延伸(冠),底盘不变;轻甲 = 粗陋皮条、裸蓬毛、无甲板无符纹(§5.3,2026-09-25 甲档回填);两版候选出齐供拍板档位。**同 seed 出 A/B**,只差冠棘一句。 +- **规格**:精英档 = 普通怪形 + **恰一处**垂直延伸(冠),底盘不变;轻甲 = 粗陋皮条、裸蓬毛、无甲板无符纹(§5.3);两版候选出齐供拍板档位。**同 seed 出 A/B**,只差冠棘一句。 - **显示名**:熊地精(沿用既有译名)。 ### 3.3 食人魔酋长 ogre_chief(精英 · 轻甲 · 第一关关底) @@ -141,7 +141,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, realistic, photorealistic, 3d render, photo, dark, grimdark, horror, gore, blood, scary, creepy, text, letters, numbers, watermark, signature, logo, frame, border, ui, gradient background, scenery, dungeon background, multiple characters, crowd, black outline, heavy dark outline, back view, side view, isometric, blurry, jpeg artifacts, smooth lines, anti-aliasing, gradient shading, painterly, glossy, high detail, vector illustration, small body, skinny, sharp angles, purple, magenta ``` -- **规格**:精英档——唯一垂直元素是头顶冠(形状仍守精英档,不升 Boss 形);轻甲 = 裸身皮条/骨饰、无甲板(§5.3,2026-09-25 甲档回填——数据实态 light,旧重甲金属甲板描述退役);体量一眼大于地精/熊地精(「大个子多半有重击」体量通道)。 +- **规格**:精英档——唯一垂直元素是头顶冠(形状仍守精英档,不升 Boss 形);轻甲 = 裸身皮条/骨饰、无甲板(§5.3——数据实态 light,旧重甲金属甲板描述退役);体量一眼大于地精/熊地精(「大个子多半有重击」体量通道)。 ### 3.4 巨蜘蛛 giant_spider(普通怪 · 轻甲 · 群行) @@ -173,7 +173,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, realistic, photorealistic, 3d render, photo, dark, grimdark, horror, gore, blood, scary, creepy, text, letters, numbers, watermark, signature, logo, frame, border, ui, gradient background, scenery, dungeon background, multiple characters, crowd, black outline, heavy dark outline, back view, side view, isometric, blurry, jpeg artifacts, smooth lines, anti-aliasing, gradient shading, painterly, glossy, high detail, vector illustration, cute, chubby, round, friendly ``` -- **规格**:全场**唯二允许锐角与不对称**的角色之一;体量最大档(约 1.8–2 格高,工作假设);紫赤 `#8F2F6A`(色相 323°)为 Boss 独占——「形状独占 + 色相独占」双通道;魔法甲 = 卓尔上体暖白符纹饰带(§5.3,2026-09-25 甲档回填),蛛腹几丁质属天然甲壳不计甲档。 +- **规格**:全场**唯二允许锐角与不对称**的角色之一;体量最大档(约 1.8–2 格高,工作假设);紫赤 `#8F2F6A`(色相 323°)为 Boss 独占——「形状独占 + 色相独占」双通道;魔法甲 = 卓尔上体暖白符纹饰带(§5.3),蛛腹几丁质属天然甲壳不计甲档。 - **注意**:这是全项目仅有的两张**负向里不加 `purple, magenta`、正向里主动要紫赤**的卡之一。出完记得吸色检查:色相 300°–345° 全项目只许两 Boss 出现。 - **显示名**:蛛化卓尔精灵。 @@ -238,7 +238,6 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, - **负向**:同 3.2 版本 A。 - **验收**:与熊地精终稿剪影叠加比对,轮廓逐像素一致,只允许颜色不同。 -- **v2.0 变更注**:v1.0 备选配色「冷蓝灰」弃用——蓝族禁入敌方主色(§5.4/§5.5),且与小人蓝同屏有混淆风险;改灰褐战纹。 - **显示名**:L2 行显示名沿用熊地精系(熊地精/熊地精猎群/熊地精重击手——enemy.tres 数据实态)。 --- @@ -248,7 +247,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, 1. **剪影**:转灰度仍认得出是什么、是哪一档(普通/精英/Boss)——敌种间剪影可辨是硬需求。 2. **轮廓通道**:亮描边 + 落影底盘在位;深浅两种格底上各摆一眼都可辨(四联测试条就是干这个的)。 3. **色相纪律**:吸色扫一遍,无 300°–345°(两 Boss 除外);无大面积正红/亮金误用;敌方主体无蓝族。 -4. **甲档**(v2.0 新增):灰度下三档甲覆盖率可辨——轻甲无甲板、魔法护甲见符纹带、重甲大面积甲板;天然甲壳/毛皮没被画成装备甲。 +4. **甲档**:灰度下三档甲覆盖率可辨——轻甲无甲板、魔法护甲见符纹带、重甲大面积甲板;天然甲壳/毛皮没被画成装备甲。 5. **头身**:2–3 头身之内,与站姿样张同世界观。 6. **同形象**:主角三态并排、L2 熊地精对熊地精、熊地精 A/B 对——兜帽/装备/剪影不串戏。 @@ -288,9 +287,9 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon > **范围注**:本文件原定位角色级(见文件头边界句),§4bis 已有「地形类同库登记」的先例,本节循同一先例补登记战斗屏的**小石台件(②)**与护甲类型图标三枚(③),两组在营地卡与清单里都无处落工单;战斗舞台背景层(①)与连续地面层的元素/提示词已另立 [battle-stage-prompts](battle-stage-prompts.md),§5.1 只留指路;角色级立绘重产(④)是本文件的本职。四组的规格定值清单 §4 已有登记,本节补的是「逐件照着就能出件」那一层。 > **定值纪律(§8 头注 定值单点纪律)**:本节**指路不立值**——色值 = 圣经 §4.1(含场景环境子板)、尺寸与缩放 = §8.2、明度带 = §2、甲档 = character-design §5.3、命名 = §8.3 + asset-path-map。本节新增零定值;凡圣经未定的值,一律进本节 §5.5 缺口,不在本节填空。 -> **验收标注纪律**:逐条按三档标 `←机检: <断言>` / `←目检: <判据>` / `←方向性`,照圣经头注 2026-10-06 用户拍板的写法。 +> **验收标注纪律**:逐条按三档标 `←机检: <断言>` / `←目检: <判据>` / `←方向性`,照圣经头注(用户拍板)的写法。 > **流程**:出图前后一律走 §0 五步;出图登记义务照 remote-gen-prompts 头注轻量口径(用途+生成时间必注,其余参数有则记),随候选图存 `artwork/candidates/<资产名>/`;登记不作正稿遴选前置。 -> **产出状态**:组二地台件与组三护甲三枚已按各节 ⑤「程序化产出即终稿」产出入包(`scene_stage_plaza.png` 48×12、`ui_armor_light/ward/heavy.png` 24×24,路径见各组 ① 字段;登记=战斗一屏样张批,合并提交 3b66d1a6);组一背景插画见 [battle-stage-prompts](battle-stage-prompts.md)(三张背景+共用地面已入包并已实装消费——按关选图+连续地面层落码,四柱光柱层与平色底已退役),组四改按档派生(不重画)已落位:九件按原稿分辨率入包、显示按三档绝对高缩放(定值单点=art-bible §8.2,派生管线见 §5.4 工单)。 +> **产出状态**:组二地台件与组三护甲三枚已按各节 ⑤「程序化产出即终稿」产出入包(`scene_stage_plaza.png` 48×12、`ui_armor_light/ward/heavy.png` 24×24,路径见各组 ① 字段);组一背景插画见 [battle-stage-prompts](battle-stage-prompts.md)(三张背景+共用地面已入包并已实装消费——按关选图+连续地面层落码,四柱光柱层与平色底已退役),组四改按档派生(不重画)已落位:九件按原稿分辨率入包、显示按三档绝对高缩放(定值单点=art-bible §8.2,派生管线见 §5.4 工单)。 ### 5.1 组一 · B 区舞台背景插画(1 件) @@ -302,7 +301,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon |---|---| | ① 路径与命名 | `game/assets/art/scene/scene_stage_plaza.png`——域键 `scene`(asset-path-map §3),命名照 §8.3。**跨三关恒定,文件名不带 board_type 后缀** | | ② 尺寸档与像素网格 | 源 48×12;**九宫格横向拉伸**,顶缘受光线 2px 不随拉伸变形(§8.2 / §6.1 定值);高度维持源档 12px、横向拉至站桩宽。九宫格件不在甲/乙两分类内(§8.2 甲类 = 文本与语义件、乙类 = 角色与单位精灵),本件高度恒为整数像素、横向拉伸区只取纯色 | -| ③ 色板约束 | 进**战斗屏场景环境子板**(§4.1 分层②,不占 48 额度,余量 0 不动)。**零新增**——板身 `#968264`(STAND_STONE,§4.1 已转正进本子板)/ 顶缘受光线 `#C9AF83`(掩尘;2026-10-28 合并登记把地台顶缘受光线并进掩尘,并与 §8.2 高墙口沿高光 `Color8(196,172,132)` 统一为同一枚)/ 描边 `#4C4038`(2026-10-28 合并登记把地台描边并入此值)。单张像素域色数 ≤32。第二道门同本节 5.1 | +| ③ 色板约束 | 进**战斗屏场景环境子板**(§4.1 分层②,不占 48 额度,余量 0 不动)。**零新增**——板身 `#968264`(STAND_STONE,§4.1 已转正进本子板)/ 顶缘受光线 `#C9AF83`(掩尘;地台顶缘受光线并入此值,与 §8.2 高墙口沿高光 `Color8(196,172,132)` 为同一枚)/ 描边 `#4C4038`(地台描边并入此值)。单张像素域色数 ≤32。第二道门同本节 5.1 | | ④ 明度带归属 | **世界中层 L 0.22–0.45**(§2)——判定对象 = 板身 `#968264`(实测 L≈0.234)与顶缘受光线 `#C9AF83`(实测 L≈0.449,材质受光属 §2 形体塑造允许域)。§6.1 把地台定死为世界中层承载面,就是本件的立法理由。描边 `#4C4038` 是结构墨线(§3.2 高墙墨线同族,职责 = 分隔),不按明度带判定 | | ⑤ 是否程序化件 | 是 → **程序化直出即终稿,不须出图**。本件只有三块纯色 + 一条 2px 缘线,无材质纹理需求,按 §8.5「材质归模型、结构归程序」落脚本绘制即成立;它不属 §7.1 占位态 | | ⑥ 验收判据 | 见下方逐条判据 | @@ -333,7 +332,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon |---|---| | ① 路径与命名 | `game/assets/ui/icons/ui_armor_light.png` / `ui_armor_ward.png` / `ui_armor_heavy.png`——域键 `ui`,落 `game/assets/ui/icons/`(与现役九枚状态图标同目录,asset-path-map §1);命名照 §8.3,对象键 = `armor`、变体 = 甲档键,与清单 §3.7 逐字一致 | | ② 尺寸档与像素网格 | 源 24×24,显示 24px = 1×;九宫格 = 否;**甲类**(§8.2 甲类 = 文本与语义件,图标在列)→ 维持严格整数倍缩放硬规则,禁非整数缩放 | -| ③ 色板约束 | 进**语义/UI token 板**(§4.1 分层①),**占 48 额度——余量 0**(2026-10-28 用户裁:本组新增重甲冷灰 1 枚 + 5.4 组四新增卓尔浅紫灰皮 1 枚,全板余量 2 → 0,额度已用尽)。逐件取在册色(**素底明暗档已裁深档 `#282220`**,见 §5.5 缺口 2 已裁条):轻甲 = `WARM_FAINT #CDB88C`(深档下 8.08:1;原木色 `#8A5A34` 深档仅 2.72:1 不过门,按合并裁定改值、零额度)/ 魔法护甲 = 暖白 `#F0E2C8`(12.26:1,深档下本值不动)/ 重甲 = `#868C9A`(新入板,占 1 枚额度,深档下 4.65:1)。单张像素域色数 ≤32。第二道门同本节 5.1 | +| ③ 色板约束 | 进**语义/UI token 板**(§4.1 分层①),**占 48 额度——余量 0**(本组新增重甲冷灰 1 枚 + 5.4 组四新增卓尔浅紫灰皮 1 枚,额度已用尽)。逐件取在册色(**素底明暗档已裁深档 `#282220`**,见 §5.5 缺口 2 已裁条):轻甲 = `WARM_FAINT #CDB88C`(深档下 8.08:1;原木色 `#8A5A34` 深档仅 2.72:1 不过门,按合并裁定改值、零额度)/ 魔法护甲 = 暖白 `#F0E2C8`(12.26:1,深档下本值不动)/ 重甲 = `#868C9A`(新入板,占 1 枚额度,深档下 4.65:1)。单张像素域色数 ≤32。第二道门同本节 5.1 | | ④ 明度带归属 | **信息面层**(§2:信息面层 = 数字 / UI 数据 / 预告 / 语义标识)——图标是语义标识,与站桩名字行同排挂载。**信息面层 L 区间维持定性、不新增区间**(§5.5 缺口 3 核实结论:执法已被 §7.2 文字 ≥4.5:1 与 §4.1 图形 ≥3:1 两条相对判据覆盖,层间序关系由 §1.4 整屏②项断言,不需要绝对区间),本节落地判据走 §4.1 图形对比 ≥3:1 | | ⑤ 是否程序化件 | 是 → **程序化产出即终稿**。来源照清单 §3.7:♻ 素材站通用护甲/符纹图标改色优先、⚙ 兜底程序化;♻ 件须过清单 §0 复用闸四道才入包 | | ⑥ 验收判据 | 见下方共用验收 + 逐件验收 | @@ -344,7 +343,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon - ←机检: 源 24×24、显示 1× 整数倍(§8.2 显示档登记例外条:素材一字节禁改) - ←机检: 文件名逐位等于 `ui_armor_light` / `ui_armor_ward` / `ui_armor_heavy` - ←机检: 单张像素域色数 ≤32 -- ←机检: 三枚对其实际挂载底色的图形对比 ≥3:1(§4.1 图标槽柔和档条的图形参考线硬约束)。**挂载底色 = 站桩名字行的素底,不是舞台底也不是地台面**——站桩名字行是文字,§7.2「一切文字(含菜单/说明/tooltip/按钮/底栏,**无区域例外**)」+「文字禁直接压纹理底——垫容器或罩层」两条覆盖它;§6.1 舞台正面目标条(2026-10-28 v3.22 定值)已就站桩文字位显式落法:「站桩文字位改垫素底或落进结算明细带」,并明写「**非新条款**」,§7.2 同批加「站桩石板地台面同理」句、两处机检断言同文。舞台背景插画(`scene_stage_bg_` 三关变体;battle-stage-prompts §2.1)属纹理底,落法门触发。**故「站桩名字行落法 = 垫素底」是既有条款的落法,本节不立新条款**(§5 头注定值纪律:本节指路不立值)。素底明暗档 **2026-10-28 已裁 = 深档 `#282220`**(§7.4 血数垫牌 `HP_BAR_BACK` 在册同款,零新增;浅档 `#F5EAD3` 落选,两档对照与理据见 §5.5 缺口 2 已裁条) +- ←机检: 三枚对其实际挂载底色的图形对比 ≥3:1(§4.1 图标槽柔和档条的图形参考线硬约束)。**挂载底色 = 站桩名字行的素底,不是舞台底也不是地台面**——站桩名字行是文字,§7.2「一切文字(含菜单/说明/tooltip/按钮/底栏,**无区域例外**)」+「文字禁直接压纹理底——垫容器或罩层」两条覆盖它;§6.1 舞台正面目标条已就站桩文字位显式落法:「站桩文字位改垫素底或落进结算明细带」,并明写「**非新条款**」,§7.2 亦有「站桩石板地台面同理」句、两处机检断言同文。舞台背景插画(`scene_stage_bg_` 三关变体;battle-stage-prompts §2.1)属纹理底,落法门触发。**故「站桩名字行落法 = 垫素底」是既有条款的落法,本节不立新条款**(§5 头注定值纪律:本节指路不立值)。素底明暗档 **已裁 = 深档 `#282220`**(§7.4 血数垫牌 `HP_BAR_BACK` 在册同款,零新增;浅档 `#F5EAD3` 落选,两档对照与理据见 §5.5 缺口 2 已裁条) - ←机检: B 区站桩名字行与护甲图标正下方像素非地台板身色 `#968264`(§6.1 / §7.2 同文断言) - ←目检: 灰度下按甲面覆盖率三档可辨——无甲板 → 符纹带 → 大面积甲板(character-design §5.3 灰度通道条) - ←目检: 三枚互辨,身份只靠形状不靠色相(§4.5 ⑨ 图标键族:色相不承载身份) @@ -353,8 +352,8 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon **5.3.1 轻甲 `ui_armor_light`(轻甲档)** - 形状:甲面覆盖率 ≈ 0——一枚**皮条 / 布带**记号(斜跨的皮带扣或系带),主体留空,零甲板(character-design §5.3) -- 色:**`WARM_FAINT #CDB88C`**(2026-10-28 用户裁:素底取深档后原皮革木色 `#8A5A34`〔§7.2 木色〕仅 2.72:1 不过门,按 §4.1「不过门即换色合并、禁加色绕行」并入本值——**零额度**;代价 = 暖白族非木色族,已随裁定接受) -- **对比判据**(挂载底色 = 站桩名字行素底,2026-10-28 裁深档 `#282220`):**8.08:1 ✓**(≥3:1 图形门槛);对舞台底 `#3E362C` 6.12:1。木色族路线(新增木色亮档 `#C49A5E` 6.07:1)未取——须 +1 额度而余量已为 0 +- 色:**`WARM_FAINT #CDB88C`**(素底取深档后原皮革木色 `#8A5A34`〔§7.2 木色〕仅 2.72:1 不过门,按 §4.1「不过门即换色合并、禁加色绕行」并入本值——**零额度**;代价 = 暖白族非木色族,已随裁定接受) +- **对比判据**(挂载底色 = 站桩名字行素底,裁深档 `#282220`):**8.08:1 ✓**(≥3:1 图形门槛);对舞台底 `#3E362C` 6.12:1。木色族路线(新增木色亮档 `#C49A5E` 6.07:1)未取——须 +1 额度而余量已为 0 - ←机检: 本枚对其实际挂载深素底 ≥3:1(实测 8.08:1);入板后全板色对中三通道差全部 <8/255 的对数 = 0 - ←目检: 换色后本枚仍读作皮革/皮条,不与 5.3.2 符纹带、5.3.3 甲板在灰度下混读(character-design §5.3 灰度通道:三档按甲面覆盖率可辨) - 来源与工艺:♻ 素材站 belt / strap 类图标改色,过清单 §0 复用闸四道(色板量化 / 禁入带吸色 / 灰度可辨 / 授权干净);⚙ 兜底按 24×24 网格手修——3px 带宽、1px 深墨描边,不画甲板 @@ -368,8 +367,8 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon **5.3.3 重甲 `ui_armor_heavy`(重甲档)** - 形状:**金属甲板**覆盖肩与胸,覆盖率三档中最大(character-design §5.3) -- 色:冷灰金属材质色 = **`#868C9A`**(2026-10-28 用户裁转定稿,见 §5.5 缺口 1 已裁条;新入 §4.1 分层①,占 1 枚额度)。**与 5.4.4 石君王岩石板甲是同一枚**——character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王工单**直接引本枚 `#868C9A`、不另计额度** -- **对比判据**(挂载底色 = 站桩名字行素底,2026-10-28 裁深档 `#282220`):须同时满足 §5.4 ④ 立绘体块主色带 L 0.22–0.45 与本节 ≥3:1 —— 深档窗 = **[0.220, 0.450]**;本值 L≈0.261 落窗,**对深素底 4.65:1 ✓、对舞台底 3.52:1 ✓** +- 色:冷灰金属材质色 = **`#868C9A`**(已转定稿,见 §5.5 缺口 1 已裁条;新入 §4.1 分层①,占 1 枚额度)。**与 5.4.4 石君王岩石板甲是同一枚**——character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王工单**直接引本枚 `#868C9A`、不另计额度** +- **对比判据**(挂载底色 = 站桩名字行素底,裁深档 `#282220`):须同时满足 §5.4 ④ 立绘体块主色带 L 0.22–0.45 与本节 ≥3:1 —— 深档窗 = **[0.220, 0.450]**;本值 L≈0.261 落窗,**对深素底 4.65:1 ✓、对舞台底 3.52:1 ✓** - ←机检: 本枚对其实际挂载深素底 ≥3:1(实测 4.65:1)且相对亮度 L 落 [0.220, 0.450](实测 0.261);入板后全板色对中三通道差全部 <8/255 的对数 = 0 - ←目检: 灰度下本枚甲板覆盖率三档最大,与 5.3.1 无甲板、5.3.2 符纹带可辨(character-design §5.3 灰度通道) - ←方向性: 冷灰与全作暖底成材质对比(§5.3),不靠明度差与地台 `#968264`(L≈0.234)抢读——立绘与地台的可辨归 §5.1 轮廓通道 @@ -385,9 +384,9 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon |---|---| | ① 路径与命名 | `game/assets/art/character/character_hero_portrait.png` + `game/assets/art/character/character_enemy_.png`(域键 `character`,对象键 = `hero` / enemy_id,命名照 §8.3 与 asset-path-map §3 现役写法) | | ② 尺寸档与像素网格 | **源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;**显示档 = 三档绝对高**——小 96(地精/巨蜘蛛/灰矮人)、中 144(主角/钩爪恐魔/熊地精)、大 188(食人魔酋长/蛛化卓尔/灰矮人石君王),定值单点 = art-bible §8.2;显示倍率 = 档高 ÷ 源高,NEAREST,宽随源图比例(高定宽随、纵横倍率恒等,禁方框强拉);九宫格 = 否 | -| ③ 色板约束 | 色值以**现役稿**为准,本批零新增色、零换色;单张像素域色数 ≤32(`pixel-1` 与手修 2× 稿实测均 ≤32)。`#A79CB8` 保留在板、本批不消费,色板额度议题另批讨论 | +| ③ 色板约束 | 色值以**现役稿**为准,零新增色、零换色;单张像素域色数 ≤32(`pixel-1` 与手修 2× 稿实测均 ≤32)。`#A79CB8` 保留在板、不消费,色板额度议题另议 | | ④ 明度带归属 | **世界中层 L 0.22–0.45**(§2 世界中层 = 格底顶面 / 角色 / 物件)——判定对象 = 角色体块主色。描边与落影底盘属轮廓通道(character-design §5.1)、紫赤点缀属 §4.2 色相独占的语义色,两者都不按明度带判定 | -| ⑤ 是否程序化件 | 否 → **零绘制**:源 = 现有原稿,本批不生成、不重画(现有形象即终稿)。§7.1 占位完成条款对本组不适用——现役稿即终稿 | +| ⑤ 是否程序化件 | 否 → **零绘制**:源 = 现有原稿,不生成、不重画(现有形象即终稿)。§7.1 占位完成条款对本组不适用——现役稿即终稿 | | ⑥ 验收判据 | 见下方共用验收 | | ⑦ 操作要点 | 见下方派生要点(零绘制,不产生图提示词) | @@ -403,7 +402,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon - ←目检: 放大 4 倍,轮廓与衣服是成组的像素,不是降采样噪点(三判据①) - ←目检: 显示 96–188px 下脸、铲、旗、物种能认出来,不必先读名字(三判据②) - ←目检: 显示仍用邻近采样,不出现插画那种平滑渐变(三判据③) -- ←方向性: 现有形象即终稿,本批禁改形象 +- ←方向性: 现有形象即终稿,禁改形象 三判据出处 = `reports/美术审计-cursor会话存档-2026-10-14.md` §2.2。 @@ -417,7 +416,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon **5.4.1 主角(中档 144)** - 形象 = 现役稿即终稿,character-design §5.4 形象锚已兑现于现役素材;朝向沿用现役,不重新裁定 -- 色 = 以现役稿为准(§5.5 缺口 4 的额度账随色板议题另批处理) +- 色 = 以现役稿为准(§5.5 缺口 4 的额度账随色板议题另议) - 源 = `hero-ref/edit/normal_2x.png`(内容 88×92);attack/hit 用 `attack_2x.png`/`hit_2x.png` **5.4.2 食人魔酋长 ogre_chief(大档 188)** @@ -430,27 +429,27 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon - 档位 = 大型;紫赤 `#8F2F6A` 色相独占 + 形状独占双通道维持现役稿 - 甲档 = 魔法护甲(符纹饰带)——现役稿已如此 -- 源 = `drider/pixel-1.png`(140×189);皮色 `#A79CB8` 保留在板、本批不消费 +- 源 = `drider/pixel-1.png`(140×189);皮色 `#A79CB8` 保留在板、不消费 **5.4.4 灰矮人石君王 duergar_king(大档 188)** - 档位 = 大型(锐角与不对称);紫赤独占 + 岩石板甲维持现役稿色 - 源 = `duergar_king/pixel-1.png`(133×189) -### 5.5 缺口(四条 · 缺口 1/2/4 于 2026-10-28 已裁转指路,缺口 3 结论已立) +### 5.5 缺口(四条 · 缺口 1/2/4 已裁转指路,缺口 3 结论已立) -> **核销口径(依 art-bible v3.22 现行条款)**:四条逐条先过「§4.1 在册既有色能否换色合并」——不过门即换色合并、禁加色绕行(§4.1 色板增量纪律)。**48 色余量:裁定前 2 → 2026-10-28 裁定后 0(额度已用尽)**;本节给的是「哪几枚必须新增 / 哪几枚可合并 / 合并后余量 / 全新增要压缩哪几枚」的账,**不替作者拍板**(§4.1:额度不足时呈报作者,由作者决定压缩或合并既有色)。本节所举候选色值,**缺口 1 / 2 / 4 已随 2026-10-28 用户裁落定(见各条「已裁」注,本节只留裁定依据账并指路 §5.3 / §5.4)**;其余仍为候选,落定须过 §4.1 两道门(①§4.2 语义检查;②与既有任一色 RGB 三通道差不得全部 <8/255——宽松口径)。 +> **核销口径(依 art-bible 现行条款)**:四条逐条先过「§4.1 在册既有色能否换色合并」——不过门即换色合并、禁加色绕行(§4.1 色板增量纪律)。**48 色余量 0(额度已用尽)**;本节给的是「哪几枚必须新增 / 哪几枚可合并 / 合并后余量 / 全新增要压缩哪几枚」的账,**不替作者拍板**(§4.1:额度不足时呈报作者,由作者决定压缩或合并既有色)。本节所举候选色值,**缺口 1 / 2 / 4 已落定(见各条「已裁」注,本节只留裁定依据并指路 §5.3 / §5.4)**;其余仍为候选,落定须过 §4.1 两道门(①§4.2 语义检查;②与既有任一色 RGB 三通道差不得全部 <8/255——宽松口径)。 -1. **重甲冷灰金属材质色——已裁(2026-10-28)= `#868C9A`**,本节转指路(原「阻塞 5.3.3 上色」状态解除——出形与上色均不再阻塞;**与 5.4.4 石君王岩石板甲同一枚**——character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,两处只占一枚额度)。character-design §5.3 只写「冷灰金属材质色」;**落法见 §5.3.3(本组载值)与 §5.4.4(直接引 §5.3.3 同一枚、不另计额度),色值账见 art-bible §4.1 本枚条目**。 +1. **重甲冷灰金属材质色——已裁 = `#868C9A`**,本节转指路(出形与上色均不再阻塞;**与 5.4.4 石君王岩石板甲同一枚**——character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,两处只占一枚额度)。character-design §5.3 只写「冷灰金属材质色」;**落法见 §5.3.3(本组载值)与 §5.4.4(直接引 §5.3.3 同一枚、不另计额度),色值账见 art-bible §4.1 本枚条目**。 - **换色合并逐枚核查——在册冷/中性灰全部不合格,无复用者**:`#3E4048` L≈0.052 / `#3F4147` L≈0.053(两者正在 §4.1 六对欠账清单内,清偿后只留一枚)/ `#3A3A3A` L≈0.042——三枚均越世界中层下沿 0.22;`#C4C4C4` L≈0.552 越上沿 0.45,且语义岗 = 迷雾记忆墨(§6.5);`#8A9AB0` L≈0.317 本落在带内,但色相 ≈215° 属蓝族,§5.4 语义约束 + §5.5「蓝族禁入敌方主色」拦;`#5A6C8C` 暮蓝为失败独占(§4.2);`#808080` L≈0.216 越下沿 0.004,且是引擎默认灰(§7.6 点名须接管,不宜作角色材质色)。 - **归属板**:进 §4.1 **分层① 语义/UI token 板,占 48 额度**。理由:甲材质色 = 材质色、跨屏恒定,不属分层② 环境色(环境色随场景走);5.3 与 5.4 两组工单第 ③ 字段均已登记为分层①。 - - **裁定值(2026-10-28 用户裁,原候选值即本值,落定后转定稿)**:`#868C9A`(L≈0.261 / H≈222° / S≈0.13)。第二道门按宽松口径与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(不占红/金/蓝/紫赤/绿语义段,222° 不在 300°–345° 禁入带)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1、对浅素底 `#F5EAD3` 2.82:1(浅档已落选,不受该读数的门限约束)。 - - **风险(已随 2026-10-28 裁定接受)**:本值与地台板身 `#968264`(L≈0.234)灰度差仅 0.028、对比 1.10:1。立绘与地台的可辨归 §5.1 轮廓通道(亮描边 + 落影)与冷/暖材质对比承载,不靠明度差——§5.3 明写「冷灰与全作暖底成材质对比」;§2 只在世界底层内部立了「同层内两底难辨」的子带纪律(该条立法理由明写为解决底层内部问题),世界中层无同款要求。 + - **裁定值**:`#868C9A`(L≈0.261 / H≈222° / S≈0.13)。第二道门按宽松口径与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(不占红/金/蓝/紫赤/绿语义段,222° 不在 300°–345° 禁入带)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1、对浅素底 `#F5EAD3` 2.82:1(浅档已落选,不受该读数的门限约束)。 + - **风险(已随裁定接受)**:本值与地台板身 `#968264`(L≈0.234)灰度差仅 0.028、对比 1.10:1。立绘与地台的可辨归 §5.1 轮廓通道(亮描边 + 落影)与冷/暖材质对比承载,不靠明度差——§5.3 明写「冷灰与全作暖底成材质对比」;§2 只在世界底层内部立了「同层内两底难辨」的子带纪律(该条立法理由明写为解决底层内部问题),世界中层无同款要求。 - ←机检: 本值入板后全板色对中三通道差全部 <8/255 的对数 = 0 -2. **站桩名字行的落法 + 素底明暗档——已裁(2026-10-28)= 垫素底、素底取深档 `#282220`**,本节转指路(原记为「轻甲木色在深底上不过 3:1」;核出落法是它的前置,故先落这一条)。 - - **推导核实 = 成立,且是既有条款的落法、非新条款**:站桩名字行是文字,§7.2「一切文字(含菜单/说明/tooltip/按钮/底栏,**无区域例外**)」+「文字禁直接压纹理底——垫容器或罩层」两条覆盖它;§6.1 舞台正面目标条(2026-10-28 v3.22 定值)已就站桩文字位显式落法——「站桩文字位改垫素底或落进结算明细带」并明写「**非新条款**」,§7.2 同批加「站桩石板地台面同理」句,两处机检断言同文。舞台背景插画(`scene_stage_bg_` 三关变体;battle-stage-prompts §2.1)属纹理底 → 落法门触发。**已回填**:站桩名字行落法 = **垫素底**(§5.3 共用验收条 + 5.3.1 / 5.3.3 对比判据)。 - - **原冲突 = 素底明暗档圣经未定死(2026-10-28 已由作者裁,本节不替裁的冲突至此闭合)**:§4.1 只在册浅档 `#F5EAD3`(数字色牌,圣经唯一素色牌值),§7.4 血数垫牌在用的深档 `HP_BAR_BACK #282220` 亦在册。两档后果**相反**(下表留作裁定依据账): +2. **站桩名字行的落法 + 素底明暗档——已裁 = 垫素底、素底取深档 `#282220`**,本节转指路。 + - **推导核实 = 成立,且是既有条款的落法、非新条款**:站桩名字行是文字,§7.2「一切文字(含菜单/说明/tooltip/按钮/底栏,**无区域例外**)」+「文字禁直接压纹理底——垫容器或罩层」两条覆盖它;§6.1 舞台正面目标条已就站桩文字位显式落法——「站桩文字位改垫素底或落进结算明细带」并明写「**非新条款**」,§7.2 亦有「站桩石板地台面同理」句,两处机检断言同文。舞台背景插画(`scene_stage_bg_` 三关变体;battle-stage-prompts §2.1)属纹理底 → 落法门触发。站桩名字行落法 = **垫素底**(§5.3 共用验收条 + 5.3.1 / 5.3.3 对比判据)。 + - **素底明暗档两档对照**:§4.1 只在册浅档 `#F5EAD3`(数字色牌,圣经唯一素色牌值),§7.4 血数垫牌在用的深档 `HP_BAR_BACK #282220` 亦在册。两档后果**相反**(下表留作裁定依据账): | 受影响的位 | 浅档 `#F5EAD3` | 深档 `#282220` | |---|---|---| @@ -459,9 +458,9 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon | 5.3.1 轻甲木色 `#8A5A34` | 4.87:1 ✓ 不动 | 2.72:1 ✗ → 须换色合并(`WARM_FAINT #CDB88C` 8.08:1,零额度)或新增木色亮档(`#C49A5E` 6.07:1,占 1 枚) | | 5.3.3 重甲冷灰 | 须 L ≤0.245,与 5.4 立绘体块主色带求交 → 窗 **[0.220, 0.245]**(候选 `#7E8492` L≈0.230,3.14:1) | 须 L ≥0.151 → 窗 **[0.220, 0.450]**(候选 `#868C9A` L≈0.261,4.65:1) | - - **裁定结论(2026-10-28 用户裁,取深档一列)**:① 站桩名字行墨(暖白 `#F0E2C8`)**不动**(12.26:1);② 5.3.2 魔法护甲暖白 `#F0E2C8` **不动**(12.26:1);③ 5.3.1 轻甲木色 → **接受换色合并 `WARM_FAINT #CDB88C`(8.08:1,零额度)**,不取新增木色亮档 `#C49A5E` 路线(须 +1 额度而余量为 0);④ 5.3.3 重甲冷灰 → 按深档窗 **[0.220, 0.450]** 落 **`#868C9A`**(4.65:1)。**素底值恒定 = `HP_BAR_BACK #282220`**(§7.4 血数垫牌同款,零新增) + - **裁定结论(取深档一列)**:① 站桩名字行墨(暖白 `#F0E2C8`)**不动**(12.26:1);② 5.3.2 魔法护甲暖白 `#F0E2C8` **不动**(12.26:1);③ 5.3.1 轻甲木色 → **接受换色合并 `WARM_FAINT #CDB88C`(8.08:1,零额度)**,不取新增木色亮档 `#C49A5E` 路线(须 +1 额度而余量为 0);④ 5.3.3 重甲冷灰 → 按深档窗 **[0.220, 0.450]** 落 **`#868C9A`**(4.65:1)。**素底值恒定 = `HP_BAR_BACK #282220`**(§7.4 血数垫牌同款,零新增) - - **推荐 = 深档 `#282220`**(四条理据)——**2026-10-28 用户采纳本推荐,裁定落深档**:① 与 §7.4 血数垫牌同款、既有素底,零新增;② 与 §4.1 在役亮档 token 同向——顺位徽标 `GOLD_BRIGHT` 对舞台底 6.47:1、魔法护甲徽标 `HERO_BLUE_BRIGHT` 5.88:1,现行徽标体系整体按暗底设计;③ 与 §7.4 v3.22 实测记录「暖白对舞台底 9.49:1 达标」不冲突,深档更暗则暖白更稳;④ 只动 5.3.1 一枚,名字行墨与 5.3.2 全部不动。**代价**:5.3.1 须换色(换色合并不需要额度,新增木色亮档要 1 枚)。**浅档的代价**:名字行墨与 5.3.2 两处换墨(零额度),但 5.3.3 被挤进 0.025 宽的窄窗,且与石君王灰皮(若亦须落 0.22–0.45)撞窗。 + - **推荐 = 深档 `#282220`**(四条理据)——**裁定落深档**:① 与 §7.4 血数垫牌同款、既有素底,零新增;② 与 §4.1 在役亮档 token 同向——顺位徽标 `GOLD_BRIGHT` 对舞台底 6.47:1、魔法护甲徽标 `HERO_BLUE_BRIGHT` 5.88:1,现行徽标体系整体按暗底设计;③ 与 §7.4 实测记录「暖白对舞台底 9.49:1 达标」不冲突,深档更暗则暖白更稳;④ 只动 5.3.1 一枚,名字行墨与 5.3.2 全部不动。**代价**:5.3.1 须换色(换色合并不需要额度,新增木色亮档要 1 枚)。**浅档的代价**:名字行墨与 5.3.2 两处换墨(零额度),但 5.3.3 被挤进 0.025 宽的窄窗,且与石君王灰皮(若亦须落 0.22–0.45)撞窗。 - ←机检: B 区站桩名字行与护甲图标正下方像素非地台板身色 `#968264`(§6.1 / §7.2 同文断言) - ←目检: 名字行与三枚甲档图标同排挂载后,素底边缘与舞台底、地台轮廓不打架,不构成第二焦点(§3.4) @@ -472,22 +471,22 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon - 理由四:硬定上界会误伤在册高亮档——`#F5EAD3` 色牌 L≈0.83、纯白 L=1.0 都在信息面层内,上界定死(如 0.90)会把它们拦在层外。 - **机检断言写得出来(证明不定值也能执法)**:←机检: 屏内信息面层取样点 L > 同屏世界中层取样点 L > 同屏世界底层取样点 L(§1.4②项同口径);←机检: 信息面层成员对其直接背景,文字位 ≥4.5:1、图形位 ≥3:1(§7.2 / §4.1) -4. **五处角色部件色值——2026-10-28 用户裁已落值**(不阻塞开工;手绘口径下必须落值,现已落)。**逐件取值见 §5.4.1(铲刃 / 提灯)、5.4.2(食人魔皮)、5.4.3(卓尔皮)、5.4.4(石君王灰皮)**;下表留作裁定依据账,色值已逐件落定(见上),不再以「待裁」表述: +4. **五处角色部件色值——已落值**(手绘口径下必须落值,现已落)。**逐件取值见 §5.4.1(铲刃 / 提灯)、5.4.2(食人魔皮)、5.4.3(卓尔皮)、5.4.4(石君王灰皮)**;下表留作裁定依据账,色值已逐件落定(见上),不再以「待裁」表述: - | 部件 | §5.4 ④ 明度带归属 | 换色合并候选(在册,零额度)**——2026-10-28 裁定采纳** | 合并代价 / 淘汰理由 | 新增候选(**未取**,裁定走合并路线) | 第二道门 | + | 部件 | §5.4 ④ 明度带归属 | 换色合并候选(在册,零额度)**——裁定采纳** | 合并代价 / 淘汰理由 | 新增候选(**未取**,裁定走合并路线) | 第二道门 | |---|---|---|---|---|---| | 主角铲刃浅铁灰 | 手持件,不属「体块主色」判定面 | `FOG_MEMORY_INK #C4C4C4`(L≈0.552,中性灰 S=0) | 一色两岗(语义岗 = 迷雾记忆墨 §6.5,与 §4.1「常量本尊不动」先例相左);若后续纳入明度带判定则越上沿 0.45 | `#A8AEB8`(L≈0.421 / H≈218° / S≈0.09) | 过门(无三通道全 <8 的对);非语义段 | | 主角提灯铜色 | 同上 | `GOLD_DEEP #B07A14`(L≈0.232 / H≈39°,落世界中层) | 金族语义岗(§4.2 金只说收益与兑现、禁作日常强调防通胀);与皮革木色 `#8A5A34`(L≈0.130)明度差 0.10,可辨 | `#C08A3A`(L≈0.297 / H≈36°) | 过门 | | 食人魔酋长暖褐皮 | **体块主色 → 须落 L 0.22–0.45** | `暖石 #B8A582`(L≈0.387 / H≈39°,在册于 theme README 溯源表) | 一色两岗(该值现为滑轨槽字面量);已排除 `#968264`(地台承载面 §6.1)、`#B39A78`/`#C9AF83`(格底语义,§5.1 剪影禁借格底成立)、`#8A5A34`(L 0.130 越下沿) | `#B08050`(L≈0.253)/ `#A97C4E`(L≈0.234) | 过门 | | 卓尔精灵浅紫灰皮 | **体块主色 → 须落 L 0.22–0.45** | **无可复用**:在册紫族四枚全部语义岗占用且 L <0.22——`#7C3AA8` 封印紫(退役)、`#7A4294` 妨害紫(§4.6.1 语义)、`#8A72C4` / `#7B5BD6` 类型微光族(§4.2 分域纪律:微光色相禁迁移复用为物件/阵营/UI 语义色) | — | `#A79CB8`(L≈0.355 / H≈264° / S≈0.15;避 300°–345°,紫赤独占仍归 `#8F2F6A`) | 过门 | | 石君王岩石板甲 | 与缺口 1 同一枚,**不另计额度** | 见缺口 1 | 见缺口 1 | 见缺口 1 | 见缺口 1 | - | 石君王灰皮 | **口径已裁(2026-10-28)= 次级皮**:石君王重甲覆盖率最大(§5.3),板甲视同体块主色 → 灰皮属次级皮、不受 0.22–0.45 约束 | 不受约束口径下可合 `STONE #786E62`(L≈0.160 / S≈0.18 近中性暖灰) | 若按体块主色口径则 L 越下沿 0.06,不可合 | `#9A968C`(L≈0.306)/ `#949089`(L≈0.281 / S≈0.07) | 过门;两候选与地台 `#968264` 灰度差 ≥0.047 | + | 石君王灰皮 | **口径已裁 = 次级皮**:石君王重甲覆盖率最大(§5.3),板甲视同体块主色 → 灰皮属次级皮、不受 0.22–0.45 约束 | 不受约束口径下可合 `STONE #786E62`(L≈0.160 / S≈0.18 近中性暖灰) | 若按体块主色口径则 L 越下沿 0.06,不可合 | `#9A968C`(L≈0.306)/ `#949089`(L≈0.281 / S≈0.07) | 过门;两候选与地台 `#968264` 灰度差 ≥0.047 | - **额度账(48 余量:裁定前 2 → 2026-10-28 裁定后 0,额度已用尽)** - - **必须新增 = 2 枚(已裁落定)**:① 重甲冷灰金属材质色(缺口 1,在册冷灰全部不合格)= **`#868C9A`**;② 卓尔浅紫灰皮(在册紫族全占岗且过暗)= **`#A79CB8`**。→ 余量 2 → **0**,额度用尽;后续新增须先压缩或合并既有色(压缩哪几枚由作者裁)。 + **额度账(48 余量 0,额度已用尽)** + - **必须新增 = 2 枚(已裁落定)**:① 重甲冷灰金属材质色(缺口 1,在册冷灰全部不合格)= **`#868C9A`**;② 卓尔浅紫灰皮(在册紫族全占岗且过暗)= **`#A79CB8`**。余量 **0**,额度用尽;后续新增须先压缩或合并既有色(压缩哪几枚由作者裁)。 - **可合并 = 5 处,零额度(已裁接受)**:铲刃 → `FOG_MEMORY_INK #C4C4C4`;提灯 → `GOLD_DEEP #B07A14`;食人魔皮 → `暖石 #B8A582`;石君王灰皮 → `STONE #786E62`(按**次级皮**口径);轻甲木色 → `WARM_FAINT #CDB88C`。 - **浮动一枚 = 5.3.1 轻甲木色(已裁)**:深档素底下**接受换色合并 `WARM_FAINT #CDB88C`**,零额度,余量不击穿;新增木色亮档 `#C49A5E` 路线未取。 - - (原「若作者选全部新增(7 枚)」一支,留作依据账):击穿 5 枚。压缩只能从既有色里腾——优先合「宽松口径下仍未清偿的在册近色对」,每合一对腾 1 枚。机检扫到的**活值**近色对(须先剔除退役值与场景环境子板成员再计数;本清单未逐枚核语义岗,合哪几对由作者裁):`GOLD_BRIGHT #E0B860 ↔ GOLD_LIT #E6BE5A`(差 6/6/6);`WARM #F0E2C8 ↔ MAP_BAR_PLATE #F0E4C8`(差 0/2/0);`RAP_DOT_CORE_WARM #F8E2A8 ↔ INK_L_GOLD #F8E3A8`(差 0/1/0);`DIGIT_PLATE #F5EAD3 ↔ CAMP_ROW_PLATE #F0E6CE`(差 5/4/5)。**注:这四对均不在 §4.1 已列六对欠账清单内**,属该清单未扫到的部分——按 §4.1 现有断言「全板色对中三通道差全部 <8/255 的对数 = 0」,它们同样在清偿范围内;是否随本批一并清偿由作者裁。 + - (「若作者选全部新增(7 枚)」假设,留作依据账):击穿 5 枚。压缩只能从既有色里腾——优先合「宽松口径下仍未清偿的在册近色对」,每合一对腾 1 枚。机检扫到的**活值**近色对(须先剔除退役值与场景环境子板成员再计数;本清单未逐枚核语义岗,合哪几对由作者裁):`GOLD_BRIGHT #E0B860 ↔ GOLD_LIT #E6BE5A`(差 6/6/6);`WARM #F0E2C8 ↔ MAP_BAR_PLATE #F0E4C8`(差 0/2/0);`RAP_DOT_CORE_WARM #F8E2A8 ↔ INK_L_GOLD #F8E3A8`(差 0/1/0);`DIGIT_PLATE #F5EAD3 ↔ CAMP_ROW_PLATE #F0E6CE`(差 5/4/5)。**注:这四对均不在 §4.1 已列六对欠账清单内**,属该清单未扫到的部分——按 §4.1 现有断言「全板色对中三通道差全部 <8/255 的对数 = 0」,它们同样在清偿范围内;是否一并清偿由作者裁。 - **本节不替作者决定压缩或合并哪几枚既有色**。 - ←机检: 本节候选值落定后,全板色对中三通道差全部 <8/255 的对数 = 0,且板内色数 ≤48 - ←目检: 五处部件色上稿后,灰度下铲 / 提灯 / 皮 / 甲互相可辨,不靠色相单独承载(§5.1 轮廓通道;§4.5 色弱清单) diff --git a/design/art/art-status-checklist.md b/design/art/art-status-checklist.md index 8c203361..b7b8640c 100644 --- a/design/art/art-status-checklist.md +++ b/design/art/art-status-checklist.md @@ -10,15 +10,15 @@ | 素材 | 状态 | 需求文档 | |---|---|---| -| 格子样张 | ✅ 样张 v3 冻结(2026-09-30 机检 17/17 全绿,art-bible §1.4 v3.2 记录;v2/v3 两次冻结通过;产物原件已丢失、未入 git) | [art-bible](art-bible.md) §1.4 | +| 格子样张 | ✅ 样张 v3 冻结(机检 17/17 全绿;产物原件已丢失、未入 git) | [art-bible](art-bible.md) §1.4 | | 战斗一屏样张 | ⬜ | [战斗表现](../gdd/systems/战斗循环/战斗表现.md)(一屏样张验收标准)+ [art-bible](art-bible.md) §5.1 | ## P1 角色级(样张通过后开工) | 素材 | 状态 | 需求文档 | |---|---|---| -| 主角战斗小人(待机/攻击/受击三态) | ✅ B区站桩三态全接(2026-09-29 迭代 6 T3:normal/attack/hit 48px 档入包+挂事件切换+结算回 idle,短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役不变;hit 态源=new-hit.pxo 已程序导出;2026-11-01 显示档改中档 144(源=手修 2× 三态稿,art-bible §8.2 v3.32))✅ 已交付(2026-11-02 迭代 48:三态按原稿分辨率入包、显示按档缩放落位,机检全绿) | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 | -| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ B区站桩八敌真图服役(2026-09-29 迭代 6 T1/T2:pixel-1 源→48px 档统一比例/底中锚/众数投票降采样,character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘)。2026-11-01 显示档换代=三档绝对高 96/144/188(art-bible §8.2 v3.32)✅ 已交付(2026-11-02 迭代 48:八件源 = 原稿不降采样入包、显示按档缩放落位,闸件新口径全绿) | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 | +| 主角战斗小人(待机/攻击/受击三态) | ✅ 已交付:B 区站桩三态按原稿分辨率入包、显示按档缩放落位(显示档=中档 144,源=手修 2× 三态稿,art-bible §8.2),机检全绿;挂事件切换、结算回 idle 短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役 | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 | +| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ 已交付:B 区站桩八敌真图服役——八件源=原稿不降采样入包、显示按档缩放落位(三档绝对高 96/144/188,art-bible §8.2),闸件全绿;character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘 | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 | | 意图准备动画三档 | ◐ | [art-bible](art-bible.md) §4.6.4 | ## P2 图标与格面(可与样张并行) @@ -28,9 +28,9 @@ | 格面资源徽章 19 枚 | ◐ | [art-bible](art-bible.md) §4.6 | | 关卡节点图图标组 | ◐ | [art-assets-checklist](art-assets-checklist.md) §3.2(正式 UI 设计未成文) | | 雷/封印印记/数字砖面全套 | ◐ 封印印记已换代(环+十字法阵,参数化绘制);雷与数字砖面仍待格子样张前置 | [art-bible](art-bible.md) §1.4/§3.2 | -| 增益状态效果图标 9 枚 | ✅ 已接入(2026-09-24) | [art-bible](art-bible.md) §4.6.1(候选原稿:状态图标批 2026-09-23 远程出图,归 candidates 档——路径描述性引用,归档纪律见 art-bible §8.3) | +| 增益状态效果图标 9 枚 | ✅ 已接入 | [art-bible](art-bible.md) §4.6.1(候选原稿归 candidates 档——路径描述性引用,归档纪律见 art-bible §8.3) | | 营地场景图 | ◐ | [art-bible](art-bible.md) §6.2 | -| 字体(全局 UI 像素字,Fusion Pixel 单套单字重) | ✅ 已定稿在役(2026-09-27 接入;2026-10-24 用户裁现状即终稿——不另接拉丁专件、不上第二字重) | [art-bible](art-bible.md) §7.4 | +| 字体(全局 UI 像素字,Fusion Pixel 单套单字重) | ✅ 已定稿在役(用户裁现状即终稿——不另接拉丁专件、不上第二字重) | [art-bible](art-bible.md) §7.4 | ## P3 演出类(样张后排期) @@ -40,7 +40,7 @@ | 连锁坍塌显形演出 | ⬜ | [art-assets-checklist](art-assets-checklist.md) §4 | | 封印特效(动作=封印,两件:施印特效+印记常显) | ◐ 印记常显已落位(着色器绘制);施印瞬间特效缺 | [art-bible](art-bible.md) §3.2 + [art-assets-checklist](art-assets-checklist.md) §4 | | 弹道 / 退场等动画密度 | ◐ 程序化弹道在役(play_projectile 0.16s+0.19s 到达拍调度;密度终稿归战斗表现) | [art-assets-checklist](art-assets-checklist.md) §4(战斗表现输入清单) | -| B 区舞台背景三关变体+共用连续地面层(场景件) | ✅ 已交付(2026-10-31 入包 `game/assets/art/scene/`:三张背景 1280×252、共用地面 1280×100;地面按作者裁保留候选 v12b 原亮度 L≈0.132) | [art-bible](art-bible.md) §6.1 · [battle-stage-prompts](battle-stage-prompts.md) §2 | +| B 区舞台背景三关变体+共用连续地面层(场景件) | ✅ 已交付(入包 `game/assets/art/scene/`:三张背景 1280×252、共用地面 1280×100;地面按作者裁保留候选 v12b 原亮度 L≈0.132) | [art-bible](art-bible.md) §6.1 · [battle-stage-prompts](battle-stage-prompts.md) §2 | --- diff --git a/design/art/asset-path-map.md b/design/art/asset-path-map.md index ebeee0ac..1fb8e5b9 100644 --- a/design/art/asset-path-map.md +++ b/design/art/asset-path-map.md @@ -27,7 +27,7 @@ |---|---|---| | `character/` | 角色棋盘帧 + B 区立绘 | character_hero_idle/walk(棋盘 32×32 朝左基准)、character_hero_portrait(B 区立绘 46×48)+ character_enemy_<键> 八敌 | | `fx/` | 特效帧 | shovel_swing_f0/f1/f2(挥铲三帧,握把锚 (18,12)) | -| `scene/` | **场景图**(背景层 + 地面层 + 围墙层 + 可点物件层;营地场景图首批) | 营地 10 张:`scene_camp_bg`(背景层,不透明全幅=天空+远山+地面+门洞小路)+ `scene_camp_wall`(围墙层,透明底、门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件,不可点)+ `scene_stage_bg_dungeon` / `scene_stage_bg_underdark` / `scene_stage_bg_deep_underdark`(B 区战斗舞台背景层三关变体,✦ 插画级,顶部空区+远景天然洞壁,不画近景地面,按 board_type 选图)+ `scene_stage_ground`(B 区连续近景地面层,✦ 插画级,泥土/砂砾/碎石+顶缘分隔带,跨关恒定)+ `scene_stage_plaza`(B 区角色脚下小石台,48×12 九宫格件)——B 区战斗舞台背景与连续地面 2026-10-31 已入包;营地 10 张 2026-11-01 随迭代 47 卡④ 入包(`scene_camp_*` 十件在役、`TEX_CAMP_*` 十键消费;用户游戏内终审如有置换,按本行键名同径替换) | +| `scene/` | **场景图**(背景层 + 地面层 + 围墙层 + 可点物件层;营地场景图首批) | 营地 10 张:`scene_camp_bg`(背景层,不透明全幅=天空+远山+地面+门洞小路)+ `scene_camp_wall`(围墙层,透明底、门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件,不可点)+ `scene_stage_bg_dungeon` / `scene_stage_bg_underdark` / `scene_stage_bg_deep_underdark`(B 区战斗舞台背景层三关变体,✦ 插画级,顶部空区+远景天然洞壁,不画近景地面,按 board_type 选图)+ `scene_stage_ground`(B 区连续近景地面层,✦ 插画级,泥土/砂砾/碎石+顶缘分隔带,跨关恒定)+ `scene_stage_plaza`(B 区角色脚下小石台,48×12 九宫格件)——B 区战斗舞台背景与连续地面已入包;营地 10 张已入包(`scene_camp_*` 十件在役、`TEX_CAMP_*` 十键消费;用户游戏内终审如有置换,按本行键名同径替换) | | `board/` | 砖面/封印印记(三关换皮 + 封印印记件) | terrain_floor__.png(三关地面系)、seal_mark.png | ## 4. 坐标/朝向等工程侧约定备查 diff --git a/design/art/battle-stage-prompts.md b/design/art/battle-stage-prompts.md index 927c88dd..8a9b7561 100644 --- a/design/art/battle-stage-prompts.md +++ b/design/art/battle-stage-prompts.md @@ -1,7 +1,7 @@ -# 战斗舞台背景 · 分层生图提示词卡 v1.9 +# 战斗舞台背景 · 分层生图提示词卡 v1.10 > **性质**:B 区战斗舞台背景(顶部空区+远景天然洞壁+近景连续泥土地面+分隔带)的出图执行侧文件。背景按三关出三张变体,地面三关共用一张;场景级资产,与角色级 [art-prompts](art-prompts.md) 并列,两文件互不覆盖。 -> **依据**:场景构成与图层归属 = [art-bible](art-bible.md) §6.1;三关方向 = art-bible §6.3;色板 = art-bible §4.1(战斗屏场景环境子板);尺寸 = `game/data/tables/battle_layout.tres`(背景读 `stage_h`;地面读 `ground_h`,字段已回填 100〔2026-11-02 迭代 48 落表〕);命名与路径 = [asset-path-map](asset-path-map.md);后处理 = [art-pipeline-tools](art-pipeline-tools.md)。 +> **依据**:场景构成与图层归属 = [art-bible](art-bible.md) §6.1;三关方向 = art-bible §6.3;色板 = art-bible §4.1(战斗屏场景环境子板);尺寸 = `game/data/tables/battle_layout.tres`(背景读 `stage_h`;地面读 `ground_h`,字段值 100);命名与路径 = [asset-path-map](asset-path-map.md);后处理 = [art-pipeline-tools](art-pipeline-tools.md)。 > **边界**:只管三张背景变体与一张共用地面的提示词与验收;角色、格面、图标、小石台 `scene_stage_plaza.png` 与样张走 art-prompts 与脚本管线,不在本卡。 > **建立**:2026-10-31 · 状态:三关背景变体与共用地面已按本工单出图并入包(选定=dungeon v10c/underdark v10c/deep_underdark v10c/ground v12b,落点与读数见 art-bible §6.1「B 区舞台背景与共用地面的交付绑定」);出图通道由作者自定(参考候选可用内置 ImageGen,水印可留;入包终稿须干净)。 @@ -12,7 +12,7 @@ 1. **出图**:按 §2 把提示词贴进生图渠道;每次出图先放 §1 的风格参考图。**先只出 dungeon 背景 1 张**,作者确认风格前缀后,再出 underdark / deep_underdark 两张变体与连续地面层。 2. **入库**:候选原图放 `artwork/candidates/scene_stage_bg/`(三关变体用 `dungeon_*` / `underdark_*` / `deep_underdark_*` 命名)与 `artwork/candidates/scene_stage_ground/`;`_登记.txt` 记用途与生成时间。 3. **后处理**:三张背景不去底(不透明全幅);连续地面层去底转透明(顶缘以上键控)+最近邻降采样+色板量化+底测试条;工具清单与已知边界见 [art-pipeline-tools](art-pipeline-tools.md)。 -4. **转正**:终稿转入 `game/assets/art/scene/`;三张背景按 `board_type` 选图、连续地面层接线与布局表 `ground_h` 字段均已实装落码〔2026-11-02 迭代 48〕。 +4. **转正**:终稿转入 `game/assets/art/scene/`;三张背景按 `board_type` 选图、连续地面层接线与布局表 `ground_h` 字段均已实装落码。 --- @@ -92,7 +92,7 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain **画什么**:全宽近景地面——**干净压实泥土为主**,整片平整、中低明度;全幅只保留**零星 3–5 颗小石**,散点分布、不成排不成堆;顶缘为不规则泥土边+阴影缝,可带 2–3 颗小石;中央平缓留空;地面跨三关恒定。 **不画什么**:瓷砖、砖缝、规则铺装、石板块、踢脚线/直亮边;草、木地板;远景/洞壁/天空;角色、生物、道具、火把/灯;中央大石或碎石堆挡站位;满铺碎石、密集砂砾、成排/成堆碎石、亮色浅棕大片、泥点噪声、垃圾杂物。 -**出图画布**:终稿 = 基准屏宽 × `ground_h`(`battle_layout.tres` 字段已回填 100);本件是极宽薄条,平台无对应宽高比时按横向可平铺纹理条出图(左右无缝,宽度取平台方档,高度取 `ground_h` 的整数倍),终稿裁/平铺到目标宽高比,禁横向拉伸。试片阶段可按构图比例先出,终稿尺寸读表。 +**出图画布**:终稿 = 基准屏宽 × `ground_h`(`battle_layout.tres` 字段值 100);本件是极宽薄条,平台无对应宽高比时按横向可平铺纹理条出图(左右无缝,宽度取平台方档,高度取 `ground_h` 的整数倍),终稿裁/平铺到目标宽高比,禁横向拉伸。试片阶段可按构图比例先出,终稿尺寸读表。 **正向提示词**: @@ -167,11 +167,11 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain ## 5. 待裁与待办(不阻塞提示词成文) 1. **三张背景按 `board_type` 选图**——游戏代码改动,走需求卡片+迭代;背景 `wall_ambient` tint 退役,棋盘/世界的该槽保留。 -2. **`ground_h` 字段**——布局表新增字段,已由实装批回填 100〔2026-11-02 迭代 48〕;本卡试片按构图比例,终稿读表。 +2. **`ground_h` 字段**——布局表字段值 100;本卡试片按构图比例,终稿读表。 3. **冷/灰色入板**——underdark / deep_underdark 需要的冷蓝灰、灰黑与矿脉色按 art-bible §4.1 战斗屏场景环境子板两道门入板;三张背景共用该子板 ≤32 色。 4. **地面层出图工艺**——极宽薄条;默认横向可平铺纹理条(左右无缝);若作者要整幅不拼接,另议。 -5. **小石台 `scene_stage_plaza.png`**——先保留;是否退役归实装批/后续裁决。 -6. **四柱光柱程序层退役**——光柱不迁入背景;该程序层已随背景实装批退役〔2026-11-02 迭代 48〕。 +5. **小石台 `scene_stage_plaza.png`**——先保留;是否退役归后续裁决。 +6. **四柱光柱程序层退役**——光柱不迁入背景;该程序层已退役。 7. **风格前缀**——首张 dungeon 背景试片后由作者确认,确认后才出另外两张与地面层。 8. **可选要素池**——按 §3.2 可选项本版关闭;要加走本卡修订。 @@ -179,4 +179,4 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain ## 6. 不在本卡 -角色与敌种立绘、棋盘格面/墙面纹理、UI 图标、护甲图标、小石台 `scene_stage_plaza.png`、整屏样张与游戏代码接线;这些各归 art-prompts、脚本管线与实装批。 +角色与敌种立绘、棋盘格面/墙面纹理、UI 图标、护甲图标、小石台 `scene_stage_plaza.png`、整屏样张与游戏代码接线;这些各归 art-prompts、脚本管线与代码实装。 diff --git a/design/art/camp-scene-prompts.md b/design/art/camp-scene-prompts.md index 413129c0..a269ff63 100644 --- a/design/art/camp-scene-prompts.md +++ b/design/art/camp-scene-prompts.md @@ -1,4 +1,4 @@ -# 营地场景 · 分层生图提示词卡 v1.4 +# 营地场景 · 分层生图提示词卡 v1.5 > **性质**:营地场景图(1280×800,一张可点击场景图 + 十张分层:背景层 1 + 围墙层 1 + 八个物件层)的出图执行侧文件。**场景级资产,与角色级 [art-prompts](art-prompts.md) 并列,两文件互不覆盖**。 > **依据**:色彩与氛围 = `reports/提案-营地色彩与氛围脚本-2026-10-23.md`(本卡不复述色值);坐标与层序 = `artwork/2026-10-23-营地场景/布局草案-1280x800.html`;物件命名与消费链 = [asset-path-map](asset-path-map.md);画法与交付形态 = [art-bible](art-bible.md) §6.2。冲突时色彩以色彩脚本为准,画法以 art-bible 为准。 @@ -105,7 +105,7 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain | 笔记本 | 5 | 100×80 | 200×160 | §3.7 | | 篝火 | 6 | 160×160 | 320×320 | §3.8 | -**落位实测(2026-11-01 迭代 47 卡④,锁定矩形 contain 呈报备案追认值)**:布告板 130×121/门扇 240×211/木桩 120×180/锻炉 240×193/帐篷 251×170/宝箱 106×90/笔记本 100×66/篝火 160×149——贴图锚定=底中心(帐篷/锻炉/宝箱/篝火/笔记本)+顶锚(门扇悬挂/布告板挂墙);命中矩形按锁定值。换算式登记(源 2× 档→落位尺寸)存 artwork 工作区,git 提交 3443890d 一线可考。 +**落位实测(锁定矩形 contain)**:布告板 130×121/门扇 240×211/木桩 120×180/锻炉 240×193/帐篷 251×170/宝箱 106×90/笔记本 100×66/篝火 160×149——贴图锚定=底中心(帐篷/锻炉/宝箱/篝火/笔记本)+顶锚(门扇悬挂/布告板挂墙);命中矩形按锁定值。换算式登记(源 2× 档→落位尺寸)存 artwork 工作区。 **3.1 布告板(→ 图鉴)** ``` @@ -156,7 +156,7 @@ A campfire made of a ring of grey stones around crossed stacked logs with a warm - 冷色像素占比 ≥55%;本层不应出现任何暖色高饱和像素 - 目检:顶部约 1/16 完全空旷;**无地平线、无远景地面带**(远山自然渐隐过渡到地面);不含围墙、门柱、门扇、物件、角色 - 目检/机检:门洞 x1040–1520 处**有一条清晰可辨、向远处收窄的土路**(非纯色块),透出「出去即冒险」 -- 机检/目检:全幅**无任何独立物件/图标/徽章/标记**(前景地面除小路外全空);参考做法=中下方块区独立色数应≈邻区(旧口径 v1 该区仅 179 色) +- 机检/目检:全幅**无任何独立物件/图标/徽章/标记**(前景地面除小路外全空);参考做法=中下方块区独立色数应≈邻区 **围墙层 `scene_camp_wall`** - 透明底 `#F2F2F2` 可去底、奶油描边闭合 @@ -164,7 +164,7 @@ A campfire made of a ring of grey stones around crossed stacked logs with a warm - 目检:密排竖木桩、桩顶削尖、不透缝、无横木;门洞 x1040–1520 **完全透明**(透出 bg 小路)、无门扇 - 单张色数 ≤32(量化后)、缩放为整数倍无拉伸痕迹 -> **量化与缩放实况注记(2026-11-01 迭代 47 卡④ 落地)**:围墙层与八件已按营地主色板 **32 色重量化回写**(art-bible §4.1 子板行——违例对 0);落位缩放实况=源 2× 档经后处理换算为锁定矩形 contain(×0.1934–0.4404 非整数倍),「整数倍无拉伸痕迹」判据的机检面以落位实测尺寸与目检兜底执行。 +> **量化与缩放实况注记**:围墙层与八件已按营地主色板 **32 色重量化回写**(art-bible §4.1 子板行——违例对 0);落位缩放实况=源 2× 档经后处理换算为锁定矩形 contain(×0.1934–0.4404 非整数倍),「整数倍无拉伸痕迹」判据的机检面以落位实测尺寸与目检兜底执行。 **八件** - 单件居中、四周留边、整件完整不出画 @@ -175,10 +175,10 @@ A campfire made of a ring of grey stones around crossed stacked logs with a warm --- -## 5. 已裁(2026-11-01 用户裁,随迭代 47 卡④ 开工门销号;不再阻塞坐标表与定稿) +## 5. 已裁(2026-11-01 用户裁;不再阻塞坐标表与定稿) 1. **帐篷尺寸**:300×170 追认现值(各素材第一张样本稿已过审为终稿;重定即按比例重出、不裁) 2. **门扇高宽**:240×220 追认现值,坐标按门洞 x520–760 对齐(§2.3);围墙带桩身高 43px、门扇叠在门洞上的叠放关系随此锁定 -3. **布告板位置**:采纳建议值 `(845, 268, 130, 140)` 挂回围墙带(y330 悬空案弃);终值随坐标表(卡④ `camp_scene_layout.tres`)落盘 -4. **描边颜色**:奶油色追认——去底脚本「奶油描边膨胀 3px 当屏障」的技术前提随现值锁定(§1 注记同源);改深灰褐须换去底方案全批重出,不裁 -5. **营地环境子板色值**:不前置拍板——T1 量化场景实际用色后按 art-bible §4.1 两道门登记(语义检查+RGB 三通道差 ≥8/255),本卡仍不复述色值 +3. **布告板位置**:采纳建议值 `(845, 268, 130, 140)` 挂回围墙带;终值随坐标表(`camp_scene_layout.tres`)落盘 +4. **描边颜色**:奶油色追认——去底脚本「奶油描边膨胀 3px 当屏障」的技术前提随现值锁定(§1 注记同源);改深灰褐须换去底方案全量重出,不裁 +5. **营地环境子板色值**:不前置拍板——量化场景实际用色后按 art-bible §4.1 两道门登记(语义检查+RGB 三通道差 ≥8/255),本卡仍不复述色值 diff --git a/design/engineering/architecture/architecture.md b/design/engineering/architecture/architecture.md index e6660be0..b95302b8 100644 --- a/design/engineering/architecture/architecture.md +++ b/design/engineering/architecture/architecture.md @@ -3,13 +3,11 @@ ## 文档状态 - 版本:1.35 -- 最近更新:2026-11-04(架构审查 5.2 文档漂移订正并入 P1 余项批之后——主角账三件与刷新账件四行补登记替代失效的 HeroLedger 行、MetaProgression 基础层补登记行(四 Autoload 唯一跨 Autoload 依赖件)、拆件定稿节冻结计数摘除(活体清单不冻结计数)、CurioStop 行落账指称随拆件改指;EC8 热重载规格经用户裁决保留原状(实装排期另立待办条目)、一度摘除已撤回,「抗热重载」快照句随规格保留;沿革查 git) - 引擎:Godot 4.7.2-stable(GDScript 单语言;2026-09-07 锁定) - 评审模式:solo(`review-mode.txt`,2026-09-12 用户拍板——TD/LP 门禁按 solo 跳过,用户授权架构产出自主推进、迭代期回调) - 覆盖 GDD:现行全集(根索引=`design/gdd/02-系统清单.md`,文档树构成以根索引为准) - 事实源地位:本文是架构事实的唯一来源——分层/所有权/数据流/API 边界/测试与质量域均以本文为准;历史决策沿革查 git commit log,不另设决策文档体系 -- 实现实证:`game/`(2026-09-10 起开发,**现为完整游戏开发版本,已非垂直切片**;测试层级=冒烟/单元/集成/系统四级+UI 探针与渲染 golden(2026-10-22 用户裁,测试术语与层级重构批),闸机按改动域分跑在役)——本文档的分层/所有权/数据流均经实现验证,非纯纸面设计 -- 技术总监签核:2026-09-12 — 有条件通过(原条件「决策记录须于正式工程骨架前定稿」已满足:骨架已成、沿革在 git 历史可查;`.claude/docs/director-gates.md` 缺失已登记技术债) +- 实现实证:`game/`(2026-09-10 起开发,**现为完整游戏开发版本,已非垂直切片**;测试层级=冒烟/单元/集成/系统四级+UI 探针与渲染 golden(2026-10-22 用户裁),闸机按改动域分跑在役)——本文档的分层/所有权/数据流均经实现验证,非纯纸面设计 - 主程序可行性:跳过 — solo 模式 --- @@ -79,22 +77,22 @@ ## 模块归属 -> 命名遵循 `design/engineering/code-conventions.md`:领域命名、禁 ID 前缀(文件头注不写文档链接——「实现 GDD:xxx」一类已废止,代码↔设计追溯由 GDD 文档承担)。切片已按此规范完成领域命名批。 +> 命名遵循 `design/engineering/code-conventions.md`:领域命名、禁 ID 前缀(文件头注不写文档链接——「实现 GDD:xxx」一类已废止,代码↔设计追溯由 GDD 文档承担)。 ### 基础层 | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| -| **ConfigDB**(autoload,D2) | 全部玩法数值表与表现层布局配置表(`data/tables/*.tres` + `data/schemas/*.gd`);加载/校验/override/诊断状态机。**行族访问器归位各 schema 表类(表管自己的行查询),本类只留加载/校验/override/诊断门面;表持有成员按域收进四张域容器 Resource(`config_domain_combat/run/crossrun/presentation.gd`——前三件迭代 41 已建件,第四件表现层布局域 2026-10-30 建件,类型化成员 7/7/5/1);三张 resolver 表(board_gen.resolve_row/enemy.resolve_rowset/difficulty.resolve_modifiers)经 `load_tables` 装配段注入各容器,resolver 文件与键零搬移**——红线不变:本类仍是唯一加载与持有单点,"经 ConfigDB 单点读取"=经其持有的表对象 | 类型化域容器属性(每域一张容器);公开面 8(push_diag/is_fatal/reset_diagnostics/diagnostics/diagnostics_count/load_tables/set_reload_gate/reload)、类变量 10 | 无(基础层顶点) | Resource/.tres 加载、autoload 生命周期——LOW | -| **SlotStore**(`core/slot_store.gd`,D3 存档槽位域件,已建件——迭代 41 存量债批) | 存档三槽位文件域唯一所有者(自 save_manager 收编槽位族):槽位挂载与模板、激活与建删、槽位摘要窥视(peek 族);改名覆盖原语(_rename_overwrite)留 save_manager(IO 原语单点) | 槽位读写原语族+摘要投影(公开 10→11——+active_path 读投影、migrate_legacy_save 公开化;对 SaveManagerCore 反向私取 21 处清零=双向公开面;类变量 4;SaveManager 与菜单消费方经 `save.slots.` 直连) | save_manager(注入路径与模板配置);FileAccess——LOW | -| **MetaStateStore**(`core/meta_state_store.gd`,D3 存档内元进度数据件,已建件——迭代 41 存量债批) | 存档内元进度数据的读写唯一层(自 save_manager 收编 accessor 族:钥石/道具解锁/树节点与叉侧/锻造路线/同调/真视/计数器/摘要——数据读写原语,不含业务规则);save_manager 与 meta_progression 双 God Class 的共同病根=该数据域摊在两文件,本件即其归一 | 写口原语 13+只读投影 6(tree_state/forge_state/attune_state/career_state 四投影+keystone_balance/item_unlocked)=公开 19(add_keystone 私有 `_add_keystone`),零 _data 副本零缓存;MetaProgression 业务层与营地/锻造 UI 消费方经 `save.meta_state.` 直连(meta 的纯转发读方法已退役) | save_manager(序列化接线);FileAccess——LOW | +| **ConfigDB**(autoload,D2) | 全部玩法数值表与表现层布局配置表(`data/tables/*.tres` + `data/schemas/*.gd`);加载/校验/override/诊断状态机。**行族访问器归位各 schema 表类(表管自己的行查询),本类只留加载/校验/override/诊断门面;表持有成员按域收进四张域容器 Resource(`config_domain_combat/run/crossrun/presentation.gd`——四张域容器均已建件,类型化成员 7/7/5/1);三张 resolver 表(board_gen.resolve_row/enemy.resolve_rowset/difficulty.resolve_modifiers)经 `load_tables` 装配段注入各容器,resolver 文件与键零搬移**——红线不变:本类仍是唯一加载与持有单点,"经 ConfigDB 单点读取"=经其持有的表对象 | 类型化域容器属性(每域一张容器);公开面 8(push_diag/is_fatal/reset_diagnostics/diagnostics/diagnostics_count/load_tables/set_reload_gate/reload)、类变量 10 | 无(基础层顶点) | Resource/.tres 加载、autoload 生命周期——LOW | +| **SlotStore**(`core/slot_store.gd`,D3 存档槽位域件,已建件) | 存档三槽位文件域唯一所有者:槽位挂载与模板、激活与建删、槽位摘要窥视(peek 族);改名覆盖原语(_rename_overwrite)留 save_manager(IO 原语单点) | 槽位读写原语族+摘要投影(公开 11:active_path 读投影、migrate_legacy_save 公开化;对 SaveManagerCore 反向私取 21 处清零=双向公开面;类变量 4;SaveManager 与菜单消费方经 `save.slots.` 直连) | save_manager(注入路径与模板配置);FileAccess——LOW | +| **MetaStateStore**(`core/meta_state_store.gd`,D3 存档内元进度数据件,已建件) | 存档内元进度数据的读写唯一层(钥石/道具解锁/树节点与叉侧/锻造路线/同调/真视/计数器/摘要——数据读写原语,不含业务规则);save_manager 与 meta_progression 双 God Class 的共同病根=该数据域摊在两文件,本件即其归一 | 写口原语 13+只读投影 6(tree_state/forge_state/attune_state/career_state 四投影+keystone_balance/item_unlocked)=公开 19(add_keystone 私有 `_add_keystone`),零 _data 副本零缓存;MetaProgression 业务层与营地/锻造 UI 消费方经 `save.meta_state.` 直连(meta 的纯转发读方法已退役) | save_manager(序列化接线);FileAccess——LOW | | **MetaProgression**(autoload,`core/meta_progression.gd`,D3 元进度业务层) | 元进度账本服务:钥石收束入账、营地消费定价与秘宝解锁判定的纯被动服务,零信号零外发;数据读写全经注入的 MetaStateStore(`save.meta_state.` 直连);hero_override() 现算不写表(全零=白板合法态——生效注入只走冒险开始参数面显式传参) | 写口族(天赋树购买/叉侧切换/锻造解锁与升级与选中/同调装配切换等)+解锁判定与读投影;**构造双形态**=autoload 装配走 `.new()` 零参+`_ready` 从 autoload 链取依赖(工程序 ConfigDB→RngService→SaveManager→MetaProgression,注册顺序即依赖序),单测/工具走 `.new(db, save)` 直构形态(不入树零 _ready)——**四个 Autoload 中唯一有跨 Autoload 依赖的件(ConfigDB/SaveManager)** | ConfigDB(定价与档位表值);SaveManager(存档访问器,经节点路径延迟取用) | autoload 生命周期——LOW | | **RngService**(autoload,D2) | master_seed、各流 scope 计数器(封闭流词表现值以 `RngServiceCore.PURPOSE_TAGS` 为准;增流走 P1 评审) | `set_master_seed()`(唯一调用方 C2);`open_stream(stream)` 有状态门面;`derive_at(stream, scope)` 纯函数;只读计数器 | ConfigDB(无) | 无——纯逻辑 | -| **action_economy**(A3) | AP/RAP 账本、last_round_end、轮次相位机 {Idle, Active, Waiting}、结束仲裁;dig_paid 命中施加抽私有单点(_apply_dig_paid_hits——矿脉储能入池面) | 意图与通知布尔面:notify_round_start / request_dig / request_stop / request_refresh(收折后价入参——折价计算归 BattleRefreshFlow 单点)/ notify_settlement_done / notify_combat_end;预授权通道:grant_reserve_ap / finish_round_stop;ap/rap/phase 只读;实测类变量 10 | ConfigDB(ActionEconomyTable);EffectPort(效果端口件——发射经端口单点;2026-11-02 轴戊设计闭合、迭代 49 卡① 建件,effect_engine 直连退役);B1 回发 next_round_mode/battle_over | 无 | -| **variation 定义**(A4) | VariationTable schema(现行 6 行:六 region——贫矿脉 global 行 2026-10-16 用户令屏蔽删行,global 型机制代码保留)与 F1 候选池门控谓词 | `variant_pool(level_index, board_type, node_type="")`(门控三维:unlock+board_types+节点身份——global 行仅 boss/elite 入池,缺省跳过零扰动);`global_variant_row(level_index, board_type, node_type)`(全局型单行决议访问器) | ConfigDB(VariationTable) | 无 | +| **action_economy**(A3) | AP/RAP 账本、last_round_end、轮次相位机 {Idle, Active, Waiting}、结束仲裁;dig_paid 命中施加抽私有单点(_apply_dig_paid_hits——矿脉储能入池面) | 意图与通知布尔面:notify_round_start / request_dig / request_stop / request_refresh(收折后价入参——折价计算归 BattleRefreshFlow 单点)/ notify_settlement_done / notify_combat_end;预授权通道:grant_reserve_ap / finish_round_stop;ap/rap/phase 只读;实测类变量 10 | ConfigDB(ActionEconomyTable);EffectPort(效果端口件——发射经端口单点,effect_engine 直连退役);B1 回发 next_round_mode/battle_over | 无 | +| **variation 定义**(A4) | VariationTable schema(现行 6 行:六 region——贫矿脉 global 行已屏蔽删行,global 型机制代码保留)与 F1 候选池门控谓词 | `variant_pool(level_index, board_type, node_type="")`(门控三维:unlock+board_types+节点身份——global 行仅 boss/elite 入池,缺省跳过零扰动);`global_variant_row(level_index, board_type, node_type)`(全局型单行决议访问器) | ConfigDB(VariationTable) | 无 | | **status_container**(B3) | 状态实例容器(战斗域生命周期、跨轮跨图延续) | 5 API:notify_battle_start / apply_effect / query_active / decay_round / notify_battle_end | ConfigDB(StatusEffectTable) | 无(RefCounted) | -| **effect_engine**(内容数据驱动扩展批 iter17 建域) | 零运行时可变状态的系统(见「架构原则」条 8):全同步解释器——事件由宿主在明确代码点位显式调 dispatch 进件,命中序=装载声明序(feats→treasure→树规则)写死保种子复放,不是事件总线/事件循环;事件/事实/效果类型/算子四词表封闭 + 树规则合成订阅六键(posture 每关首轮窗/sense 两组限次 counter 闸·adv_ 前缀走冒险桶跨战斗持久) | rebuild(每战重建订阅表)/`dispatch(ctx, event, payload, facts)`/`validate_trigger_row` + 静态计数口 `counter`·`counter_add`·`counter_spend`·`bucket_of`·`counter_id_legal`(计数器读写只经 EffectContext 引用束,无导出/灌入接口) | ConfigDB(feats/treasure 行集)、EffectContext(四桶引用由宿主持有:round/battle 桶归编排器、level 桶归关卡域、adventure 桶归应用层——RunLedger 已随迭代 39 拆件批退役,桶字典由 adventure_runner 持有) | 无(零随机全确定) | -| **save_system**(D3,Alpha;iter27 已升格 autoload「SaveManager」) | 存档格式与版本比较 | save_manager 公开面 7→14(+set_read_only/read_only/reset_to_default/data_snapshot/restore_data 五承接方法+peek_summary_at/rename_overwrite 两更名公开化);(契约规范源:`../../gdd/systems/表现与支撑/存档序列化.md`——契约锚:SAVE_FORMAT_VERSION + master_seed + 各流 scope 计数器快照,须在无正在执行中的 open_stream 实例时切出) | ConfigDB、RngService 只读计数器 | FileAccess——LOW | +| **effect_engine** | 零运行时可变状态的系统(见「架构原则」条 8):全同步解释器——事件由宿主在明确代码点位显式调 dispatch 进件,命中序=装载声明序(feats→treasure→树规则)写死保种子复放,不是事件总线/事件循环;事件/事实/效果类型/算子四词表封闭 + 树规则合成订阅六键(posture 每关首轮窗/sense 两组限次 counter 闸·adv_ 前缀走冒险桶跨战斗持久) | rebuild(每战重建订阅表)/`dispatch(ctx, event, payload, facts)`/`validate_trigger_row` + 静态计数口 `counter`·`counter_add`·`counter_spend`·`bucket_of`·`counter_id_legal`(计数器读写只经 EffectContext 引用束,无导出/灌入接口) | ConfigDB(feats/treasure 行集)、EffectContext(四桶引用由宿主持有:round/battle 桶归编排器、level 桶归关卡域、adventure 桶归应用层——RunLedger 已退役,桶字典由 adventure_runner 持有) | 无(零随机全确定) | +| **save_system**(D3,Alpha;已升格 autoload「SaveManager」) | 存档格式与版本比较 | save_manager 公开面 14(set_read_only/read_only/reset_to_default/data_snapshot/restore_data 五承接方法+peek_summary_at/rename_overwrite 两更名公开化);(契约规范源:`../../gdd/systems/表现与支撑/存档序列化.md`——契约锚:SAVE_FORMAT_VERSION + master_seed + 各流 scope 计数器快照,须在无正在执行中的 open_stream 实例时切出) | ConfigDB、RngService 只读计数器 | FileAccess——LOW | | **settings/localization**(D6,愿景) | 设置项、翻译数据 | (契约规范源:`../../gdd/systems/表现与支撑/设置与本地化.md`) | ConfigDB | 无 | ### 核心层 @@ -102,93 +100,92 @@ | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| | **board_generator**(A1) | 生成算法(五阶段管线)、BoardGenTable 回填、生成期指标集、合法性谓词(clearable / R₀≠S / min_safe)、可推理率度量(metric_version);生成姿态 = MVP 同步生成 + 加载幕(切片实证 10×10/12×12 同步可接受,WorkerThread 留扩展) | `generate(L, D, rng) -> Board`;度量独立入口×3(推理器 / F3 度量 / 合法性谓词——独立纯函数、同一实现) | ConfigDB(BoardGenTable/VariationTable);board_gen 流(一次 open_stream = 一张图);dig_ap_cost 只读 | 无 | -| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 封印集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);查询只读面(current_board / hero_pos / is_revealed / has_seal 等);`compute_move_path(cell)` 只读;`preview_reveal(cell)` 只读预览口(零写入零事件——0 格连锁传播闭包;迭代 50 己案建口);`retire_board()`;+harmful_variants/harmful_adjacent 两有害判定面(自编排器归位);三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举;公开方法面 19→21(超阈值贴顶——还债归待办清单 P0 条目「minesweeper_rules 公开面还债」) | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end(迭代 41 由属性改方法)/ 相位 | 无(零表读取、零 UI——切片实证) | -| **unit_container**(B2) | hero/enemy 单位实例(hp/atk/实例池:池快照+冷却+摇定动作+保底计数)、行值快照 | spawn / query_alive / rollable_skills / special_skills / check_trigger_unlocks / set_pending_action / pending_action / basic_streak / commit_action / tick_cooldowns / apply_damage / heal / default_target / check_skill_unlocks / despawn_all(2026-09-16 敌人技能池批:query_beat/query_attack/advance 随行为环退役;rollable_skills/special_skills/check_trigger_unlocks 带 facts 参——2026-10-27 情境条件触发器实装,事实缺键=条件假拦下,百分比事实走阈值式折算) | ConfigDB(EnemyTable/SkillTable/HeroTable) | 无 | -| **reward_economy**(B4) | 格面资源身份映射(install 期预分配、Ready 只读、换图映射消亡)、极性路由字典面((类型, 极性)→ 字典行查询;路由执行归 B1 授予段)、F6 当量供给投影;装配期摇号面已拆出掷格件 RewardRoller(2026-11-02 轴戊设计闭合、迭代 49 卡① 建件——roll_board 装配序=守卫→复位→委托→收纳→ready;受理账面留守) | 封闭 API:roll_board / query_identity / query_full_snapshot / grant / grant_clear / retire_mapping / polarity_row / phase(weighted_pick 退役——返行选行算子迁掷格件);另有 is_mapped 静默布尔投影(批量工具用);实测类变量 11 | ConfigDB(RewardTable);BattleFxHost 经注入 Callable `luck_bias_query` 取偏运合计(reward_roll 发射与 bias_rewards 求和移至效果层完成);reward_roll 流(scope = 每次 install 批,取号经掷格件) | 无 | +| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 封印集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);查询只读面(current_board / hero_pos / is_revealed / has_seal 等);`compute_move_path(cell)` 只读;`preview_reveal(cell)` 只读预览口(零写入零事件——0 格连锁传播闭包);`retire_board()`;+harmful_variants/harmful_adjacent 两有害判定面(编排器归位);三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举;公开方法面 21(超阈值贴顶——还债归待办清单 P0 条目「minesweeper_rules 公开面还债」) | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end/ 相位 | 无(零表读取、零 UI——切片实证) | +| **unit_container**(B2) | hero/enemy 单位实例(hp/atk/实例池:池快照+冷却+摇定动作+保底计数)、行值快照 | spawn / query_alive / rollable_skills / special_skills / check_trigger_unlocks / set_pending_action / pending_action / basic_streak / commit_action / tick_cooldowns / apply_damage / heal / default_target / check_skill_unlocks / despawn_all(query_beat/query_attack/advance 已随行为环退役;rollable_skills/special_skills/check_trigger_unlocks 带 facts 参——情境条件触发器在役,事实缺键=条件假拦下,百分比事实走阈值式折算) | ConfigDB(EnemyTable/SkillTable/HeroTable) | 无 | +| **reward_economy**(B4) | 格面资源身份映射(install 期预分配、Ready 只读、换图映射消亡)、极性路由字典面((类型, 极性)→ 字典行查询;路由执行归 B1 授予段)、F6 当量供给投影;装配期摇号面已拆出掷格件 RewardRoller(roll_board 装配序=守卫→复位→委托→收纳→ready;受理账面留守) | 封闭 API:roll_board / query_identity / query_full_snapshot / grant / grant_clear / retire_mapping / polarity_row / phase(weighted_pick 退役——返行选行算子迁掷格件);另有 is_mapped 静默布尔投影(批量工具用);实测类变量 11 | ConfigDB(RewardTable);BattleFxHost 经注入 Callable `luck_bias_query` 取偏运合计(reward_roll 发射与 bias_rewards 求和移至效果层完成);reward_roll 流(scope = 每次 install 批,取号经掷格件) | 无 | | **helper_items**(A5,切片已实装秘宝域) | HelperItemTable、探测显影语义 | (契约规范源:`../../gdd/systems/跨局循环/秘宝.md`——桥接位:A2 查询接口 + A4 counter_item_ids) | A2 / A4 / B4 | 无 | -| **CurioDeck**(`core/curio_deck.gd`,A5 秘宝域令牌池件,迭代 37 自 AdventureRunner 拆出) | 三选一/商店共享池的持久多重集、抽签(候选抽取)、cap 库存与专长凭证三计数与判定唯一所有者——件只管池与判定,停点编排与兑付推进留冒险编排器 | `draw_candidates(channel)` 抽签;`consume_deck_token` / `consume_pool_purchase` 池消耗;`cap_ok` 上限判定;`feat_ticket_consider` 凭证判定;`stock_snapshot` / `pool_stock` 只读投影;商店购买消费经注入 Callable 链至 CurioStop 兑付单点(迭代 39 起转纯池——bind_handlers 反向回调已退役) | ConfigDB(秘宝令牌行集);注入 RngServiceCore(reward_pick 封闭流,禁自建随机) | 无(RefCounted 纯逻辑) | -| **ShopSession**(`core/shop_session.gd`,商店会话件,迭代 37 自 LevelRunner 拆出) | 关卡商店双模式(legacy 固定三件加定价/pool 共享令牌池)的货架、定价、购买与刷新唯一宿主——账本/钱包/装配集归宿主 LevelRunner(共享引用经 `bind` 注入,出账直接落同一引用改写宿主账本);legacy 模式零 RNG 零池消费(off 对照承载) | 货架与定价只读面(`shop_products` / `shop_shelf` / `current_price` / `shop_refresh_cost`)+写入口(`buy_product` / `buy_pool_item` / `shop_refresh` / `player_request_refresh` / `open_pool`);外部调用面=调用方经宿主 LevelRunner 公开成员 `shop` 直连(调用直连不留委托壳,2026-10-26 Middle Man 裁定;迭代 42 拆除),直连消费的方法=`shop_products`/`current_price`/`purchased_tier`/`buy_product`/`player_request_refresh`/`set_shop_pool`/`pool_price`/`shop_shelf`/`shop_refresh_free_left`/`shop_refresh_cost`/`shop_refresh`/`spend_gp`/`buy_pool_item`/`is_shop_pool`/`shop_bp_shelf`/`shop_bp_visit_buys`(另白盒两入口仅测试侧:`_draw_shelf`/`_spend_discounted`);set_shop_pool 调用面=pool 注入经 LevelRunner 构造 ctx 供给(构造期内部直调,原委托块注释「AdventureRunner._start_current_level 唯一调用方」系陈旧表述、随壳删除作废),测试面直连 `shop.set_shop_pool` | ConfigDB(商店行集);注入 RngServiceCore;宿主钱包/账本引用;pool 模式令牌消耗与判定经注入 Callable 转 CurioDeck | 无 | -| **HeroStats**(`core/hero_stats.gd`,主角数值账件,已实装(2026-10-27 迭代 39 拆件批——原 HeroLedger 登记行拆件替代)) | 冒险生命周期主角数值域唯一所有者:生命账与特性持有集(活引用注入——关内兑付当关生效)、锻造强化快照、调试百分比通道、攻击/甲类型轴快照、生效上限/攻击/护甲公式与回血封顶公式单点、续玩生命钳制收口;生效公式经注入 GainJournal 只读引用取加算区汇总(无反向引用不成环) | 构造注入;单写原语族+只读投影;断点自交片段(账本键) | ConfigDB(表值读取);注入 GainJournal(只读);由 AdventureRunner 冒险开始创建、注入战斗 encounter | 无(RefCounted 纯逻辑) | -| **GainJournal**(`core/gain_journal.gd`,加算日记件,已实装(2026-10-27 迭代 39 拆件批)) | 统一冒险加算区与获得记录唯一所有者:获得记录三层结构=记录列表(三选一件/商店购买/战末奖励各一条)→属性增益明细(带来源指回)→四轴汇总(由明细同步维护);三写通道统一走 gain_bonus 单写原语(source_class=curio_pick/shop_product/battle_export);本局钥石增量与逐杀明细、真视使用记录、商店已购档数记账同域 | gain_bonus 单写原语;记录与汇总只读投影;断点自交片段(获得日记键) | 由 AdventureRunner 冒险开始创建、注入 CurioStop/level_runner/ShopSession/战斗 encounter(战末 bonus 四轴经 gain_bonus 汇入) | 无(RefCounted 纯逻辑) | -| **GpWallet**(`core/gp_wallet.gd`,GP 钱包件,已实装(2026-10-27 迭代 39 拆件批)) | 冒险局内货币唯一所有者(LevelRunner 与 ShopSession 读写全指此单点;冒险开始=0、收束清零,不入存档不入摘要) | gain/spend/clear 单写原语 | 由 AdventureRunner 冒险开始创建;宿主与商店经注入引用读写 | 无(RefCounted 纯逻辑) | -| **RefreshBank**(`core/refresh_bank.gd`,刷新账件,已实装(2026-10-27 迭代 39 拆件批)) | 三选一刷新三源账唯一所有者:X 刷新件每碰三选一重给(优先消耗不结转)/Y 营地升级行冒险周期池(用完即无)/刷新券存量账(冒险级跨停点持久)+GP 付费刷计数与报价公式;零停点态依赖(免费/付费支出的编排归 CurioStop,本件只记账) | 支出与余量原语+报价公式;断点自交片段(refresh_stock/attune_refresh_y 两键,Y 缺键回退参数面) | ConfigDB(刷新件与营地升级行表值);注入 CurioStop 支出路径 | 无(RefCounted 纯逻辑) | -| **AttuneLoadout**(`core/attune_loadout.gd`,同调配装件,已实装(2026-10-27 迭代 39 拆件批)) | 装备中的秘宝件对象集唯一所有者(每件内含充能单位与重置周期);同调充能的物化行为唯一事实源——种行/补行改写时同步(RunLedger 充能字典轨与差额对账函数退役);旧档 aux_items 同调行迁移归件 | 构造注入;充能查询/消耗/按周期重置原语;断点自交片段(attunement_charges 键,键名与策略不变) | ConfigDB(秘宝行集);TreasureItems(同调行投放面);注入战斗使用路径 | 无 | -| **CurioStop**(`core/curio_stop.gd`,三选一停点件,已实装(2026-10-27 迭代 39 拆件批)) | 三选一停点编排唯一所有者(架构原则 9 本域承载):停点三态(关卡完成三选一在途/已兑付待推进/奖励节点三选一在途)、刷新编排(三源账面归 RefreshBank 件、查停点态→支出→重抽重发编排留本件)、兑付方法族(pick/refresh/redeem/skip)、凭证出箱(RAP/时沙待注入);三选一信号面自带;零自动推进停点语义承载 | 对外=开停点/刷新/兑付/放行谓词/交断点片段五组入口+信号面(curio_choice_presented/curio_resolved);由 AdventureRunner 关卡完成受理时调用 | ConfigDB;注入 CurioDeck(抽签/摘牌)、HeroStats 与 GainJournal(兑付落账单写原语)、RefreshBank(刷新支出);随机只经 CurioDeck 的 reward_pick 封闭流 | 无 | -| **breakpoint_store**(`core/breakpoint_store.gd`,冒险域·断点组装与回放件,已建件——迭代 45) | 存档断点组装与回放唯一承载(自 adventure_runner 收编 6 成员+函数族):断点快照拼盘、回放回填、读侧策略分发;`BREAKPOINT_FIELDS` 27 键登记单源随件(键名/策略标签/键序冻结) | 构造=引用束注入(九引用束成员解包为原名成员——保迁移函数体逐字);`resume_adventure` 留宿主(壳+宿主侧回填语句——R2 所有权缝分家);断点键面零变化;公开方法面 5→18(13 新面承接 adventure_runner 私取清零+bp_read 公开化);实测类变量 15(贴顶禁再增) | adventure_runner(宿主);注入主角账三件与 curio/stop/bank/loadout 引用 | 无(RefCounted 纯逻辑) | +| **CurioDeck**(`core/curio_deck.gd`,A5 秘宝域令牌池件) | 三选一/商店共享池的持久多重集、抽签(候选抽取)、cap 库存与专长凭证三计数与判定唯一所有者——件只管池与判定,停点编排与兑付推进留冒险编排器 | `draw_candidates(channel)` 抽签;`consume_deck_token` / `consume_pool_purchase` 池消耗;`cap_ok` 上限判定;`feat_ticket_consider` 凭证判定;`stock_snapshot` / `pool_stock` 只读投影;商店购买消费经注入 Callable 链至 CurioStop 兑付单点(已转纯池——bind_handlers 反向回调已退役) | ConfigDB(秘宝令牌行集);注入 RngServiceCore(reward_pick 封闭流,禁自建随机) | 无(RefCounted 纯逻辑) | +| **ShopSession**(`core/shop_session.gd`,商店会话件) | 关卡商店双模式(legacy 固定三件加定价/pool 共享令牌池)的货架、定价、购买与刷新唯一宿主——账本/钱包/装配集归宿主 LevelRunner(共享引用经 `bind` 注入,出账直接落同一引用改写宿主账本);legacy 模式零 RNG 零池消费(off 对照承载) | 货架与定价只读面(`shop_products` / `shop_shelf` / `current_price` / `shop_refresh_cost`)+写入口(`buy_product` / `buy_pool_item` / `shop_refresh` / `player_request_refresh` / `open_pool`);外部调用面=调用方经宿主 LevelRunner 公开成员 `shop` 直连(调用直连不留委托壳,2026-10-26 Middle Man 裁定),直连消费的方法=`shop_products`/`current_price`/`purchased_tier`/`buy_product`/`player_request_refresh`/`set_shop_pool`/`pool_price`/`shop_shelf`/`shop_refresh_free_left`/`shop_refresh_cost`/`shop_refresh`/`spend_gp`/`buy_pool_item`/`is_shop_pool`/`shop_bp_shelf`/`shop_bp_visit_buys`(另白盒两入口仅测试侧:`_draw_shelf`/`_spend_discounted`);set_shop_pool 调用面=pool 注入经 LevelRunner 构造 ctx 供给(构造期内部直调),测试面直连 `shop.set_shop_pool` | ConfigDB(商店行集);注入 RngServiceCore;宿主钱包/账本引用;pool 模式令牌消耗与判定经注入 Callable 转 CurioDeck | 无 | +| **HeroStats**(`core/hero_stats.gd`,主角数值账件,已实装) | 冒险生命周期主角数值域唯一所有者:生命账与特性持有集(活引用注入——关内兑付当关生效)、锻造强化快照、调试百分比通道、攻击/甲类型轴快照、生效上限/攻击/护甲公式与回血封顶公式单点、续玩生命钳制收口;生效公式经注入 GainJournal 只读引用取加算区汇总(无反向引用不成环) | 构造注入;单写原语族+只读投影;断点自交片段(账本键) | ConfigDB(表值读取);注入 GainJournal(只读);由 AdventureRunner 冒险开始创建、注入战斗 encounter | 无(RefCounted 纯逻辑) | +| **GainJournal**(`core/gain_journal.gd`,加算日记件,已实装) | 统一冒险加算区与获得记录唯一所有者:获得记录三层结构=记录列表(三选一件/商店购买/战末奖励各一条)→属性增益明细(带来源指回)→四轴汇总(由明细同步维护);三写通道统一走 gain_bonus 单写原语(source_class=curio_pick/shop_product/battle_export);本局钥石增量与逐杀明细、真视使用记录、商店已购档数记账同域 | gain_bonus 单写原语;记录与汇总只读投影;断点自交片段(获得日记键) | 由 AdventureRunner 冒险开始创建、注入 CurioStop/level_runner/ShopSession/战斗 encounter(战末 bonus 四轴经 gain_bonus 汇入) | 无(RefCounted 纯逻辑) | +| **GpWallet**(`core/gp_wallet.gd`,GP 钱包件,已实装) | 冒险局内货币唯一所有者(LevelRunner 与 ShopSession 读写全指此单点;冒险开始=0、收束清零,不入存档不入摘要) | gain/spend/clear 单写原语 | 由 AdventureRunner 冒险开始创建;宿主与商店经注入引用读写 | 无(RefCounted 纯逻辑) | +| **RefreshBank**(`core/refresh_bank.gd`,刷新账件,已实装) | 三选一刷新三源账唯一所有者:X 刷新件每碰三选一重给(优先消耗不结转)/Y 营地升级行冒险周期池(用完即无)/刷新券存量账(冒险级跨停点持久)+GP 付费刷计数与报价公式;零停点态依赖(免费/付费支出的编排归 CurioStop,本件只记账) | 支出与余量原语+报价公式;断点自交片段(refresh_stock/attune_refresh_y 两键,Y 缺键回退参数面) | ConfigDB(刷新件与营地升级行表值);注入 CurioStop 支出路径 | 无(RefCounted 纯逻辑) | +| **AttuneLoadout**(`core/attune_loadout.gd`,同调配装件,已实装) | 装备中的秘宝件对象集唯一所有者(每件内含充能单位与重置周期);同调充能的物化行为唯一事实源——种行/补行改写时同步(RunLedger 充能字典轨与差额对账函数退役);旧档 aux_items 同调行迁移归件 | 构造注入;充能查询/消耗/按周期重置原语;断点自交片段(attunement_charges 键,键名与策略不变) | ConfigDB(秘宝行集);TreasureItems(同调行投放面);注入战斗使用路径 | 无 | +| **CurioStop**(`core/curio_stop.gd`,三选一停点件,已实装) | 三选一停点编排唯一所有者(架构原则 9 本域承载):停点三态(关卡完成三选一在途/已兑付待推进/奖励节点三选一在途)、刷新编排(三源账面归 RefreshBank 件、查停点态→支出→重抽重发编排留本件)、兑付方法族(pick/refresh/redeem/skip)、凭证出箱(RAP/时沙待注入);三选一信号面自带;零自动推进停点语义承载 | 对外=开停点/刷新/兑付/放行谓词/交断点片段五组入口+信号面(curio_choice_presented/curio_resolved);由 AdventureRunner 关卡完成受理时调用 | ConfigDB;注入 CurioDeck(抽签/摘牌)、HeroStats 与 GainJournal(兑付落账单写原语)、RefreshBank(刷新支出);随机只经 CurioDeck 的 reward_pick 封闭流 | 无 | +| **breakpoint_store**(`core/breakpoint_store.gd`,冒险域·断点组装与回放件,已建件) | 存档断点组装与回放唯一承载:断点快照拼盘、回放回填、读侧策略分发;`BREAKPOINT_FIELDS` 27 键登记单源随件(键名/策略标签/键序冻结) | 构造=引用束注入(九引用束成员解包为原名成员——保迁移函数体逐字);`resume_adventure` 留宿主(壳+宿主侧回填语句——R2 所有权缝分家);断点键面零变化;公开方法面 18(13 新面承接 adventure_runner 私取清零+bp_read 公开化);实测类变量 15(贴顶禁再增) | adventure_runner(宿主);注入主角账三件与 curio/stop/bank/loadout 引用 | 无(RefCounted 纯逻辑) | ### 功能层 | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| | **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主面与树规则挂点施加面(**已拆出 BattleFxHost 并实装(2026-10-28 迭代 40——battle_fx_host.gd/reward_grant.gd 两件在库,效果引擎宿主面归 BattleFxHost 行承载,拆件细则见「战斗编排域拆件定稿」节);2026-10-29 零豁免裁设计闭合:RoundCycle/BattleFacts 两新件随批(宿主 38→15、S13 豁免第三条注销——见下两行与定稿节轴丁)**) | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方=B1 域文件集:battle_orchestrator.gd + settlement/ 五段段类 + damage_controller + 拆件后三新件**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) | -| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,2026-10-26 编排域拆件设计定稿——已建件(迭代 40 实装)) | 效果引擎挂点施加面唯一承载(自 battle_orchestrator 收编 fx 族):事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积(战末宿主 drain 汇入账本)、揭示待兑队列与兑付(含 _fx_revealing 再入闸——同步信号回环防二次缓冲二次兑付)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变);2026-11-02 轴戊设计闭合落地(迭代 49 卡①):效果端口件为业务类朝向机房的窄门面——端口在本件组建、bind_port 组装期转注两业务类,计数器账面收归本件;实测类变量 15 | 构造=引用束注入(防 _init max-parameters 新键);bind 时注入 emit Callable(行发射经宿主协议面单点)与兑付 Callable(RewardGrant 授予面——揭示队列 flush 回调);+mark_new_resource_type/+add_bonus_delta 两公开累积方法(grant 消费面——类变量 15 不变,方法-only);只读投影分两类消费方:AC 累积/bonus_delta 供宿主呈现快照与战末 drain,揭示态供宿主 A2 订阅旁路判定;`luck_bias_for(cell_count) -> int` 偏运合计查询口(体内三参形 dispatch——reward_roll 发射与 bias_rewards 求和自 RewardEconomy 收回本件,RewardEconomy 经注入 Callable 消费) | EffectEngine(EffectContext 引用束);RngServiceCore(fx_reveal 封闭流——除该流外零随机);A2 minesweeper(板读与 fx_reveal 调用);A3 action_economy(queue_ap_delta 读);B3 status_container 读;B2 unit_container 读(hp_ratio);DamageController(set_hero_ac_override);ConfigDB;encounter 引用 | 无(零 await——效果引擎全同步解释器) | +| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,已建件) | 效果引擎挂点施加面唯一承载:事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积(战末宿主 drain 汇入账本)、揭示待兑队列与兑付(含 _fx_revealing 再入闸——同步信号回环防二次缓冲二次兑付)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变);效果端口件为业务类朝向机房的窄门面——端口在本件组建、bind_port 组装期转注两业务类,计数器账面收归本件;实测类变量 15 | 构造=引用束注入(防 _init max-parameters 新键);bind 时注入 emit Callable(行发射经宿主协议面单点)与兑付 Callable(RewardGrant 授予面——揭示队列 flush 回调);+mark_new_resource_type/+add_bonus_delta 两公开累积方法(grant 消费面——类变量 15 不变,方法-only);只读投影分两类消费方:AC 累积/bonus_delta 供宿主呈现快照与战末 drain,揭示态供宿主 A2 订阅旁路判定;`luck_bias_for(cell_count) -> int` 偏运合计查询口(体内三参形 dispatch——reward_roll 发射与 bias_rewards 求和自 RewardEconomy 收回本件,RewardEconomy 经注入 Callable 消费) | EffectEngine(EffectContext 引用束);RngServiceCore(fx_reveal 封闭流——除该流外零随机);A2 minesweeper(板读与 fx_reveal 调用);A3 action_economy(queue_ap_delta 读);B3 status_container 读;B2 unit_container 读(hp_ratio);DamageController(set_hero_ac_override);ConfigDB;encounter 引用 | 无(零 await——效果引擎全同步解释器) | | **RewardGrant**(`core/reward_grant.gd`,B1 域·奖励授予件,2026-10-26 编排域拆件设计定稿——实现批建件) | 奖励授予唯一兑付管线(自 battle_orchestrator 收编 grant 族):极性字典路由与封印溢价兑付(_grant_routed)、三种行应用(flat/percent/gp)、伤害单据提交面(_submit 族)、清图奖励与身份授予、秘宝使用编排(use_treasure 四步)、战斗域 GP 缓冲 escrow 与授予段暂存伤害闸(_defer_board_damage/_deferred_board) | use_treasure 编排入口(treasure_interact_controller 经组合根现值回调直连);授予入口(结算段类直调);+feat_yield_adjust(专长收益调整——自编排器归位);只读投影(escrow 读与 GP 掉落合计——宿主呈现快照与 _roll_gp_drop 消费) | B4 RewardEconomy(polarity_row/grant);B1 域 DamageController(开单);BattleFxHost 引用(treasure_used 事件发射与计数器消耗);A2 minesweeper(校验回调/fx_reveal/remove_mines_in);A3 action_economy(相位闸/grant_ap/queue_ap_delta);B3 status_container(apply_effect/池读);B2 unit_container(hero_unit/heal);ConfigDB;注入 emit Callable、宿主 fatal Callable(battle_result 状态机唯一写点留宿主)、宿主 attune 读投影(_attune_safe_seen)、encounter 账本引用;TreasureItems 经宿主 setter 转发注入(库存注入时序在宿主构造之后) | 无(零随机零 await——授予期零随机口径,roll 值授予前已定) | -| **damage_controller**(B1 域·伤害单据管线) | 伤害单据唯一兑现管线(单据九栏目声明→分量掷点/克制修正/伤害下限归一→明细行发射;双方同规);`damage_taken` 唯一发射口(_emit_hero_damage_taken)+唯一消费族(_apply_hero_damage_effects)——敌方攻击/地形/危险格/错误封印直伤四路径统一发射,board_flat_hero 结账前统一发射 | 兑付入口(编排侧开单)+ fx 揭示回调注入位;+hero_atk()/static hits_of()/emit_hero_damage_taken 公开化(_emit 去下划线非并存——编排器与段类消费);实测类变量 12→13(+facts 构造注入) | B2 单位实例(单据目标传入);B1 注入(EffectPort 端口引用——轴戊设计闭合改经端口发射,迭代 49 卡① 建件;EffectContext 引用束与编排回调收归宿主侧 BattleFxHost 域,业务类零引擎直连) | 无 | -| **BattleRefreshFlow**(`core/battle_refresh_flow.gd`,B1 域·换图刷新流程件,已建件——迭代 46) | 弃图刷新流程唯一承载(自编排器收编):刷新可用性门(相位/每轮上限/储备门槛)、折后价单点(_effective_refresh_cost——专长行声明序第一命中、floor 取整、can 与执行同源)、换图执行序(扣储备→used+1→旧资源退役→旧板退役→装新板→board_refreshed 成功事实登记) | can_refresh/execute 两公开入口(构造=实例束注入 8 键——facts/db/action_economy/fx_host/reward_economy/minesweeper/install_cb/grant_seg;类变量 0→8);调用路径呈现层→编排器两公开方法单行转发→RoundCycle.refresh_flow() 取件→本件;grant_seg 段间引用直接交接(编排器 _rounds._grant_seg 跨两层链式取段消灭);A3 request_refresh 收折后价入参 | 编排器(宿主,B1 域内唯一调用方约束同族适用);A3 action_economy(折价扣费与拒绝判据);A2 装板壳(装板与退役);RewardGrant(apply_board_refreshed 成功事实消费);feats 折价行经 ConfigDB;static_scan S7_B1_SET 已增补本件(判据口径不变) | 无(零随机零 await) | +| **damage_controller**(B1 域·伤害单据管线) | 伤害单据唯一兑现管线(单据九栏目声明→分量掷点/克制修正/伤害下限归一→明细行发射;双方同规);`damage_taken` 唯一发射口(_emit_hero_damage_taken)+唯一消费族(_apply_hero_damage_effects)——敌方攻击/地形/危险格/错误封印直伤四路径统一发射,board_flat_hero 结账前统一发射 | 兑付入口(编排侧开单)+ fx 揭示回调注入位;+hero_atk()/static hits_of()/emit_hero_damage_taken 公开化(_emit 去下划线非并存——编排器与段类消费);实测类变量 13(facts 构造注入) | B2 单位实例(单据目标传入);B1 注入(EffectPort 端口引用——发射经端口;EffectContext 引用束与编排回调收归宿主侧 BattleFxHost 域,业务类零引擎直连) | 无 | +| **BattleRefreshFlow**(`core/battle_refresh_flow.gd`,B1 域·换图刷新流程件,已建件) | 弃图刷新流程唯一承载:刷新可用性门(相位/每轮上限/储备门槛)、折后价单点(_effective_refresh_cost——专长行声明序第一命中、floor 取整、can 与执行同源)、换图执行序(扣储备→used+1→旧资源退役→旧板退役→装新板→board_refreshed 成功事实登记) | can_refresh/execute 两公开入口(构造=实例束注入 8 键——facts/db/action_economy/fx_host/reward_economy/minesweeper/install_cb/grant_seg;类变量 8);调用路径呈现层→编排器两公开方法单行转发→RoundCycle.refresh_flow() 取件→本件;grant_seg 段间引用直接交接(编排器 _rounds._grant_seg 跨两层链式取段消灭);A3 request_refresh 收折后价入参 | 编排器(宿主,B1 域内唯一调用方约束同族适用);A3 action_economy(折价扣费与拒绝判据);A2 装板壳(装板与退役);RewardGrant(apply_board_refreshed 成功事实消费);feats 折价行经 ConfigDB;static_scan S7_B1_SET 已增补本件(判据口径不变) | 无(零随机零 await) | | **BoardInstaller**(`core/board_installer.gd`,B1 域·装板域件,2026-10-29 尾波清偿批设计闭合——实现批建件,细则见「战斗编排域拆件定稿」节轴丙) | 棋盘安装与变异布置域唯一承载(自 battle_orchestrator 收编装板族六函数):生成受理、全局作用域变异决议、资源摇号资格域组装(roll_board 恰一次)、region 变异决议与连通片布置;BoardGenerator 实例随件自建自接线(宿主成员退役)——宿主侧装板后状态复位(封印/完美计数清零、板序推进、board_changed 发射、秘宝叠加层退役)留宿主薄壳,时序逐字保持 | `install(during_round) -> bool` 单入口;构造=引用束注入(rng/db/minesweeper/reward_economy/encounter 只读引用+宿主 fatal Callable——防 _init max-parameters 新键) | A1 board_generator(件内持有);A2 install_board;B4 roll_board/board_skew 写;A4 变异决议行集经 ConfigDB;board_gen/variant_place 两封闭流随件、流名与开流时点零漂移 | 无(零 await——装板全同步) | -| **RoundCycle**(`core/round_cycle.gd`,B1 域·轮循环驱动件,已建件——迭代 44) | 轮循环驱动域唯一承载(自宿主收编 7 成员):结算五段段件持有与驱动、重入门闸、开轮摇号、踩雷账 | 引用束注入(编排器 20 键封闭束,解包自用七键后原束分发五段;持有 BattleRefreshFlow);段驱动入口由宿主接线调用;公开方法 3→4(refresh_flow() 读出口);实测类变量 8→15(贴顶禁再增) | B1 宿主;settlement/ 五段段类;A3 相位读 | 无 | -| **BattleFacts**(`core/battle_facts.gd`,B1 域·战斗事实件,已建件——迭代 44) | 战斗事实域唯一承载(自宿主收编 14 成员):受理事实(encounter)、轮 facts 缓冲(reveals/seals/path)、封印判定账、事实溯源、同调快照读面;attune 状态两成员随件(行为函数留宿主) | 零参直构;宿主与段类经注入引用读写;实测类变量 15(贴顶)/公开方法 4(reset_round+三 mark 写口) | B1 宿主;A2/A3 只读 | 无 | +| **RoundCycle**(`core/round_cycle.gd`,B1 域·轮循环驱动件,已建件) | 轮循环驱动域唯一承载:结算五段段件持有与驱动、重入门闸、开轮摇号、踩雷账 | 引用束注入(编排器 20 键封闭束,解包自用七键后原束分发五段;持有 BattleRefreshFlow);段驱动入口由宿主接线调用;公开方法 4(refresh_flow() 读出口);实测类变量 15(贴顶禁再增) | B1 宿主;settlement/ 五段段类;A3 相位读 | 无 | +| **BattleFacts**(`core/battle_facts.gd`,B1 域·战斗事实件,已建件) | 战斗事实域唯一承载:受理事实(encounter)、轮 facts 缓冲(reveals/seals/path)、封印判定账、事实溯源、同调快照读面;attune 状态两成员随件(行为函数留宿主) | 零参直构;宿主与段类经注入引用读写;实测类变量 15(贴顶)/公开方法 4(reset_round+三 mark 写口) | B1 宿主;A2/A3 只读 | 无 | | **settlement/ 五段段类**(B1 域·结算段件) | B1 每轮结算序列的五段逻辑件(授予/增益减益/战斗/衰减/判定——细则见下「战斗域装配现状」节) | 段处理入口(B1 接线调用);构造=引用束注入(各段断言各自必需键);段类对编排器零引用(注入 Callable 亦属接线面);可直接 `new()` 单测 | B2/B3/B4 兑付面与 B1 轮 facts 缓冲(各段按职责) | 无 | | **level_runner**(C1-lite,切片已建) | 关卡域生命周期(节点链推进、共享 B4 + HP 携带、关卡末 level_clear) | 节点推进接口;LevelTable(`level.tres`——节点 enum {battle,reward,rest,boss}、末节点必须 Boss、ConfigDB 跨表校验⑧) | B1(直构 BattleOrchestrator 接线战斗)、ConfigDB LevelTable | 无 | | **run_structure**(C2) | 冒险/关卡序列、失败重开、**master_seed 唯一接线方** | (契约规范源:`../../gdd/systems/冒险循环/冒险结构.md`) | RngService.set_master_seed、C3/D2 | 无 | | **difficulty**(C3) | DifficultyTable 回填、全部曲线数值调参所有权、战斗期望表(切片 monte_carlo 为工具原型) | 调参输出(经 D2 R1 解析/编排器传递,禁反向调用生成) | ConfigDB、B1 对账输出(调参约束清单)、A1 报告 C | 无 | -| **meta_progression**(C4,Alpha) | MetaTable、钥石账本、天赋树域(MetaTreeTable 12 节点 v0.8——Fork 一节点双态/row 字段退役/RULE_KEY_PARAMS 六键参数字典(迭代 50 键值字典化)/彩蛋特化觉醒,迭代 21 T1 换代)+ 同调位槽位判定(树点亮数单源——T4 槽位收编)。**存档内元进度数据读写原语归 MetaStateStore——已落地(迭代 41):本类纯转发读已退役(消费方直连 meta_state),业务规则与写口编排留本类;hero_override 内联锻造加值与树淬炼 flat;并组三组(forge_select(kind,route_id)/hero_type_axes()→{attack,armor}/tree_camp_status()→{rows,fork_groups});补 meta_state 成员装配** | 公开面 20 定稿:buy_treasure_unlock / refresh_treasure_unlocks / treasure_shop_status / forge_buy_level / forge_buy_unlock / forge_select / hero_type_axes / forge_shop_status / settle_adventure / hero_override / tree_can_buy / tree_buy / tree_toggle_fork / tree_buy_fork / tree_rules(返参数字典——迭代 50 R1 换代)/ tree_camp_status / toggle_attunement / attune_camp_status / attune_refresh_charges / buy_attune_refresh | D3、C2、ConfigDB | 无 | +| **meta_progression**(C4,Alpha) | MetaTable、钥石账本、天赋树域(MetaTreeTable 12 节点 v0.8——Fork 一节点双态/row 字段退役/RULE_KEY_PARAMS 六键参数字典/彩蛋特化觉醒)+ 同调位槽位判定(树点亮数单源)。**存档内元进度数据读写原语归 MetaStateStore——已落地:本类纯转发读已退役(消费方直连 meta_state),业务规则与写口编排留本类;hero_override 内联锻造加值与树淬炼 flat;并组三组(forge_select(kind,route_id)/hero_type_axes()→{attack,armor}/tree_camp_status()→{rows,fork_groups});补 meta_state 成员装配** | 公开面 20 定稿:buy_treasure_unlock / refresh_treasure_unlocks / treasure_shop_status / forge_buy_level / forge_buy_unlock / forge_select / hero_type_axes / forge_shop_status / settle_adventure / hero_override / tree_can_buy / tree_buy / tree_toggle_fork / tree_buy_fork / tree_rules(返参数字典)/ tree_camp_status / toggle_attunement / attune_camp_status / attune_refresh_charges / buy_attune_refresh | D3、C2、ConfigDB | 无 | -### 战斗域装配现状(迭代 27——2026-10-17 用户裁写入;RunLedger 段已随迭代 39 拆件批退役,四账去向见下「冒险域拆分(现状登记)」节) +### 战斗域装配现状(RunLedger 段已退役,四账去向见下「冒险域拆分(现状登记)」节) - **结算五段**:B1 编排器的每轮结算序列拆为 `game/core/settlement/` 五个段类——GrantSegment(①授予段,含封印判定与 counter/grant 助手单点、成功刷新事实消费面 apply_board_refreshed 与轮末治疗计数兑付面)→ AuraSegment(②增益/减益段)→ CombatSegment(③战斗段)→ DecaySegment(④衰减段)→ VerdictSegment(⑤判定段,返回裁定,终局早退语义留 B1)。段序骨架冻结于 `SettlementTable.segment_order` 语义,B1 退为段序编排+接线;段类可直接 `new()` 单测(`settle_segments_test` 在役)。 -### 战斗编排域拆件定稿(2026-10-26 用户裁写入——gdstyle 存量债波 1 设计闭合;同日独立审查(grilling+godot-master 双子代理)阻断 8 条去重 6 组全折入本节,v1.18;2026-10-28 迭代 40 实现批合回(合并提交 514457d1),本节为现状登记) +### 战斗编排域拆件定稿(本节为现状登记) -- **轴甲两件**:battle_orchestrator(拆件时 S13 全库单文件最大户——行数与成员数为历史读数,冻结计数不登记,查 git)按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面、nest_preview_count(巢穴预告读数口——外部直读面 main.gd 与 treasure_effects_test 随批点名冻结)。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。 +- **轴甲两件**:battle_orchestrator按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面、nest_preview_count(巢穴预告读数口——外部直读面 main.gd 与 treasure_effects_test 随批点名冻结)。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。 - **轴丙一件(2026-10-29 尾波清偿批设计闭合——实现批建件)**:battle_orchestrator 装板域六函数(`_install_new_board`/`_resolve_global_variant`/`_place_variants`/`_place_variants_apply`/`_variants_fringe`/`_adjacent_to_packs`,约 140 行;全仓仅宿主三调用点——begin_battle/中途刷新受理/player_request_refresh,实查零外部调用)按变化原因拆出 BoardInstaller,职责语句「棋盘安装与变异布置域」(生成→全局变异决议→装板受理→资源摇号→变异布置;单一变化原因=棋盘设置顺序与变异布置算法)。形态两修正(实测裁,与初案「逐字搬运」之差):①宿主复位块不随件——`_install_new_board` 体内五处计数清零、板序推进、board_changed 发射与秘宝叠加层退役留宿主薄壳 `_install_and_reset`,三调用点改调薄壳、时序逐字;②`_board_generator` 全文件仅装板族使用——实例随件自建自接线(fatal 经注入 Callable),宿主成员退役(类变量 38→37,禁无效成员义务)。encounter(23 处跨宿主)与 _reward_economy(18 处)确认留宿主、经引用束注入。文件长键(1035/1000)随本件迁出归绿;attune 族与 begin_battle 受理段序禁动不变。 - **轴丁两件(2026-10-29 零豁免裁设计闭合——实现批建件)**:RoundCycle(轮循环驱动件)与 BattleFacts(战斗事实件)见功能层表两行——宿主 38(轴丙落地后 37)→15,S13 豁免第三条注销;宿主保留面改登记为「战斗状态机与生命周期、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(两快照出口签名不变)、刷新面、nest_preview_count」;attune 族处置由下一条改判;treasure_inventory 注入改址追认——原「外部赋值路径零改址」句失效,level_runner 经 RewardGrant 出口直注;成员级对账以需求卡片为卡内契约(开工 T0 复核)。 -- **轴戊两件(2026-11-02 用户裁甲案设计闭合——已建件,迭代 49 卡① 合回,git 提交 848723b5)**:①**效果端口件 EffectPort**(`core/effect_port.gd`)——职责语句「战斗业务类唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批」;实测形态=六 Callable 路由、bind_port 组装期转注、闭面四键 biz_fact(dig_streak/hp_ratio/rider_tier_bonus/rider_tier_crit——charge_layers 键退役后宿主应答 null)、未绑零扰动缺省;`DamageController`/`ActionEconomy` 各持端口引用(同一实例、构造注入),`EffectEngine`/`EffectContext` 引用与计数器账面(value_counter 层值读后清零)收归宿主侧(BattleFxHost 域),业务类零引擎直连、零账面触碰;facts 取值束(dig_streak/rider_tier_*)与入站回调束(reveal/ac)随发射契约归宿主侧注入面;端口**单实现零接口抽象**(无基类无多态——GDScript 无 interface,本案不需要);端口与宿主经注入 Callable 束协作、零宿主对象引用(跨件单向接线条款适用,禁双向强引用)。②**掷格件 RewardRoller**(`core/reward_roller.gd`)——职责语句「装配期格面资源摇号:池行装配、区间行 roll、权重合成(偏运硬币/board_skew 两路投影)」;实测形态=roll 批束四键(mapping/power_roll/clear_identity/clear_power)、选行算子 `_weighted_pick_row` 返表行、fatal 经构造 Callable 链;受理账面(grant/身份查询/快照/retire/polarity_row)留 `RewardEconomy`,衔接面=格→奖励身份映射(掷格件产出、受理件接收);掷格件经注入 RngServiceCore 取号(roll_board 流 scope=每次 install 批不变、取号序零漂移)。行为零变化红线沿本节「验收红线」全款:命中序=声明序、明细行协议词表零触碰、`_ineffective_row` 载荷 deferred 自描述键观测面不回退(2026-11-02 迭代 48 卡① 甲案在案)、EV/MC 锚同种子逐位零漂移——round_flow 逐位回放 134 检查为主证(红线成立);两新件 S13 预算随卡「实现规范预算」三查已过(新件全默认阈值内、gdstyle 基线外新违规 0),`RewardEconomy` 类变量随掷格面迁出 15→11;S7 B1 域文件集与 S8 await 文件集已随批增行。 -- **跨件单向接线**:RewardGrant 持 BattleFxHost 引用(treasure_used 事件发射与计数器消耗);BattleFxHost 对授予面走 bind 时注入的兑付 Callable(揭示队列 flush 回调)——禁双向强引用(两件均 RefCounted,环引用随每战新建泄漏)。行发射经 bind 时注入的 emit Callable(协议面单点留宿主——CurioDeck bind_handlers 同款先例,禁件回调宿主私有族);轮 facts 缓冲留宿主、fx 件经注入取值;_seal_consumed 留宿主(与 A2 seal_judged 订阅同域);fatal 经注入 Callable 转宿主 _fatal(battle_result 状态机唯一写点不变)。注入 Callable 亦属接线面、同单向纪律——禁为省参数改持对象引用。授予件对账本零强引用:战斗期消费经 `battle_hooks` 三键回调束(attune_consume/vision_add/negative_blast,bind_battle 缺键 assert),宿主侧三单点记账(2026-10-28 迭代 40 合并适配实装——RunLedger 类已随迭代 39 退役,直持对象引用无处可指)。 -- **战斗域读面(RunLedger 退役后)**:账本读经编排器 `_journal()`/`_attune_loadout()` 现值派生(GainJournal/AttuneLoadout,enc 派生、无成员接收);冒险桶经 `enc["adv_bucket"]` 下传 `battle_fx_host.mount_buckets`;战末 bonus 四轴经 `GainJournal.gain_bonus` 汇入(2026-10-27 迭代 39 主角账三件落地、迭代 40 合并适配承接)。 +- **轴戊两件(已建件)**:①**效果端口件 EffectPort**(`core/effect_port.gd`)——职责语句「战斗业务类唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批」;实测形态=六 Callable 路由、bind_port 组装期转注、闭面四键 biz_fact(dig_streak/hp_ratio/rider_tier_bonus/rider_tier_crit——charge_layers 键退役后宿主应答 null)、未绑零扰动缺省;`DamageController`/`ActionEconomy` 各持端口引用(同一实例、构造注入),`EffectEngine`/`EffectContext` 引用与计数器账面(value_counter 层值读后清零)收归宿主侧(BattleFxHost 域),业务类零引擎直连、零账面触碰;facts 取值束(dig_streak/rider_tier_*)与入站回调束(reveal/ac)随发射契约归宿主侧注入面;端口**单实现零接口抽象**(无基类无多态——GDScript 无 interface,本案不需要);端口与宿主经注入 Callable 束协作、零宿主对象引用(跨件单向接线条款适用,禁双向强引用)。②**掷格件 RewardRoller**(`core/reward_roller.gd`)——职责语句「装配期格面资源摇号:池行装配、区间行 roll、权重合成(偏运硬币/board_skew 两路投影)」;实测形态=roll 批束四键(mapping/power_roll/clear_identity/clear_power)、选行算子 `_weighted_pick_row` 返表行、fatal 经构造 Callable 链;受理账面(grant/身份查询/快照/retire/polarity_row)留 `RewardEconomy`,衔接面=格→奖励身份映射(掷格件产出、受理件接收);掷格件经注入 RngServiceCore 取号(roll_board 流 scope=每次 install 批不变、取号序零漂移)。行为零变化红线沿本节「验收红线」全款:命中序=声明序、明细行协议词表零触碰、`_ineffective_row` 载荷 deferred 自描述键观测面不回退(甲案在案)、EV/MC 锚同种子逐位零漂移——round_flow 逐位回放 134 检查为主证(红线成立);`RewardEconomy` 实测类变量 11;S7 B1 域文件集与 S8 await 文件集已含两新件。 +- **跨件单向接线**:RewardGrant 持 BattleFxHost 引用(treasure_used 事件发射与计数器消耗);BattleFxHost 对授予面走 bind 时注入的兑付 Callable(揭示队列 flush 回调)——禁双向强引用(两件均 RefCounted,环引用随每战新建泄漏)。行发射经 bind 时注入的 emit Callable(协议面单点留宿主——CurioDeck bind_handlers 同款先例,禁件回调宿主私有族);轮 facts 缓冲留宿主、fx 件经注入取值;_seal_consumed 留宿主(与 A2 seal_judged 订阅同域);fatal 经注入 Callable 转宿主 _fatal(battle_result 状态机唯一写点不变)。注入 Callable 亦属接线面、同单向纪律——禁为省参数改持对象引用。授予件对账本零强引用:战斗期消费经 `battle_hooks` 三键回调束(attune_consume/vision_add/negative_blast,bind_battle 缺键 assert),宿主侧三单点记账(RunLedger 类已退役,直持对象引用无处可指)。 +- **战斗域读面(RunLedger 退役后)**:账本读经编排器 `_journal()`/`_attune_loadout()` 现值派生(GainJournal/AttuneLoadout,enc 派生、无成员接收);冒险桶经 `enc["adv_bucket"]` 下传 `battle_fx_host.mount_buckets`;战末 bonus 四轴经 `GainJournal.gain_bonus` 汇入。 - **settlement/ 段类随动(2026-11-04 迭代51卡② 换代)**:段类构造=引用束注入(编排器 20 键封闭束分发——各段断言各自必需键),段类对编排器零引用(跨件单向接线,注入 Callable 亦属接线面)。四个授予段 helper 归位:_feat_yield_adjust→RewardGrant(feat_yield_adjust)、_harmful_variants/_harmful_adjacent→minesweeper_rules(harmful_variants/harmful_adjacent)、_hits_of→damage_controller(static hits_of);_pool_effective/perfect_sweep_earned 留宿主(段类经编排器公开读投影消费)。 -- **attune 族处置(2026-10-29 零豁免裁改判,原「原位保留」失效)**:attune 状态两成员归 BattleFacts、行为函数留宿主——迭代 39 副卡(AttuneLoadout 充能单源化)语义领地不破,外部三面消费点零改址;RewardGrant 经宿主 attune 读投影取 _attune_safe_seen 形态不变。 +- **attune 族处置**:attune 状态两成员归 BattleFacts、行为函数留宿主——AttuneLoadout 充能单源化语义领地不破,外部三面消费点零改址;RewardGrant 经宿主 attune 读投影取 _attune_safe_seen 形态不变。 - **呈现零变化**:两快照出口签名与载荷逐字不变,内部改读两件只读投影(快照本体不读揭示态——揭示态投影消费方=宿主 A2 订阅旁路判定);treasure_interact_controller 三触点分家——use_treasure 经组合根现值回调改注 RewardGrant(每战新建编排器,禁一次性直引防悬挂),minesweeper 读与 attune_convert_state 仍走宿主取值回调(双取值面);nest_preview_count 直读面零变化。 -- **S13 键账收敛义务**:12 个超标键随函数迁入新文件=基线外 NEW(use_treasure 长度/分支/局部/返回×4、_grant_routed 参数 8、_dispatch_row 参数 6、_apply_percent_row 参数 6、_apply_gp_row 参数 6、_apply_flat_row 参数 7+返回 9、_submit_flat_hero 参数 7、_fx_fact 返回 7)——卡内同步收敛为本波义务(_grant_routed 等签名随引用束注入改形、use_treasure 体拆分),禁波 0 合并 refresh 吸收新文件未还键;新件 _init 引用束注入防 max-parameters 新键。 -- **验收红线**:游戏行为零变化(RNG 消费序零漂移——fx_reveal 封闭流随件迁移取号序不变、信号顺序契约冻结、明细行协议词表零触碰、同种子逐位一致);battle_orchestrator 头注发射点指址随拆件改写(词表不动,指址须真);行数恶化债清偿义务(迭代 38 特批带红合并挂账 c4c69701——本波还债归绿);S13 改善非清零口径(宿主残留 8–10 键+随迁键卡内收敛后新件零残留为达标线)。 -- **S7/S8 随动**:RewardGrant 调 B4 API,两新件一并登记进 S7 B1 域文件集与 S8 结算路径 await 文件集(static_scan.sh 两清单独立、同批更新——防 await 面漏闸);轴丙 BoardInstaller 同规(调 B4 roll_board,实现批随批增行)。 +- **验收红线**:游戏行为零变化(RNG 消费序零漂移——fx_reveal 封闭流随件迁移取号序不变、信号顺序契约冻结、明细行协议词表零触碰、同种子逐位一致);battle_orchestrator 头注发射点指址随拆件改写(词表不动,指址须真)。 +- **S7/S8 登记**:RewardGrant 调 B4 API,两新件一并登记进 S7 B1 域文件集与 S8 结算路径 await 文件集(static_scan.sh 两清单独立、同步更新——防 await 面漏闸);轴丙 BoardInstaller 同规(调 B4 roll_board,已登记进两清单)。 -### 冒险域拆分(现状登记——2026-10-26 设计闭合,2026-10-27 迭代 39 拆件批实装,本节各条即现行形态) +### 冒险域拆分(现状登记——本节各条即现行形态) - **应用层形态**:adventure_runner 退出上帝对象、转薄应用层(DDD 应用层形态)——只留冒险状态机、关序推进、结算受理、建件接线、效果引擎冒险桶字典持有(桶=效果引擎域数据,应用层只锚定生命周期);零领域决策。核心层表新件行(主角账三件与刷新账件/AttuneLoadout/CurioStop——见基础层与功能层登记)即本拆分目标。 - **CurioDeck 转纯池**:bind_handlers 反向回调退役;商店购买消费经注入 Callable 链至 CurioStop 兑付单点——牌库只管抽签/消耗/cap 判定/凭证计数。 - **RunLedger 退役**:四账各归其主——加算区/购买记录/钥石增量/真视记录归 GainJournal、特性集归 HeroStats(GP 钱包归 GpWallet),充能归 AttuneLoadout,冒险桶字典归应用层持有;战斗侧 encounter 注入面由单一账类引用改为多路(桶字典+实体账+配装件);ShopSession 账本引用面同步换代,商店属性商品加算改经 GainJournal 单写原语。 - **level_runner**:依赖改构造注入一次给齐(后置 setter 群与商店重绑机制退役;注入活引用禁快照——特性集共享引用语义保留);商店白盒转发属性撤除;战斗→关卡信号转发族保留(战斗实例每节点新建,关卡层做战斗域稳定面)。 -- **断点片段化**:各件自写自读自己的键(关卡层交关卡域五键片段:node_id/visited_ids/aux_items/shop_shelf/shop_visit_buys),缺键回退策略随领域知识归各件;应用层唯一落盘口(收齐各件片段拼成顶层快照后写盘),写触发点不变(五处);既有 27 键逐键冻结;新增获得日记键沿扩列不升版先例——旧档缺日记回退汇总键直载并跳过比对,日记在档时由日记推导汇总、与留存值不符即报错中止(迁移正确性自检)。2026-10-29 零豁免裁随动:拼盘与读侧策略机组拆出 breakpoint_store(核心层表新行),应用层落盘口与写触发点不变——宿主经件组装快照后写盘,27 键冻结不变。 +- **断点片段化**:各件自写自读自己的键(关卡层交关卡域五键片段:node_id/visited_ids/aux_items/shop_shelf/shop_visit_buys),缺键回退策略随领域知识归各件;应用层唯一落盘口(收齐各件片段拼成顶层快照后写盘),写触发点不变(五处);既有 27 键逐键冻结;新增获得日记键沿扩列不升版先例——旧档缺日记回退汇总键直载并跳过比对,日记在档时由日记推导汇总、与留存值不符即报错中止(迁移正确性自检)。拼盘与读侧策略机组拆出 breakpoint_store(核心层表新行),应用层落盘口与写触发点不变——宿主经件组装快照后写盘,27 键冻结不变。 - **信号直连**:adventure_runner 六转发信号族(node_entered/choices_presented/step_row/round_started/board_changed/wallet_changed)退役;呈现层在 level_started 重取点重订阅关卡对象信号(旧实例连接随引用释放消亡);「关卡开始信号前零发射」契约写进关卡件头注;「恰好连接一次」断言用 is_connected 守卫(release 模板剥 assert);三选一信号面归 CurioStop。 -- **调用直连**:不留中间人委托壳(纯转传=Middle Man 反模式,2026-10-26 用户裁定);呈现控制器经取值回调持件——回调只许捕获长活根对象,禁件方法 Callable(防悬挂);约 30 个调用文件改址;测试/探针直连件读写。 +- **调用直连**:不留中间人委托壳(纯转传=Middle Man 反模式,2026-10-26 用户裁定);呈现控制器经取值回调持件——回调只许捕获长活根对象,禁件方法 Callable(防悬挂);测试/探针直连件读写。 - **验收红线**:游戏行为零变化(RNG 流名 reward_pick 与消费序零漂移、信号顺序契约冻结、同种子逐位一致);gdstyle 基线禁改(类变量计数下降属改善);怪物寻址 resolve_enemy_rowset 调用面与关卡参数档装配零变化(未来关卡主题的数据缝不堵)。 ### 呈现层 | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| -| **D1 HUD**(呈现面拆分持续换代:组合根 main.gd + 三屏壳(MenuScreen/CampScreen/AdventureScreen)+ views/ 视图单元(现行承载面见「呈现层装配与会话生命周期」节;早期 9 单元清单与 LevelStripView 已随场景换代退役);营地面=场景根+四子界面功能窗口+Esc 浮窗+顶栏 HUD 栏〔迭代 21 四柜台覆盖层已随迭代 47 卡④⑤ 退役〕) | 全部 Control/CanvasLayer(例外:BoardView 棋盘本体与 BattleStageView 站桩本体 = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界〔BoardWorld/CellUnit;StageWorld/StandeeBody——B 区 slot_row 伴随件留壳层〕,探针契约面不变——棋盘 Node2D 迁移批 Phase A 2026-09-23 / 战斗舞台 Phase B 2026-09-26)、输入→意图翻译(**唯一提交路径 = settle_batch,不直调 A3**)、呈现义务状态记录(A2×6 / B2×4 / B3×4 / B4×5 / B1×3) | 视图单元接口(信号外发、setter 只读注入) | A2 compute_move_path / ActionOutcome;A3 ap/rap;B1 步骤流行协议(数据源);ConfigDB display_name | **MEDIUM**:Control / CanvasLayer / draw_* / InputEvent / RichTextLabel——对照 breaking-changes.md 4.5–4.7 条目(CanvasItem 线条无抗锯齿羽化、设备 ID 常量、RichTextLabel 图片参数两轮变化) | +| **D1 HUD**(呈现面拆分持续换代:组合根 main.gd + 三屏壳(MenuScreen/CampScreen/AdventureScreen)+ views/ 视图单元(现行承载面见「呈现层装配与会话生命周期」节;早期 9 单元清单与 LevelStripView 已随场景换代退役);营地面=场景根+四子界面功能窗口+Esc 浮窗+顶栏 HUD 栏〔四柜台覆盖层已退役〕) | 全部 Control/CanvasLayer(例外:BoardView 棋盘本体与 BattleStageView 站桩本体 = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界〔BoardWorld/CellUnit;StageWorld/StandeeBody——B 区 slot_row 伴随件留壳层〕,探针契约面不变)、输入→意图翻译(**唯一提交路径 = settle_batch,不直调 A3**)、呈现义务状态记录(A2×6 / B2×4 / B3×4 / B4×5 / B1×3) | 视图单元接口(信号外发、setter 只读注入) | A2 compute_move_path / ActionOutcome;A3 ap/rap;B1 步骤流行协议(数据源);ConfigDB display_name | **MEDIUM**:Control / CanvasLayer / draw_* / InputEvent / RichTextLabel——对照 breaking-changes.md 4.5–4.7 条目(CanvasItem 线条无抗锯齿羽化、设备 ID 常量、RichTextLabel 图片参数两轮变化) | | **组合根拆件**(呈现侧写口子件:curio_interact_controller / camp_shop_presenter / treasure_interact_controller) | 代组合根执行核心写调用(冒险节点后续推进/营地购买与刷新/道具使用——依赖与回调由 main 构造注入) | 各拆件的写入口(仅组合根装配面可达;视图零直连) | 构造注入的核心写引用(推进/商店/道具各域——详见各拆件头注) | 无 | -| **ui_registry**(`presentation/ui_registry.gd`,界面注册面,已建件——迭代 44) | 呈现层接口面唯一承载:层序合同(LAYER_CONTRACT)迁驻与合同寻址、三域句柄容器 ui_screens(9 屏壳与覆盖层句柄)/ui_battle(5 战区句柄)/ui_modals(模态句柄按域分三子容器——局内冒险域 run/菜单与跨语境域 menu〔两子容器迭代 49 卡② 新建〕/营地域 camp=既有 UiCampModals〔六句柄、两段式寻址 `modals.camp.*`——迭代 47 卡⑥〕,三子容器纯字段、两段式寻址 `modals.run.*`/`modals.menu.*`/`modals.camp.*`)+模态编排件 ModalFlow 直驻本面(自 UiModals 升格 UiRegistry 直持——迭代 49 卡②);层序合同营地槽换代=camp_overlay 退役、换 camp_scene+四子界面+camp_esc_overlay——迭代 47 卡④⑤;组合根经其一级寻址接线,探针挂载假设迁移为 `main.ui.<域容器>.<句柄>`;七个探针别名/转发成员随批消灭 | 三容器属性+flow+合同寻址口(RefCounted 门面,不挂树、零会话期引用);register_layer 迁驻注册面;四件类变量 UiRegistry 4/UiScreens 9/UiBattle 5/UiModals 3(run/menu/camp 三子容器纯字段——ui_modals 平铺面清零,12 平铺句柄全数迁 run/menu 两子容器,分域纪律册级化);ModalFlow 随 UiRegistry 构造建立(构造时点与原形态等价——注册面构造点先于装配,迭代 49 卡②) | 构造注入:三屏壳、覆盖层、战区句柄、ModalFlow(main_ui_build 交付随之改型) | 无(RefCounted) | -| **UiCampModals**(`presentation/ui_camp_modals.gd`,营地域句柄子容器,已建件——迭代 47 卡⑥) | ui_modals 营地域六句柄唯一容器(场景根/四子界面/Esc 浮窗/HUD 栏),句柄寻址两段式 `modals.camp.*`;ui_modals 平铺面已清零(12 平铺句柄全数迁 run/menu 两子容器——分域纪律册级化,迭代 49 卡②) | 子容器属性+六句柄只读投影;main_ui_build 装配交付 | 构造注入(六视图句柄);ui_modals(父容器挂载) | 无(RefCounted) | -| **CampSceneView**(`views/camp_scene_view.gd`,营地场景根视图,已建件——迭代 47 卡④) | 营地场景图唯一呈现件:十层贴图铺底(层序按 layout 表 z 序;`camp_scene_layout.tres` fail-fast 校验+七命中区几何红线——camp_scene_layout_test 承载)、七物件命中区命中即发 object_pressed(组合根路由大门/篝火/笔记本/四界面)、反参照纪律(场景根零文字按钮)、登记模态初始隐(boot 态不盖菜单) | 构造注入(贴图经 `UiKit.TEX_CAMP_*`、layout 表经 ConfigDB 表现域容器);object_pressed 信号外发;open/close 经营地域子容器寻址 | camp_screen(宿主挂载);ConfigDB;组合根(路由消费) | Control+TextureRect 树 | -| **营地四子界面视图**(`views/camp_sub_view_base.gd`+forge_view/tree_view/treasure_view/codex_view,功能窗口公共壳+四件,已建件——迭代 47 卡④) | 营地五功能窗口的四个承载视图(锻造工坊/天赋树/秘宝匣/图鉴)+公共壳(窗口壳/行板/关闭钮;生涯页挂笔记本路由不经此族);模态栈单口 open/close、五窗互斥单开;presenter 承接面零回表(树购买/锻造三意图经既有写口族) | 各 view open/close+意图信号外发;关闭钮 pressed | camp_shop_presenter/MetaProgression 写口(经组合根);CampRefreshBus(刷新广播消费) | Control | -| **camp_esc_overlay+MainEscFlow**(`views/camp_esc_overlay.gd`+`presentation/main_esc_flow.gd`,Esc 浮窗视图+四态路由件,已建件——迭代 47 卡⑤) | Esc 浮窗三钮视图(返回主菜单/设置/退出)+Esc 四态路由静态件(根态唤起/再按关窗/功能窗开着先关最上层窗〔camp.md v2.3 定稿覆盖卡面 Q1 甲〕/设置开态不误关;菜单语境不唤起);**main._unhandled_input=产品码首个键盘输入入口**(契约 9——事件驱动、禁 Input 轮询、不挂 ui_cancel、pressed 非 echo) | flow.open/close 路由口;三钮 pressed 意图信号(经组合根接线) | 组合根(_unhandled_input 前置与意图消费);模态栈(关窗单口);screen_flow(设置/返回动线) | Control+静态件 | -| **CampHudBand**(`views/camp_hud_band.gd`,营地顶栏 HUD 件,已建件——迭代 47 卡⑤) | 顶栏 48px 全宽窄条:钥石余额 badge 唯一呈现(单口取现值、显式刷新才变);set_hud_band 预留位落座 | badge 文本投影;refresh 时取现值 | CampRefreshBus(挂册广播);MetaProgression 钥石读 | Control | -| **CampRefreshBus**(`views/camp_refresh_bus.gd`,营地刷新单口件,已建件——迭代 47 卡④⑤) | 营地刷新单口唯一承载:进档尾与营地写口尾触发 refresh 广播(八写口尾改路由),现开界面与 HUD 同步取现值 | 挂册/refresh 广播 | 组合根(触发点接线);四子界面与 CampHudBand(消费) | 无(RefCounted 信号件) | -| **board_hover**(`views/board_hover.gd`,悬停预承诺呈现域件,已建件——迭代 45) | 悬停反馈域唯一承载(自 board_view 收编 11 函数族+_hover/_last_click 两成员):三语义光标、目标格边框、BFS 路径预览、chord 双击首遇锚;_r0 出生展开区成员留宿主 | 构造=引用束注入实为 7 项(cells/minesweeper/diggable 引用+格命中换算/光标写入/hover_forbidden/chord_attempted 四 Callable——卡片预估 5 项,11 函数逐字迁移的最小必需面);三入站口留宿主委托;hover_probe 读面留宿主 | board_view(宿主);输入事件经宿主入站口 | 无(RefCounted) | -| **cell_base_layer/cell_mark_overlay**(`views/`,单格两绘制域件,已建件——迭代 45) | 单格绘制域拆分(自 board_cell_unit 状态件 `_CellPaintState` 收编,入参与该层绘制命令同件):基座层(底面/描边/立面/投影/接触带/倒角,12 成员)与标识叠加层(标记/字形/徽章/封印/点迹/高亮/退色,13 成员);宿主 _draw 退为六步时序器,类变量 30→10 | 构造注入;绘制命令由宿主 _draw 按层序调用 | board_cell_unit(宿主);gdstyle 键各文件独立计数(12/13 均 ≤15) | 无(RefCounted) | -| **standee_vitals/standee_motion**(`views/`,站桩两状态件,已建件——迭代 45) | 站桩状态域拆分(自 `_StandeeState` 真实 25 成员收编):身份命值(hp/atk/状态值族,12 成员)与资产演出(动作/姿态/位移演出族,11 成员);三个演出探针计数器留宿主,宿主类变量 19→10 | 构造注入;st(沿用)/mo 两实例由宿主持有 | standee_body(宿主);battle_stage_view 写入面逐字保持 | 无(RefCounted) | -| **HudPresenter**(`presentation/hud_presenter.gd`,迭代 37 加注) | 战斗屏**数据投影+文案拼装静态族**——核心状态→呈现文案的全部翻译集中于此(B/C/D 区文案与投影),静态无状态 | `refresh(…)` 全量重查装配(组合根每次动作/结算返回后调用,漏调即陈旧呈现)+只读静态投影族 | 核心读取只走 `settlement.presentation_snapshot()` 成文快照面(禁链式穿透结算内部);ConfigDB display_name | 无(RefCounted 静态) | -| **board_resolvers**(`presentation/board_resolvers.gd`,迭代 37 拆出) | 棋盘每格渲染数据的只读解析回调四函数(奖励徽章身份——挖掘期 Active 相位内、地形变异数字遮蔽与角标、调试加成生效值)——有态绑定件,与无态静态投影族 HudPresenter 职责互斥 | 构造注入 db、调试浮窗与结算活态取值,产出绑定 Callable 供组合根接线 | ConfigDB / DebugOverlay / 结算活态取值 Callable | 无(纯投影) | -| **main_ui_build**(`presentation/main_ui_build.gd`,迭代 37 拆出) | `_build_ui` 八步拆分件——组合根 UI 装配分步承接(三屏壳实例化、视图句柄接线、覆盖层装配与模态编排注入按步拆开);main 侧留同名薄委托,装配序与 z 序零改动 | 分步静态函数(成员访问经 root 显式传入) | 层序逻辑不在此件——唯一事实源=`ui_registry.LAYER_CONTRACT`+`ui.apply_layer_contract(root)`(迭代 44 迁驻注册面) | 同 D1(Control 装配面) | -| **main_adventure_flow**(`presentation/main_adventure_flow.gd`,迭代 37 拆出) | main 冒险流程族——菜单开局/续玩后的冒险编排接线、节点事件分发、终局面与选路屏开合;逐字搬运,main 侧留同名薄委托(探针 `main.X` 路径零迁移) | 流程静态函数(root 显式) | 局态全局住 run_scope 节点——本件零成员态、零新增信号连接(连接语句随原段搬运) | 无 | -| **main_overlay_flow**(`presentation/main_overlay_flow.gd`,迭代 37 拆出) | main 浮层流程族——设置/状态面板/生涯页/选档界面/图例/钱包事件的开合与数据投喂;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 全部开合走组合根模态编排口(`root.ui.flow.open/close`——ModalFlow 自 UiModals 升格 UiRegistry 直驻,迭代 49 卡②)——本件零成员态 | 同 D1 | -| **main_debug_flow**(`presentation/main_debug_flow.gd`,迭代 37 拆出) | main 调试流程族——调试浮窗开合与上下文同步、批量模拟入口、两层调试对局起手、诊断转储;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 调试会话状态机归 debug_session.gd——本件只接线与出 UI,零成员态 | 同 D1 | -| **TilePalette**(`presentation/views/tile_palette.gd`,迭代 37 拆出) | 瓦片排版/装载:高墙/地面瓦片整批装载与运行时镜像合成、地板明度归一、数字墨族按板自适应判据、格坐标确定性散列与十六正交情形墙瓦片查表 | 查表族(读件持棋盘引用——棋盘视图 rebuild 经 `bind_board` 同步);装载缓存七成员持于件内(同板型零重载、换板重载时序同源) | 零绘制面、零玩法数据写入(绘制调用面留棋盘视图);纹理路径单点在件内 | Resource 纹理加载——LOW | -| **HeroSprite**(`presentation/views/hero_sprite.gd`,迭代 37 拆出) | 英雄精灵四态与落位装配(落位与位移演出、撞墙帧闪、挖掘弹跳、脚底锚与持握手位出口) | 由棋盘视图 `_init` 建为子件(注入世界根与壳层容器引用)——精灵本体经世界根 ensure_hero 建于 SubViewport 世界内,本件只驱动其状态 | BoardWorld 世界根;素材缺位=零精灵(棋盘视图字形「人」回退路径在役) | Node2D / create_tween(Tween 系 Node 方法——MEDIUM 域对照 breaking-changes.md) | -| **BoardWorld**(`presentation/views/board_world.gd`,迭代 37 在册补行) | 棋盘 Node2D 世界根(SubViewport 内 CellUnit 容器):世界级去饱和材质与字体注入挂点、英雄精灵持有位 | 无 class_name——使用方经 preload 引用挂树 | BoardView 壳层(SubViewportContainer + SubViewport 结构不变——棋盘 Node2D 迁移批 Phase A 既定) | Node2D/SubViewport——同 D1 | +| **ui_registry**(`presentation/ui_registry.gd`,界面注册面,已建件) | 呈现层接口面唯一承载:层序合同(LAYER_CONTRACT)迁驻与合同寻址、三域句柄容器 ui_screens(9 屏壳与覆盖层句柄)/ui_battle(5 战区句柄)/ui_modals(模态句柄按域分三子容器——局内冒险域 run/菜单与跨语境域 menu〔两子容器〕/营地域 camp=既有 UiCampModals〔六句柄、两段式寻址 `modals.camp.*`〕,三子容器纯字段、两段式寻址 `modals.run.*`/`modals.menu.*`/`modals.camp.*`)+模态编排件 ModalFlow 直驻本面(自 UiModals 升格 UiRegistry 直持);层序合同营地槽=camp_scene+四子界面+camp_esc_overlay(camp_overlay 已退役);组合根经其一级寻址接线,探针挂载假设迁移为 `main.ui.<域容器>.<句柄>` | 三容器属性+flow+合同寻址口(RefCounted 门面,不挂树、零会话期引用);register_layer 迁驻注册面;四件类变量 UiRegistry 4/UiScreens 9/UiBattle 5/UiModals 3(run/menu/camp 三子容器纯字段——ui_modals 平铺面清零,分域纪律册级化);ModalFlow 随 UiRegistry 构造建立(注册面构造点先于装配) | 构造注入:三屏壳、覆盖层、战区句柄、ModalFlow(main_ui_build 交付随之改型) | 无(RefCounted) | +| **UiCampModals**(`presentation/ui_camp_modals.gd`,营地域句柄子容器,已建件) | ui_modals 营地域六句柄唯一容器(场景根/四子界面/Esc 浮窗/HUD 栏),句柄寻址两段式 `modals.camp.*`;ui_modals 平铺面已清零(分域纪律册级化) | 子容器属性+六句柄只读投影;main_ui_build 装配交付 | 构造注入(六视图句柄);ui_modals(父容器挂载) | 无(RefCounted) | +| **CampSceneView**(`views/camp_scene_view.gd`,营地场景根视图,已建件) | 营地场景图唯一呈现件:十层贴图铺底(层序按 layout 表 z 序;`camp_scene_layout.tres` fail-fast 校验+七命中区几何红线——camp_scene_layout_test 承载)、七物件命中区命中即发 object_pressed(组合根路由大门/篝火/笔记本/四界面)、反参照纪律(场景根零文字按钮)、登记模态初始隐(boot 态不盖菜单) | 构造注入(贴图经 `UiKit.TEX_CAMP_*`、layout 表经 ConfigDB 表现域容器);object_pressed 信号外发;open/close 经营地域子容器寻址 | camp_screen(宿主挂载);ConfigDB;组合根(路由消费) | Control+TextureRect 树 | +| **营地四子界面视图**(`views/camp_sub_view_base.gd`+forge_view/tree_view/treasure_view/codex_view,功能窗口公共壳+四件,已建件) | 营地五功能窗口的四个承载视图(锻造工坊/天赋树/秘宝匣/图鉴)+公共壳(窗口壳/行板/关闭钮;生涯页挂笔记本路由不经此族);模态栈单口 open/close、五窗互斥单开;presenter 承接面零回表(树购买/锻造三意图经既有写口族) | 各 view open/close+意图信号外发;关闭钮 pressed | camp_shop_presenter/MetaProgression 写口(经组合根);CampRefreshBus(刷新广播消费) | Control | +| **camp_esc_overlay+MainEscFlow**(`views/camp_esc_overlay.gd`+`presentation/main_esc_flow.gd`,Esc 浮窗视图+四态路由件,已建件) | Esc 浮窗三钮视图(返回主菜单/设置/退出)+Esc 四态路由静态件(根态唤起/再按关窗/功能窗开着先关最上层窗〔camp.md v2.3 定稿〕/设置开态不误关;菜单语境不唤起);**main._unhandled_input=产品码首个键盘输入入口**(契约 9——事件驱动、禁 Input 轮询、不挂 ui_cancel、pressed 非 echo) | flow.open/close 路由口;三钮 pressed 意图信号(经组合根接线) | 组合根(_unhandled_input 前置与意图消费);模态栈(关窗单口);screen_flow(设置/返回动线) | Control+静态件 | +| **CampHudBand**(`views/camp_hud_band.gd`,营地顶栏 HUD 件,已建件) | 顶栏 48px 全宽窄条:钥石余额 badge 唯一呈现(单口取现值、显式刷新才变);set_hud_band 预留位落座 | badge 文本投影;refresh 时取现值 | CampRefreshBus(挂册广播);MetaProgression 钥石读 | Control | +| **CampRefreshBus**(`views/camp_refresh_bus.gd`,营地刷新单口件,已建件) | 营地刷新单口唯一承载:进档尾与营地写口尾触发 refresh 广播(八写口尾改路由),现开界面与 HUD 同步取现值 | 挂册/refresh 广播 | 组合根(触发点接线);四子界面与 CampHudBand(消费) | 无(RefCounted 信号件) | +| **board_hover**(`views/board_hover.gd`,悬停预承诺呈现域件,已建件) | 悬停反馈域唯一承载:三语义光标、目标格边框、BFS 路径预览、chord 双击首遇锚;_r0 出生展开区成员留宿主 | 构造=引用束注入 7 项(cells/minesweeper/diggable 引用+格命中换算/光标写入/hover_forbidden/chord_attempted 四 Callable);三入站口留宿主委托;hover_probe 读面留宿主 | board_view(宿主);输入事件经宿主入站口 | 无(RefCounted) | +| **cell_base_layer/cell_mark_overlay**(`views/`,单格两绘制域件,已建件) | 单格绘制域拆分(入参与该层绘制命令同件):基座层(底面/描边/立面/投影/接触带/倒角,12 成员)与标识叠加层(标记/字形/徽章/封印/点迹/高亮/退色,13 成员);宿主 _draw 退为六步时序器,宿主实测类变量 10 | 构造注入;绘制命令由宿主 _draw 按层序调用 | board_cell_unit(宿主);gdstyle 键各文件独立计数(12/13 均 ≤15) | 无(RefCounted) | +| **standee_vitals/standee_motion**(`views/`,站桩两状态件,已建件) | 站桩状态域拆分:身份命值(hp/atk/状态值族,12 成员)与资产演出(动作/姿态/位移演出族,11 成员);三个演出探针计数器留宿主,宿主实测类变量 10 | 构造注入;st(沿用)/mo 两实例由宿主持有 | standee_body(宿主);battle_stage_view 写入面逐字保持 | 无(RefCounted) | +| **HudPresenter**(`presentation/hud_presenter.gd`) | 战斗屏**数据投影+文案拼装静态族**——核心状态→呈现文案的全部翻译集中于此(B/C/D 区文案与投影),静态无状态 | `refresh(…)` 全量重查装配(组合根每次动作/结算返回后调用,漏调即陈旧呈现)+只读静态投影族 | 核心读取只走 `settlement.presentation_snapshot()` 成文快照面(禁链式穿透结算内部);ConfigDB display_name | 无(RefCounted 静态) | +| **board_resolvers**(`presentation/board_resolvers.gd`) | 棋盘每格渲染数据的只读解析回调四函数(奖励徽章身份——挖掘期 Active 相位内、地形变异数字遮蔽与角标、调试加成生效值)——有态绑定件,与无态静态投影族 HudPresenter 职责互斥 | 构造注入 db、调试浮窗与结算活态取值,产出绑定 Callable 供组合根接线 | ConfigDB / DebugOverlay / 结算活态取值 Callable | 无(纯投影) | +| **main_ui_build**(`presentation/main_ui_build.gd`) | `_build_ui` 八步拆分件——组合根 UI 装配分步承接(三屏壳实例化、视图句柄接线、覆盖层装配与模态编排注入按步拆开);main 侧留同名薄委托,装配序与 z 序零改动 | 分步静态函数(成员访问经 root 显式传入) | 层序逻辑不在此件——唯一事实源=`ui_registry.LAYER_CONTRACT`+`ui.apply_layer_contract(root)`(已迁驻注册面) | 同 D1(Control 装配面) | +| **main_adventure_flow**(`presentation/main_adventure_flow.gd`) | main 冒险流程族——菜单开局/续玩后的冒险编排接线、节点事件分发、终局面与选路屏开合;逐字搬运,main 侧留同名薄委托(探针 `main.X` 路径零迁移) | 流程静态函数(root 显式) | 局态全局住 run_scope 节点——本件零成员态、零新增信号连接(连接语句随原段搬运) | 无 | +| **main_overlay_flow**(`presentation/main_overlay_flow.gd`) | main 浮层流程族——设置/状态面板/生涯页/选档界面/图例/钱包事件的开合与数据投喂;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 全部开合走组合根模态编排口(`root.ui.flow.open/close`——ModalFlow 自 UiModals 升格 UiRegistry 直驻)——本件零成员态 | 同 D1 | +| **main_debug_flow**(`presentation/main_debug_flow.gd`) | main 调试流程族——调试浮窗开合与上下文同步、批量模拟入口、两层调试对局起手、诊断转储;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 调试会话状态机归 debug_session.gd——本件只接线与出 UI,零成员态 | 同 D1 | +| **TilePalette**(`presentation/views/tile_palette.gd`) | 瓦片排版/装载:高墙/地面瓦片整批装载与运行时镜像合成、地板明度归一、数字墨族按板自适应判据、格坐标确定性散列与十六正交情形墙瓦片查表 | 查表族(读件持棋盘引用——棋盘视图 rebuild 经 `bind_board` 同步);装载缓存七成员持于件内(同板型零重载、换板重载时序同源) | 零绘制面、零玩法数据写入(绘制调用面留棋盘视图);纹理路径单点在件内 | Resource 纹理加载——LOW | +| **HeroSprite**(`presentation/views/hero_sprite.gd`) | 英雄精灵四态与落位装配(落位与位移演出、撞墙帧闪、挖掘弹跳、脚底锚与持握手位出口) | 由棋盘视图 `_init` 建为子件(注入世界根与壳层容器引用)——精灵本体经世界根 ensure_hero 建于 SubViewport 世界内,本件只驱动其状态 | BoardWorld 世界根;素材缺位=零精灵(棋盘视图字形「人」回退路径在役) | Node2D / create_tween(Tween 系 Node 方法——MEDIUM 域对照 breaking-changes.md) | +| **BoardWorld**(`presentation/views/board_world.gd`) | 棋盘 Node2D 世界根(SubViewport 内 CellUnit 容器):世界级去饱和材质与字体注入挂点、英雄精灵持有位 | 无 class_name——使用方经 preload 引用挂树 | BoardView 壳层(SubViewportContainer + SubViewport 结构不变) | Node2D/SubViewport——同 D1 | | **battle_presentation**(B5,垂直切片后) | 结算动画 / 伤害数字 / 战斗舞台 | (契约规范源:`../../gdd/systems/战斗循环/战斗表现.md`——前置「战斗表现美术测试」锁双舞台陷阱) | B1 步骤流(回放脚本源)、D1 | **MEDIUM**:AnimationPlayer(String→StringName 变更)/ Tween | | **audio**(D4,Alpha) | 音频挂点 | (挂点 = B1 明细行类型流;负反馈聚合——单结算至多一次) | B1 流水 | AudioStreamPlayer(4.7 area_mask 默认 1→0 注意) | | **tutorial**(D5,Alpha) | 教学条目 | (口径来源:A2/A3/B3/B1 各教学条目) | 各上游 | 无 | @@ -197,12 +194,12 @@ --- -## 呈现层装配与会话生命周期(迭代 27/28 完成反哺——2026-10-17 用户裁按推荐案写入) +## 呈现层装配与会话生命周期 ### 三屏壳与组合根句柄面 - 呈现场景拆为三屏壳:MenuScreen(开始菜单屏)/CampScreen(营地屏)/AdventureScreen(冒险屏——内含关卡地图与战斗两容器)。 -- 屏成员寻址自实现批起迁经界面注册面(**已建件——迭代 44**):探针挂载假设 `main.X` 迁移为 `main.ui.<域容器>.<句柄>`(ui_screens/ui_battle/ui_modals 三域容器,约 867 处探针与系统测试引用随批改址);原 S13 豁免登记〔2026-10-27「组合根类变量面即探针契约面」〕注销;main.gd 类变量 49→15,注册面形态见「模块归属·呈现层」表 ui_registry 行;ModalFlow 实例随 UiRegistry 构造建立(构造时点与原 UiModals 形态等价——注册面构造点先于装配,迭代 49 卡② 升格直驻);取证探针 shot_probe/fx_shot_probe 随批改址;局态一律住 RunScope 节点,禁在屏/视图侧持有局态引用。 +- 屏成员寻址迁经界面注册面(**已建件**):探针挂载假设 `main.X` 迁移为 `main.ui.<域容器>.<句柄>`(ui_screens/ui_battle/ui_modals 三域容器);main.gd 实测类变量 15,注册面形态见「模块归属·呈现层」表 ui_registry 行;ModalFlow 实例随 UiRegistry 构造建立(注册面构造点先于装配);取证探针 shot_probe/fx_shot_probe 已改址;局态一律住 RunScope 节点,禁在屏/视图侧持有局态引用。 - **组合根拆件**=组合根构造注入、代组合根执行核心写调用的呈现侧子件(现行三件:curio_interact_controller/camp_shop_presenter/treasure_interact_controller——冒险节点后续推进、营地购买与刷新、道具使用)。视图禁直连拆件;核心写调用的可达路径仍是「视图→信号→组合根(含拆件)→核心」,依赖规则与组合根单点装配不变。成员见「模块归属·呈现层」表。 ### 视觉层装配合同 @@ -214,8 +211,8 @@ ### 会话生命周期(RunScope) - `run_scope.gd` = 纯状态承载 Node:零信号连接、零视图构建、零核心写调用(连接只在组合根,组合根经 `run_scope.X` 读写)。 -- 会话更替机制:`_begin_session()` 新建会话节点挂树、旧会话节点**整节点 `queue_free()`**——无独立收束函数,跨局字段清理靠节点释放机制(原手工复位清单随其消亡,新增跨局字段零新增泄漏点);`_ready` 即建闲时会话,`run_scope` 永非 null。 -- **存活性矩阵**(九阶段 × 五引用面,2026-10-17 用户裁认账阶段划分;执行判据=冒烟 V3a–V3i。计划书原十阶段中「开局停点」与「地图选路」在现行流程同为关卡画面停点态、无可观测中间态,合并为一处断言): +- 会话更替机制:`_begin_session()` 新建会话节点挂树、旧会话节点**整节点 `queue_free()`**——无独立收束函数,跨局字段清理靠节点释放机制(新增跨局字段零新增泄漏点);`_ready` 即建闲时会话,`run_scope` 永非 null。 +- **存活性矩阵**(九阶段 × 五引用面,2026-10-17 用户裁认账阶段划分;执行判据=冒烟 V3a–V3i): | 阶段 | run_scope | adventure | runner | settlement | |---|---|---|---|---| @@ -233,8 +230,8 @@ ### 模态编排(ModalFlow/ModalStack) -- `modal_flow.gd` = 模态编排纯逻辑类(依赖仅 ModalStack + 查询 Callable,可直接 `new()` 单测):开合编排(遮挡记账单口 + T17 演播后排窗挂起)/棋盘输入锁谓词/角标置灰谓词三职责。 -- 互斥排除语义随层登记(`register(node, tags)`):`debug_overlay=["non_locking"]`、`level_screen=["screen_state"]`,其余层零标签——原调用点排除式条件拼装已消亡。 +- `modal_flow.gd` = 模态编排纯逻辑类(依赖仅 ModalStack + 查询 Callable,可直接 `new()` 单测):开合编排(遮挡记账单口 + 演播后排窗挂起)/棋盘输入锁谓词/角标置灰谓词三职责。 +- 互斥排除语义随层登记(`register(node, tags)`):`debug_overlay=["non_locking"]`、`level_screen=["screen_state"]`,其余层零标签。 --- @@ -257,13 +254,13 @@ | 域 | 闸 | 本批改动落在这些路径即属该域 | |---|---|---| -| **代码域** | run_smoke、run_system_test、run_all、probe_gate、render_gate、static_scan | **唯一触发=`game/` 下非 `.md` 的行为载体**(代码、测试脚本、探针、场景、数据表、素材)。`game/` 内的 `.md`(README、生成清单)归文档域——2026-10-26 用户裁:判据按文件性质,不按路径前缀。2026-10-18 用户裁「跨领域执法禁绝」(提交 `7bdf53e3`)后,原 `tools/`、`artwork/` 两前缀不再把改动拉进代码域 | +| **代码域** | run_smoke、run_system_test、run_all、probe_gate、render_gate、static_scan | **唯一触发=`game/` 下非 `.md` 的行为载体**(代码、测试脚本、探针、场景、数据表、素材)。`game/` 内的 `.md`(README、生成清单)归文档域——2026-10-26 用户裁:判据按文件性质,不按路径前缀。2026-10-18 用户裁「跨领域执法禁绝」后,`tools/`、`artwork/` 两前缀不把改动拉进代码域 | | **文档域** | gdd_lint、doc_link_audit、doc_term_audit、流水线闸 | `game/` 内的 `.md` 与 `game/` 外的一切路径:`design/`、根规则文件(`AGENTS.md`/`roadmap.md`/`待办清单.md`/`体验验证清单.md`)、`tools/` 工具脚本、`.zcode/` 配置、`sim-data/`、`reports/` | | **两域都含** | repo_structure_audit(熵增闸:顶层目录/根文件/图像白名单/退役路径/design 子目录五查——文档批新增或挪动 `.md` 同样会绊它;纯文本扫描秒级) | — | 口径三条:**域划分的唯一出处是 `tools/run_all_gates.sh`**(`--code`/`--docs`/不带参数=全量),本表是它的现状登记、不是第二份清单;改闸件本身或一次改动跨两域 → 跑全量档(§6.2 共享件例外);开发期手动档按本批改动域选 `--code`/`--docs`,合回后 CI 恒跑全量档。代码域跑前先过**素材齐盘预检**——`game/assets/art/**` 与一切 `*.import` 边车都不入 git(2026-09-29 裁定),worktree 冷检出必空盘,空盘态冒烟 V1 成片假红、渲染闸更是一段 golden 都不比。 -### 车道分层执法(2026-10-31 用户裁恢复「一切改动走 worktree」) +### 车道分层执法(2026-10-31 用户裁「一切改动走 worktree」) 一切改动走独立 worktree,主工作区只作合并落点。执法全机械——判据只有 git 图与路径(豁免面 `.zcode/`、`.qoder/` 不入 git,主区直改),不含「改动大小」等语义判断。 @@ -281,7 +278,7 @@ | **SCRIPT ERROR 扫描** | 已落实(闸③,外部扫描——GDScript 无脚本错误陷阱 API,闸设在外部包装) | 已落实(闸③,标记清单与 run_smoke 同源) | 已落实(入口内扫子套件输出;子进程的 stdout/stderr 须先落盘——`OS.execute` 管道在本机恒空) | 已落实(逐探针段 `tools/error_scan.py`,标记与 run_smoke 同源) | 已落实(三段探针日志逐段 `tools/error_scan.py`,标记与 run_smoke 同源) | 不适用(静态域无运行时错误面) | | **断言数下限** | 无独立下限(闸②摘要行必须在案,防「跑一半仍 PASS」;脚本错误吞断言路径由闸③兜住) | 同 run_smoke(过渡期宿主摘要行必须在案) | 已落实(`Kit.finish` 零断言返回专用退出码 2——与「断言失败=1」区分,防致命类套件的 expect 协议放过) | 已落实(退出码 0 但无该探针签名标记亦判红——防静默退出) | 不适用(golden 容差 + 取证存在性判定) | 不适用(逐规则命中判定;另有扫描面为空即判红的零命中自检) | -背景事实(run_smoke 头注在案):GDScript 运行时脚本错误不改进程退出码、不计入冒烟失败数、且静默中断所在函数剩余断言——2026-09-19 状态记录 83 实证「309 项 0 失败」实为断言未跑全。这是 SCRIPT ERROR 扫描必须存在于判定层的原因。 +背景事实(run_smoke 头注在案):GDScript 运行时脚本错误不改进程退出码、不计入冒烟失败数、且静默中断所在函数剩余断言——实证:「309 项 0 失败」实为断言未跑全。这是 SCRIPT ERROR 扫描必须存在于判定层的原因。 ### 静态扫描域 S1–S13 承接清单 @@ -291,20 +288,20 @@ |---|---|---| | S1 | 玩法代码禁 `randomize()`、自建 `RandomNumberGenerator`(D2 Rule 5) | **在位**(硬失败;扫描面 game/core + game/presentation)。非产品码三目录(`game/tests`/`game/probe`/`game/sim`)不进本闸与 S2——它们自建且**显式定种**的随机源是合法测量口径(同种子对拍改前改后读数),禁的是不定种形态;适用域分档与无机器闸的理由见 code-conventions §4 第 13 条(2026-11-03 架构审查 P1 余项裁:不扩扫描面,人工评审承载) | | S2 | 禁全局随机函数 `randi()` / `randf()` / `randf_range()`——全局 RNG 绕开 RngService(specialist 补登) | **在位**(与 S1 同段硬失败;实例方法 `.randi()` 排除、`rng-seed-exempt` 豁免注记在案) | -| S3 | core/ 禁 ConfigDB 外 data 表加载(`load(` / `preload(` / `ResourceLoader.load`;schema class_name 直引豁免)(D2 Rule 2) | **在位**(warning 级——class_name 直引误报需人工复核;路径已由裸 `core` 修正为 `game/core`,此前恒零命中静默空转;豁免 config_db.gd 自身=数值单一事实源的正主)。2026-11-03 架构审查 P1 余项裁**维持 warning 级不升硬**:升硬的前提是先有可靠的直引误报排除判据,该判据未立;本行状态即事实源,禁在别处另列 | +| S3 | core/ 禁 ConfigDB 外 data 表加载(`load(` / `preload(` / `ResourceLoader.load`;schema class_name 直引豁免)(D2 Rule 2) | **在位**(warning 级——class_name 直引误报需人工复核;路径=`game/core`;豁免 config_db.gd 自身=数值单一事实源的正主)。2026-11-03 架构审查 P1 余项裁**维持 warning 级不升硬**:升硬的前提是先有可靠的直引误报排除判据,该判据未立;本行状态即事实源,禁在别处另列 | | S4 | core/ 禁 `extends Control/Node2D`、禁 `.tscn` preload(D2 Rule 7) | **在位**(硬失败) | | S5 | core/ 禁裸引用 autoload 全局标识符(`ConfigDB` / `RngService` 直接写 = --script 模式 parse error)——构造注入 only(specialist 升格) | **在位**(硬失败;形态=标识符后紧跟 `.` 的成员访问,排除注释行与字符串字面量) | | S6 | core↔core 信号连接只许方法 Callable(禁 lambda 捕获 self);发射者禁持有订阅者反向引用 | **在位**(2026-10-25 落闸:内联 lambda 禁令机器闸——同行与跨行两形态、豁免注记 `s6-signal-exempt`、盘面零存量;「发射者禁反向引用」句静态判据不成熟,归人工评审面承接、不造弱判据) | | S7 | B1 编排唯一性:B2/B3/B4 API 符号命中文件 ⊆ B1 文件集;A2/B3/B4 零相互直调(B1 AC-43) | **在位**(2026-10-25 落闸:符号清单×B1 域文件集,族内自调用豁免、豁免注记 `s7-b1-exempt`、缺位自检;全符号形态盘面零存量) | -| S8 | 结算路径 `await` 零命中(B1 结算/编排文件集);字面量扫描 = warning 级 + 人工三要素复核(D2 AC-14 口径) | **在位**(2026-10-25 落闸:B1 域文件集 await 零命中,排除注释与字符串;盘面零存量。清单单点=`static_scan.sh` 的 `B1_SET`,S7 的豁免名单由它派生(原两份 14 文件抄本已并点,2026-11-03 架构审查 P1 裁)。自检两件:①清单内文件缺位即红;②**目录域反向对账**——`game/core/settlement/` 实有 `.gd` 未登记进 `B1_SET` 即红(新段类忘登记=await 面静默失效,2026-11-03 补)。反向对账只覆盖 settlement/:装板/授予/效果端口/掷格四件结算码住 `game/core` 根下,纯目录域覆盖不住,根下新增仍由本行「模块归属」B1 登记面+写卡段申报承接。本行后半句「字面量扫描=warning 级+人工三要素复核」为独立子项、仍归人工面 | +| S8 | 结算路径 `await` 零命中(B1 结算/编排文件集);字面量扫描 = warning 级 + 人工三要素复核(D2 AC-14 口径) | **在位**(2026-10-25 落闸:B1 域文件集 await 零命中,排除注释与字符串;盘面零存量。清单单点=`static_scan.sh` 的 `B1_SET`,S7 的豁免名单由它派生。自检两件:①清单内文件缺位即红;②**目录域反向对账**——`game/core/settlement/` 实有 `.gd` 未登记进 `B1_SET` 即红(新段类忘登记=await 面静默失效)。反向对账只覆盖 settlement/:装板/授予/效果端口/掷格四件结算码住 `game/core` 根下,纯目录域覆盖不住,根下新增仍由本行「模块归属」B1 登记面+写卡段申报承接。本行后半句「字面量扫描=warning 级+人工三要素复核」为独立子项、仍归人工面 | -域外扩充五件(S11/S12/S13 自 2026-09-29 起陆续落闸,本表原先只登记到 S10,2026-11-03 补齐登记面):**S9** 类型闸(`tools/audit_type_hints.py`,迭代 27 T5——产品码无类型容器/有值返回缺类型/参数缺类型;扫描面=产品码三目录);**S10** 文件头闸(`tools/audit_file_headers.py`——头注 `##` 载体+日期/变更叙事黑名单;扫描面=产品码三目录);**S11** 代码注释禁用词闸(扫描面=`game/` 全域 `.gd`/`.tres`/`.md`/`.json`/`.sh`,词表单点取 `design/gdd/术语表.md`);**S12** 效果引擎无状态化旧件零残留闸(扫描面=`game/` 全域 `.gd`/`.tres`,旧符号与旧 id 字面清单为脚本字面值);**S13** 第三方质量规则闸(`tools/gdstyle_gate.py`,钉 gdstyle v0.4.0;扫描面=产品码三目录,存量以 `tools/gdstyle_baseline.txt` 欠账簿登记,判定=基线外新键红、同键数值恶化红)。 +域外扩充五件:**S9** 类型闸(`tools/audit_type_hints.py`——产品码无类型容器/有值返回缺类型/参数缺类型;扫描面=产品码三目录);**S10** 文件头闸(`tools/audit_file_headers.py`——头注 `##` 载体+日期/变更叙事黑名单;扫描面=产品码三目录);**S11** 代码注释禁用词闸(扫描面=`game/` 全域 `.gd`/`.tres`/`.md`/`.json`/`.sh`,词表单点取 `design/gdd/术语表.md`);**S12** 效果引擎无状态化旧件零残留闸(扫描面=`game/` 全域 `.gd`/`.tres`,旧符号与旧 id 字面清单为脚本字面值);**S13** 第三方质量规则闸(`tools/gdstyle_gate.py`,钉 gdstyle v0.4.0;扫描面=产品码三目录,存量以 `tools/gdstyle_baseline.txt` 欠账簿登记,判定=基线外新键红、同键数值恶化红)。 -S11/S12 扫描面覆盖全域,故 sim/probe/tests 的术语与旧件面**在册**;其余十一闸(S1–S10、S13)扫描面止于产品码,非产品码三目录不受约束——分档理由与各目录的运行期承接通道见 code-conventions §4 第 13 条。**防空转自检现行状态**(本文「三层承载与判定原则」要求扫描面为空即判红):S1–S8 与 S11/S12/S13 各自带空面或缺位自检;**S9/S10 两件已补齐同款自检**(`tools/audit_type_hints.py` 与 `tools/audit_file_headers.py` 缺目录或扫描面零个 `.gd` 一律判红,并绿时打印扫描面件数供核;2026-11-03 架构审查 P1 余项的工程改动批落地,本表此前登记的「静默零命中即 PASS」偏差已清偿)。 +S11/S12 扫描面覆盖全域,故 sim/probe/tests 的术语与旧件面**在册**;其余十一闸(S1–S10、S13)扫描面止于产品码,非产品码三目录不受约束——分档理由与各目录的运行期承接通道见 code-conventions §4 第 13 条。**防空转自检现行状态**(本文「三层承载与判定原则」要求扫描面为空即判红):S1–S8 与 S11/S12/S13 各自带空面或缺位自检;**S9/S10 两件已补齐同款自检**(`tools/audit_type_hints.py` 与 `tools/audit_file_headers.py` 缺目录或扫描面零个 `.gd` 一律判红,并绿时打印扫描面件数供核)。 ### 三层承载与判定原则 -测试分标准四级+UI 探针(2026-10-22 用户裁,测试术语与层级重构批),各有在册承载与入闸方式(细目见 `game/tests/README.md`): +测试分标准四级+UI 探针(2026-10-22 用户裁),各有在册承载与入闸方式(细目见 `game/tests/README.md`): | 层 | 判什么 | 承载 | 入闸 | |---|---|---|---| @@ -331,11 +328,11 @@ S11/S12 扫描面覆盖全域,故 sim/probe/tests 的术语与旧件面**在 本节为测试域(测试载体、判定口径、静态扫描域)的事实源。新增违规案例仍须先补 static_scan 规则再修码(code-conventions 缺陷-规范对照表纪律)。 -**S13 测量面豁免注销(2026-10-29 零豁免裁)**:原循环内 `await` 豁免〔2026-10-27〕注销——tune_sim_controller 改 process_frame 信号常驻连接+步进状态机(每帧一局、帧相位逐点对齐,已建件——迭代 44 卡③);运行态收尾现行形态=run() 尾每批一次执行(卡③ v1.0 申报的「每局置假还原」前提已被迭代 41 测试债批 215da315 先行消化,行为改动申报随 v1.1 停卡重裁剥离)。 +**S13 测量面豁免注销(2026-10-29 零豁免裁)**:tune_sim_controller 改 process_frame 信号常驻连接+步进状态机(每帧一局、帧相位逐点对齐,已建件);运行态收尾现行形态=run() 尾每批一次执行。 -**S13 豁免第三条注销(2026-10-29 零豁免裁)**:原 battle_orchestrator max-class-variables 豁免〔2026-10-28 迭代 40 卡①〕注销——RoundCycle/BattleFacts 两新件设计闭合(宿主实测 15,已建件——迭代 44 卡② 合回,见「战斗编排域拆件定稿」节轴丁)。 +**S13 豁免第三条注销(2026-10-29 零豁免裁)**:RoundCycle/BattleFacts 两新件设计闭合(宿主实测 15,已建件,见「战斗编排域拆件定稿」节轴丁)。 -**gdstyle 计数截断缺陷登记(2026-10-29 两设计批独立实证)**:gdstyle v0.4.0 对文件内 inner class 的成员计数存在截断——内嵌类中带行尾注释的属性声明截断其后续成员计数(standee_body 实测 31 声明仅记 19、board_cell_unit 33 仅记 30)。基线登记值属欠估;闸机扫描与基线同源、判定口径自洽不误报,债的真值以实查为准——零豁免各批按真实口径设计(实数低于阈值,不依赖解析缺陷)。**清偿结果(2026-10-31)**:board_cell_unit 30→10、standee_body 19→10 已随迭代 45 真实清偿,基线 refresh 已收账(欠估口径旁证=33/31 声明与实测吻合)。登记待办:向 gdstyle 上游报 issue(仍在册)。 +**gdstyle 计数截断缺陷登记**:gdstyle v0.4.0 对文件内 inner class 的成员计数存在截断——内嵌类中带行尾注释的属性声明截断其后续成员计数(standee_body 实测 31 声明仅记 19、board_cell_unit 33 仅记 30)。基线登记值属欠估;闸机扫描与基线同源、判定口径自洽不误报,债的真值以实查为准——按真实口径设计(实数低于阈值,不依赖解析缺陷)。登记待办:向 gdstyle 上游报 issue(仍在册)。 --- @@ -387,10 +384,10 @@ CJK 字体随包发行并设为 theme 默认字体——运行时默认字体无 → C2 begin_run:RngService.set_master_seed()(唯一接线方;两流计数器全零前提) → B1.begin_battle(encounter):set_reload_gate(true) → B3 开域 → B2 spawn → A2 install_board(A1.generate) + B4 roll_board(恰一次)→ A3 notify_round_start → 挖掘循环 …… → battle_over 清理序列 → set_reload_gate(false) - → 关卡末:通关结算(钥石/GP/专长 level_clear 渠道——现行语义归 冒险结构 GDD;原 clear_inventory 随库存轴下线退役 2026-09-15) + → 关卡末:通关结算(钥石/GP/专长 level_clear 渠道——现行语义归 冒险结构 GDD) ``` -**启动后置条件**(2026-10-17 用户裁入册——迭代 28 以冒烟 V2a–V2f 共 11 条断言把「启动完成后玩家该看到什么」成文;执行判据事实源在 `game/tests/system_test.gd`): +**启动后置条件**(2026-10-17 用户裁入册;执行判据事实源在 `game/tests/system_test.gd`): 1. ConfigDB 就绪且表已载(`is_ready` + hero 表在座)。 2. 系统设置已落引擎态——Master 音量 mute/volume_db = settings_store 现值;减动效开关 = `UiKit.motion_scale`。 @@ -431,7 +428,7 @@ CJK 字体随包发行并设为 theme 默认字体——运行时默认字体无 5. **fail-fast + 零特判**——数据错误一律致命中止(错误数值上线比崩溃更伤);API 非法 = 拒绝 + 诊断不静默;变异零运行时分支(行为差异全部由生成端约束保证)。 6. **依赖单向 + 组合根模式**——层间单向依赖、唯一回边 = A2 事件订阅面;核心写调用唯一发生在组合根;禁上帝对象(切片 1100 行 main.gd 反面案例 → 9 单元拆分)。 7. **呈现层契约成文**——面向呈现的信号载荷必须有成文 schema;模态覆盖层必须有"打开时遮挡物隐藏"场景级断言;场景级 UI 探针测试为标配(切片缺陷 ①②④⑤ 教训沉淀)。 -8. **系统无状态**——效果引擎这类系统零运行时可变状态:数据由宿主对象持有并随宿主生灭,状态按参数传入系统,系统只做判定(立项判据=2026-10-19 用户会话裁定;落地=迭代 32 卡②,2026-10-21 用户裁写入)。系统实例不持计数器——计数器住桶(round/battle/level/adventure 四桶,EffectContext 引用束),桶住宿主。 +8. **系统无状态**——效果引擎这类系统零运行时可变状态:数据由宿主对象持有并随宿主生灭,状态按参数传入系统,系统只做判定(立项判据=2026-10-19 用户会话裁定)。系统实例不持计数器——计数器住桶(round/battle/level/adventure 四桶,EffectContext 引用束),桶住宿主。 9. **停点权威在核心层**——玩家决策停点(选路、三选一、商店、恢复这类)的推进守卫住核心层状态机:停点未兑付,推进口一律拒绝(零自动推进契约);呈现层模态只做开合与输入锁——阻塞是两层结构,核心守卫为权威、模态为体验;停点态是核心状态、随断点序列化,headless 跑批与真实局同一套规则,中断续玩恢复到同一停点。 --- diff --git a/design/engineering/process-conventions.md b/design/engineering/process-conventions.md index 3ed32191..e5d9cfa6 100644 --- a/design/engineering/process-conventions.md +++ b/design/engineering/process-conventions.md @@ -7,12 +7,12 @@ ## 1. 分支纪律(worktree 铁律) -主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;2026-10-30 的「主区直改+直提」车道与 commit 点 pre-commit 直改闸随之退役;验证模型同构——合回后远端 CI 是唯一强制验证点,2026-11-03 用户裁,细则见本节第 3 条): +主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;验证模型=合回后远端 CI 是唯一强制验证点,细则见本节第 3 条): 1. **worktree 车道(一切面)**:每回合先建独立 worktree(建区粒度=回合,会话单区细则见第 5 条):`git worktree add ../g-plan2-<任务名> -b <任务分支>`;建区后立刻跑 `tools/setup_worktree_userdir.sh`——给该区独立 Godot user 目录(测试夹具、试玩日志、截图产物不与其他区共用;主区不生成,真实档保持原位)。所有改动与提交都在 worktree 内自由进行——commit 点零钩子检查(`tools/hooks/pre-commit` 已删除)。豁免面仅 `.zcode/`(钩子与配置)与 `.qoder/`(本机 harness 配置)允许主工作区直改——两份实测均不入 git(走 worktree 反而带不进去,改动只对本机生效) 2. **收口顺序(固定)**:**冻结 → 件核 → 并 master → 重塑 → 主区合回 → 删区**——代码与断言改完即冻结,全仓件核 grep 查残留;master 已被别的批次推进时先在 worktree 内 `git merge master` 解冲突(必须在合回之前,合回后才并=CI 验的是中间态);**重塑**=迭代分支(iter 形)合回前执行 `python tools/reshape_cards.py`,把分支线性史按卡末态快照压成一卡一笔(可选追加一笔纯文档收尾),master 台账由此每卡一行——工具自带「重塑前后树逐字节一致」断言与 backup 分支,不改任何文件内容;非迭代批免重塑;然后主工作区 `git merge --no-ff <任务分支>`——这是主区唯一合法写动作(合回守卫对迭代分支数卡校验,未归卡提交拦下)。**合回落地即 `git worktree remove`+删分支(合回即删,2026-09-19 原裁);post-merge 钩子已在合回落地时自动触发 CI,红态不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,非 iter 形免重塑免数卡)修复提交再合,落地复验追绿后删修复区**。游戏类测试(冒烟/单测/MC/探针)批内默认零执行(两入口铁规,见 §4),用户点名或当场问才跑 -3. **合回后验证(远端 CI,2026-11-03 用户裁取代本地 CI)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式),工作流按改动域分流(分流算法单点=`tools/ci/domain_route.sh`:游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发)——唯一强制验证点。远端结果用 `tools/ci_check.sh <合并提交>` 按需现查(读该提交任务的 run 自身 `status`/`conclusion`,只呈报、不落盘),agent 开工先读 CI 状态的纪律不变,红未修不开新批。**绿须坐实**:零触发批的 run 照样建、照样 conclusion=success,但跑闸步是 `skipped`(run 55 实证)——一条闸都没跑不构成验证,现查件对此呈报「未验」(退出码 4),禁当绿证用;job 列表为空、取不到步级读数或工作流里没有跑闸步时呈报「不可判」,同样禁当绿证。CI 红态不回滚合并——修复走新开修复 worktree(`fix-<任务名>` 分支,非 iter 形免重塑免数卡),修复合回落地即再推再验追绿(追绿同链;本地跑批件 `ci_runner.sh` 与本地追绿钩子 post-commit 已退役)。导入缓存刷新(.godot 不入 git 的在册坑)由工作流「导入缓存刷新」步接管。**合回零等待纪律(2026-11-04 用户裁,取代 2026-11-02 回执等待纪律)**:合回落地即向用户呈报本批总结并止回合——不挂后台轮询、不等回执、不被唤醒;CI 结论什么时候要看就现查一次(`tools/ci_check.sh`,run 那时早已落定,秒级)。退役缘由=原轮询件把「commit status 离开 pending」当终局判据,会把 run 未落定期的尝试级失败写成终局红(run 37 实证:开跑 36 秒写红,该 run 三分半后 `conclusion=success`),且零触发批与 runner 排队必熬满超时再写红;同 commit 的多路轮询还重复覆写同一份判定。跑闸等一切分钟级跑批的等待纪律不变——后台运行,禁前台 sleep/轮询循环。 -4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge 钩子——远端 CI 触发(只推送,不挂等待;仅主工作区,任务 worktree 内的合并不触发)。③git 层不设车道钩子(pre-commit 直改闸已退役)——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层) +3. **合回后验证(远端 CI,2026-11-03 用户裁)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式),工作流按改动域分流(分流算法单点=`tools/ci/domain_route.sh`:游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发)——唯一强制验证点。远端结果用 `tools/ci_check.sh <合并提交>` 按需现查(读该提交任务的 run 自身 `status`/`conclusion`,只呈报、不落盘),agent 开工先读 CI 状态的纪律不变,红未修不开新批。**绿须坐实**:零触发批的 run 照样建、照样 conclusion=success,但跑闸步是 `skipped`(run 55 实证)——一条闸都没跑不构成验证,现查件对此呈报「未验」(退出码 4),禁当绿证用;job 列表为空、取不到步级读数或工作流里没有跑闸步时呈报「不可判」,同样禁当绿证。CI 红态不回滚合并——修复走新开修复 worktree(`fix-<任务名>` 分支,非 iter 形免重塑免数卡),修复合回落地即再推再验追绿(追绿同链)。导入缓存刷新(.godot 不入 git 的在册坑)由工作流「导入缓存刷新」步接管。**合回零等待纪律(2026-11-04 用户裁,取代 2026-11-02 回执等待纪律)**:合回落地即向用户呈报本批总结并止回合——不挂后台轮询、不等回执、不被唤醒;CI 结论什么时候要看就现查一次(`tools/ci_check.sh`,run 那时早已落定,秒级)。退役缘由=原轮询件把「commit status 离开 pending」当终局判据,会把 run 未落定期的尝试级失败写成终局红(run 37 实证:开跑 36 秒写红,该 run 三分半后 `conclusion=success`),且零触发批与 runner 排队必熬满超时再写红;同 commit 的多路轮询还重复覆写同一份判定。跑闸等一切分钟级跑批的等待纪律不变——后台运行,禁前台 sleep/轮询循环。 +4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge 钩子——远端 CI 触发(只推送,不挂等待;仅主工作区,任务 worktree 内的合并不触发)。③git 层不设车道钩子——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层) 5. **会话单区(2026-11-04 用户裁)**:建区粒度=回合——同一时刻每会话至多一个 worktree 在役;合入删区之前,会话内用户追加的事项一律并入在役区推进,禁为追加事项另开新区。区内全部事项完成后只做一次合入(一次 `git merge --no-ff`、post-merge 一次推送、远端 CI 只跑一次),追加事项在合入提交信息里分列;无改动需求的事项不建区。合回删区后用户再发令的事项=新回合,另开新区(区名取该回合主任务名)。CI 红的 `fix-<任务名>` 修复区属同一回合的追绿延续,不另算新区。迭代实现批(iter 形分支)独占回合——其他类事项不得并入迭代区(合回守卫数卡校验本就拦未归卡提交),待其合回后按新回合另开。 ## 2. 五段流水线 @@ -50,7 +50,7 @@ **完成** 8. **合回后 CI 验证(唯一强制验证点)**——主工作区 `git merge --no-ff <任务分支>` 落地后 post-merge 钩子自动推送 origin master 触发远端 CI;远端按改动域分流(§1 第 3 条),游戏码批跑全量域闸(不带参数档,02 全套件),判定与红项用 `tools/ci_check.sh <合并提交>` 按需现查(读 run 终局态,只呈报不落盘)。全量是游戏码批的强制档:跨卡触面、探针与未申报套件的消费漏网只有全量闸能抓(迭代 44 实证),关联档选测的盲区由它兜底。合回前独立验收审计通过(iter 技能第 5 步),未过不合回。`tools/run_all_gates.sh` 是全部验证闸的**唯一入口、唯一清单与唯一域划分(含选闸算法与套件族映射表)**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。开发期手动跑批按需选档(按文件性质判域:代码面→`--code`,文档件→`--docs`,两类都有→全量;`--code` 关联档选测——02 只跑「需求卡片申报 ∪ diff 推导」并集套件、00 冒烟/01 系统测试/09 静态扫描三件保险恒跑、横切面回落全量——算法见闸脚本),手动跑不构成验收。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占 CI 全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;闸真崩溃时远端 CI 判红在案(job 失败=verdict 红,fail-closed 语义保留) -9. **重跑语义(2026-10-30 用户裁,取代原「每批一次/合并后零复跑」口径)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复合回(post-merge 钩子再推再验,每轮修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。导入缓存刷新由远端工作流「导入缓存刷新」步接管,合并后无手工动作 +9. **重跑语义(2026-10-30 用户裁)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复合回(post-merge 钩子再推再验,每轮修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。导入缓存刷新由远端工作流「导入缓存刷新」步接管,合并后无手工动作 10. **批次完成后的登记义务**——合回 master 后按 doc-conventions §12.1 推进待办清单条目状态(做完整条删除),涉及迭代编排的在 roadmap 迭代总表与顶部「当前位」节换代——执行入口=项目技能 batch-closure(批后收尾与中间文档退役),跨会话教训写记忆库。批次过程与结论由 git 提交信息承载,禁止再写会话状态文件(见 doc-conventions 第 10 节)。`design/` 与根规则文件(`AGENTS.md`/`roadmap.md`/`待办清单.md`/`体验验证清单.md`)实现批禁写,见 §12 11. **文档同步闸(实现批禁写文档)**——实现批**禁写 `design/` 整个目录与根规则文件**,**另禁写 `game/tests/README.md`(能力清单,归写卡段维护,test-conventions §8.9)**,要往外交代的东西一律落 `reports/`:实现报告 `reports/iter-实现报告-<日期>.md`(各卡状态+实机目检总清单+遗留读数义务+实现决定记录——超白名单/超卡片明列范围事项逐条记「决了什么/为什么/代价/撤销方式」,全部按卡执行时只写一行「零拍板」)、GDD 反哺点清单 `reports/iter-反哺点-<日期>.md`(每条写清哪个文件哪一节、改成什么、依据是什么)。设计权威文档(GDD/art-bible)**任何批都不直改**:用户在会话中逐点裁决后,由工程/文档设计改动批(直改类)写入 `design/`(执行入口=doc-design 技能),并把反哺条目从 `reports/` 清掉(吸收即死;退役执行=batch-closure 技能)。机械面文档(roadmap 行/术语表/README 工具注)同样归工程/文档设计改动批在合并前更新。反哺点未落地期间相关 GDD 节视为待反哺,读前先查 `reports/` 与待办清单;需求卡片必列「关联文档同步面」按两层标注 12. **实机目检归用户,只登记不阻塞**——真人检测项登记进实现报告目检总清单与体验验证清单即完成批内义务;禁把等目检当停工理由或完成前置 diff --git a/design/engineering/test-conventions.md b/design/engineering/test-conventions.md index ffc6c41a..84be4ed0 100644 --- a/design/engineering/test-conventions.md +++ b/design/engineering/test-conventions.md @@ -27,7 +27,7 @@ ## 4. 验证时机(合回后远端 CI 制,2026-11-03 换代) -开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的远端 CI:git merge 合回 master 落地后 post-merge 钩子推送 origin master,远端按改动域分流跑 `tools/run_all_gates.sh`(游戏码批=不带参数档两域全量、02 全套件——跨卡触面与关联档选测的盲区由全量兜底;文档批=文档域秒级闸;分流算法单点=`tools/ci/domain_route.sh`),远端结果用 `tools/ci_check.sh <合并提交>` 按需现查(读 run 自身 `status`/`conclusion`,只呈报、不落盘——合回不等待、不唤醒,process-conventions §1 第 3 条);CI 红态下修复合回落地即再推再验追绿(修复走新开 `fix-<任务名>` 修复 worktree,process-conventions §1;本地跑批件 ci_runner.sh 与本地追绿钩子 post-commit 已退役)。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。 +开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的远端 CI:git merge 合回 master 落地后 post-merge 钩子推送 origin master,远端按改动域分流跑 `tools/run_all_gates.sh`(游戏码批=不带参数档两域全量、02 全套件——跨卡触面与关联档选测的盲区由全量兜底;文档批=文档域秒级闸;分流算法单点=`tools/ci/domain_route.sh`),远端结果用 `tools/ci_check.sh <合并提交>` 按需现查(读 run 自身 `status`/`conclusion`,只呈报、不落盘——合回不等待、不唤醒,process-conventions §1 第 3 条);CI 红态下修复合回落地即再推再验追绿(修复走新开 `fix-<任务名>` 修复 worktree,process-conventions §1)。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。 行为探针使用随机化玩家行为(封印/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。 ## 5. 测试函数怎么写——验收清单条目的落码规范 @@ -46,11 +46,11 @@ | 重放 | 同种子断点回放、改前改后配对 | | 状态/计数器断言 | 条件解锁、限次、充能——置数据→走路径→断计数值 | -4. **调试注入两层(能力测试与流程体验两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay/DS_DEBUG 调试面,服务用户目检(发布态该面恒隐、无 UI 开启口——写死行已随迭代 38 卡⑦ 删除,开发期临时启用=本地改 `_debug_entry` 缺省、不提交;能力测试不经 UI,本条口径不受影响)。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。 +4. **调试注入两层(能力测试与流程体验两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay/DS_DEBUG 调试面,服务用户目检(发布态该面恒隐、无 UI 开启口,开发期临时启用=本地改 `_debug_entry` 缺省、不提交;能力测试不经 UI,本条口径不受影响)。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。 5. **换代批旧验证约束同生死**:删除旧数据行/旧实现代码的批次,必须同批摘除只验证旧实现的断言与护栏校验,由新断言替代——旧件断言残留=冒烟假绿来源;合并后冒烟全绿且全仓无旧件残留引用为证。 -6. **违约通道类需求点必须落独立负面套件(2026-10-28 迭代 40 立)**:预期运行期违约/致命路径的需求点(handler 通道、fail-fast 分支)一律落独立负面套件并按 manifest 登记 `expect=1, negative=true`,禁落现役非负面套件——headless 下 assert 失败必产不可捕获的 SCRIPT ERROR,非负面套件的输出被错误扫描命中即假红(先例=reward_dangling_treasure/counter_prefix_fatal/extended_row_violation/run_time_fatal 四件)。 +6. **违约通道类需求点必须落独立负面套件(2026-10-28 立)**:预期运行期违约/致命路径的需求点(handler 通道、fail-fast 分支)一律落独立负面套件并按 manifest 登记 `expect=1, negative=true`,禁落现役非负面套件——headless 下 assert 失败必产不可捕获的 SCRIPT ERROR,非负面套件的输出被错误扫描命中即假红(先例=reward_dangling_treasure/counter_prefix_fatal/extended_row_violation/run_time_fatal 四件)。 -## 6. 判定三硬闸——闸承载的构造义务(迭代 29 起) +## 6. 判定三硬闸——闸承载的构造义务 任何**新增或改写的闸承载**(闸脚本/批跑编排/探针入口)必须三闸齐备;现行各闸状态登记归架构文档「测试与质量域」节(本文不另列闸件清单): @@ -62,10 +62,10 @@ **新写测试件全类型标注**——新写的测试件(冒烟断言/探针/单测)参数、返回值、容器一律带类型标注,与 S9 对产品码的要求同型;存量不强制清扫,被批次触碰时顺带换代。暂不机器闸(S9 扫描面=产品码,probe/sim/tests 不在扫描面是测量面直构惯例的既有裁量)。 -## 7. 判定可靠性优先于覆盖率(迭代 29 核心命题) +## 7. 判定可靠性优先于覆盖率 - 「跑一遍没崩=通过」无效:测试绿只证明**当前代码没犯这个错**,不证明**犯了这个错会被抓住**;断言存在不等于断言执行。 -- **脚本错误会静默中断所在函数的剩余断言,而套件仍报全绿**(机制事实):GDScript 无脚本错误陷阱 API,错误不改进程退出码、不计失败数。三处实证:①2026-09-19「309 项 0 失败」实为断言未跑全(状态记录 83);②敌人表行集纪律 10 条断言因定型数组赋值错误从未执行(迭代 29 修复后两条正向见红=夹具本缺锚行);③`Callable` 形参类型写错致解析函数返回 null、后续断言整段蒸发。 +- **脚本错误会静默中断所在函数的剩余断言,而套件仍报全绿**(机制事实):GDScript 无脚本错误陷阱 API,错误不改进程退出码、不计失败数。三处实证:①「309 项 0 失败」实为断言未跑全;②敌人表行集纪律 10 条断言因定型数组赋值错误从未执行(修复后两条正向见红=夹具本缺锚行);③`Callable` 形参类型写错致解析函数返回 null、后续断言整段蒸发。 - 由此产生两条义务:**写闸件**按 §6 配三硬闸;**写验收函数**必须自证断言全数执行——真实入口断言在当轮执行并通过(§8.4)为主证,零命中自检(扫描面为空即判红)为辅证。 - **覆盖率不是目标**:不引入行覆盖率度量(Godot 无内建,第三方属新基建);现行补洞=能力清单覆盖域表+人工判定,判定可靠性靠上列自证手段,不靠覆盖率数字。 @@ -163,7 +163,7 @@ 3. **数量不守恒、承接守恒**:三层条数天然不等——一条验收意图可由多个能力承接,一条能力义务由多条断言覆盖。要守的是两个满射:每条验收意图至少有一条能力义务承接,每条能力义务至少有一条真实入口断言落地。数量对账只在批内做,见第 4 条。 4. **无全局对账总账**:不建逐断言账本,不做跨层条数对账;对账只在每批的改动—验收对照表里做(§8.3)。历史教训:阶段 2 退役的逐断言账本正因把义务清单层与证据层压成一本账而失修。 -**维护时序(2026-10-29 改版:废「滞后一个迭代」)**:能力清单归写卡段维护——写需求卡片时当场入表:本批新增能力当场增行(真实入口取自设计文档已定的入口,代表用例=卡内定死的计划测试 `文件:函数`),受影响存量行(入口/用例名变更)同批更新,能力退役删行;实现批禁写该文件(process-conventions §3 第 11 条)。实现照单落名:测试函数名以清单为唯一依据,名实不符=卡片没写清=停卡退回。批末收尾只核对表上名字与实际落地一致(改名则回表),不刷任何批次字段——清单不记「是否已验证/是否跑过」,落地账在改动—验收对照表(§8.3)与独立验收审计(§8.7)。 +**维护时序(2026-10-29 改版)**:能力清单归写卡段维护——写需求卡片时当场入表:本批新增能力当场增行(真实入口取自设计文档已定的入口,代表用例=卡内定死的计划测试 `文件:函数`),受影响存量行(入口/用例名变更)同批更新,能力退役删行;实现批禁写该文件(process-conventions §3 第 11 条)。实现照单落名:测试函数名以清单为唯一依据,名实不符=卡片没写清=停卡退回。批末收尾只核对表上名字与实际落地一致(改名则回表),不刷任何批次字段——清单不记「是否已验证/是否跑过」,落地账在改动—验收对照表(§8.3)与独立验收审计(§8.7)。 **文档纯度**:验收意图与能力描述只写玩家或系统可观测面,禁写代码路径(`.gd`/`.py`/`.sh`)、测试文件名、断言名;唯一例外=配置文件索引(`game/data/tables/*.tres` 这类表路径与表名)。规则正文见 doc-conventions §5「禁实现内容」。 diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index d6dc14b5..48bce357 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -46,14 +46,14 @@ | `关卡节点图生成.md` | 一关的节点图从哪来——生成器按参数产出合法图 | 已定稿 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(专长=触发器句式的机制件 / 属性值提升 / 补给=给系统资源加一笔的转换源凭证 × 三条渠道:奖励节点 / 商店 / 关底 Boss 击败) | 已实现·迭代 20 专长实装批落地(29 行=基础 27+迁入 2,流派机制退役;池结构案D 四级 104,关卡完成兑付=专长三选一按档配比加权) | +| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(专长=触发器句式的机制件 / 属性值提升 / 补给=给系统资源加一笔的转换源凭证 × 三条渠道:奖励节点 / 商店 / 关底 Boss 击败) | 已实现(专长 29 行=基础 27+迁入 2,流派机制已退役;池结构案D 四级 104,关卡完成兑付=专长三选一按档配比加权) | ### 跨局循环(`systems/跨局循环/`) | 文件 | 一句话概要 | 状态 | |---|---|---| | `元进度.md` | 跨局成长(旧体系未单独成文) | 已定稿·已实现 | -| `天赋树.md` | 跨局成长的树形承载(**结构/节点/数值/效果一律以该文档为唯一事实源——本表不复制其内容,只作指路**) | v0.8 换代定稿待实装(迭代 21 天赋树实装批,2026-10-11 用户令编入,开工门=U0 发令;需求卡片 v1.7) | +| `天赋树.md` | 跨局成长的树形承载(**结构/节点/数值/效果一律以该文档为唯一事实源——本表不复制其内容,只作指路**) | v0.8 换代定稿(沿革查 git 提交史) | | `生涯.md` | 主菜单一级的局外只读界面——跨局汇总、历史冒险回看、图鉴承接(冒险中数据回看的唯一承接处,P-C7 裁决) | 范围草案·待评审 | | `锻造工坊.md` | 营地武器与护甲成长——武器锻造区(长剑/长枪/法杖)与护甲锻造区(轻甲/重甲/魔法护甲)各三条独立等级路线,钥石几何定价,一次冒险各选一件,满级特效留扩展位本期不做 | v0.5·**设计定案待实装(17 裁点已清零**——2026-10-12 B 组逐裁:1 丙/1a 一冒险一件武器+一件甲/2a 伪裁点消解/3b 敌方攻击缺省普通·克制反向当下生效/6 满级特效本期不做/8a 两区定名;2c·5a 于 v0.4 结案);开工门=17 裁点清零+用户发令,裁点门已满足——现状见待办清单 | | `秘宝.md` | 营地装配、整局冒险生效的角色机能件——操作包络加强(视野/行动点/刷新/挖掘距离等),不出角色战斗属性值、不改战斗结算机制 | 已定稿·跨局件(2026-10-10 自排雷循环迁入——解锁/装配/存档持久全在跨局侧) | diff --git a/design/gdd/03-内容规模.md b/design/gdd/03-内容规模.md index 0c876931..1318120a 100644 --- a/design/gdd/03-内容规模.md +++ b/design/gdd/03-内容规模.md @@ -63,7 +63,7 @@ MVP 不加新状态;扩容走 `status_effects.tres` 加行 + [增益状态](sy 垂直切片阶段明确砍掉或推迟的内容,写在这里防止回潮: - 更多关卡(N>3)——第三关已按扩展批流程落地(行集);三关正式序列已生效,唯一试玩入口 = 完整冒险 -- 精英节点与词缀系统——只预留了字段位,不定义语义(精英怪**设定**已登记预留:迭代 10 奖励重构批——同立绘+附加特征标记+数值更强、钥石掉 1 个预留;实装仍随怪物批) +- 精英节点与词缀系统——只预留了字段位,不定义语义(精英怪**设定**已登记预留——同立绘+附加特征标记+数值更强、钥石掉 1 个预留;实装随怪物批) - 地形变异扩展内容——首批四类型已落地,反制道具与全局作用域排 Alpha - 道具/增益之间的组合协同(遗物式联动) - 战后自动回复——回复只有道具与恢复点两个来源 diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md index 2d60b9f4..6b0e4b8b 100644 --- a/design/gdd/08-Alpha版本标准.md +++ b/design/gdd/08-Alpha版本标准.md @@ -2,7 +2,7 @@ > **一句话定位**:本文定义这个项目的 **Alpha 版本包含哪些东西**——它是里程碑 M3 的完成标准,也是判断"还差什么"的对照表。 > **本文只列条目,不写内容**:每样东西是什么、规则怎么走,一律归各自的权威文档,本文只给指路链接。想知道某样东西的定义,请点链接,不要在本文里找解释。 -> **状态**:**已定稿(v1.27)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 +> **状态**:**已定稿(v1.28)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 > **成文**:2026-10-13。 ## 本文怎么用 @@ -29,7 +29,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 棋盘生成 | [棋盘生成](systems/排雷循环/棋盘生成.md) | 在役 | | 排雷玩法 | [排雷玩法](systems/排雷循环/排雷玩法.md) | 在役 | | 行动经济 | [行动经济](systems/排雷循环/行动经济.md) | 在役 | -| 地形变异(六类型) | [地形变异](systems/排雷循环/地形变异.md) | 在役(2026-10-16 贫矿脉整图型屏蔽删行,variation.tres 回 region 六行;机制代码保留,重建设计加行即恢复;设计语义面反哺待裁) | +| 地形变异(六类型) | [地形变异](systems/排雷循环/地形变异.md) | 在役(variation.tres 现为 region 六行——贫矿脉整图型屏蔽删行,机制代码保留,重建设计加行即恢复;设计语义面反哺待裁) | ### 战斗循环 @@ -46,9 +46,9 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 条目 | 事实源 | 现状 | |---|---|---| | 冒险结构 | [冒险结构](systems/冒险循环/冒险结构.md) | 在役 | -| 关卡节点地图 | [关卡节点地图](systems/冒险循环/关卡节点地图.md) | 在役(信息迷雾类型可见性已随迭代 34 卡④ 实装,2026-10-22) | -| 关卡节点图重构(增加可选节点) | [关卡节点地图](systems/冒险循环/关卡节点地图.md)+[关卡节点图生成](systems/冒险循环/关卡节点图生成.md) | 在役(2026-10-25 迭代 35 卡①② 合回:图源切为参数档×种子生成图、模板链路退役;真人目检选路项已登记体验验证清单,登记不阻塞) | -| 关卡节点图生成 | [关卡节点图生成](systems/冒险循环/关卡节点图生成.md)(参数化长图:产出规格与生成参数) | 在役(2026-10-24 迭代 35 卡① 生成器核心合回;enemy.tres 与 board_gen.tres 已覆盖到第三关深度 13;生成图 L3 深度域 0–13 超出关卡地图屏画布屏预算约 10 层——等比缩放/滚动视口两升级路径未设计待裁,[待办清单](../../待办清单.md)「超预算图策略升级路径」条在册) | +| 关卡节点地图 | [关卡节点地图](systems/冒险循环/关卡节点地图.md) | 在役(信息迷雾类型可见性已实装) | +| 关卡节点图重构(增加可选节点) | [关卡节点地图](systems/冒险循环/关卡节点地图.md)+[关卡节点图生成](systems/冒险循环/关卡节点图生成.md) | 在役(图源=参数档×种子生成图、模板链路退役;真人目检选路项已登记体验验证清单,登记不阻塞) | +| 关卡节点图生成 | [关卡节点图生成](systems/冒险循环/关卡节点图生成.md)(参数化长图:产出规格与生成参数) | 在役(enemy.tres 与 board_gen.tres 已覆盖到第三关深度 13;生成图 L3 深度域 0–13 超出关卡地图屏画布屏预算约 10 层——等比缩放/滚动视口两升级路径未设计待裁,[待办清单](../../待办清单.md)「超预算图策略升级路径」条在册) | | 难度曲线与 Boss | [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) | 在役 | | 奇物 | [奇物](systems/冒险循环/奇物.md) | 在役 | @@ -59,7 +59,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 元进度 | [元进度](systems/跨局循环/元进度.md) | 在役 | | 天赋树 | [天赋树](systems/跨局循环/天赋树.md) | 在役 | | 秘宝 | [秘宝](systems/跨局循环/秘宝.md) | 在役 | -| 锻造工坊 | [锻造工坊](systems/跨局循环/锻造工坊.md) | 在役(实装批 2026-10-12 入库;满级特效按 2026-10-12 裁 6 留扩展位、本期不做,不碍在役判定) | +| 锻造工坊 | [锻造工坊](systems/跨局循环/锻造工坊.md) | 在役(满级特效留扩展位、本期不做,不碍在役判定) | | 生涯 | [生涯](systems/跨局循环/生涯.md) | 在役(期一;期二、期三排 Beta,不属 Alpha) | ### 表现与支撑 @@ -83,7 +83,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 敌种池(含三个 Boss) | `enemy.tres` | 在役 | | 敌人技能池 | `skills.tres` | 在役 | | 棋盘按关配置尺寸 | `board_gen.tres` | 在役 | -| 地形变异六类型 | `variation.tres` | 在役(2026-10-16 贫矿脉屏蔽删行后表为 region 六行) | +| 地形变异六类型 | `variation.tres` | 在役(表为 region 六行) | | 格面资源九型 × 正负 | `reward.tres` | 在役 | | 状态表 | `status_effects.tres` | 在役 | | 奇物池(专长 / 属性值提升 / 补给) | `feats.tres`、`adventure.tres` | 在役 | @@ -91,8 +91,8 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 商店配置 | `shop.tres` | 在役 | | 元进度配置 | `meta.tres` | 在役 | | 天赋树节点集 | `meta_tree.tres` | 在役 | -| 锻造工坊路线行族 | `forge.tres` | 在役(定价 provisional 归 M4;表名订正与入库依据见 git 提交史) | -| 混编遭遇行集 | `enemy.tres` | 在役(首批 (2,5) 2026-10-07;2026-11-04 追加 (1,3);第二批(Boss 多行)移挂 Beta,裁决与明细见 git 提交史;2026-10-22 迭代 34 起按〔关卡,行类,深度带〕三参寻址,行集键已迁移) | +| 锻造工坊路线行族 | `forge.tres` | 在役(定价 provisional 归 M4;沿革见 git 提交史) | +| 混编遭遇行集 | `enemy.tres` | 在役(现行行集=(2,5)+(1,3);第二批(Boss 多行)移挂 Beta,裁决与明细见 git 提交史;按〔关卡,行类,深度带〕三参寻址) | --- @@ -100,11 +100,11 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 条目 | 事实源 | 现状 | |---|---|---| -| 主菜单 | —— | 在役(迭代 33 卡②三入口化:进入存档/设置/退出游戏——入口拓扑=进入存档→选档界面→进档/新档→营地覆盖层→〔营地交互重做卡④〕营地场景图与生涯笔记本;2026-10-22 用户裁换代〔反哺 #13〕) | +| 主菜单 | —— | 在役(三入口:进入存档/设置/退出游戏——入口拓扑=进入存档→选档界面→进档/新档→营地覆盖层→营地场景图与生涯笔记本) | | 开始覆盖层 | —— | 在役 | -| 选档界面(3 存档位) | —— | 在役(迭代 33 卡③——空槽新档/有档进档/删档二次确认+摘要三项;2026-10-22 用户裁增行〔反哺 #8〕) | -| 营地(天赋树 / 锻造工坊 / 秘宝匣 / 图鉴) | [camp](ux/camp.md) | 在役(迭代 47 卡④⑤ 落地——场景图+七物件点选+Esc 浮窗与顶栏,2026-11-01 合回;五功能页呈现=居中定尺寸功能窗口、场景根留底、窗内滚动——窗壳形态 2026-11-02 迭代 49 卡③实装) | -| 营地交互重做(五卡:存档制数据层/主菜单三入口/选档界面/营地场景图/Esc 浮窗与营地顶栏) | [camp](ux/camp.md) | 在役(五卡全部落地——卡①②③ 迭代 33 批合回、卡④⑤ 迭代 47 批合回,卡⑥ 句柄子容器为同批前置基建卡。设计过程件已按吸收即死退役,沿革查 git 提交史。2026-10-21 用户裁:五卡整体列入 Alpha。出口=五卡各自验收标准通过+营地屏用户目检〔登记体验验证清单 ㊺〕) | +| 选档界面(3 存档位) | —— | 在役(空槽新档/有档进档/删档二次确认+摘要三项) | +| 营地(天赋树 / 锻造工坊 / 秘宝匣 / 图鉴) | [camp](ux/camp.md) | 在役(场景图+七物件点选+Esc 浮窗与顶栏;五功能页呈现=居中定尺寸功能窗口、场景根留底、窗内滚动) | +| 营地交互重做(五卡:存档制数据层/主菜单三入口/选档界面/营地场景图/Esc 浮窗与营地顶栏) | [camp](ux/camp.md) | 在役(五卡全部落地,2026-10-21 用户裁整体列入 Alpha;沿革查 git 提交史。出口=五卡各自验收标准通过+营地屏用户目检〔登记体验验证清单 ㊺〕) | | 生涯页 | [生涯](systems/跨局循环/生涯.md) | 在役(期一) | | 关卡地图屏 | [level-map](ux/level-map.md) | 在役 | | 战斗屏 | [battle](ux/battle.md) | 在役 | @@ -117,8 +117,8 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 图例面板 | —— | 在役 | | 设置面 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役 | | 调试浮窗 | —— | 在役 | -| UI 全局主题资源(引擎原生控件接管皮肤) | —— | 在役(迭代 25 · 2026-10-13 入库:主题资源(theme 主资源)挂 gui/theme/custom) | -| UI 按钮状态矩阵(悬停 / 按下 / 禁用 / 键盘焦点补齐) | [待办清单](../../待办清单.md) | 在役(迭代 26 入库:五态矩阵逐实例 override 补齐——悬停 modulate 提亮/禁用 α0.45 幽灵化/焦点 INK 2px 内缩 1px 环/危险钮本族按压态;键盘导航批量面归 Beta「棋盘战斗键盘/手柄输入」条连带点③) | +| UI 全局主题资源(引擎原生控件接管皮肤) | —— | 在役(主题资源(theme 主资源)挂 gui/theme/custom) | +| UI 按钮状态矩阵(悬停 / 按下 / 禁用 / 键盘焦点补齐) | [待办清单](../../待办清单.md) | 在役(五态矩阵逐实例 override 补齐——悬停 modulate 提亮/禁用 α0.45 幽灵化/焦点 INK 2px 内缩 1px 环/危险钮本族按压态;键盘导航批量面归 Beta「棋盘战斗键盘/手柄输入」条连带点③) | --- @@ -135,7 +135,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 机器可读的呈现断言(对比度 / 结构) | ——(清单唯一出处=process-conventions 运行与验证节) | 在役 | | 分辨率两档(1280×800 / 1920×1080) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役 | | 绘制调用数达标 | —— | 在役 | -| 真人试玩轮次 | [体验验证清单](../../体验验证清单.md) | 在役(义务维持;当前轮次未清=㉚–㊸ 各条待用户核销——迭代 32 起各批实机目检项登记不阻塞,迭代 42 无玩家可见改动未登记) | +| 真人试玩轮次 | [体验验证清单](../../体验验证清单.md) | 在役(义务维持;当前轮次未清=㉚–㊸ 各条待用户核销——各批实机目检项登记不阻塞) | --- @@ -145,20 +145,20 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 |---|---|---| | 像素美术风格与色板 | [美术圣经](../art/art-bible.md) | 在役 | | 棋盘瓦片与格面资源图标 | [美术圣经](../art/art-bible.md) | 在役 | -| 未开格类型微光(五组色相+明度档) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役(明度档 provisional 值登记见 art-bible 的 git 提交史;观感复核随战斗一屏样张过闸完成,凭据=体验验证清单 ㊶) | +| 未开格类型微光(五组色相+明度档) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役(明度档 provisional 值登记见 art-bible 的 git 提交史;观感复核已随战斗一屏样张过闸完成——用户实机目检核销,沿革查 git 提交史) | | 棋盘观感(第二 / 三关亮度与对比度) | [待办清单](../../待办清单.md) | 待做(开工前置=先做素材轴/UI 轴对照截图定性,再按定轴修复;旧卡 v1.4 存 reports/ 作素材、非已写卡状态,重启须重新立卡;出口=用户实机目检第二、三关不再判「看着费劲」) | -| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(九件已按档落位+机检全绿——原稿分辨率入包禁降采样、显示按三档绝对高 96/144/188 缩放、现有形象即终稿;定值单点=art-bible §8.2;实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) | +| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(原稿分辨率入包禁降采样、显示按三档绝对高 96/144/188 缩放、现有形象即终稿;定值单点=art-bible §8.2;实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) | | 敌人立绘(全敌种) | [角色设计](../art/character-design.md) | 在役 | | 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 | | 状态图标 | [美术圣经](../art/art-bible.md) | 在役 | | 战斗演出链(弹道 / 受击 / 血条 / 灰化) | [战斗表现](systems/战斗循环/战斗表现.md) | 在役 | | 逐行结算排播 | [settlement-summary](ux/settlement-summary.md) | 在役 | | 减动效开关 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役 | -| 全局纹理过滤设为邻近采样 | [待办清单](../../待办清单.md) | 在役(迭代 26 · 2026-10-14 入库:default_texture_filter=0+平滑渐变件三处显式 LINEAR 白名单,翻转面全枚举闭合) | -| UI 字体(全局像素字,Fusion Pixel 单套单字重) | [美术圣经](../art/art-bible.md) §7.4 | 在役(2026-10-24 用户裁现状即终稿——拉丁沿用自带字形不另接专件、不上第二字重;信息层级手段=字号档差+墨色深浅) | -| 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 在役(规格半=目标规格清单已落 art-bible 五张规格表〔2026-10-30 合回〕,五项实装定值与样张机检随迭代 43 入库;出口半=方向稿用户目检已通过,样张整体过闸,凭据=体验验证清单 ㊶。主角+三 Boss 重产依赖照旧;站桩帧动画已改排 Beta,见「六 · Alpha 不含」) | +| 全局纹理过滤设为邻近采样 | [待办清单](../../待办清单.md) | 在役(default_texture_filter=0+平滑渐变件三处显式 LINEAR 白名单,翻转面全枚举闭合) | +| UI 字体(全局像素字,Fusion Pixel 单套单字重) | [美术圣经](../art/art-bible.md) §7.4 | 在役(现状即终稿——拉丁沿用自带字形不另接专件、不上第二字重;信息层级手段=字号档差+墨色深浅) | +| 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 在役(样张整体过闸——用户实机目检核销,沿革查 git 提交史;目标规格与五项实装定值单点=art-bible 五张规格表。主角+三 Boss 重产依赖照旧;站桩帧动画已改排 Beta,见「六 · Alpha 不含」) | | UI 氛围层与九宫格切片观感修 | [待办清单](../../待办清单.md) | 部分在役(光柱硬边已修=连续 alpha 渐变;未结半=九宫格切片错位——Alpha 内做最小修复:核对素材尺寸,必要时重出九宫格素材,全套素材重出排 Beta;出口=结算屏与图例屏错位消失,渲染闸+用户目检通过) | -| UI 元素细节修(滑轨填充 / 图标垫块 / 留白 / 开发件外泄) | [待办清单](../../待办清单.md) | 在役(迭代 26 · 2026-10-14 入库:①滑轨填充随迭代 25 注销;余②图标垫块明度差降档/③商店+营地布局修/④诊断钮迁调试浮窗 全落地) | +| UI 元素细节修(滑轨填充 / 图标垫块 / 留白 / 开发件外泄) | [待办清单](../../待办清单.md) | 在役(四子项中滑轨填充注销,余三件——图标垫块明度差降档/商店+营地布局修/诊断钮迁调试浮窗——全落地) | --- @@ -170,9 +170,9 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 条目 | 理由出处 | |---|---| -| 音频(音乐与音效) | 排 Beta(用户 2026-10-13 裁:与游戏内容无关);现行零音频资源、零播放代码 | -| 教学引导(含教学引导面) | 排 Beta([待办清单](../../待办清单.md) 教学引导节,2026-10-04 用户裁改排 Beta;2026-10-13 再确认) | -| 多语言本地化 | 排 Beta(用户 2026-10-13 裁:与游戏内容无关);Alpha 只做最小设置面,不做多语言 | +| 音频(音乐与音效) | 排 Beta(用户裁:与游戏内容无关);现行零音频资源、零播放代码 | +| 教学引导(含教学引导面) | 排 Beta([待办清单](../../待办清单.md) 教学引导节) | +| 多语言本地化 | 排 Beta(用户裁:与游戏内容无关);Alpha 只做最小设置面,不做多语言 | **其余不进 Alpha 项**: @@ -189,15 +189,15 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 遗物式构筑协同 | [05-不做清单](05-不做清单.md) | | 战后自动回复 | [05-不做清单](05-不做清单.md) | | 反雪球机制 | [05-不做清单](05-不做清单.md) | -| 键盘 / 手柄输入 | [待办清单](../../待办清单.md)(排期归 Beta。例外:营地语境 Esc 浮窗已落地〔迭代 47 卡⑤,用户明示裁决〕;键盘面其余仍排 Beta) | -| 数值统一标定(M4 数值批) | 2026-10-09 里程碑立规:M4 = Beta 阶段、M3 未由用户明令关闭前不排期(用户 2026-10-07 令移出迭代 18;2026-10-16 确认此裁长期有效)——待办清单各条「已编入 Alpha 收官 M4」措辞系旧口径残留 | +| 键盘 / 手柄输入 | [待办清单](../../待办清单.md)(排期归 Beta。例外:营地语境 Esc 浮窗已落地〔用户明示裁决〕;键盘面其余仍排 Beta) | +| 数值统一标定(M4 数值批) | M4 = Beta 阶段、M3 未由用户明令关闭前不排期——待办清单各条「已编入 Alpha 收官 M4」措辞系旧口径残留 | | 连刷 / 换图资金跨战斗携带 | [05-不做清单](05-不做清单.md) | -| 战斗节点地图类型差异化(更多地图主题) | 排 Beta 版本([playnote](../../playnote.md),2026-10-13 裁) | +| 战斗节点地图类型差异化(更多地图主题) | 排 Beta 版本([playnote](../../playnote.md)) | | 第四关 | 排 Beta;全库无设计承载,N>3 走扩展批流程([03-内容规模](03-内容规模.md)) | | 生涯期二(历史冒险回看)与期三(图鉴) | 排 Beta;Alpha 只保留期一([生涯](systems/跨局循环/生涯.md)) | | 素材升档重产 | 排 Beta;原始动机已由八敌逐键定档解决,剩余提灯候选随 Beta 资产批重议([待办清单](../../待办清单.md)) | -| 站桩帧动画 | 排 Beta(用户 2026-11-04 裁,取代 2026-10-06 登记与 2026-10-13 补裁的「Alpha 定版前置」口径);三路线与「立绘→派生形态」管线前置依赖见 [待办清单](../../待办清单.md)「站桩帧动画」条 | -| 元进度件贴图终稿 | 排 Beta;元进度图标在 Alpha 保留占位,不碍在役判定([美术资产清单](../art/art-assets-checklist.md))——营地场景图已随营地交互重做列入 Alpha(见「三 · 界面」表) | +| 站桩帧动画 | 排 Beta(用户裁);三路线与「立绘→派生形态」管线前置依赖见 [待办清单](../../待办清单.md)「站桩帧动画」条 | +| 元进度件贴图终稿 | 排 Beta;元进度图标在 Alpha 保留占位,不碍在役判定([美术资产清单](../art/art-assets-checklist.md))——营地场景图已列入 Alpha(见「三 · 界面」表) | --- diff --git a/design/gdd/systems/冒险循环/关卡节点图生成.md b/design/gdd/systems/冒险循环/关卡节点图生成.md index bc870691..00f0eae1 100644 --- a/design/gdd/systems/冒险循环/关卡节点图生成.md +++ b/design/gdd/systems/冒险循环/关卡节点图生成.md @@ -104,7 +104,7 @@ ## 调参表 -数值事实源=data/tables(定值批落表);本表只留取值域与设计意图。 +数值事实源=data/tables;本表只留取值域与设计意图。 | 参数 | 取值域 | 设计意图 | 状态 | |---|---|---|---| diff --git a/design/gdd/systems/冒险循环/关卡节点地图.md b/design/gdd/systems/冒险循环/关卡节点地图.md index f5356794..f6cdf6e4 100644 --- a/design/gdd/systems/冒险循环/关卡节点地图.md +++ b/design/gdd/systems/冒险循环/关卡节点地图.md @@ -11,7 +11,7 @@ ## 系统范围 -边界这样划:图**从哪来**(按参数长图)与**什么算合法图**(产出规格)归[关卡节点图生成](关卡节点图生成.md);图上**具体摆什么料**(敌人行集、奖励内容)归各 owner 系统;本文管图**怎么走、走到每步发生什么**,以及加载期的合法性校验动作(规则语义以关卡节点图生成的产出规格为准)。战斗内部的一切(敌人怎么配、几只、什么技能池、踩雷负向怎么兑)归战斗循环文档(原"伏击怎么叠"随 2026-09-20 八型批伏击退役改述);本文只负责把"第几关、哪个节点"递过去。 +边界这样划:图**从哪来**(按参数长图)与**什么算合法图**(产出规格)归[关卡节点图生成](关卡节点图生成.md);图上**具体摆什么料**(敌人行集、奖励内容)归各 owner 系统;本文管图**怎么走、走到每步发生什么**,以及加载期的合法性校验动作(规则语义以关卡节点图生成的产出规格为准)。战斗内部的一切(敌人怎么配、几只、什么技能池、踩雷负向怎么兑)归战斗循环文档;本文只负责把"第几关、哪个节点"递过去。 负责: @@ -31,7 +31,7 @@ | 图从哪来、节点类型构成与合法图规则 | [关卡节点图生成](关卡节点图生成.md) | | 关卡大奖励、跨战斗生命、失败重开 | [冒险结构](冒险结构.md) | | 战斗内部的一切:敌人配置、数量、技能池、踩雷负向 | [敌人系统](../战斗循环/敌人系统.md)与[战斗结算](../战斗循环/战斗结算.md) | -| 同场多敌种(同一节点配多种敌人)的表结构与取值口径 | 敌人系统(战斗侧改键批) | +| 同场多敌种(同一节点配多种敌人)的表结构与取值口径 | 敌人系统 | | 节点奖励件的分类与凭证定义 | [奇物](奇物.md)(提升池构成与库存归[冒险结构](冒险结构.md)) | | 敌我数值曲线与遭遇投放节奏 | [难度曲线与Boss](难度曲线与Boss.md) | | 节点图的画面呈现、方块地牢观感 | [HUD 框架](../表现与支撑/HUD框架.md) | @@ -58,7 +58,7 @@ | Boss | 恒为图终点;行进至此开 Boss 战;胜利即关卡收束点 | | 奖励 | 行进至此触发节点奖励(兑付见下节);反馈呈现后回到选路 | | 恢复 | 行进至此向冒险结构发治疗封顶回报;反馈呈现后回到选路 | -| 商店 | 行进至此打开商店覆盖层,用 GP(战斗掉落的冒险内货币)购买属性提升;离开后兑付确认回选路;不携带战斗行。**v1.5 兑付换代(pool 模式现行)**:进店从共享池抽 3 展示、买 1 后三件全重抽(未买不保留)、货架买空=空架合法态。**v1.6(2026-10-04 P-C2+Q2 裁/MC-1)**:新增**独立刷新**——基础免费 0 次(天赋/营地侧刷新次数增益位预留)+ GP 付费刷新 ceil(20×1.8^已付费刷) provisional;重抽=共享池同源(shop_draw 同签),推翻本行旧「无独立刷新动作——重抽绑购买」口径;库存与定价归[冒险结构](冒险结构.md)共享池节 | +| 商店 | 行进至此打开商店覆盖层,用 GP(战斗掉落的冒险内货币)购买属性提升;离开后兑付确认回选路;不携带战斗行。进店从共享池抽 3 展示、买 1 后三件全重抽(未买不保留)、货架买空=空架合法态(pool 模式现行);**独立刷新**:基础免费 0 次(天赋/营地侧刷新次数增益位预留)+ GP 付费刷新 ceil(20×1.8^已付费刷) provisional,重抽=共享池同源(shop_draw 同签);库存与定价归[冒险结构](冒险结构.md)共享池节 | 商店房的编排规则:**每个终点前一位恰一家店**——哈迪斯式的"决战前最后一个补给点":买到的属性还有整段战斗可消费,错过的成长也没有第二家店可补。终点前一位同时是**必经位**:每名玩家一局恰好必经一家店,成长保底是图结构事实而非玩家自觉。这条位置约束不由加载校验承载,由冒烟断言把关(摆放规则语义见[关卡节点图生成](关卡节点图生成.md)配比节)。 @@ -66,7 +66,7 @@ 呈现侧口径(2026-09-17 用户拍板):节点图的画面表达走**方块地牢观感**——节点画成地牢房间的方块、连线画成通道——但逻辑拓扑就是本文的节点图,不产生任何额外选路或探索语义。关卡画面本体即节点链进度的呈现载体(选路覆盖层的常驻形态,节点态直接读图:已过暗金 / 当前金 / 候选下一跳通道亮金 / Boss 紫赤描边(紫赤+深墨环,视觉定稿见 [level-map](../../ux/level-map.md))),不另设进度条组件;视觉规格归 [HUD 框架](../表现与支撑/HUD框架.md)。 -**商店覆盖层呈现**(呈现 spec:[design/gdd/ux/shop.md](../../ux/shop.md) v1.0,2026-09-30;**v1.5 注记**——pool 模式货架面=共享池三选一同构卡〔进店抽 3/买 1 全重抽/空架售罄态〕,与三选一奖励同一交互语言;legacy 固定三件面随对照模式保留。**v1.5-a 注记(2026-10-04 用户裁)**:~~库存余量就近~~ **库存余量不呈现**(货架卡不带「库存余 N/∞」字样——库存语义仍在共享池令牌库,仅呈现退役;独立刷新机制另见待办清单「商店独立刷新机制」条):兑付 = 打开商店覆盖层(模态)——货架卡陈列、GP 余额读数、购买/离开;离开后兑付确认回选路。本节锁编排面(何时开/何时关/回选路),呈现细节归 spec;定价数值归[难度曲线与Boss](难度曲线与Boss.md)(shop.tres)。 +**商店覆盖层呈现**(呈现 spec:[design/gdd/ux/shop.md](../../ux/shop.md) v1.0;pool 模式货架面=共享池三选一同构卡〔进店抽 3/买 1 全重抽/空架售罄态〕,与三选一奖励同一交互语言;legacy 固定三件面随对照模式保留。**库存余量不呈现**(2026-10-04 用户裁)——货架卡不带「库存余 N/∞」字样,库存语义仍在共享池令牌库、只是不呈现):兑付 = 打开商店覆盖层(模态)——货架卡陈列、GP 余额读数、购买/离开;离开后兑付确认回选路。本节锁编排面(何时开/何时关/回选路),呈现细节归 spec;定价数值归[难度曲线与Boss](难度曲线与Boss.md)(shop.tres)。 ### 行进与选路:兑付后确认,选路就是行进 @@ -123,7 +123,7 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 第二关的"新内容 = 既有池新技能"(技能池构成已定稿入[敌人系统](../战斗循环/敌人系统.md)技能池节)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。 -**节点奖励 = 提升三选一(迭代 10 追加批——用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池七种(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件)按同一令牌库洗牌不放回抽 3(同 kind 去重、同一封闭随机流),玩家点选一件兑付(选中踢池、未选回池;秘宝件已随迭代 11 第①批出池,满位替换子交互随之不再触发)。件获取次数计数与令牌库为冒险级单例——两渠道同一令牌库合计消耗。原「秘宝投放渠道三选一」(迭代 7 拍板②丙过渡形态)顺带退役;秘宝局外同调件形态已随同调实施批落地(迭代 11 第①批;原提案 §9 已退役)。「池空直通」为合法态——池耗即枯竭,空库 = 零候选合法态直通(见[冒险结构](冒险结构.md)令牌池节)。 +**节点奖励 = 提升三选一(用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池七种(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件)按同一令牌库洗牌不放回抽 3(同 kind 去重、同一封闭随机流),玩家点选一件兑付(选中踢池、未选回池;秘宝件已出池,满位替换子交互随之不再触发)。件获取次数计数与令牌库为冒险级单例——两渠道同一令牌库合计消耗。「池空直通」为合法态——池耗即枯竭,空库 = 零候选合法态直通(见[冒险结构](冒险结构.md)令牌池节)。 ### 关卡收束点:先清库、后宣布 @@ -166,8 +166,8 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 | 优先级 | 内容 | 后置原因 | |---|---|---| -| P2 | 精英节点与精英遭遇 | 不设编码位——精英以内容方式承载(某编号节点配强敌行集);与难度曲线、战斗侧批联动设计。精英怪设定已登记预留(迭代 10 奖励重构批:同立绘+附加特征标记+数值更强、钥石掉 1 个预留——实装随怪物批,本文件行集零改动) | -| P2 | 事件类节点候选 | 商店房已随 2026-09-20 GP+商店房批落地(v1.1),"商人类撞抽象货币红线"的旧注记由[不做清单](../../05-不做清单.md)的现行条款替代;事件类节点仍无内容系统承载;扩类一律走文档修订 | +| P2 | 精英节点与精英遭遇 | 不设编码位——精英以内容方式承载(某编号节点配强敌行集);与难度曲线、战斗侧批联动设计。精英怪设定已登记预留(同立绘+附加特征标记+数值更强、钥石掉 1 个预留——实装随怪物批,本文件行集零改动) | +| P2 | 事件类节点候选 | 商店房已落地,"商人类撞抽象货币红线"的旧注记由[不做清单](../../05-不做清单.md)的现行条款替代;事件类节点仍无内容系统承载;扩类一律走文档修订 | ## 调参表 diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index fd1f048a..c2fb32a6 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -1,7 +1,7 @@ # 冒险结构 > 一句话:整局冒险的关卡序列、失败与大奖励 -> 状态:已定稿(自旧体系迁移);现行为 v1.4 +> 状态:已定稿;现行为 v1.5 ## 设计目的 @@ -21,7 +21,7 @@ | 关卡序列 | 关卡表(逐关一行的配置表)行集内容的责任方;推进规则:线性、无跳关 | | 生命 | 跨战斗生命持久性的冒险侧系统资源:每战交出、战后收回、两个恢复口 | | GP | 战斗掉落货币的局内系统资源(显示名「GP」):战斗完成统一入账、商店购买出账、冒险收束清零;统一冒险加算区(商店购买与大奖励同账) | -| 关卡大奖励 | 非末关完成的两层兑付:专长三选一(选择型,按档配比加权抽取——迭代 20 换代)+ 部分回血(固定型);钥石退役出大奖励,改 Boss/精英击杀战斗掉落 | +| 关卡大奖励 | 非末关完成的两层兑付:专长三选一(选择型,按档配比加权抽取)+ 部分回血(固定型);钥石不入大奖励,走 Boss/精英击杀战斗掉落 | | 失败重开与放弃 | 倒下即冒险终;重开等于全新一轮;放弃与失败同型结算 | | 主种子接线 | 一场冒险一个主种子,冒险内一切随机数派生自它 | @@ -35,7 +35,7 @@ | 节点奖励件的分类与凭证定义、池结构与抽取机制(案D——共享池库存仍归本文) | [奇物](奇物.md) | | 关卡完成率带、敌我数值与 Boss 设计 | [难度曲线与Boss](难度曲线与Boss.md) | | 钥石与跨局成长 | [元进度](../跨局循环/元进度.md) | -| 冒险总结结算(呈现摘要五件事;呈现 spec:design/gdd/ux/settlement-summary.md——旧称「摘要结算画面」随 spec 命名完成退役)与关卡推进指示 | [HUD框架](../表现与支撑/HUD框架.md) | +| 冒险总结结算(呈现摘要五件事;呈现 spec:design/gdd/ux/settlement-summary.md)与关卡推进指示 | [HUD框架](../表现与支撑/HUD框架.md) | ## 在核心循环中的位置 @@ -73,9 +73,9 @@ 一场冒险由关卡串成。关卡(本文含义:地牢一层的完整推进——一条节点链加一个关底 Boss)的序列读关卡表:逐关一行的配置表,本文是它行集内容的责任方,表本体与读取机制归[数据配置](../表现与支撑/数据配置.md)。 -MVP 的序列是三关线性:地精洞窟→幽暗地域→灰矮人矿城(2026-09-21 生效)。通关一关(该关关底 Boss 被击杀)自动进下一关;冒险通关 = 最后一关的关底 Boss 被击杀。没有跳关、没有回头路;关卡行进走[关卡节点地图](关卡节点地图.md)的分支节点图(切片第一关为单链特例)。 +MVP 的序列是三关线性:地精洞窟→幽暗地域→灰矮人矿城。通关一关(该关关底 Boss 被击杀)自动进下一关;冒险通关 = 最后一关的关底 Boss 被击杀。没有跳关、没有回头路;关卡行进走[关卡节点地图](关卡节点地图.md)的分支节点图(切片第一关为单链特例)。 -三关序列均已生效(2026-09-21 冒险结构实现批起;L2 行值随分支节点图批、L3 随第三关内容批落地,见[难度曲线与Boss](难度曲线与Boss.md))。 +三关序列均已生效(L2/L3 行值见[难度曲线与Boss](难度曲线与Boss.md))。 加关纪律:加一关等于一个内容批——节点链行、敌我数值、新元素必须同批落,禁止只加序列不加内容。行集里每个战斗与关底节点都必须在敌人、棋盘生成的数值表里有精确行,冒烟期校验;越界关卡按内容生产缺口拦截。运行期对越界的开始关卡请求与缺失的关卡行一律返回错误并停机——那是配置违约,不是玩家能碰到的状态,不做兜底吞掉。 @@ -143,38 +143,38 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 | 收支口 | 方向 | 规则 | |---|---|---| | 战斗完成 | 入 | 每完成一场战斗统一到账一次:金额 = 掉落掷定 + 关级掉落加值 + 本战战斗内缓冲,随战斗结束信号携带的掉落额一笔入账 | -| 商店购买 | 出 | 商店房购买按现行价扣减钱包,余额不足拒绝。价格公式(**v0.13 换代——pool 模式现行**):ceil(基价 × b^(关序−1) × A^(本次进店已购次数)),A=店内递增/b=跨关递增表因子(provisional 1.8/1.1),ceil 向上单一取整(玩家不利向,杜绝「差 1 GP 反复钓」套利角);legacy 固定三件模式(shop=off 对照承载)沿用旧式 = 基价 + 关级价格加成 + 步长 × 已购档数 | +| 商店购买 | 出 | 商店房购买按现行价扣减钱包,余额不足拒绝。价格公式(pool 模式现行):ceil(基价 × b^(关序−1) × A^(本次进店已购次数)),A=店内递增/b=跨关递增表因子(provisional 1.8/1.1),ceil 向上单一取整(玩家不利向,杜绝「差 1 GP 反复钓」套利角);legacy 固定三件模式(shop=off 对照承载)沿用旧式 = 基价 + 关级价格加成 + 步长 × 已购档数 | | 冒险收束 | 清零 | 完成 / 失败 / 放弃三种结局都清零;重开后钱包从零开始 | **战斗内缓冲隔离**:战斗进行中从格面兑付拿到的 GP(GP 袋正向、破财负向——字典归[地图战斗资源](../战斗循环/地图战斗资源.md))不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进掉落额统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、GP 归冒险结构"的既有边界。 -**统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一笔**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;~~全冒险获取次数上限最紧 provisional 2 次~~——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。 +**统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一笔**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;次数上限=池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。 -掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽一批〔进店+每次买后重抽〕恰一 scope,批大小=货架位数读商店表,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。 +掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(每次抽一批〔进店+每次买后重抽〕恰一 scope,批大小=货架位数读商店表,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——全部数值 provisional。 -**共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁)**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件与冒险池两笔,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同三选一共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。 +**共享池账本(案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已出池;凭证与回复已入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件与冒险池两笔,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同三选一共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。 ### 关卡大奖励:关卡完成回血 + 专长三选一(钥石退役出大奖励) -关卡大奖励(本文含义:非末关通关时的固定+选择兑付)自 2026-09-30 用户拍板重构——原「固定发三件」(上限提升/血回满/钥石入账)退役,改两层兑付;钥石挪为 Boss/精英击杀的战斗掉落。**2026-10-11 迭代 20 换代(用户裁 Q1):选择层由提升三选一换代为专长三选一——通关渠道是专长的独占渠道兼唯一直接渠道,候选按档配比加权抽取(机制事实源=[奇物](奇物.md)渠道轴交叉表与「池结构与抽取」节)。** 兑付时点固定:关卡节点地图先调战斗结算的关卡收束接口清空关卡域库存,再向本文宣布关卡结束——大奖励在这之后、下一关开始之前兑付,顺序不可换。非末关每关各兑付一次(现行三关下至多两次,末关不兑付)。 +关卡大奖励(本文含义:非末关通关时的固定+选择兑付)为两层兑付:**选择层 = 专长三选一(2026-10-11 用户裁)——通关渠道是专长的独占渠道兼唯一直接渠道,候选按档配比加权抽取(机制事实源=[奇物](奇物.md)渠道轴交叉表与「池结构与抽取」节);固定层 = 部分回血;钥石走 Boss/精英击杀的战斗掉落。** 兑付时点固定:关卡节点地图先调战斗结算的关卡收束接口清空关卡域库存,再向本文宣布关卡结束——大奖励在这之后、下一关开始之前兑付,顺序不可换。非末关每关各兑付一次(现行三关下至多两次,末关不兑付)。 **三层奖励框架**: | 层 | 触发时刻 | 类型 | 内容 | |---|---|---|---| -| 专长三选一 | 关卡完成(非末关) | 玩家选择型 | 候选=专长按档配比加权抽取 3 件呈现(迭代 20 换代),玩家点选 1 件兑付,未选候选不落袋、本次选择不可反悔 | +| 专长三选一 | 关卡完成(非末关) | 玩家选择型 | 候选=专长按档配比加权抽取 3 件呈现,玩家点选 1 件兑付,未选候选不落袋、本次选择不可反悔 | | 钥石掉落 | Boss / 精英怪击杀 | 战斗掉落型 | Boss 掉 2–3 个钥石(首杀/复杀两档读表)、精英怪掉 1 个(精英怪未实装,设定登记预留) | | 部分回血 | 关卡完成(非末关) | 固定兑付型 | 回复生效上限 × 回血比例(provisional 20%,参考恢复节点量级),封顶上限、不回满;满血回 0 合法 | 兑付次序:部分回血先行(按当刻生命与上限结算),随后呈现三选一**选择停点**——零自动推进,必须玩家点选才兑付,重复兑付被拒(结算受理只算一次语义同族)。选择停点可中断:断点附随件扩「奖励选择态 + 件获取次数计数」,续玩已选件不静默丢失;**候选逐位一致系停点快照承载的实现现状、非验收义务**(不一致不影响玩法——2026-10-01 用户裁决,见「冒险断点」节)。 -**奖励节点三选一池(结构层——池机制事实源=[奇物](奇物.md)「池结构与抽取」节,2026-10-11 迭代 20 案D 换代)**:池 = 四级令牌库(案D——普通打底/优秀·稀有做翼/传说惊喜位空集;曝光槽 = 三选一 2 格全池 + 1 格优秀档以上子池,令牌 = 出现次数上限、概率与已拿上限解耦;构成数字与抽取细节全读[奇物](奇物.md)与 `adventure.tres`,provisional 归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批,本节零复制)。**池为冒险级单例**(迭代 10 追加批):关卡内奖励节点的三选一与商店货架共享同一令牌库(同库同摘牌),库存 = 剩余令牌数;消费三选一封闭随机流(主种子派生、[数据配置](../表现与支撑/数据配置.md)口径),同种子同操作序列同三选项可复放;**MC 策略 316-f**:自动游玩 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。断点附随件承载池余库逐枚还原;兑付语义归[关卡节点地图](关卡节点地图.md)。 +**奖励节点三选一池(结构层——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:池 = 四级令牌库(案D——普通打底/优秀·稀有做翼/传说惊喜位空集;曝光槽 = 三选一 2 格全池 + 1 格优秀档以上子池,令牌 = 出现次数上限、概率与已拿上限解耦;构成数字与抽取细节全读[奇物](奇物.md)与 `adventure.tres`,provisional 归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批,本节零复制)。**池为冒险级单例**:关卡内奖励节点的三选一与商店货架共享同一令牌库(同库同摘牌),库存 = 剩余令牌数;消费三选一封闭随机流(主种子派生、[数据配置](../表现与支撑/数据配置.md)口径),同种子同操作序列同三选项可复放;**MC 策略 316-f**:自动游玩 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。断点附随件承载池余库逐枚还原;兑付语义归[关卡节点地图](关卡节点地图.md)。 -**秘宝件受同调位约束**(2026-10-09 注:道具件已随迭代 11 第①批 T7 出池——三选一/奖励节点/战斗内渠道现行零道具件投放,下述渠道约束与替换交互无现役触发面,保留作渠道恢复时的契约口径;同调位读数现行事实源=attunement_growth.tres 谓词表实时求值):道具持有上限 = 同调位数。读数源 = 同调位里程碑谓词表 attunement_growth.tres 实时求值(0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数——同调实施批 2026-10-03 落地,过渡读数源已顺带退役;原提案八拍板已退役)。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一完成(原待办清单条目已随完成移除)。 +**秘宝件受同调位约束**(道具件已出池——三选一/奖励节点/战斗内渠道现行零道具件投放,下述渠道约束与替换交互无现役触发面,保留作渠道恢复时的契约口径;同调位读数现行事实源=attunement_growth.tres 谓词表实时求值):道具持有上限 = 同调位数。读数源 = 同调位里程碑谓词表 attunement_growth.tres 实时求值(0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数)。获取渠道约束形态:三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)。 末关完成不发三选一与部分回血:没有下一战可受益——只做冒险完成结算,末关 Boss 钥石照常入账。设计意图:清库之后才兑付、末关不兑付,都是从「奖励只朝下一战生效」这一条推出来的。 -**钥石掉落(退役出大奖励)**:钥石渠道自本批起 = Boss 击杀掉落 + 精英怪击杀掉落(精英怪未实装,掉 1 个预留)——「每通关一关固定入账 keystone_per_level」退役。Boss 掉落**逐杀实时入账**:行值读 meta.tres boss_keystone(首杀 3 / 复杀 2,provisional——2026-09-30 拍板贴近「2–3 个」示例量级,保持首杀 ≥ 复杀结构);末关 Boss 击杀照常入账(钥石为战斗掉落,不受「末关不兑付」约束)。钥石为跨局持久资源,消费归[元进度](../跨局循环/元进度.md)(2026-09-17 拍板同一资源语义维持);产出细则与量级配比归元进度设计批。属性件/AP 件值锚与上调约束(换算率估算见调参日志,上调须重扫第二关通关率带)归[难度曲线与Boss](难度曲线与Boss.md)。 +**钥石掉落**:钥石渠道 = Boss 击杀掉落 + 精英怪击杀掉落(精英怪未实装,掉 1 个预留;「每通关一关固定入账 keystone_per_level」已退役)。Boss 掉落**逐杀实时入账**:行值读 meta.tres boss_keystone(首杀 3 / 复杀 2,provisional——拍板贴近「2–3 个」示例量级,保持首杀 ≥ 复杀结构);末关 Boss 击杀照常入账(钥石为战斗掉落,不受「末关不兑付」约束)。钥石为跨局持久资源,消费归[元进度](../跨局循环/元进度.md)(2026-09-17 拍板同一资源语义维持);产出细则与量级配比归元进度设计批。属性件/AP 件值锚与上调约束(换算率估算见调参日志,上调须重扫第二关通关率带)归[难度曲线与Boss](难度曲线与Boss.md)。 ### 失败重开与主种子:倒下即终,重开即全新一轮 @@ -184,16 +184,16 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 主动放弃按与失败同型结算:已兑付的三选一件与回血不追回、已到手的保留,摘要标记未打穿。放弃请求只在非战斗期受理,战斗进行中一律拒绝(战斗域单事务执行期间)。放弃的界面入口挂在[关卡节点地图](关卡节点地图.md)的选路覆盖层上——选路停点天然是非战斗期,按钮只在冒险模式开放(选路覆盖层只在冒险模式出现);战斗进行中没有选路停点,入口因此天然不可达,拒绝分支仅作防御兜底。 -主种子(本文含义:冒险开始时注入的一个随机种子,本局全部随机性都派生自它)在冒险开始时注入恰一次。冒险内的雷图生成、奖励抽取、遭遇掷骰与 GP 掉落掷定(消费 gp_drop 封闭流)全部派生自它,冒险内不重置、不逐关播种——早期切片"每关开局各自播种"是没有冒险层时的历史简化,已改写为全冒险单一种子。冒险的可复现域 = 主种子 + 全局取数计数器(统一随机流口径——2026-09-27 七流并一,语义权威归[数据配置](../表现与支撑/数据配置.md)),供复盘与快照(见[存档序列化](../表现与支撑/存档序列化.md))。重开抽到的种子与上一局相同是允许的(随机源范围小,撞种子不算错误),但生成新种子禁止复用玩法里的随机数。 +主种子(本文含义:冒险开始时注入的一个随机种子,本局全部随机性都派生自它)在冒险开始时注入恰一次。冒险内的雷图生成、奖励抽取、遭遇掷骰与 GP 掉落掷定(消费 gp_drop 封闭流)全部派生自它,冒险内不重置、不逐关播种。冒险的可复现域 = 主种子 + 全局取数计数器(统一随机流口径,语义权威归[数据配置](../表现与支撑/数据配置.md)),供复盘与快照(见[存档序列化](../表现与支撑/存档序列化.md))。重开抽到的种子与上一局相同是允许的(随机源范围小,撞种子不算错误),但生成新种子禁止复用玩法里的随机数。 -### 冒险断点:中断可续玩的停点快照(迭代 8 卡①③) +### 冒险断点:中断可续玩的停点快照 冒险进行中随时关游戏走人(**中断**),下次启动可从最近停点继续——承载 = 存档 `breakpoint` 域(格式归[存档序列化](../表现与支撑/存档序列化.md),内容口径归本文)。 - **停点粒度**:快照只挂选路停点(入口呈现/战斗胜利后/兑付确认后的选路态)——这是唯一可恢复停点形态。战斗进行中不写快照:中断恢复后**当场战斗从头打**,棋盘中局不入档。 -- **七字段拍板面**:关卡序号 / 节点位 / 生命 / 本关加成区 / GP 钱包 / 商店已购档 / 已抽模板。附随件(续玩正确性必需,顺带登记):主种子 + 取数计数器(rng 快照契约回填——续玩从断点号位精确续接原随机时间线,已抽模板零重抽)、钥石累计(Boss 掉落逐杀入账的中途值,终局摘要不失真)、已到节点序(关卡画面图条重建)、秘宝库存(奖励节点已选件防静默丢失)、**奖励选择态**(三选一停点中断:已选件 / 同调位替换在途——续玩已选不丢失;候选一致性=快照现状非强求 feature,2026-10-01 用户裁决)、**件获取次数计数**(kind 维度派生账本——断点附随件与读数承载)、**令牌池余库**(bonus_deck 逐枚还原——TP0 扩列,池消耗即上限的续玩正确性承载;旧版断点缺键=满库重建防御口径,单版本周期)、**商店货架态**(当前货架三件 + 本次进店已购次数——P2 甲扩列随迭代 11 第②批;离开店=空架合法态,货架续玩由确定性重放承载:重进店同种子同货架逐位)、**Y 刷新池余量**(attune_refresh_y——冒险周期池消耗余量随断点:续玩优先读断点、不自参数面整额重注入,堵「用完 Y 退菜单再续玩满血复活」可利用漏洞;旧断点缺键回退参数面=旧档行为零变化。2026-10-13 缺陷修批)。 +- **七字段拍板面**:关卡序号 / 节点位 / 生命 / 本关加成区 / GP 钱包 / 商店已购档 / 已抽模板。附随件(续玩正确性必需):主种子 + 取数计数器(rng 快照契约回填——续玩从断点号位精确续接原随机时间线,已抽模板零重抽)、钥石累计(Boss 掉落逐杀入账的中途值,终局摘要不失真)、已到节点序(关卡画面图条重建)、秘宝库存(奖励节点已选件防静默丢失)、**奖励选择态**(三选一停点中断:已选件 / 同调位替换在途——续玩已选不丢失;候选一致性=快照现状非强求 feature,2026-10-01 用户裁决)、**件获取次数计数**(kind 维度派生账本——断点附随件与读数承载)、**令牌池余库**(bonus_deck 逐枚还原——TP0 扩列,池消耗即上限的续玩正确性承载;旧版断点缺键=满库重建防御口径,单版本周期)、**商店货架态**(当前货架三件 + 本次进店已购次数;离开店=空架合法态,货架续玩由确定性重放承载:重进店同种子同货架逐位)、**Y 刷新池余量**(attune_refresh_y——冒险周期池消耗余量随断点:续玩优先读断点、不自参数面整额重注入,堵「用完 Y 退菜单再续玩满血复活」可利用漏洞;旧断点缺键回退参数面=旧档行为零变化)。 - **中断与退出两口径分离**(2026-09-29 用户裁决):中断(关游戏)= 留断点可续;**退出冒险**(放弃流程)= 失败同型结算 + **清除断点**——退出后「继续上局」不再出现。 -- **获得日记键**(gain_journal,2026-10-27 迭代 39 拆件批扩列——断点 28 键,沿扩列不升版先例):获得记录明细(三层结构归架构文档「冒险域拆分」节主角账条目——本域只登记断点面口径)随断点保存,回退策略 plain;旧档回退两态——旧断点缺日记键=汇总键直载并跳过比对(零迁移损失),日记在档=由日记推导汇总值与留存值比对,不符即报错中止(迁移正确性自检)。 +- **获得日记键**(gain_journal,断点 28 键):获得记录明细(三层结构归架构文档「冒险域拆分」节主角账条目——本域只登记断点面口径)随断点保存,回退策略 plain;旧档回退两态——旧断点缺日记键=汇总键直载并跳过比对(零迁移损失),日记在档=由日记推导汇总值与留存值比对,不符即报错中止(迁移正确性自检)。 - **续玩**:自断点重建到最近停点(逐字段回填 + 随机流回填),停点处玩家重新选路。三结局(冒险成功/失败/放弃)一律清断点——断点只活在一个进行中的冒险上。 - 与测量面的关系:断点面只在注入存档承载的正式冒险路径生效;模拟/冒烟不注入 = 整面静默,MC 逐项比对零扰动。 @@ -236,7 +236,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 主角战斗入参覆盖值通道(本文供生命与上限);关卡收束接口由关卡节点地图收束点调用,本文零直调;战后生命终值与本战 GP 掉落(掉落额)经上报读回 | | 下游 | [关卡节点地图](关卡节点地图.md) | 接口契约四件套 + 收束点语义,本文是定义源,也是其文档的强制输入 | | 下游 | [元进度](../跨局循环/元进度.md) | 冒险摘要承载钥石入账合计(元进度是消费方);冒险开始参数面预留(未来跨局加成在此注入,MVP 空参数) | -| 下游 | [存档序列化](../表现与支撑/存档序列化.md) | 快照契约域单位 = 冒险(主种子 + 随机流计数器);摘要含主种子供复盘;断点域 `breakpoint` 内容 owner = 本文(迭代 8 卡①——七字段+附随件,见「冒险断点」节) | +| 下游 | [存档序列化](../表现与支撑/存档序列化.md) | 快照契约域单位 = 冒险(主种子 + 随机流计数器);摘要含主种子供复盘;断点域 `breakpoint` 内容 owner = 本文(七字段+附随件,见「冒险断点」节) | | 下游 | [HUD框架](../表现与支撑/HUD框架.md) | 冒险总结结算、关卡推进指示、放弃入口(非战斗期)的数据源 = 冒险摘要与状态投影;商店覆盖层与 GP 余额常驻读数的钱包数据源 | ## P0 最小闭环 @@ -266,17 +266,17 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 | 恢复比例 | int [0,100],逐关行 | 见 level.tres rest_heal_pct(provisional) | 恢复点回复生效上限的百分比;随上限加成同步放大;100 = 恢复点变全满泉,0 = 死节点 | | 上限提升 | int [0,999],冒险表逐件列 | adventure_table value_segment.curio_value_attack/max_hp/armor_{common,excellent}(provisional) | 三选一属性件各自兑付值;值锚与上调约束归难度曲线与Boss | | 三选一件值(其余) | int [0,999],冒险表 kind×tier 列族 | adventure_table value_segment.curio_value_*(GP 袋 / AP 件 / 恢复 / 刷新,provisional) | 令牌件值读表;道具件授予件数随秘宝件出池退役 | -| ~~三选一权重~~(v0.14 退役——令牌池档位配额即分布、无独立权重 knob) | — | — | E-S 加权洗牌不放回抽样权重随 TP0 令牌池换代退役 | -| 件次数上限 | ~~int [0,99],冒险表逐件键~~(v0.14 退役——池消耗即上限) | adventure_table quota_segment.curio_quota_*(TP0 令牌池——kind×tier 配额) | 达上限件先剔出牌库永不再现 → 池耗即枯竭 | +| 三选一权重(已退役) | — | — | 令牌池档位配额即分布、无独立权重 knob | +| 件次数上限 | —(已退役——池消耗即上限) | adventure_table quota_segment.curio_quota_*(TP0 令牌池——kind×tier 配额) | 达上限件先剔出牌库永不再现 → 池耗即枯竭 | | 关卡完成回血比例 | int [0,100],冒险表单行全局 | adventure_table clear_heal_pct(provisional 20) | 关卡完成部分回血回复生效上限的百分比;封顶上限不回满 | -| ~~同调位过渡键~~(已退役——迭代 11 第①批 T7,过渡键随表退役) | — | 同调位读数源 = attunement_growth.tres 谓词表实时求值(slot_cap 3) | 切换义务已随 2026-10-03 同调实施批清偿 | +| 同调位过渡键(已退役) | — | 同调位读数源 = attunement_growth.tres 谓词表实时求值(slot_cap 3) | — | | Boss 钥石掉落 | int [0,999],meta 表逐关行 | meta.tres boss_keystone 首杀 3 / 复杀 2(provisional) | 逐杀实时入账;精英怪掉 1 预留;消费方归元进度 | | GP 经济参数 | 商店表逐行 | 见 shop.tres gp_drops / level_gp_bonus / pool_shelf / price_a / price_b(provisional,以 shop.tres 为准;legacy products / price_level_bonus 随对照模式保留) | 掉落均值与区间(普通/精英/Boss)、关级掉落加值、货架基价、A/b 价格因子;公式语义归本文,数值所有权归难度曲线与Boss曲线调参批。财富之道「聚」的掉落乘数与「散」的消费折价两参数归[天赋树](../跨局循环/天赋树.md)规则键参数表(长在节点行,商店表不持) | | 货架位数 | int [1, 6],商店表单行全局 | 见 shop.tres shelf_size(provisional) | 进店与每次购买后重抽时,货架同时陈列的商品件数;池余令牌不足时按余量陈列,空架合法 | 结构冻结(非调参项):序列线性无跳关、终点恒为 Boss(终点可多个、各在路径最深处)、倒下即冒险终、大奖励构成 = 关卡完成部分回血 + 专长三选一(按档配比加权抽取)、一冒险一主种子、收束点先清库后宣布的次序。 -参数联动:恢复比例与关卡完成回血比例越厚关卡完成时越有余量(对冲杠杆语义归难度曲线与Boss);三选一属性件/AP 件抬高后续战斗强度,件值/权重/上限改值须按难度曲线与Boss的口径重扫关卡完成率带(回血比例自「血回满」改 20% 系难度上压方向,带判定顺带呈报)。 +参数联动:恢复比例与关卡完成回血比例越厚关卡完成时越有余量(对冲杠杆语义归难度曲线与Boss);三选一属性件/AP 件抬高后续战斗强度,件值/权重/上限改值须按难度曲线与Boss的口径重扫关卡完成率带(回血比例 20% 系难度上压方向)。 ## 验收标准 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 2226a8d5..9c84e938 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -11,13 +11,13 @@ > > **兑付频率(先看这条,它是三条渠道的共同前提)**:奇物**不是打一场战斗给一份**。关内的普通战斗节点打完了什么也不给;一关之内奇物**只兑付一次**,触发点是**关底 Boss 被击败**——而按 [冒险结构](冒险结构.md) 的定义,打掉关底 Boss 恰好就等于"通过这一关",这两件事是同一个时刻,不是一条链上的两步。 > -> 状态:**已实现**(2026-10-04 双层 BD 实施批落地);现行为 v1.5。本文件是奇物的唯一定义文档。 +> 状态:**已实现**;现行为 v1.6。本文件是奇物的唯一定义文档。 > > 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `data/tables/feats.tres` 与 `data/tables/adventure.tres`。 ## 专长(重设计·基础框架 v1) -> 本节是专长分类的现行事实源(2026-10-07 用户终审认同写入文档)。件表为设计声明——数值全 provisional 归调参批;命名全为代号,正式命名归用户。**新框架已实装:`feats.tres` 37 行=基础 27+迁入 2+规则豁免 1+换图系 7(换图系七件 2026-11-01 迭代 46 落表),行为与数据行 1:1。** +> 本节是专长分类的现行事实源(2026-10-07 用户终审认同)。件表为设计声明——数值全 provisional 归调参批;命名全为代号,正式命名归用户。**新框架已实装:`feats.tres` 37 行=基础 27+迁入 2+规则豁免 1+换图系 7,行为与数据行 1:1。** ### 设计原则 @@ -29,7 +29,7 @@ 6. **基座先行**:流派先确定基座专长——通过改变资源来源、动作成本或频率、动作结算、动作之间的关系,让原本偶尔用于止损的动作成为可以持续使用的主要打法。后续专长再围绕这个新行为提供输出、生存或资源收益;泛用数值增长不能代替基座。 7. **行为改变检验**:基座必须能回答「拿到前后操作有何不同、新行为靠什么资源持续、后续专长为何依附这个新行为」。只是同一操作后的结算数字变大,不算形成新流派。 -> **落行注记(迭代 20 反哺写入,2026-10-12 追认⑤)**:「每第 N 次 / 积满触发」的数据行条件写 **N−1**——效果引擎分发时 when 先于 do 读计数器现值(预评估),故「满 N 触发」落行写 N−1(例:地质学家「满 4 种」写 eq 3、封印匠「每第 3 次」写 mod_eq ref 2、双管镐「每第 2 次」写 mod_eq ref 1)。行为仍为每第 N 次准点触发,单元测试钉住;新件落行照此口径。 +> **落行注记**:「每第 N 次 / 积满触发」的数据行条件写 **N−1**——效果引擎分发时 when 先于 do 读计数器现值(预评估),故「满 N 触发」落行写 N−1(例:地质学家「满 4 种」写 eq 3、封印匠「每第 3 次」写 mod_eq ref 2、双管镐「每第 2 次」写 mod_eq ref 1)。行为仍为每第 N 次准点触发,单元测试钉住;新件落行照此口径。 ### 基础件表(27 件,五族 + 跨族桥 + 契约尖点) @@ -57,17 +57,17 @@ | 代号 | on / when / do(声明要点) | 账 | |---|---|---| -| 疼痛记忆 | on 踩雷:攒 1 层;下一次攻击附加层值伤害,用后清零 | 雷罚转延迟输出;自爆流骨架(「下场战斗」系笔误,2026-10-12 追认⑥改定) | +| 疼痛记忆 | on 踩雷:攒 1 层;下一次攻击附加层值伤害,用后清零 | 雷罚转延迟输出;自爆流骨架 | | 保险丝 | on 受伤:单次 ≥5 攒 1 点,2 点→护盾 1 层 | 大额伤害缓冲(扩签:单次伤害量) | | 见血开窍 | on 踩雷:揭示 1 格 | 错误资源化;零新增代价 | -| 陷阱本能 | on 踩雷:本轮攻击 +N(当轮即效、不结转,走攻击面板乘区) | 踩雷当场变火力;与战斗系同乘区互相喂(2026-10-11 用户裁走面板) | +| 陷阱本能 | on 踩雷:本轮攻击 +N(当轮即效、不结转,走攻击面板乘区) | 踩雷当场变火力;与战斗系同乘区互相喂 | | 连环陷阱 | on 同轮第 2 颗及以后的踩雷:每颗额外 +1 层(疼痛记忆同账) | 纯加成件、本身零收益——与疼痛记忆 combo 涌现(扩签:本轮踩雷数计数器) | | 陷阱爆发 | on 踩雷:全体存活敌受 雷伤×倍率 直伤 | 角色与怪物互相吃伤害;倍率 >1 系结构锚(引爆有代价、回报须更高),数值归调参批(扩签:雷罚伤害量) | | 血蜜 | on 踩雷:回复 N 生命 | 引爆仍然净亏血、只是亏得慢;比值 <1 系结构锚,N 归调参批 | | 石肤 | on 受伤:AC +1(本场累计,上限 M) | 受击成长型护甲——越挨打越硬;恒定减伤形态被否(用户裁「太硬霸」),M 归调参批 | | 背水 | when 生命 ≤50%:受伤额外 −N | 风险联动减伤——低血不再是纯劣势;自爆流刀口舔血兜底(扩签:生命比例〔条件事实——实现前置需求,待办清单在册〕) | -**踩雷转化对账锚(自爆流 kill-switch,2026-10-11 用户裁顺带登记)**:踩雷的净血账期望必须为负——雷伤 > 血蜜回复 + 其余转化件的血当量;对账归调参批,两轮数值迭代压不住则砍血蜜。防「见雷就踩」退化(喂雷流 R5 甲教训同源);主动/误踩不判定(用户裁:不预判玩家意图,拿件自选收益最高的操作)。 +**踩雷转化对账锚(自爆流 kill-switch,2026-10-11 用户裁)**:踩雷的净血账期望必须为负——雷伤 > 血蜜回复 + 其余转化件的血当量;对账归调参批,两轮数值迭代压不住则砍血蜜。防「见雷就踩」退化(喂雷流教训同源);主动/误踩不判定(用户裁:不预判玩家意图,拿件自选收益最高的操作)。 **跨族桥(封印系 × 踩雷系)(1)** @@ -79,7 +79,7 @@ | 代号 | on / when / do(声明要点) | 账 | |---|---|---| -| 弃图兑换 | on 停手:剩余 AP ≥3 → 剩余 AP 1:1 折为停手后首次攻击附加伤害(全额、用后清零;多攻击不拆分) | 资源转换件;单向无环(扩签:停手挂点)(落法 2026-10-12 追认⑧回写——停手后紧跟战斗段序,「下轮」前移为首战首攻) | +| 弃图兑换 | on 停手:剩余 AP ≥3 → 剩余 AP 1:1 折为停手后首次攻击附加伤害(全额、用后清零;多攻击不拆分) | 资源转换件;单向无环(扩签:停手挂点)(停手后紧跟战斗段序) | | 一滴不剩 | on 轮始:上轮 AP 耗尽 → +1 AP | 奖励节奏打满;憋 AP 没份 | | 收盘 | on 轮末:本轮开格 ≥8 → +1 GP | 勤奋奖(扩签:本轮开格数) | @@ -95,9 +95,9 @@ | 代号 | 契约 | 账 | |---|---|---| -| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(**均下一战起生效**——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。生命上限/攻击系属战界重建属性,即时改会被重建冲掉,故滞后一战兑付(2026-10-12 追认⑨回写;卡面 desc 同步补「下一战起生效」) | +| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(**均下一战起生效**——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。生命上限/攻击系属战界重建属性,即时改会被重建冲掉,故滞后一战兑付 | -### 换图系(7 件,已实装——2026-11-01 迭代 46 落表 `feats.tres`,稀有度 14/13/10/0、每件持有上限 1) +### 换图系(7 件,已实装 `feats.tres`,稀有度 14/13/10/0、每件持有上限 1) 换图系把「弃图刷新」从坏图逃生改成主动构筑行为。两件基座分别解决 RAP 的来源与价格;后续专长让成功刷新产生输出、生存或 GP 资源收益。七件不要求一次拿齐,不设强制先拿基座、集件标签或集件奖励。 @@ -119,7 +119,7 @@ - **全局受伤面**:石层缓冲覆盖敌方攻击、危险格、错误封印资源格与地形造成的主角伤害;临时生命值不在本流派设计范围内。 - **基线不变**:没有这些专长时,RAP 来源、刷新成本、清图奖励与伤害结果保持原规则。数值与稀有度归 `feats.tres`(已落表——稀有度档 14/13/10/0、每件持有上限 1;数值全 provisional 归调参批)。 -### 迁入登记(秘宝域迁出件;实装批落地后并入件表) +### 迁入登记(秘宝域迁出件;已并入件表) | 代号沿用 | 目标族 | on / when / do 要点 | 备注 | |---|---|---|---| @@ -128,21 +128,21 @@ 惊巢反制=退役进素材库(不迁入)。 -**资源类迁出件(2026-10-18 用户裁)**:完美保险自资源类迁入专长——理由:它给的是**规则豁免**而非可调动的余量(§1.1 判据「给规则的是专长」),效果=本场首次封印落空不计入完美封印判定。旧「资源类成员」归类系 2026-10-08 框架批写入、无用户裁断支撑,随本次改判注销。专长行已于迭代 31 卡② 落表:`feats.tres` 单行 `when counter(insurance_used) lt 1` 承载「本场首次」,效果类型 `forgive_seal_miss` 随引擎扩签;稀有档配额随净删重裁下调,现行值读 `data/tables/adventure.tres`。 +**资源类迁出件(2026-10-18 用户裁)**:完美保险自资源类迁入专长——理由:它给的是**规则豁免**而非可调动的余量(§1.1 判据「给规则的是专长」),效果=本场首次封印落空不计入完美封印判定。专长行已落表:`feats.tres` 单行 `when counter(insurance_used) lt 1` 承载「本场首次」,效果类型 `forgive_seal_miss` 随引擎扩签;稀有档配额现行值读 `data/tables/adventure.tres`。 -### 扩签登记(迭代 20 实装已承载——2026-10-12 追认④写入文档换代) +### 扩签登记 -- **落地结果**:事实候选 10 条中 6 条落事实词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 +- **落地结果**:事实候选 10 条中 6 条落事实词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位);停手事件已落(dig_stop);实现补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 - **连带**:净化工兵退役,rewrite_board 效果类型自引擎除名(扩签「暂缓:清图事件」不受影响,继续挂起)。 - **暂缓**:清图事件(随清图奖励题)。 ### 老 27 件处置 -老 27 件已全数退役,名单见[道具退役素材库](../../../content-archive/道具退役素材库.md)表二;`feats.tres` 在役行随重设计实装批删除替换。任何一件要进新体系须重新过准入校验、分界尺与定义卡三关,不默认继承。 +老 27 件已全数退役,名单见[道具退役素材库](../../../content-archive/道具退役素材库.md)表二;`feats.tres` 在役行=重设计件表。任何一件要进新体系须重新过准入校验、分界尺与定义卡三关,不默认继承。 ## 补给(重设计·基础框架 v1) -> 本节是补给分类的现行事实源。补给成员 = **转换源**:不是系统资源本身,是「到手即结算成一笔系统数值的凭证」——凭证加完消尽,被写入的系统资源各有自己的寿命档位(五档轴见[核心循环](../../01-核心循环.md)「生命周期轴」节)。判据句与归类方法见 §1.3/§1.4。**新凭证已随迭代 20 专长实装批落表(2026-10-11);2026-10-18 用户裁削两件后,现行成员=新 3+留任 2(同调电池删除、完美保险归专长——见 git 提交史 v3.18)。** +> 本节是补给分类的现行事实源。补给成员 = **转换源**:不是系统资源本身,是「到手即结算成一笔系统数值的凭证」——凭证加完消尽,被写入的系统资源各有自己的寿命档位(五档轴见[核心循环](../../01-核心循环.md)「生命周期轴」节)。判据句与归类方法见 §1.3/§1.4。**新凭证已落表;2026-10-18 用户裁削两件后,现行成员=新 3+留任 2(同调电池删除、完美保险归专长——见 git 提交史 v3.18)。** ### 凭证件表(新 3 + 留任 2;代号制命名归用户;稀有度档、配额与面值数值归调参批) @@ -150,9 +150,9 @@ | 代号 | 写进哪笔系统资源(寿命档) | 一句话 | 备注 | |---|---|---|---| -| 刷新券 | 刷新存量账(冒险级) | 存量刷新次数 +1 | 语义=存量加仓(已裁);实现依赖刷新件写错账修复(同批) | +| 刷新券 | 刷新存量账(冒险级) | 存量刷新次数 +1 | 语义=存量加仓(已裁);实现依赖刷新件写错账修复 | | 储备金袋 | 储备池 RAP(节点级) | 储备池 +N | 给停手/刷新雷图经济加燃料;战斗结束清零系既有语义,兼容 | -| 时沙 | 下一战首轮 AP 队列(拾取挂账,兑付即消尽) | 下一战首轮 AP +2 | 一次性节奏件;与「AP 上限+1」(属性轴)不撞——一个改池子、一个改上限(落法=AP 加成既有通道,2026-10-12 追认⑦回写;拾取时战斗在途同样等下一战首轮) | +| 时沙 | 下一战首轮 AP 队列(拾取挂账,兑付即消尽) | 下一战首轮 AP +2 | 一次性节奏件;与「AP 上限+1」(属性轴)不撞——一个改池子、一个改上限(落法=AP 加成既有通道;拾取时战斗在途同样等下一战首轮) | | 小 GP 袋 | GP 钱包(冒险级) | (留任)+20 / +50 | 计价物不自售维持(不进商店) | | 应急口粮 | 生命账(冒险级) | (留任)回复 +6 | 在商店内(默认原则) | @@ -242,7 +242,7 @@ | AC(护甲) | 抬高角色的护甲 | | 攻击 | 抬高角色的攻击 | -三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:成员增减走文档修订。**行动点上限**自资源分类迁入本轴(2026-10-09 用户令)即一例,随实装批落表;落地前现役代码按三项运行。 +三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:成员增减走文档修订。**行动点上限**自资源分类迁入本轴(2026-10-09 用户令)即一例;落地前现役代码按三项运行。 #### 1.3 补给:转换源 @@ -254,8 +254,8 @@ **补给类内部的异质性(统一表述)**:凭证全部即时消尽——不存在「持有凭证」这种状态;异质性不在凭证上,而在**被写入的系统资源的寿命**上:GP 钱包 / 生命 / 刷新存量 = 冒险级,储备池 = 节点级,时沙暂记 = 至下一战首轮兑付(系统资源清单对齐「凭证件表(新 3+留任 2)」节;「AP 上限」已归属性值提升轴,见 1.2)。 -- 原在册的「秘宝充能」「完美资格」两笔随 2026-10-18 两件裁削注销——充能账本本身仍为秘宝基础设施保留(迭代 11,主动件充能每冒险重置),本次只删奇物侧写它的入口。 -- 完美资格的豁免走**订阅式自有累加账**:授予段在 `seal_missed` 命中时累加豁免数,判定取「误标总数 − 豁免数」得有效数;**不改写误标账本身、不拦截事件**(迭代 31 卡② 契约 2/3)。 +- 「秘宝充能」「完美资格」两笔已自本类注销——充能账本本身仍为秘宝基础设施保留(主动件充能每冒险重置),奇物侧不再写它的入口。 +- 完美资格的豁免走**订阅式自有累加账**:授予段在 `seal_missed` 命中时累加豁免数,判定取「误标总数 − 豁免数」得有效数;**不改写误标账本身、不拦截事件**。 - 登记此节防止把凭证当成会持续生效的东西去结算。 #### 1.4 分类判据 @@ -266,9 +266,7 @@ #### 1.5 命名出处 -专长与属性值提升都取自 DND 规则书的既有名词:专长对应 Feat,属性值提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(专长改规则 / 属性值提升改数字 / 资源给余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源取"资源"这个常用词**(用户 2026-10-05 定)——刷新券、储备金袋、时沙这类凭证与小 GP 袋、应急口粮都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。**三个分类的专名在 v2.7 去掉了「类」字后缀**——此前写作「机制类 / 属性提升类 / 资源类」,那是描述不是专名;去掉后缀后三个词各自都能独立成词、与 DND 官方中文一致,理由与逐条依据见 1.6 节。 玩家可见文案只写效果,不出现任何分类名。 - -**2026-10-19 第三类改名「补给」**——「系统资源」已定为 GP/钥石/行动点等数值容器的规范名(定义见[核心循环](../../01-核心循环.md)「系统资源」节),类名再叫「资源」会把"给系统资源加一笔的件"误读成"系统资源本身";改名后本类的判据句以 §1.3 为准,本段保留的是命名沿革。 +专长与属性值提升都取自 DND 规则书的既有名词:专长对应 Feat,属性值提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(专长改规则 / 属性值提升改数字 / 补给给余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**三个分类的专名不带「类」字后缀**——「类」字后缀只是描述不是专名;不带后缀三个词各自都能独立成词、与 DND 官方中文一致,理由与逐条依据见 1.6 节。 玩家可见文案只写效果,不出现任何分类名。 ### 1.6 三层结构与命名(本概念的完整层级) @@ -314,7 +312,7 @@ **终局那关的 Boss 击败后不给**:兑付只发生在**还有下一关可去**的那些关底 Boss 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。 -**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此完成裁决。 +**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。 #### 2.2 专长凭证:非 Boss 渠道怎么给专长 @@ -382,7 +380,7 @@ | **乙:可计算条件(现行)** | **1 条条件** | **分类干净,但"白名单外加过滤"这件事没消失,只是自动化了** | | 丙:死特判清单 | 1 条记录 | 每加一个例外加一条,靠记忆维护 | -**回复在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则(除登记的特殊规则外,分类内的都要在池子里)**它应当在商店中出现**。现行 `shop.tres` 货架(pool_shelf 六行)已含回复——迭代15② 商店补回复批已按默认原则对齐落地(凭证行同批入架,见调参表)。 +**回复在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则(除登记的特殊规则外,分类内的都要在池子里)**它应当在商店中出现**。现行 `shop.tres` 货架(pool_shelf 六行)已含回复与凭证行(见调参表)。 **当前在册的约束清单**(就这么两条,都要有理由): @@ -394,9 +392,9 @@ #### 2.5 在册事项 -现行实现里**三条渠道共用同一个候选池**(商店货架按 2.4 可计算条件切边去掉计价物),三个分类出现条件一样、只有出现概率不同——上表渠道分工中的**凭证形式(非 Boss 渠道给凭证 + 保底限购)已随迭代15② 入表实装**(见 2.2 与调参表);**Boss 渠道直接给专长已裁随专长实装批本批落地**(2026-10-11 用户裁,不再分期)。渠道分工的实施批次已随迭代 15② 与迭代 20 专长实装批落地,本文件不复制。 +现行实现里**三条渠道共用同一个候选池**(商店货架按 2.4 可计算条件切边去掉计价物),三个分类出现条件一样、只有出现概率不同——渠道分工中的**凭证形式(非 Boss 渠道给凭证 + 保底限购)已入表实装**(见 2.2 与调参表);**Boss 渠道直接给专长已落地**(2026-10-11 用户裁)。 -**池结构选型澄清(2026-10-11)**:池结构正主=案 D(v3.3 写入文档,用户定夺在案);「概率与上限解耦」的实现路径(v3.4 在册三案)系**实装侧自选项,非用户裁定项**——按「实现设计不定于现在」的原裁定,实装批内依代码事实自选,不再上问。 +**池结构选型澄清(2026-10-11)**:池结构正主=案 D(用户定夺在案);「概率与上限解耦」的实现路径(在册三案)系**实装侧自选项,非用户裁定项**——按「实现设计不定于现在」的原裁定,实现侧依代码事实自选,不再上问。 ### 3. 作用对象与范围 @@ -446,8 +444,8 @@ ## P0 最小闭环 / P1・P2 后置 - **P0(已实现)**:三个分类可定义 → 进入候选池 → 在渠道上被选中 → 当局生效 → 收束清零。 -- **P1 后置**:三条渠道按第 2 节分工——凭证形式(非 Boss 渠道给凭证+保底限购)已随迭代15② 入表实装(见调参表),其余分工(Boss 渠道直接给专长等)待实施。 -- **P2 后置**:商店里的攻击类型转换服务(备选素材见 [道具退役素材库](../../../content-archive/道具退役素材库.md));喂雷玩法 2026-10-03 五裁定为不做(R5 甲,kill-switch 见上文「踩雷转化对账锚」)。 +- **P1 后置**:三条渠道按第 2 节分工——凭证形式(非 Boss 渠道给凭证+保底限购)已入表实装(见调参表),Boss 渠道直接给专长已落地。 +- **P2 后置**:商店里的攻击类型转换服务(备选素材见 [道具退役素材库](../../../content-archive/道具退役素材库.md));喂雷玩法裁定为不做(kill-switch 见上文「踩雷转化对账锚」)。 ## 调参表 @@ -458,7 +456,7 @@ | 专长定义行(标识 / 显示名 / 稀有度 / 效果说明 / 订阅行〔订阅哪个事件 on / 什么条件 when / 什么效果 do〕) | 各字段封闭枚举,行键白名单封闭;事件 / 效果类型 / 条件事实 / 算子四词表封闭(效果引擎单一事实源);稀有度档=新四级(普通/优秀/稀有/传说),schema 字段双脱钩(字段在、设计面按档配比加权) | `data/tables/feats.tres` | | 专长凭证(出现概率 / 配额 / 限购次数 / 保底计数阈值) | 整数,四参数全 provisional | 已入表(`shop.tres` 凭证行 + 冒险表凭证三计数行) | | 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | 冒险表结构声明 | -| 补给种类 | 种类现行事实源=「凭证件表(新 3+留任 2)」节;凭证已入表(迭代15②) | 同上 | +| 补给种类 | 种类现行事实源=「凭证件表(新 3+留任 2)」节;凭证已入表 | 同上 | | 稀有度档位 | 封闭四级(普通 / 优秀 / 稀有 / 传说);配额是结构锚,改总量须重新拍板而非调参 | 同上 | | 各分类种类 × 档位的配额与值 | 整数 | `data/tables/adventure.tres` | | 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | @@ -481,8 +479,6 @@ 13. 被称为流派基座的专长必须能说明拿到前后的操作差异与新行为的持续资源来源;只有同一操作后的泛用数值增长,不得登记为基座。 14. 换图系两件基座同时持有时都生效;后续五件只在成功刷新后触发,无专长基线不变;石层缓冲覆盖所有主角受伤路径且同轮不叠加,矿道红利按成功刷新次数固定获得 GP。 -> 实装批落地前,现役代码按旧 27 件专长目录与旧资源成员在同框架下运行;新成员口径(27 件基础件表 / 凭证件表)自实装批起验。 - ## 待办 全部待办单点登记于 [待办清单](../../../../待办清单.md),本节不复制。 diff --git a/design/gdd/systems/冒险循环/难度曲线与Boss.md b/design/gdd/systems/冒险循环/难度曲线与Boss.md index 04dc9c8c..fe3bee6d 100644 --- a/design/gdd/systems/冒险循环/难度曲线与Boss.md +++ b/design/gdd/systems/冒险循环/难度曲线与Boss.md @@ -1,7 +1,7 @@ # 难度曲线与Boss > 一句话:难度曲线、期望值带与 Boss 设计 -> 状态:已定稿(自旧体系迁移);现行为 v1.4 +> 状态:已定稿;现行为 v1.5 ## 设计目的 @@ -53,9 +53,9 @@ | 轴 | 规则 | 说明 | |---|---|---| -| 关间台阶(关卡序号) | 每关至少投放一项新内容(新敌种或既有池新技能),加基准数值跳升 | 台阶必须能归因到看得见的变化,不是纯数字膨胀;投放断档是内容生产缺口,调参修补不了(技能池批措辞修订 2026-09-16:行为环段 → 既有池新技能) | +| 关间台阶(关卡序号) | 每关至少投放一项新内容(新敌种或既有池新技能),加基准数值跳升 | 台阶必须能归因到看得见的变化,不是纯数字膨胀;投放断档是内容生产缺口,调参修补不了 | | 关内坡度(节点深度) | 同敌种数值平缓上移,深度也可表达为敌人成群 | 数量是比单体质变更优先的深度表达:保持技能池 EV 读数不变(权重即旋钮、EV 重锚顺带登记)、总量受控 | -| Boss 与精英修饰(预留第三轴) | Boss 走最深深度直填行;精英只有字段命名空间预留 | Boss 不走修饰表;修饰乘数表 MVP 为空表、零行为,首个使用场景 = 精英节点(随[关卡节点地图](关卡节点地图.md)定稿联动);数值所有权在本系统,[棋盘生成](../排雷循环/棋盘生成.md)只按表生成。精英怪设定已登记预留(迭代 10 奖励重构批——与其他普通小怪同一立绘 + 附加特征标记 + 数值更强;视觉特征三件 = 名称前后缀「精英·」+ 底座光环 + 描边变色,色板合规与样张闸义务随怪物设定批实装) | +| Boss 与精英修饰(预留第三轴) | Boss 走最深深度直填行;精英只有字段命名空间预留 | Boss 不走修饰表;修饰乘数表 MVP 为空表、零行为,首个使用场景 = 精英节点(随[关卡节点地图](关卡节点地图.md)定稿联动);数值所有权在本系统,[棋盘生成](../排雷循环/棋盘生成.md)只按表生成。精英怪设定已登记预留(与其他普通小怪同一立绘 + 附加特征标记 + 数值更强;视觉特征三件 = 名称前后缀「精英·」+ 底座光环 + 描边变色,色板合规与样张闸义务随怪物设定批实装) | **结论**:关内坡度 = 每深一档同敌种基准上移,或按"深度也可表达为敌人成群"改由数量承载——单体生命随深度的具体走向以 `enemy.tres` 行值为准(数量优先于单体;s_hp 线性式为建模工具,现行行值不承诺随深度单调上移);关间台阶 = 相邻关同敌种基准乘 1.3–1.6(域语义如上;s_hp / k_L 现行行值读 `enemy.tres`,取值域归敌人表字段定义)。 @@ -74,7 +74,7 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 ### 生存链区间模型:一场战斗"打不打得过"的三档判定 -这是难度验收的现行模型,把"这一战玩家打得过吗"量化成两条区间的对比。每场战斗按玩家的**生存供给**(能扛多少伤害)算出一条生存区间,按**击杀需求**(要打出多少输出才能清场)算出一条击杀区间,两区间一比得出绿、黄、红三档结论。它替代了旧的关级供给带。 +这是难度验收的现行模型,把"这一战玩家打得过吗"量化成两条区间的对比。每场战斗按玩家的**生存供给**(能扛多少伤害)算出一条生存区间,按**击杀需求**(要打出多少输出才能清场)算出一条击杀区间,两区间一比得出绿、黄、红三档结论。 **结论**:绿档(最坏情况也打得过)是教学位的强制要求;黄档(期望占优但有失败分支)是普通战斗的正常形态;红档(最好情况也打不过)是配置事故,涉事行值禁止入表。 @@ -90,11 +90,11 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 | 变量 | 含义 | |---|---| | 进场生命 | 主角进入本战时的生命;跨战斗持久,归[冒险结构](冒险结构.md)的 HP(生命) | -| 受伤峰值 / 谷值 | 敌方最坏 / 最好一轮的输出(攻击、技能倍率、池闸长期速率、减伤、削弱的合计构成见[战斗结算](../战斗循环/战斗结算.md)战斗段;技能池批口径——出招构成为摇号分布,峰值/谷值构成按含闸长期速率复核而非固定剧本拍) | +| 受伤峰值 / 谷值 | 敌方最坏 / 最好一轮的输出(攻击、技能倍率、池闸长期速率、减伤、削弱的合计构成见[战斗结算](../战斗循环/战斗结算.md)战斗段;技能池口径——出招构成为摇号分布,峰值/谷值构成按含闸长期速率复核而非固定剧本拍) | | 输出峰值 / 谷值 | 玩家最好 / 最坏一轮的总输出(分量构成同上) | | 一次性伤害 | 清障炸药一类当场引爆的大额伤害 | -护甲等级带宽口径(2026-09-16 定稿落地):结算换算层引入护甲等级掷点(1d20 必中、低掷按缺口三档折扣、nat20 暴击恒全额——档位、折扣与暴击倍率读 `settlement.tres`,规则语义归[战斗结算](../战斗循环/战斗结算.md))后,受伤与输出两侧的峰值 / 谷值构成各含一条掷点带宽——同一刀的最坏 / 最好掷点(含暴击档与折扣档)落进谷值 / 峰值,带宽补扫义务含暴击档与折扣档。**换装点锚定**:基准护甲等级自带对敌方输出期望的结构性削减(具体读数按判定式随行值复算),对比被整体退役的 defense_up 减伤墙是结构性削弱,且伤害下限(任何攻击落地均不为零,下限值读 `settlement.tres`)使"零承伤轮"结构性消失——该方向性偏移与下方已登记的加难杠杆扫描合并处理,不单独重调行值;主角与敌方首关护甲等级行值读配置表(正式行值归怪物设定批)。"零红档"验收与三档判定式不变。 +护甲等级带宽口径:结算换算层引入护甲等级掷点(1d20 必中、低掷按缺口三档折扣、nat20 暴击恒全额——档位、折扣与暴击倍率读 `settlement.tres`,规则语义归[战斗结算](../战斗循环/战斗结算.md))后,受伤与输出两侧的峰值 / 谷值构成各含一条掷点带宽——同一刀的最坏 / 最好掷点(含暴击档与折扣档)落进谷值 / 峰值,带宽补扫义务含暴击档与折扣档。**换装点锚定**:基准护甲等级自带对敌方输出期望的结构性削减(具体读数按判定式随行值复算),对比被整体退役的 defense_up 减伤墙是结构性削弱,且伤害下限(任何攻击落地均不为零,下限值读 `settlement.tres`)使"零承伤轮"结构性消失——该方向性偏移与下方已登记的加难杠杆扫描合并处理,不单独重调行值;主角与敌方首关护甲等级行值读配置表(正式行值归怪物设定批)。"零红档"验收与三档判定式不变。 关级恒等式:**一关打下来,玩家总输出 ≈ 全关敌方总生命期望 ×(1 + 缓冲);其中奖励侧贡献的输出占比须落在 [15%, 40%] 带内。** @@ -111,23 +111,17 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 | 带 | 定稿口径 | 含义 | |---|---|---| -| 通关率带 | 口径已换代·现行带 = 四带甲案(2026-10-03 用户拍板):带 A 白板完美执行战役全通率 [0%,10%] / 带 B 白板第一关通过率 [50%,85%] / 带 C 营地满成长战役全通率 [30%,60%](预立) / 带 D 响应曲线每雷边际 ≤15pp·S 形——旧普通档 L1 [35,55] / L2 [10,15] 与完美档 [35,65] 正式作废,全文见本节末「带换代」条。实证:直入口 L2 普通 5% vs 冒险条件口径 L2 90% 同期并存〔「营地检查点」= 数值验证工具营地循环判定段旧称(现名营地循环战役)——2026-09-30 词源考证完成,见审计报告拍板点 9(已按生命周期条款退役);与冒险结构「没有检查点」铁律的字面相撞就此解除〕 | 四带按类型基准锚定、每条带均有外部锚点:带 B 管首关 = 过滤器不是墙;带 A 管白板全通的顶尖难度;带 C 留元进度爬升空间(满成长实装后启用);带 D 管响应曲线无悬崖 | -| 关卡完成余量带 | 关卡完成者关卡完成时剩余生命的 p90 / p10 按现生命轴上限百分比表达(压缩前绝对血量带已作废;界值重标随验收批) | **关卡完成余量** = 关卡完成瞬间还剩多少血。余量太肥说明赢得太从容,压生存侧;太瘦说明"剩一两滴血惨胜"成常态,抬治疗供给或恢复点收益 | +| 通关率带 | 现行带 = 四带甲案(2026-10-03 用户拍板):带 A 白板完美执行战役全通率 [0%,10%] / 带 B 白板第一关通过率 [50%,85%] / 带 C 营地满成长战役全通率 [30%,60%](预立) / 带 D 响应曲线每雷边际 ≤15pp·S 形 | 四带按类型基准锚定、每条带均有外部锚点:带 B 管首关 = 过滤器不是墙;带 A 管白板全通的顶尖难度;带 C 留元进度爬升空间(满成长实装后启用);带 D 管响应曲线无悬崖 | +| 关卡完成余量带 | 关卡完成者关卡完成时剩余生命的 p90 / p10 按现生命轴上限百分比表达(界值重标随验收批) | **关卡完成余量** = 关卡完成瞬间还剩多少血。余量太肥说明赢得太从容,压生存侧;太瘦说明"剩一两滴血惨胜"成常态,抬治疗供给或恢复点收益 | | 第一关形态带 | 教学位绿档 + 中段黄档 + Boss 黄档不红 | **形态带**管一关内各战三档判定的排布形状:第一战必须稳过,中段有输的可能,Boss 战紧但不许是配置事故 | -更高加成档(攻击翻倍、三倍)的关卡完成率带随档位放宽(翻倍档第一关 ≥95%),其机制承载是生存链区间的平移而不是另拍一套数字(平移换算见调参联动一节)。此外另有一条期望承伤占比带(普通场承伤不超过生命上限两成、Boss 场不超过五成,provisional),该指向已过期(「最近的减伤调整批」所指批次已关闭未执行);期望承伤占比带复验义务挂起,随数值批重开时核销。 +更高加成档(攻击翻倍、三倍)的关卡完成率带随档位放宽(翻倍档第一关 ≥95%),其机制承载是生存链区间的平移而不是另拍一套数字(平移换算见调参联动一节)。此外另有一条期望承伤占比带(普通场承伤不超过生命上限两成、Boss 场不超过五成,provisional);期望承伤占比带复验义务挂起,随数值批重开时核销。 -第三关口径(第三关内容批):L3 全部行值 provisional-pending-growth,上述各带对 L3 暂不适用——零成长基线下的红档属预期(主角成长侧前置 = GP+商店房批,已于 2026-09-20 落地:GP 掉落 + 商店房 + 格面 GP),现行冒烟的首遇绿档断言按「成长代理档 atk+200 / hp+100」口径执行;正式通关率带与首遇绿档口径随玩家成长落地换装,归曲线调参批统一收带。 +第三关口径:L3 全部行值 provisional-pending-growth,上述各带对 L3 暂不适用——零成长基线下的红档属预期(主角成长侧前置 = GP 掉落 + 商店房 + 格面 GP 已落地),现行冒烟的首遇绿档断言按「成长代理档 atk+200 / hp+100」口径执行;正式通关率带与首遇绿档口径随玩家成长落地换装,归曲线调参批统一收带。 -**迭代 20 投放读数(只测不判——2026-10-12 反哺批登记,用户裁③数值暂不调整只落内容)**:奇物池换代后构成 = 四级 70/25/9/0=104 张(凭证四件入稀有档 +6 张 provisional);MC shop=off 止步分布 {1:90, 2:10}→{1:93, 2:7}(通关率 0% 两代持平,新基线 seed 71000)——位移归因曝光槽高档候选加速([奇物](奇物.md)池结构联动注记的预期行为,非难度恶化信号);判读与带重锚随曲线调参批,本注记只登记不判读。 +**判读口径**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,由数值验证工具冒险段派生);改带 = 用户拍板。 -**迭代 24 敌人表内容修批读数(只测不判——2026-10-14 反哺写入批登记,用户裁「全部按呈报写入文档」;数值终值归 M4 数值批)**:同种子配对 seed0=9000(沿用迭代 23 配对种子)改前/改后各 40 局×both——①**N2 普通敌技能投放**(毒吐/盾击两新行六池)后 perfect L2 通关 8/20→13/20(+25pp)、L3 全通 6/20→10/20(+20pp)——方向符合预期(L1 减压后更健康抵达 L2/L3),量级低于二档配对判读带 ~30pp,倍率 provisional 归 M4;normal 档基率地板(0/20)无判读力;②**N3 敌方攻击类型轴**(20 行全填 normal+敌方兑付路径克制消费)后全局平移 = 主角穿重甲受伤点数 −1 / 魔法护甲 +1 / 轻甲 0(V5 冒烟同种子三甲型配对实测单发恒 ±1:heavy 2==light 3−1 · ward 4==light 3+1);taken 中位 normal 29.5→27.5、perfect 76.5→97.0——后者系**构成效应**(全通 6→10 局通关更深自然累计更多承伤),非单发异常;③N1 (1,2) 降档(hp 50→22·ac 3→2)后 perfect L1 通关 19/20→20/20——5 倍墙消除方向符合预期。判读与带重锚随 M4 数值批,本注记只登记不判读。 - -**判读口径同步(迭代 5 基线重测批,2026-09-28)**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,由数值验证工具冒险段派生;单关直入口口径已随 2026-09-23 拍板退役)——带值沿用 2026-09-20 分带修正(普通档 L1 [35,55] / L2 [25,45]、完美档 [35,65];迭代 5 计划书 C4 冻结:改带=用户拍板)。上方行 115 的「带退役待重锚、重锚前只测不判」注记按本条同步理解:迭代 5 基线重测已按现行带对冒险条件口径判读(读数报告已按生命周期条款退役);是否在新口径上重取带值,归迭代 5 出口判读由用户拍板,本批不动带数字。 - -> **⚠ 带失效待重锚(2026-10-01 数值修复批)**:模拟档位重构(普通档 v2 新手画像→v3=完美策略+受控失误注入;完美档补元游戏选路与商店购买)+数值三刀(hero max_hp 20→26/直伤雷 4/5/5→6/8/8/L1 系敌 atk 2→1)后,上方三条验收带的测量基准已失义——旧普通档=比真人弱 20 倍的新手画像(真人实证推翻),旧带值系照坏尺子校定。新尺读数(N=100/200)与调优轨迹见 `数值修复批读数(已退役,git 历史可查)`;~~新带值须新尺重测后用户拍板,重锚前只测不判~~(已由下行带换代完成)。 - -**带换代(迭代 9 出口带值批,2026-10-03 用户拍板四带甲案)**:旧三条通关率带(普通 L1 [35,55] / L2 [10,15]、完美 [35,65])**正式作废**,换类型基准锚定四带(依据与官方统计出处=《[Roguelike 难度类型基准](难度外部基准调研(已退役,git 历史可查))》§3.2,每条带均有外部锚点): +**四带甲案(2026-10-03 用户拍板)**:类型基准锚定四带(依据与官方统计出处=《[Roguelike 难度类型基准](难度外部基准调研(已退役,git 历史可查))》§3.2,每条带均有外部锚点): | 带 | 定稿口径 | 外部锚点 | |---|---|---| @@ -136,26 +130,24 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 | **带 C** 营地满成长战役全通率 | **[30%, 60%]**(预立——读数须元进度满成长实装后) | Hades 满镜depth参考、带 A→C 5–10 倍爬升跨度 | | **带 D** 响应曲线形状 | 每雷边际 ≤15pp 且 S 形连续、无 >25pp 单步跳变 | 悬崖回归量化验收(现行实测 ≈39pp/雷,超 2.6 倍) | -配套裁决(同日逐项拍板):普通档 v3.4 **留任失败常态窗**(只记读数不设带,验收只看带 A/带 B+真人侧);直伤雷当量 **6/8/8 转正**(去 provisional);模拟承伤 k 系数保留(k=真人整关承伤中位÷模拟完美档承伤中位,**正常预期 >0.5(用户裁)、预警线 <0.3**,字段随 81000 重锚入库后补算)。**位阶事实**:现行完美档 78.5% 落带 A 外(越上界 68.5pp)、普通档 L1 13% 落带 B 外——落带收敛归全局难度批(Beta 阶段,未排期;排序先带 D 悬崖修复后带值收敛,顺序有讲究),81000 重锚只测不判。 +配套裁决(逐项拍板):普通档 v3.4 **留任失败常态窗**(只记读数不设带,验收只看带 A/带 B+真人侧);直伤雷当量 **6/8/8 转正**(去 provisional);模拟承伤 k 系数保留(k=真人整关承伤中位÷模拟完美档承伤中位,**正常预期 >0.5(用户裁)、预警线 <0.3**,字段随 81000 重锚后补算)。**位阶事实**:现行完美档 78.5% 落带 A 外(越上界 68.5pp)、普通档 L1 13% 落带 B 外——落带收敛归全局难度批(Beta 阶段,未排期;排序先带 D 悬崖修复后带值收敛,顺序有讲究),81000 重锚只测不判。 -**改带(迭代 5 返工出口完成批,2026-09-30 用户拍板)**:普通档 L2 带 [25,45] → **[10,15]**(用户裁:数值没有问题、本来就应该通关率很低,之前的 25~45 设定上就有问题)——返工批终态双窗读数 10.6%(MC)/13.6%(verifier)在新带下落带,返工计划书批点丙追认成立,C1 两刀+AC v1+新池组合基线转正(去 provisional)。普通档 L1 [35,55]、完美档 [35,65] 不动。历史读数报告中的 [25,45] 判列系当时口径留档不改。 - -### 越带回滚阶梯(四级阶梯,2026-09-28 落档——自 acceptance-ap6-ac v1.0 §e 收编) +### 越带回滚阶梯(四级阶梯) 读数越带时的处置阶梯,粒度细→粗、爆炸半径小→大,**双向可用**(承伤偏低加深压力、承伤偏高放宽折扣): 1. **实现缺陷检查(AC 档位边界)**——先查双重乘算、档位映射反向等缺陷,对照掷点面 EV 减免读数定位,再谈调参; 2. **AC 档位值**——掷点折扣/暴击档位行值(读 `settlement.tres`); 3. **难度曲线行值加难**——本系统行值(血量锚走廊、变异 effect_value/percent_of_cells/per_level_bonus、群战数量、注入衰减等已登记杠杆位); -4. **行动点表值级调降**——量程最大、爆炸半径最大(AP 现行表值 = 8〔Package B 2026-09-22 批 6→8 回调;历史「压速批落 6」口径已被回调取代〕,第四级启用即推翻现行配置拍板,须用户裁决)。 +4. **行动点表值级调降**——量程最大、爆炸半径最大(AP 现行表值 = 8,第四级启用即推翻现行配置拍板,须用户裁决)。 -四条边界:①「承伤偏高(减免过度)」败向先查实现缺陷再谈调参;②动用行值级或行动点级均使同种子历史坐标整体作废,须重立基线、另起验收批;③敌方 AC 正式值不进本链(归怪物设定批——迭代 5 T4 通道);④每次调参后全量重跑验收并在调参日志留联动检算记录(禁独立调参网络纪律)。 +四条边界:①「承伤偏高(减免过度)」败向先查实现缺陷再谈调参;②动用行值级或行动点级均使同种子历史坐标整体作废,须重立基线、另起验收批;③敌方 AC 正式值不进本链(归怪物设定批);④每次调参后全量重跑验收并在调参日志留联动检算记录(禁独立调参网络纪律)。 ### 商店与 GP 经济杠杆:玩家侧供给 × 定价的第三族杠杆 -GP 与商店房随 2026-09-20 GP+商店房批落地,给难度引入第三族玩家侧杠杆:**GP 供给 × 商品定价 = 入关属性参数**——供给或定价单边移动,玩家入关时的攻击 / 生命 / 护甲与通关率随之漂移,与血量锚走廊、变异 effect_value 同列进禁独立调参网络。 +GP 与商店房给难度引入第三族玩家侧杠杆:**GP 供给 × 商品定价 = 入关属性参数**——供给或定价单边移动,玩家入关时的攻击 / 生命 / 护甲与通关率随之漂移,与血量锚走廊、变异 effect_value 同列进禁独立调参网络。 -**结论**:掉落与价格的全部现行行值 provisional-pending-曲线调参批——本批骨架先行、数值整体后置(用户 2026-09-20 拍板"骨架先行、数值是骨架上的肌肉"),分层验收与带平移全部随调参批执行,本文只登记杠杆位不投正式值。 +**结论**:掉落与价格的全部现行行值 provisional-pending-曲线调参批——骨架先行、数值整体后置(用户 2026-09-20 拍板"骨架先行、数值是骨架上的肌肉"),分层验收与带平移全部随调参批执行,本文只登记杠杆位不投正式值。 ``` 每战 GP 掉落 = 掷定(均值 ± 方差,按战斗节点身份查 gp_drops 行) + 关级掉落加值 + 战斗内缓冲 @@ -163,23 +155,23 @@ GP 与商店房随 2026-09-20 GP+商店房批落地,给难度引入第三族 商品价格(legacy 对照) = 基价 + 关级价格加成 + 步长 × 已购档数 ``` -定价锚定口径:商品价格按"正常运气可购档数 / 运气极好可购档数"两读数的数学期望制定(期望读数进商店表批注)——正常运气的玩家买得到成长保底档,运气极好也不至于全表买穿,两个失速态都不出现。**v0.22 换代注记(迭代 11 第②批)**:A=店内递增 ≫ b=跨关递增的方向裁决随待办清单「GP 商店房重构」条落定;A/b 具体系数原裁决=game-balancer 研究后用户拍板(P5 甲),迭代 11 第②批依零人工令改 provisional 投值 1.8/1.1+后置追认(追认单随迭代 11 出口包,研究归调参批复核);ceil 向上单一取整(玩家不利向)。 +定价锚定口径:商品价格按"正常运气可购档数 / 运气极好可购档数"两读数的数学期望制定(期望读数进商店表批注)——正常运气的玩家买得到成长保底档,运气极好也不至于全表买穿,两个失速态都不出现。A=店内递增 ≫ b=跨关递增的方向裁决随待办清单「GP 商店房重构」条落定;A/b 具体系数 provisional 投值 1.8/1.1,研究归调参批复核;ceil 向上单一取整(玩家不利向)。 | 杠杆位 | 口径 | 说明 | |---|---|---| | GP 掉落均值与方差 | 普通 / 精英(预留行)/ Boss 三行掷定区间 | 掉落量级与战斗节奏同族;格面 gp 型(GP 袋,低概率)是"惊喜意外获取"的补充供给 | | 关级掉落加值 | 逐关一行 | 关间供给抬升的半边 | | 关级价格加成 | 逐关一行 | 关间价格上涨对应关间掉落上升的另一半——两轴同向联动的对子(legacy 模式轴;pool 模式由 b 因子承载同一杠杆位) | -| 货架基价 | pool_shelf 六行(攻击 / 生命上限 / 护甲 / 行动点件 / 凭证 / 回复) | **v0.22 换代**:重复购买爬价由 A 链承载(同店买越多越贵)+ b 跨关递增(后关整体更贵),步长逐档递增语义退役随 legacy 模式保留 | +| 货架基价 | pool_shelf 六行(攻击 / 生命上限 / 护甲 / 行动点件 / 凭证 / 回复) | 重复购买爬价由 A 链承载(同店买越多越贵)+ b 跨关递增(后关整体更贵),步长逐档递增语义退役随 legacy 模式保留 | | 价格因子 A / b | 表因子 price_a / price_b | A=店内递增(进店已购次数幂)、b=跨关递增(关序−1 幂);provisional 1.8/1.1,方向裁决 A ≫ b | 公式语义与 GP 归[冒险结构](冒险结构.md)(GP 节),商店房编排归[关卡节点地图](关卡节点地图.md);行值读 `data/tables/shop.tres`,全部 provisional 归本文曲线调参批。 -**分层验收 defer(2026-09-20 用户拍板成文)**:按"商店存在与否"分层的通关率验收——MC 双格(shop=off 现行基线 / shop=on 购买画像)、shop=on 的带平移量、商店属性提升的换算率登记(换算率强条目纪律同类)——**全部随曲线调参批执行**,与「基线通关率越带」同窗(原「L2 Boss 承伤微越带」「大奖励数值随难度曲线联动」两待办清单条目已完成移除——前者 2026-09-28 读数自愈、后者随迭代 10 大奖励退役失义)。执行前 shop=off 续用现行带判读,shop=on 读数只登记不判读、禁止用 shop=off 读数外推 shop=on。L3 首遇绿档冒烟断言仍按成长代理档口径,不因商店批改判。**v0.22 注记(迭代 11 第②批)**:shop=off 对照 = legacy 固定三件模式(MC 逐项比对 off_n60 逐位,迭代 11 第②批 T5);shop=on 首锚 = 共享池货架面 N=60 双策略(同调关闭同种子配对)——带平移判读仍归调参批,终局池读数(pool_stock)随行只测不判。 +**分层验收 defer(2026-09-20 用户拍板)**:按"商店存在与否"分层的通关率验收——MC 双格(shop=off 现行基线 / shop=on 购买画像)、shop=on 的带平移量、商店属性提升的换算率登记(换算率强条目纪律同类)——**全部随曲线调参批执行**,与「基线通关率越带」同窗。执行前 shop=off 续用现行带判读,shop=on 读数只登记不判读、禁止用 shop=off 读数外推 shop=on。L3 首遇绿档冒烟断言仍按成长代理档口径,不因商店批改判。**v0.22 注记**:shop=off 对照 = legacy 固定三件模式(MC 逐项比对 off_n60 逐位);shop=on 首锚 = 共享池货架面 N=60 双策略(同调关闭同种子配对)——带平移判读仍归调参批,终局池读数(pool_stock)随行只测不判。 ### Boss 设计:食人魔酋长与关底血量锚 -首发关底 Boss 是食人魔酋长,摆在每关最深深度行上。Boss 约定有三条:位置 = 最深深度直填行,不走修饰表;定位 = 本关最大的单场消耗;技能池 = 专属池承载——独占技能 + 权重轮廓(现行:独占增益技"硬化"——敌方防御池词汇载体;2026-09-16 敌人技能池批改写,旧"专属四拍环且含蓄力拍"约定随行为环退役,增益 ≤1 纪律下旧蓄力拍不进 Boss 池;池语义见[敌人系统](../战斗循环/敌人系统.md))。 +首发关底 Boss 是食人魔酋长,摆在每关最深深度行上。Boss 约定有三条:位置 = 最深深度直填行,不走修饰表;定位 = 本关最大的单场消耗;技能池 = 专属池承载——独占技能 + 权重轮廓(现行:独占增益技"硬化"——敌方防御池词汇载体;增益 ≤1 纪律下蓄力拍不进 Boss 池;池语义见[敌人系统](../战斗循环/敌人系统.md))。 **结论**:Boss 生命 ≈ 全关普通战斗敌方生命期望合计 × 血量锚比率,比率域 [0.5, 1.1];Boss 攻击基线不低于本关普通战的最高行。 @@ -191,7 +183,7 @@ boss_hp ≈ round( Σ普通战斗敌方生命期望 × r_boss ) r_boss |---|---|---| | Σ普通战斗敌方生命期望 | 按数量区间期望逐行合计(区间中点),行值读敌人表 | 全关非 Boss 节点敌方生命合计;逐数闭合随调参批在调参日志留档 | | r_boss | 域 [0.5, 1.1] | Boss 生命 = Σ × r_boss;Boss 行值读敌人表(provisional) | -| 加难走廊 | [1.1, 1.35] | 通关率压带的首选杠杆候选;**扫描已执行(迭代 5,2026-09-28)**——域内取样(r_boss 0.8 档)对完美档 Boss 战无感(胜率 98% 血量加压打不到)、对普通档 −6pp;走廊段(>1.1,越域)未启用——启用即越域须登记(读数明细见 `迭代5杠杆扫描报告(已退役,git 历史可查)`) | +| 加难走廊 | [1.1, 1.35] | 通关率压带的首选杠杆候选;**扫描已执行**——域内取样(r_boss 0.8 档)对完美档 Boss 战无感(胜率 98% 血量加压打不到)、对普通档 −6pp;走廊段(>1.1,越域)未启用——启用即越域须登记(读数明细沿革查 git 提交史) | Σ 的逐数闭合口径:数量走开战掷骰的区间期望(区间中点),教学位同样掷骰、按区间期望计入;各坐标行值一律读敌人表,本文不重复登记具体数值——防与配置双写失同步。 @@ -201,7 +193,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 三个首发敌种各配一档护甲类型——地精轻甲、熊地精魔法护甲、食人魔酋长重甲——构成"轻甲 → 魔法护甲 → 重甲"的教学梯度:玩家的克制手段随进度逐关解锁。 -攻击类型对护甲类型的克制倍率矩阵(克制 / 中性 / 被克三档加法修正(+1 / 0 / −1 点)读 `settlement.tres` 甲效表,provisional——2026-09-18 加法核换装(量纲由百分比改整数点数))是[战斗结算](../战斗循环/战斗结算.md)的甲效表,哪个攻击类型克哪档护甲由它定义,本文不重复。本文只锁两件事:敌种的护甲类型行值(见调参表),以及这份矩阵数值的调参所有权在本系统——敌种护甲变更与矩阵档值变更都必须复算 Boss 与普通战的击杀区间,加法修正点数随攻击成长的重定价义务同类。 +攻击类型对护甲类型的克制倍率矩阵(克制 / 中性 / 被克三档加法修正(+1 / 0 / −1 点)读 `settlement.tres` 甲效表,provisional)是[战斗结算](../战斗循环/战斗结算.md)的甲效表,哪个攻击类型克哪档护甲由它定义,本文不重复。本文只锁两件事:敌种的护甲类型行值(见调参表),以及这份矩阵数值的调参所有权在本系统——敌种护甲变更与矩阵档值变更都必须复算 Boss 与普通战的击杀区间,加法修正点数随攻击成长的重定价义务同类。 ### 调参联动:禁独立调参网络与对账重跑义务 @@ -214,19 +206,19 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 密度 ↔ 可推理率 ↔ 生成尝试上限 | [棋盘生成](../排雷循环/棋盘生成.md) | 三元组联动;禁止为难度牺牲可推理率绝对锚 | | 每轮行动点 ↔ 停手转存规模 | [行动经济](../排雷循环/行动经济.md) | 联动评估记录归本文,调参所有权在行动经济 | | 削弱强度 ↔ 当量锚 | [增益状态](../战斗循环/增益状态.md)、[战斗结算](../战斗循环/战斗结算.md) | 联动值禁独立调参,修订须重跑锚对照 | -| 护甲类型 ↔ 克制矩阵 | [战斗结算](../战斗循环/战斗结算.md) | 敌种护甲变更须复算击杀区间(2026-09-19 充能退役——原"充能投桶与量"联动半边废止) | +| 护甲类型 ↔ 克制矩阵 | [战斗结算](../战斗循环/战斗结算.md) | 敌种护甲变更须复算击杀区间 | | 护甲等级 ↔ 攻击基线 ↔ 区间带宽 | [战斗结算](../战斗循环/战斗结算.md) | 敌种与主角的护甲等级行值变更须复算生存链区间(掷点带宽随折扣档位与攻击基线同向放大);掷点形式与档位已定稿(d20 三档——档位读 `settlement.tres`;nat20 暴击形式留档,倍率同表),护甲等级行值变更仍须复算生存链区间——现行行值读 `hero.tres` / `enemy.tres` 的 armor_class 列(均暂定),敌方正式行值随怪物设定批投值、与加难杠杆扫描合并调 | | GP 供给 ↔ 商品定价 | [冒险结构](冒险结构.md)、[关卡节点地图](关卡节点地图.md) | 供给 × 定价 = 入关属性参数,单边移动须复算分层关卡完成率带(商店与 GP 经济杠杆节)——动供给必复算分层带,禁独立调参 | -| 封印溢价系数 δ ↔ 完美乘数 p_perfect ↔ ap_per_round | [战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md) | 封印激励三件套同窗检算(防封印 rush 复发:δ 与 ×2 叠加通胀、AP 吞吐上限)——任一变动须重跑双画像封印率读数(2026-10-05 判式换代批新增) | -| η 读数 ↔ 模拟画像定义 ↔ 可推理率 ι ↔ min_safe_count/生成尝试上限 | sim 档位、[棋盘生成](../排雷循环/棋盘生成.md) | η 是画像条件量:画像重构即锚漂移,重锚顺带;可推理率三元组既有联动扩一员(2026-10-05 判式换代批新增) | -| β 带端点 β_lo/β_hi ↔ D_ref ↔ hero max_hp ↔ AC 折算档(5pp 系数) | [战斗结算](../战斗循环/战斗结算.md) | 带是 D_ref 的函数:换锚(D_ref/max_hp)须全带重推;AC 档值变更改 5pp 系数,同罪(2026-10-05 判式换代批新增) | -| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | [地图战斗资源](../战斗循环/地图战斗资源.md) | **同轴镜像比入对账面**:负向/正向比超出 β 带内推导区间即越带;单边动负向三行今后必须带正向镜像行联合检算(2026-10-05 判式换代批新增——数值修复批两先例的单边动教训成文) | -| clear_blast 区间(24/40/32) ↔ p_perfect | [地图战斗资源](../战斗循环/地图战斗资源.md) | 完美封印第二份的补贴基数进封印激励对账;单边动清图奖励 = 变相动封印(2026-10-05 判式换代批新增) | -| 标中强化池权重 ↔ 正向池权重(77 分母) ↔ 关级恒等式奖励占比 [15,40%] | [地图战斗资源](../战斗循环/地图战斗资源.md) | 形态 (b) 专属池重摇启用时生效(现行不启):双池分布变动 = E_dig 与 W 同时漂移,须联合检算 + 恒等式占比复核(2026-10-05 判式换代批新增,条件生效行) | +| 封印溢价系数 δ ↔ 完美乘数 p_perfect ↔ ap_per_round | [战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md) | 封印激励三件套同窗检算(防封印 rush 复发:δ 与 ×2 叠加通胀、AP 吞吐上限)——任一变动须重跑双画像封印率读数 | +| η 读数 ↔ 模拟画像定义 ↔ 可推理率 ι ↔ min_safe_count/生成尝试上限 | sim 档位、[棋盘生成](../排雷循环/棋盘生成.md) | η 是画像条件量:画像重构即锚漂移,重锚顺带;可推理率三元组联动 | +| β 带端点 β_lo/β_hi ↔ D_ref ↔ hero max_hp ↔ AC 折算档(5pp 系数) | [战斗结算](../战斗循环/战斗结算.md) | 带是 D_ref 的函数:换锚(D_ref/max_hp)须全带重推;AC 档值变更改 5pp 系数,同罪 | +| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | [地图战斗资源](../战斗循环/地图战斗资源.md) | **同轴镜像比入对账面**:负向/正向比超出 β 带内推导区间即越带;单边动负向三行今后必须带正向镜像行联合检算 | +| clear_blast 区间(24/40/32) ↔ p_perfect | [地图战斗资源](../战斗循环/地图战斗资源.md) | 完美封印第二份的补贴基数进封印激励对账;单边动清图奖励 = 变相动封印 | +| 标中强化池权重 ↔ 正向池权重(77 分母) ↔ 关级恒等式奖励占比 [15,40%] | [地图战斗资源](../战斗循环/地图战斗资源.md) | 形态 (b) 专属池重摇启用时生效(现行不启):双池分布变动 = E_dig 与 W 同时漂移,须联合检算 + 恒等式占比复核(条件生效行) | -五条经济契约的对账由[战斗结算](../战斗循环/战斗结算.md)闭合验收;挖掘风险不等式已于 2026-10-05 判式换代批重立(三层口径+β 带+条件二封印溢价——结构层接替与数值层带判读详见行动经济 F1 条款3 推导节),本系统的对账义务转为按 β 带逐 u 检算(清图支配性审计为常设重跑项,现行 u=3 β=1.17 微破下限登记态);清图支配性已于 2026-09-19 按现行值链重跑、裁决②"非支配设计态"维持——判式换代后的全套判值重跑随本系统下一次调参批顺带执行。完美封印乘数的调参权在本系统。 +五条经济契约的对账由[战斗结算](../战斗循环/战斗结算.md)闭合验收;挖掘风险不等式为三层口径+β 带+条件二封印溢价(结构层与数值层带判读详见行动经济 F1 条款3 推导节),本系统的对账义务按 β 带逐 u 检算(清图支配性审计为常设重跑项,现行 u=3 β=1.17 微破下限登记态);清图支配性裁决②"非支配设计态"维持——全套判值重跑随本系统下一次调参批顺带执行。完美封印乘数的调参权在本系统。 -元进度接口预留:**结论——元进度解锁对难度的影响,以生存链区间的平移换算率接入;接口启用形态已定稿(2026-09-18 元进度定稿批,用户拍板):永久强化影响折算为通关率带平移量,判读口径不变;换算率表首版三行(生命上限 / 基础攻击 / 护甲等级——护甲行强条目,验收读数须按解锁后参数重测)与键结构见元进度表字段定义,数值行读 `data/tables/`、标定随元进度设计批。** 元进度数值行落地前,本系统不为它预留任何数值行。 +元进度接口预留:**结论——元进度解锁对难度的影响,以生存链区间的平移换算率接入;接口启用形态已定稿(2026-09-18 用户拍板):永久强化影响折算为通关率带平移量,判读口径不变;换算率表首版三行(生命上限 / 基础攻击 / 护甲等级——护甲行强条目,验收读数须按解锁后参数重测)与键结构见元进度表字段定义,数值行读 `data/tables/`、标定随元进度设计批。** 元进度数值行落地前,本系统不为它预留任何数值行。 ## 依赖与输出 @@ -259,24 +251,24 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 优先级 | 内容 | 后置原因 | |---|---|---| -| P1 | 加难杠杆扫描落带 | 候选杠杆已登记(血量锚走廊、群战上探、注入衰减上调候选),域内取样扫描已执行(迭代 5——r_boss 0.8 档,见「Boss 设计」节加难走廊行),全杠杆落带扫描未完成;护甲等级换装点锚定(基准护甲等级自带敌方输出期望的结构性削减 + 减伤墙退役 + 伤害下限)的方向性偏移并入本扫描一并调带(带宽补扫含暴击档与折扣档);落带前现行行值维持 provisional-pending-scan。第二关行集随分支节点图批落地后并入本扫描(L2 读数基线/加成档已顺带实测,见 v0.7) | -| P1 | 挖掘风险不等式与清图支配性对账重跑 | **挖掘风险不等式半边已完成(2026-10-05 判式换代批,迭代14②号卡)**——判式三层重立写入文档+条件二封印溢价机制闭合+β 带判读制度化(残留=u=3 β=1.17 微破下限登记态,不强制回滚;δ 敏感度判读顺带出口报告),本行对挖掘风险不等式的「重跑义务」改判读回执:后续调参按 β 带检算执行,不再立独立重跑批。清图支配性已于 2026-09-19 按现行值链重跑(裁决②"非支配设计态"维持——缺口收窄主读数 L1≈24/L2≈45 当量〔u=1〕,重跑入口=清图支配性审计(常设重跑项));调参批执行时按当期行值顺带重跑 | +| P1 | 加难杠杆扫描落带 | 候选杠杆已登记(血量锚走廊、群战上探、注入衰减上调候选),域内取样扫描已执行(r_boss 0.8 档,见「Boss 设计」节加难走廊行),全杠杆落带扫描未完成;护甲等级换装点锚定(基准护甲等级自带敌方输出期望的结构性削减 + 减伤墙退役 + 伤害下限)的方向性偏移并入本扫描一并调带(带宽补扫含暴击档与折扣档);落带前现行行值维持 provisional-pending-scan。第二关行集并入本扫描 | +| P1 | 挖掘风险不等式与清图支配性对账重跑 | **挖掘风险不等式半边已完成**——判式三层口径+条件二封印溢价机制闭合+β 带判读制度化(残留=u=3 β=1.17 微破下限登记态,不强制回滚),本行对挖掘风险不等式的「重跑义务」改判读回执:后续调参按 β 带检算执行,不再立独立重跑批。清图支配性已按现行值链重跑(裁决②"非支配设计态"维持,重跑入口=清图支配性审计(常设重跑项));调参批执行时按当期行值顺带重跑 | | P1 | 真人冒险成功率修正系数标定 | 带按模拟口径定义;试玩批次实测真人显著强于模拟者,系数待后续试玩批次定量 | -| P1 | 迭代 10 奖励重构带重扫义务 | 恢复经济收紧(关卡完成回满血→部分回血 20%,难度上压方向)+ 局内成长节奏变动(三选一件值/权重/次数上限 knob 全读冒险表;AP 件 = 每场战斗开始首轮 +1 AP 的强度敏感轴)——关卡完成率带重扫随曲线调参批现行窗执行;Boss 钥石掉落重锚(首杀 3/复杀 2)连带元进度产出标定义务重开(归元进度设计批) | +| P1 | 奖励重构带重扫义务 | 恢复经济收紧(关卡完成部分回血 20%,难度上压方向)+ 局内成长节奏变动(三选一件值/权重/次数上限 knob 全读冒险表;AP 件 = 每场战斗开始首轮 +1 AP 的强度敏感轴)——关卡完成率带重扫随曲线调参批现行窗执行;Boss 钥石掉落重锚(首杀 3/复杀 2)连带元进度产出标定义务重开(归元进度设计批) | | P1 | 完美策略档的结构性加难杠杆 | 数值杠杆对完美档已被实测证伪,结构候选未裁决(登记 [待办清单](../../../../待办清单.md)) | -| P2 | 精英节点完整语义与修饰乘数表首行 | 随[关卡节点地图](关卡节点地图.md)定稿联动;首个使用场景 = 精英节点;精英怪设定三特征已登记(迭代 10 批,见「曲线雕刻」表注),钥石掉 1 个预留挂钩 meta.tres boss_keystone 精英行(随实装批落) | -| P2 | 区间平移换算率定稿 | 接口启用形态已定稿(2026-09-18 元进度定稿批);剩余面 = 首版三行折算数值随[元进度](../跨局循环/元进度.md)设计批模拟读数标定 | -| P2 | 全局作用域变异的投放计划 | **首发已落地(2026-10-04 全局作用域变异首发批,迭代 14 ③号卡)**——现行=L2/L3 Boss 图恒定贫矿脉(unlock_level=2 起,第 1 关 Boss 免疫=L1 教学保护);本行降级为「后续型扩展计划」:新全局型(精英图首行/案D 冻土/案B 诡雷远期)逐关固定演进,随关卡扩展登记;带 A(全局变异)收敛判读归全局难度批(Beta 阶段,未排期)杠杆表(Q4 甲——落地批读数只测不判) | +| P2 | 精英节点完整语义与修饰乘数表首行 | 随[关卡节点地图](关卡节点地图.md)定稿联动;首个使用场景 = 精英节点;精英怪设定三特征已登记(见「曲线雕刻」表注),钥石掉 1 个预留挂钩 meta.tres boss_keystone 精英行(随实装批落) | +| P2 | 区间平移换算率定稿 | 接口启用形态已定稿;剩余面 = 首版三行折算数值随[元进度](../跨局循环/元进度.md)设计批模拟读数标定 | +| P2 | 全局作用域变异的投放计划 | **首发已落地**——现行=L2/L3 Boss 图恒定贫矿脉(unlock_level=2 起,第 1 关 Boss 免疫=L1 教学保护);本行降级为「后续型扩展计划」:新全局型(精英图首行/案D 冻土/案B 诡雷远期)逐关固定演进,随关卡扩展登记;带 A(全局变异)收敛判读归全局难度批(Beta 阶段,未排期)杠杆表(读数只测不判) | ## 调参表 -本系统是全项目行值最多的系统。数值纪律(2026-09-17 降级批定稿):**正文与调参表只定规则、取值域与口径,具体行值一律读配置表(切片 `data/tables/` 的 enemy / skills / hero / board_gen / reward / settlement / status_effects 等),已锁数值以 `data/tables/` 对应表为准,本文不登记具体数值——防双写失同步**(切片 `.tres` 数值压缩批后文档行值滞后,双写失同步已被实证)。 +本系统是全项目行值最多的系统。数值纪律:**正文与调参表只定规则、取值域与口径,具体行值一律读配置表(切片 `data/tables/` 的 enemy / skills / hero / board_gen / reward / settlement / status_effects 等),已锁数值以 `data/tables/` 对应表为准,本文不登记具体数值——防双写失同步**。 首发行值几乎全部 provisional,其中加难相关数值处于 provisional-pending-scan(扫描未执行);完整行集读表,不在此整表搬运。 敌人表行值(行集与坐标覆盖随后续批次扩展,行值读 `enemy.tres`——本文只登记行模板与坐标语义): -**混编行集难度归属注记(2026-10-07 行集多行批——机制放开、本批零投放)**:敌人表同一坐标允许多行混编多种敌种后,混编遭遇的难度 = 行集内各行值按既有口径独立生效再叠加(数量区间各行各掷、行集实例总数 ≤ 4),不引入新的难度轴或乘区;投时行值 provisional 归本文调参的既有口径不变。**投放记录**:第一行 = (2, 5) 熊地精重击手 + 巨蜘蛛巢群(2026-10-07 迭代 18 卡⑤);第二行 = (1, 3) 熊地精 + 地精(2026-11-04 用户裁,随大地精数据行退役改混编,行序熊地精在前——默认单体目标与开战叙述取首行,行值整行复用既有地精 / 熊地精行——零数值新增);Boss 多行第二批仍挂后置。**读数义务(2026-11-04 用户裁)**:Alpha 阶段数值层统一修正殿后,本阶段投放批零读数、零 MC 取证,难度带读数义务后移到数值统一修正批(本行与后续 Alpha 投放批同此口径)。机制批次(2026-10-07 本批)零内容投放、零数值变更。 +**混编行集难度归属注记**:敌人表同一坐标允许多行混编多种敌种后,混编遭遇的难度 = 行集内各行值按既有口径独立生效再叠加(数量区间各行各掷、行集实例总数 ≤ 4),不引入新的难度轴或乘区;投时行值 provisional 归本文调参的既有口径不变。**投放记录**:第一行 = (2, 5) 熊地精重击手 + 巨蜘蛛巢群;第二行 = (1, 3) 熊地精 + 地精(行序熊地精在前——默认单体目标与开战叙述取首行,行值整行复用既有地精 / 熊地精行);Boss 多行第二批仍挂后置。**读数义务(2026-11-04 用户裁)**:Alpha 阶段数值层统一修正殿后,本阶段投放零读数、零 MC 取证,难度带读数义务后移到数值统一修正批(本行与后续 Alpha 投放批同此口径)。 | 坐标 | 敌种(数据键) | 生命 | 攻击(浮动区间) | 数量 | 技能池(权重) | 护甲 | |---|---|---|---|---|---|---| @@ -284,11 +276,11 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 第一关图版注记:首发三敌种按"杂兵 → 主力 → 关底 Boss"生态位投放——地精 = 首发杂兵(教学位节点数量开战掷定,区间行值读表);熊地精 = 首发主力;食人魔酋长 = 首发关底 Boss(池独占增益技"硬化")。池构成纪律与独占技机制归[敌人系统](../战斗循环/敌人系统.md),行值读 `enemy.tres`(provisional)。 -第二关图版注记(分支节点图批):L2 熊地精三行 = bugbear 复用(幽暗地域部族设定——display_name 熊地精系与第一关"熊地精"错开;池差异化改造 = 蓄力拍退役换突刺,复用共享技能行);巨蜘蛛 = 新敌种(群行倾向、首遇位固定数量不加骰——首遇教学位纪律);蛛化卓尔精灵 = Boss 专属池(独占技毒爆 + 权重轮廓,血量为 r_boss 口径 provisional 锚——定位本关最大单场消耗);护甲面:轻甲(蜘蛛)与魔法护甲(熊地精三行)同关错开克制面,Boss 重甲。L2 三行复用 bugbear、显示名熊地精系(2026-09-17 用户拍板);Boss 定名蛛化卓尔精灵(用户同日拍板)。节点编号 2 = 奖励点、3 = 恢复点(rest_heal_pct 行字段兑付)——不开战斗、无敌人/棋盘行。 +第二关图版注记:L2 熊地精三行 = bugbear 复用(幽暗地域部族设定——display_name 熊地精系与第一关"熊地精"错开;池差异化 = 突刺,复用共享技能行);巨蜘蛛 = 新敌种(群行倾向、首遇位固定数量不加骰——首遇教学位纪律);蛛化卓尔精灵 = Boss 专属池(独占技毒爆 + 权重轮廓,血量为 r_boss 口径 provisional 锚——定位本关最大单场消耗);护甲面:轻甲(蜘蛛)与魔法护甲(熊地精三行)同关错开克制面,Boss 重甲。L2 三行复用 bugbear、显示名熊地精系(2026-09-17 用户拍板);Boss 定名蛛化卓尔精灵(用户拍板)。节点编号 2 = 奖励点、3 = 恢复点(rest_heal_pct 行字段兑付)——不开战斗、无敌人/棋盘行。 -第三关图版注记(第三关内容批):行集 = 与第二关同模板的九节点图(六战 + Boss + 奖励 + 恢复,节点编号 2/3 同为奖励点/恢复点——不开战斗、无敌人/棋盘行)。敌种生态:灰矮人 = duergar 新敌种(单体重甲中坚——第二关单体生态位的关间台阶);钩爪恐魔 = hook_horror 新敌种(群行,复用撕咬共享技能行);灰矮人石君王 = duergar_king Boss 专属池(独占妨害技大地脉动 earth_pulse = 乏力 sapped 首发——第二妨害词汇,池载荷口径同蛛网束缚)。两敌种首遇位(节点 0 / 节点 1)固定数量不加骰——首遇教学位纪律同第二关注记。克制面重轻错开:重甲灰矮人是重甲首次登台,轻甲钩爪恐魔保穿刺/普通分量有用武之地,Boss 重甲收束"轻甲 → 魔法护甲 → 重甲"教学梯度(第三档在 L3 补完)。Boss 血量 75 = Σ普通战生命期望 91 × r_boss≈0.82(provisional 锚,域 [0.5, 1.1]——Boss 锚在案口径,逐数闭合随调参批在调参日志留档)。棋盘 13×13 / Boss 14×14、密度 0.25 维持、地形变异第三关对落石(直伤 3 点)+ 矿尘(数字遮蔽)顺带铺行;armor_class 恒 0(正式投值仍归「敌方护甲等级正式行值」在案条目全表同批)。行值读 `enemy.tres` / `board_gen.tres` / `skills.tres` / `variation.tres`,全部 provisional-pending-growth(L3 口径见「期望值带」节)。 +第三关图版注记:行集 = 与第二关同模板的九节点图(六战 + Boss + 奖励 + 恢复,节点编号 2/3 同为奖励点/恢复点——不开战斗、无敌人/棋盘行)。敌种生态:灰矮人 = duergar 新敌种(单体重甲中坚——第二关单体生态位的关间台阶);钩爪恐魔 = hook_horror 新敌种(群行,复用撕咬共享技能行);灰矮人石君王 = duergar_king Boss 专属池(独占妨害技大地脉动 earth_pulse = 乏力 sapped 首发——第二妨害词汇,池载荷口径同蛛网束缚)。两敌种首遇位(节点 0 / 节点 1)固定数量不加骰——首遇教学位纪律同第二关注记。克制面重轻错开:重甲灰矮人是重甲首次登台,轻甲钩爪恐魔保穿刺/普通分量有用武之地,Boss 重甲收束"轻甲 → 魔法护甲 → 重甲"教学梯度(第三档在 L3 补完)。Boss 血量 75 = Σ普通战生命期望 91 × r_boss≈0.82(provisional 锚,域 [0.5, 1.1]——Boss 锚在案口径,逐数闭合随调参批在调参日志留档)。棋盘 13×13 / Boss 14×14、密度 0.25 维持、地形变异第三关对落石(直伤 3 点)+ 矿尘(数字遮蔽)铺行;armor_class 恒 0(正式投值仍归「敌方护甲等级正式行值」在案条目全表同批)。行值读 `enemy.tres` / `board_gen.tres` / `skills.tres` / `variation.tres`,全部 provisional-pending-growth(L3 口径见「期望值带」节)。 -群伤负向 = 警觉(敌方护甲等级 +1——2026-09-20 八型批伏击退役换装);一轮踩雷数由行动点预算天然封顶(原 advantage_per_round_cap 行值同日先行删除)。攻击浮动开战时掷定一次、整战持久;数量区间同流掷定,教学位与首遇位都不豁免——没有区间上界的行自然取定值,那不是豁免,是区间宽度为零。 +群伤负向 = 警觉(敌方护甲等级 +1);一轮踩雷数由行动点预算天然封顶。攻击浮动开战时掷定一次、整战持久;数量区间同流掷定,教学位与首遇位都不豁免——没有区间上界的行自然取定值,那不是豁免,是区间宽度为零。 技能池投值(池权重/冷却/保底/触发条件的所有权本文,机制归[敌人系统](../战斗循环/敌人系统.md);行值读 `skills.tres` 与 `enemy.tres` 的 pool,全部 provisional): @@ -297,8 +289,8 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 池权重 | 权重即旋钮:抬特殊技权重 = 抬输出频率,EV 随之重锚;各敌种行集读表 | | 技能冷却(拍) | 逐技能行读表;普攻冷却恒 0 不可配(空池不可能的结构前提——域校验锁死);撕咬 = 与突刺同倍率错开冷却轴的高频小爆发轮廓;毒爆 = 蛛化卓尔精灵专属池独占技 | | 保底 M | 全局单旋钮,读技能表 pity_threshold;连续 M 拍执行普攻 → 下拍必出特殊技;单特殊技低权重池受保底支配 | -| 触发条件 | 情境技与闩型解锁的 fact 阈值读技能表 trigger 行值(2026-10-26 触发条件批设计闭合——词表与机制归敌人系统「触发条件」节);情境技的池内份额照走池权重行。**已投放两示范(2026-10-27 迭代 39,provisional)**:地精池孤注守势(self_hp_pct lte 35,纯增益技)+ L2/L3 群行位趁隙偷袭(last_round_end eq 停手,伤害技)——fact 阈值、权重、倍率与冷却逐行读表,本表零复制;地精池投放稀释含闸长期速率,EV 抽样锚已随重锚批换代(带宽注记随 `enemy.tres` 表注) | -| 池 EV 锚 | 静态份额与含闸长期速率实测读数登记于调参日志(EV 重锚与权重投值随本表修订)。**2026-09-19 节奏体验验证批登记**(60 组独立种子 × 双策略 × 两关的节奏实测,种子数下限 50 判读;20 种子以下批次有种子偏置假象):特殊技执行份额 对表成立——地精 10.4%(静态 10%)/ 地精一伙 8.4% / 熊地精系 28.9–42.4% / 巨蜘蛛 34.8% / 酋长 28.9% / 卓尔 35.4%;**L2 池含闸速率抽样复核完成**(上项即含闸读数);保底越界 0/247(间隔 4 = M=4 合法上界);过涝信号 8/1440 场(最长连击 3);过旱按用户判读带集中在短命杂鱼(生存时长问题非池配置——见待办清单清单 Alpha 条目移交注记) | +| 触发条件 | 情境技与闩型解锁的 fact 阈值读技能表 trigger 行值(词表与机制归敌人系统「触发条件」节);情境技的池内份额照走池权重行。**已投放两示范(provisional)**:地精池孤注守势(self_hp_pct lte 35,纯增益技)+ L2/L3 群行位趁隙偷袭(last_round_end eq 停手,伤害技)——fact 阈值、权重、倍率与冷却逐行读表,本表零复制;地精池投放稀释含闸长期速率,EV 抽样锚已换代(带宽注记随 `enemy.tres` 表注) | +| 池 EV 锚 | 静态份额与含闸长期速率实测读数登记于调参日志(EV 重锚与权重投值随本表修订)。节奏实测判读口径:种子数下限 50 判读;20 种子以下批次有种子偏置假象;过旱按用户判读带集中在短命杂鱼(生存时长问题非池配置——见待办清单 Alpha 条目移交注记) | 主角表与棋盘参数表(行值分别读 `hero.tres` 与 `board_gen.tres`,provisional): @@ -311,15 +303,15 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 参数 | 取值域 / 口径 | 说明 | |---|---|---| -| 血量锚比率 r_boss | [0.5, 1.1];加难走廊 [1.1, 1.35](扫描已执行,见「Boss 设计」节) | Boss 生命锚;**锚漂移登记(迭代 5 基线重测批)**:数值设计批 Boss 血轴拔高后 L2/L3 现值 r_boss≈0.33(全行集 Σ 口径)低于域下限 0.5——该指向已过期(迭代 5 已关闭未执行);r_boss 复算与收锚义务挂起,随数值批重开时核销 | +| 血量锚比率 r_boss | [0.5, 1.1];加难走廊 [1.1, 1.35](扫描已执行,见「Boss 设计」节) | Boss 生命锚;r_boss 复算与收锚义务挂起,随数值批重开时核销 | | 克制矩阵 | 克制 / 中性 / 被克三档加法修正(+1/0/−1 点),读 `settlement.tres` 甲效表 | 消费归[战斗结算](../战斗循环/战斗结算.md) | | 完美封印乘数 | 读表 | 调参权本文 | | 当量参考敞口 | 读表 | 变更触发全量对账重跑 | | 注入概率初值 / 衰减 | 读表 | 注入机制归[地图战斗资源](../战斗循环/地图战斗资源.md) | | 清障炸药威力区间 | 读表 | 清图槽当场引爆 | -| 状态强度 | 读 `status_effects.tres`(掷点轴——2026-09-16 换装,原减伤退役) | 联动评估归本文,禁独立调参 | -| 资源面偏斜 effect_value | 读 `variation.tres` 贫矿脉行(域 [0,50],0=中性 off 锚;现行投值 30 provisional——2026-10-04 首发批) | Boss 图整图变异=全局加难杠杆(带 A 注册(Beta 阶段,未排期)杠杆表——Q4 甲裁决,读数只测不判,带 A 收敛判读归全局难度批);与注入概率/衰减同族「图级投放轴」,禁独立调参;总期望微降 3-5% 为 provisional 设计目标,实测方向与幅度归读数批 | -| GP 掉落与商店价格参数 | 读 `shop.tres`(gp_drops 均值±方差 / level_gp_bonus / pool_shelf 货架基价六行 / price_a / price_b;legacy products 首价与步长 / price_level_bonus 随对照模式保留) | GP+商店房批新增,pool 换代随迭代 11 第②批;公式语义归[冒险结构](冒险结构.md),数值全部 provisional-pending-曲线调参批(A/b 投值 1.8/1.1 后置追认),与分层带联动禁独立调参 | +| 状态强度 | 读 `status_effects.tres`(掷点轴) | 联动评估归本文,禁独立调参 | +| 资源面偏斜 effect_value | 读 `variation.tres` 贫矿脉行(域 [0,50],0=中性 off 锚;现行投值 30 provisional) | Boss 图整图变异=全局加难杠杆(带 A 注册(Beta 阶段,未排期)杠杆表——读数只测不判,带 A 收敛判读归全局难度批);与注入概率/衰减同族「图级投放轴」,禁独立调参;总期望微降 3-5% 为 provisional 设计目标,实测方向与幅度归读数批 | +| GP 掉落与商店价格参数 | 读 `shop.tres`(gp_drops 均值±方差 / level_gp_bonus / pool_shelf 货架基价六行 / price_a / price_b;legacy products 首价与步长 / price_level_bonus 随对照模式保留) | 公式语义归[冒险结构](冒险结构.md),数值全部 provisional-pending-曲线调参批(A/b 投值 1.8/1.1),与分层带联动禁独立调参 | ## 验收标准 @@ -327,7 +319,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 - 零红档:全部行集经区间扫描,不存在"最好情况也打不过"的战斗组合。 - 教学位绿档:第一关第一战与各新敌种首遇位的区间判定为绿档。 - 形态带成立:第一关形态 = 教学位绿 + 中段黄 + Boss 黄不红。 -- 通关率带:**2026-10-03 带换代(用户拍板四带甲案)**——带 A 白板完美执行战役 [0,10%] / 带 B 白板 L1 [50,85%] / 带 C 满成长 [30,60%] 预立 / 带 D 响应曲线 ≤15pp·S 形;旧普通 L1 [35,55] / L2 [10,15]、完美 [35,65] 正式作废。测量口径维持冒险条件通关率(由数值验证工具冒险段派生);四带定稿全文见「期望值带」节「带换代」条。 +- 通关率带:四带甲案(2026-10-03 用户拍板)——带 A 白板完美执行战役 [0,10%] / 带 B 白板 L1 [50,85%] / 带 C 满成长 [30,60%] 预立 / 带 D 响应曲线 ≤15pp·S 形。测量口径维持冒险条件通关率(由数值验证工具冒险段派生);四带定稿全文见「期望值带」节「四带甲案」条。 - 关卡完成余量带:关卡完成者剩余生命 p90 / p10 按现生命轴上限百分比表达,界值重标随验收批。 - 恒等式闭合:关级恒等式逐项对账闭合,残差 <5%(provisional 阈值);奖励输出占比 ∈ [15%, 40%]。 - Boss 锚在案:每个 Boss 行的血量锚比率记录在案且落在现行带内;越带须登记,不静默变更。 diff --git a/design/gdd/systems/战斗循环/地图战斗资源.md b/design/gdd/systems/战斗循环/地图战斗资源.md index 0d0aace4..8d383c0d 100644 --- a/design/gdd/systems/战斗循环/地图战斗资源.md +++ b/design/gdd/systems/战斗循环/地图战斗资源.md @@ -1,7 +1,7 @@ # 地图战斗资源 > 一句话:格面资源的产出、极性字典与清图奖励封装 -> 状态:已定稿(自旧体系迁移);现行为 v1.4 +> 状态:已定稿;现行为 v1.5 ## 设计目的 @@ -19,11 +19,11 @@ | 负责 | 说明 | |---|---| -| 格面资源类型封闭枚举 | 九型(attack / defense / heal / blast / weaken / pierce / magic / action / gp——2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八、同日 GP+商店房批八→九);表里出现清单外的类型,数据加载直接拒绝 | +| 格面资源类型封闭枚举 | 九型(attack / defense / heal / blast / weaken / pierce / magic / action / gp);表里出现清单外的类型,数据加载直接拒绝 | | 装板期身份预分配 | 每张图装上时一次摇定全部非封锁格的资源类型身份与清图奖励对象身份;只读、无重摇 | | 极性矩阵与九型字典 | 「动作 × 格型 → 正负号」的定义,以及每型正向 / 负向各兑付成什么效果 | | 清图奖励对象 | 整图作用域的独立奖励封装,可配置可替换,按图类型差异化 | -| 未来功能道具的预留结构位 | 长周期、更强力的功能性道具 = 秘宝(局外同调件——渠道已随[秘宝](../跨局循环/秘宝.md)域与同调实施批落定);本系统只留结构位不预写 | +| 未来功能道具的预留结构位 | 长周期、更强力的功能性道具 = 秘宝(局外同调件——渠道已随[秘宝](../跨局循环/秘宝.md)域落定);本系统只留结构位不预写 | 不负责: @@ -79,7 +79,7 @@ 清图槽(clear_default 池,clear_blast)独立于格面资源——作用域为整张板,不挂任何一格。 -候选集合具体行值(power / power_min / power_max / stacks / effect_id)随行更新——以 `data/tables/reward.tres` 为现行值源;GDD 表格只锁行集与权重分布语义。负向 9 行(enrage / off_guard / heal_backlash / enemy_alert / ap_drain / sapped / pierce_snare / magic_recoil / gp_loss——2026-09-20 八型批 ambush_double→enemy_alert 换装 + ap_drain 新增、同日 GP+商店房批 +gp_loss)weight=0 不参与摇号,按(类型, 极性)查表取用,不在候选集合内。 +候选集合具体行值(power / power_min / power_max / stacks / effect_id)随行更新——以 `data/tables/reward.tres` 为现行值源;GDD 表格只锁行集与权重分布语义。负向 9 行(enrage / off_guard / heal_backlash / enemy_alert / ap_drain / sapped / pierce_snare / magic_recoil / gp_loss)weight=0 不参与摇号,按(类型, 极性)查表取用,不在候选集合内。 举证:本节为候选集合枚举,无计算。 @@ -109,7 +109,7 @@ |---|---|---| | 开格 | **+类型**:该格资源的正向兑付(奖励) | **−类型**:该格资源的负向兑付(惩罚) | | 封印且留到轮末判定 | **−类型**:标错,该格资源的负向兑付(惩罚) | **+类型**:标中,该格资源的正向兑付(奖励) | -| 封印格直接挖开(封印不可逆批 2026-09-19) | 零兑付(四情况④:零惩罚零奖励——标空不判、正向作废) | **−类型**照常(四情况②:只受挖雷一层惩罚——标中不发) | +| 封印格直接挖开 | 零兑付(四情况④:零惩罚零奖励——标空不判、正向作废) | **−类型**照常(四情况②:只受挖雷一层惩罚——标中不发) | 矩阵的定义归本文;把矩阵跑起来的路由(结算队列、判定基线、逐行兑付)归[战斗结算](战斗结算.md)的授予段。blast 型负向 = 警觉。矩阵只描述现行规则;被本矩阵取代的旧体系与历次结构变更(撤旗退役、伏击换装等)只进 git 提交史,不在正文复述。 @@ -119,12 +119,12 @@ **兑付形态差异化方向**(方向已裁、内容与落码归后续批次):兑付形态同质化(pierce/magic 同构等)确认为改进对象——各伤害型兑付形态将拉开、各有所司(如单点/面伤/弹射或减益向),九型枚举不动;具体形态设计归用户。 -格面资源的一切兑付从九个类型里出,每个类型恰好一行正向、一行负向(五型 + 2026-09-18 伤害道具批增补 pierce / magic 两型 + 2026-09-20 格面资源八型批增补 action 一型 + 同日 GP+商店房批增补 gp 一型)——正向是玩家操作正确时拿到的东西,负向是操作失误或踩雷时吃到的东西: +格面资源的一切兑付从九个类型里出,每个类型恰好一行正向、一行负向——正向是玩家操作正确时拿到的东西,负向是操作失误或踩雷时吃到的东西: | 类型 | 正向(奖励) | 负向(惩罚) | |---|---|---| | attack 增伤 | attack_up(主角输出池)——幅度/上限/权重见 `reward.tres` | enrage(敌方输出池)——幅度/上限见 `status_effects.tres` enrage 行 | -| defense 护甲 | ac_up 盾牌加护(AC 掷点阈值轴——2026-09-16 换装,不入池)——幅度/上限/权重见 `reward.tres` | off_guard 失衡(AC 掷点阈值轴负向——2026-09-18 换装,不入池、退出主角防御池)——幅度/上限见 `status_effects.tres` off_guard 行 | +| defense 护甲 | ac_up 盾牌加护(AC 掷点阈值轴,不入池)——幅度/上限/权重见 `reward.tres` | off_guard 失衡(AC 掷点阈值轴负向,不入池)——幅度/上限见 `status_effects.tres` off_guard 行 | | heal 回血 | heal_minor(满血零兑付照旧)——威力/权重见 `reward.tres` | heal_backlash 直伤:战斗结算直接扣血,不经增益状态——威力见 `reward.tres` | | blast 群伤 | spark_aoe 全体存活敌各吃一笔——威力/权重见 `reward.tres` | enemy_alert 警觉:敌方全体护甲等级 +1/层(`status_effects.tres` alert 行)——见 `reward.tres` | | weaken 削弱 | weaken(敌方输出池;同名重复授予只加时长)——幅度见 `status_effects.tres` weaken 行 | sapped(主角输出池)——幅度见 `status_effects.tres` sapped 行 | @@ -133,7 +133,7 @@ | pierce 穿刺 | pierce_strike 穿刺弹:单目标克制直伤(attack_type=pierce 查克制矩阵,必中全额不掷点;目标 = 固定顺位最前存活敌)——威力/权重见 `reward.tres` | pierce_snare 穿刺陷阱:主角直伤,不经增益状态——威力见 `reward.tres` | | magic 魔法 | magic_bolt 魔法矢:单目标克制直伤(attack_type=magic,同上)——威力/权重见 `reward.tres` | magic_recoil 魔法反噬:主角直伤,不经增益状态——威力见 `reward.tres` | -设计意图:读敌拍板的路线规划——敌方要放大招时抢盾牌加护、怪重叠时抢削弱,惩罚侧则镜像同一批类型。类型清单是封闭的:加新类型等于修订本文档,不是调参数(2026-09-18 伤害道具批即按此修订五→七;2026-09-20 GP+商店房批按同一流程修订八→九——格面 GP 由用户拍板入池,定位"低概率惊喜获取"、量与战斗掉落相当,兑付进战斗内缓冲而非当场生效)。 +设计意图:读敌拍板的路线规划——敌方要放大招时抢盾牌加护、怪重叠时抢削弱,惩罚侧则镜像同一批类型。类型清单是封闭的:加新类型等于修订本文档,不是调参数(格面 GP 经用户拍板入池,定位"低概率惊喜获取"、量与战斗掉落相当,兑付进战斗内缓冲而非当场生效)。 凡"该兑付但没生效"——增益挂满层、满血捡到 heal 正向、场上无敌可打——一律在结算明细里明写一行"奖励未生效",不给折算补偿,也不静默消失。把兑付改成跳过轮末结算直接生效,同样在禁止之列。 @@ -149,7 +149,7 @@ 清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美封印(零误标且至少一次封印标中)追加第二份同身份兑付。清图奖励只在清图批兑付:弃图刷新不触发清图事件,换来的新图不发清图奖励;刷新专长的固定 GP 收益走战斗内缓冲入账,不属清图奖励封装。 -它是可配置可替换的封装:数据面上是清图池里的一行(现行默认槽 clear_default),换行即换内容,机制零改动。按图类型差异化已留结构位——`clear_<图类型>` 命名空间预留,不同地图类型可以配不同的清图奖励;词表现行 = {dungeon, underdark, deep_underdark}(2026-09-19 定稿两值、第三关内容批 2026-09-20 增 deep_underdark,玩家侧「地图类型」),差异化内容启用随内容批。 +它是可配置可替换的封装:数据面上是清图池里的一行(现行默认槽 clear_default),换行即换内容,机制零改动。按图类型差异化已留结构位——`clear_<图类型>` 命名空间预留,不同地图类型可以配不同的清图奖励;词表现行 = {dungeon, underdark, deep_underdark}(玩家侧「地图类型」),差异化内容启用随内容批。 | 清图奖励规则 | 含义 | |---|---| @@ -177,9 +177,9 @@ | 下游 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | 权重、档位、威力与池内容的调参所有权(全部 provisional) | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 呈现义务归其:已开格资源身份常读、类型图标预读的呈现深度、结算明细行、清图奖励行强调 | | 下游 | [教学引导](../表现与支撑/教学引导.md) | "读敌拍板、抢类型"教学口径的来源 | -| 下游 | [秘宝](../跨局循环/秘宝.md) | 相邻:秘宝件的装配与使用归其管;预读类道具读取本系统的身份查询面(现行零投放——原承载件探宝罗盘已退役,接口面保留) | +| 下游 | [秘宝](../跨局循环/秘宝.md) | 相邻:秘宝件的装配与使用归其管;预读类道具读取本系统的身份查询面(现行零投放,接口面保留) | -负空间:本系统不订阅事件、不画界面、除摇号外不用任何随机数;何时调接口、按什么顺序调,全归[战斗结算](战斗结算.md)。库存、道具使用窗口、可选类供给已随可选类道具删除(2026-09-15)整体下线,不再属于本系统。 +负空间:本系统不订阅事件、不画界面、除摇号外不用任何随机数;何时调接口、按什么顺序调,全归[战斗结算](战斗结算.md)。库存、道具使用窗口、可选类供给已整体下线,不再属于本系统。 ## P0 最小闭环 @@ -195,7 +195,7 @@ | 优先级 | 内容 | 后置原因 | |---|---|---| -| P1 | ~~功能道具渠道~~(已由秘宝体系承接——局外同调件:营地解锁 + 同调位装配,同调实施批 2026-10-03 落地;关卡节点渠道形态顺带退役) | 数值型伤害/治疗道具已删除(2026-09-15 用户定);本系统只留结构位不变 | +| P1 | ~~功能道具渠道~~(已由秘宝体系承接——局外同调件:营地解锁 + 同调位装配) | 数值型伤害/治疗道具已删除(2026-09-15 用户定);本系统只留结构位不变 | | P1 | 清图池按图类型差异化 | 默认槽之外的结构位已留;词表现行三值({dungeon, underdark, deep_underdark}),差异化行随内容批配置 | | P1 | 未开格资源类型的呈现深度 | 基础档已定——微光只读类型不读危险格与安全格(2026-10-07 案甲,实施归呈现批、待办清单在案);更深档与推理的界线另议 | | P1 | 增攻(attack)型行值与权重终调 | 内容决策,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | @@ -226,9 +226,9 @@ | sapped | weaken | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 sapped 引用) | 同上 | 同上 | | clear_blast | blast | 正向 | clear_default 池·power [0,999]·power_min/power_max 可选区间·weight [0,999] | 同上 | 清图槽 | -摇号只消费正向格面池的权重(类型频次由此涌现——具体权重读 `reward.tres`);负向行是纯兑付字典,按(类型,极性)查表取用,不消费权重。权重分布按四档概率结构组织(档成员与保底规则见「四档概率结构与保底」节;现行权重为基准锚,数值调整归调参批)。clear_blast 对全体存活敌各吃一笔当场兑付的 flat 伤害。奖励配置表已随可选类删除下线——注入概率、按板保底等参数全部失义(旧「按板保底」指已删除的可选类道具注入保底,与四档结构的型级保底无关)。 +摇号只消费正向格面池的权重(类型频次由此涌现——具体权重读 `reward.tres`);负向行是纯兑付字典,按(类型,极性)查表取用,不消费权重。权重分布按四档概率结构组织(档成员与保底规则见「四档概率结构与保底」节;现行权重为基准锚,数值调整归调参批)。clear_blast 对全体存活敌各吃一笔当场兑付的 flat 伤害。奖励配置表已下线——注入概率、按板保底等参数全部失义(「按板保底」指已删除的可选类道具注入保底,与四档结构的型级保底无关)。 -结构冻结(改动走本文修订流程,不走调参):九型封闭枚举(伤害道具批 2026-09-18 修订五→七、格面资源八型批 2026-09-20 修订七→八、同日 GP+商店房批修订八→九)、危险格与安全格同池、极性矩阵、装板期预分配且无重摇、负向恒即时无库存、清图恒非空、除摇号外零随机(四档保底补签属装板期校验环节,消费摇号环节随机流,非重摇——补签后身份全程只读)。 +结构冻结(改动走本文修订流程,不走调参):九型封闭枚举、危险格与安全格同池、极性矩阵、装板期预分配且无重摇、负向恒即时无库存、清图恒非空、除摇号外零随机(四档保底补签属装板期校验环节,消费摇号环节随机流,非重摇——补签后身份全程只读)。 ## 验收标准 diff --git a/design/gdd/systems/战斗循环/增益状态.md b/design/gdd/systems/战斗循环/增益状态.md index c2e432cd..9115f451 100644 --- a/design/gdd/systems/战斗循环/增益状态.md +++ b/design/gdd/systems/战斗循环/增益状态.md @@ -1,7 +1,7 @@ # 增益状态 > 一句话:增益/减益的状态池、叠层与衰减 -> 状态:已定稿(自旧体系迁移);现行为 v1.6 +> 状态:已定稿;现行为 v1.7 ## 设计目的 @@ -68,7 +68,7 @@ | 封印标中 | 轮末封印判定标中(危险格被控制) | 敌方,削弱 | | 踩雷 | 挖开危险格并惊动 | 敌方,增强 | | 清图奖励 | 清图奖励槽含增益时 | 随行定,路径归[地图战斗资源](地图战斗资源.md)定稿 | -| 标空封印 | 轮末封印判定标空(标了但格不是雷) | 该安全格格面资源的负向兑付(极性矩阵"标错"分支——2026-09-15 起不再三选一);载体裁决归[战斗结算](战斗结算.md) | +| 标空封印 | 轮末封印判定标空(标了但格不是雷) | 该安全格格面资源的负向兑付(极性矩阵"标错"分支);载体裁决归[战斗结算](战斗结算.md) | 状态池是只登记、不裁决的仓库:上游叫它施加几次,它就登记几次。同一笔事实被重复转化两次,就入两层——它不去重、不合并事实,"事实到授予恰好一次"由战斗结算保证。同轮多笔授予按调用方给定的次序先后入列,状态池保证入列顺序稳定可读。 @@ -148,13 +148,13 @@ | 例子 | 状态池输出 | 消费侧读法 | |---|---|---| | 暴走叠两层 | +(2 × enrage 行幅度)(读表;越出单行取值域,原样输出) | 压在天花板 +100% 上:敌方输出乘区封顶 ×2(削弱非叠层行——"叠两层压地板 −100% 归零"的读法不成立) | -| 主角盾牌加护再拿一份 | 层数恒 1、剩余结算次数累加本次授予的时长 | 不经任何池:掷点判定阈值 = 主角基准(读 hero 表)+ 层数(现行 +1——上限 2 层叠读取法退役,局内可达 AC 上限 11) | +| 主角盾牌加护再拿一份 | 层数恒 1、剩余结算次数累加本次授予的时长 | 不经任何池:掷点判定阈值 = 主角基准(读 hero 表)+ 层数(现行 +1,局内可达 AC 上限 11) | 状态池还有一条快照纪律:实例的幅度、初始次数、量纲在授予那一刻从表行拷贝。战斗中配置表即使被重载,已授予实例不受任何影响,只影响后续授予。 ### 现在有哪些状态:现行十行内容 -现行状态表恰有十行:主角侧四行(增伤/盾牌加护两增益 + 失衡/乏力两减益)、敌方侧六行(削弱/暴走/警觉/蓄力/硬化/护身——警觉为 blast 型负向踩雷载体,2026-09-20 伏击退役后进表;护身 defensive_stance 为敌方低血防御增益〔地精池情境技「孤注守势」载体,2026-10-27 迭代 39 投放——本行当时漏登,2026-11-02 随状态合并累加制批考证补录〕)。全部用同构实例承载;数值全部 provisional(临时值,过锚验收后才定稿)。 +现行状态表恰有十行:主角侧四行(增伤/盾牌加护两增益 + 失衡/乏力两减益)、敌方侧六行(削弱/暴走/警觉/蓄力/硬化/护身——警觉为 blast 型负向踩雷载体;护身 defensive_stance 为敌方低血防御增益〔地精池情境技「孤注守势」载体〕)。全部用同构实例承载;数值全部 provisional(临时值,过锚验收后才定稿)。 | 字段 | 取值 | 说明 | |---|---|---| @@ -162,7 +162,7 @@ | display_name | 文本 | 界面与结算明细用名 | | target_side | hero / enemy | 作用侧 | | magnitude | 整数 | 幅度:百分比行 ∈ [−100,100] 且非 0;固定值行 ≥ 1;护甲等级行 ∈ [−20,20] 且非 0 | -| unit | percent / flat / ac | 百分比修正 / 固定值 / 护甲等级(掷点折扣判定阈值轴——2026-09-16 护甲等级掷点批新增) | +| unit | percent / flat / ac | 百分比修正 / 固定值 / 护甲等级(掷点折扣判定阈值轴) | | duration_settlements | 整数 [1,99] | 授予时初始剩余结算次数(1 = 一次性) | | stack_policy | stack / accumulate / independent | 同名再授予的合并策略(叠加 / 累加 / 并存) | | max_stack | 整数 [1,16] | 叠层上限,仅叠加策略消费 | @@ -170,19 +170,19 @@ | 状态 | 效果一句话 | 发给谁 | 幅度(现行值) | 时限 / 合并 | 来源类别 | |---|---|---|---|---|---| | attack_up 增伤 | 主角攻击提升 | 主角 | 见 `data/tables/status_effects.tres` attack_up 行 | 时限/上限读表 / 累加(层数恒 1) | 安全格 | -| ac_up 盾牌加护 | 主角护甲等级提升(掷点折扣判定阈值——AC 轴,不入池) | 主角 | 见 `status_effects.tres` ac_up 行(2026-09-16 换装,原 defense_up 行已退役) | 时限/上限读表 / 累加(层数恒 1) | 安全格 | +| ac_up 盾牌加护 | 主角护甲等级提升(掷点折扣判定阈值——AC 轴,不入池) | 主角 | 见 `status_effects.tres` ac_up 行 | 时限/上限读表 / 累加(层数恒 1) | 安全格 | | alert 警觉 | 敌方护甲等级 +1/层 | 敌方 | 见 `status_effects.tres` alert 行 | 1 结算 / 叠加读表 | 踩雷 / 标空封印(blast 型负向) | | weaken 削弱 | 敌方攻击被削弱(同名重复标中只加时长、层数恒 1) | 敌方 | 见 `status_effects.tres` weaken 行(取值域 [60,85],取负生效) | 时限读表 / 累加 | 封印标中 | | enrage 暴走 | 敌方攻击提升 | 敌方 | 见 `status_effects.tres` enrage 行 | 时限/上限读表 / 叠加 | 标空封印反噬 / 踩雷(attack 型负向) | -| off_guard 失衡 | 主角护甲等级降低(AC 轴——掷点判定阈值下调、更易被命中;2026-09-18 换装,原百分比承伤池已退) | 主角 | 见 `status_effects.tres` off_guard 行 | 时限/上限读表 / 叠加 | 标空封印反噬 / 踩雷(defense 型负向)/ 敌方妨害技(2026-09-19 新效应词汇批——蛛网束缚载体,duration 由技能行覆盖) | -| sapped 乏力 | 主角输出降低(weaken 型负向,主角输出池) | 主角 | 见 `status_effects.tres` sapped 行 | 时限/上限读表 / 叠加 | 危险格负向 / 标空封印(2026-09-15 格面资源批)/ 敌方妨害技(大地脉动——L3 Boss 石君王独占,2026-09-20 第三关内容批) | -| empower 蓄力 | 敌方输出倍率增益(敌方输出池——蓄力技载体;幅度读表) | 敌方 | 见 `status_effects.tres` empower 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放(2026-09-16 敌人技能池批) | -| fortify 硬化 | 敌方防御提升(**敌方防御池**——硬化技载体;负值入池 = 主角攻击折半,2026-09-18 符号纠正——旧正值实际翻倍) | 敌方 | 见 `status_effects.tres` fortify 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放(2026-09-16 敌人技能池批) | -| defensive_stance 护身 | 敌方输出降低(敌方输出池——敌方低血防御增益;地精池情境技「孤注守势」载体,血量阈值触发施放,duration 由技能行覆盖) | 敌方 | 见 `status_effects.tres` defensive_stance 行 | duration 读表 / 累加 | 敌方技能施放(2026-10-27 迭代 39 触发条件批投放——行值随卡①累加制批改累加) | +| off_guard 失衡 | 主角护甲等级降低(AC 轴——掷点判定阈值下调、更易被命中) | 主角 | 见 `status_effects.tres` off_guard 行 | 时限/上限读表 / 叠加 | 标空封印反噬 / 踩雷(defense 型负向)/ 敌方妨害技(蛛网束缚载体,duration 由技能行覆盖) | +| sapped 乏力 | 主角输出降低(weaken 型负向,主角输出池) | 主角 | 见 `status_effects.tres` sapped 行 | 时限/上限读表 / 叠加 | 危险格负向 / 标空封印 / 敌方妨害技(大地脉动——L3 Boss 石君王独占) | +| empower 蓄力 | 敌方输出倍率增益(敌方输出池——蓄力技载体;幅度读表) | 敌方 | 见 `status_effects.tres` empower 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放 | +| fortify 硬化 | 敌方防御提升(**敌方防御池**——硬化技载体;负值入池 = 主角攻击折半) | 敌方 | 见 `status_effects.tres` fortify 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放 | +| defensive_stance 护身 | 敌方输出降低(敌方输出池——敌方低血防御增益;地精池情境技「孤注守势」载体,血量阈值触发施放,duration 由技能行覆盖) | 敌方 | 见 `status_effects.tres` defensive_stance 行 | duration 读表 / 累加 | 敌方技能施放 | -empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration 表值(读表)的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"(proposal 语义的状态池落地)。敌方防御池是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池),状态池语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。 +empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration 表值(读表)的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"。敌方防御池是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池),状态池语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。 -削弱行是当量锚在状态池侧的数据落点:封印标中的收益折算成统一价值后,必须严格高于最低档主角增益——"封印标中必须比随便挖一格更值",否则没人愿意封印。这条锚的契约归[行动经济](../排雷循环/行动经济.md),对照验收归[战斗结算](战斗结算.md);暴走与失衡两行分别是 attack/defense 型负向(极性矩阵"标错/踩雷"分支兑付)在状态池侧的数据落点:行内容与载体裁决归它,本表只承载行值(失衡已换装 AC 轴不入池——2026-09-18 结构修复批)。**失衡另有第二来源**:敌方妨害技(2026-09-19 新效应词汇批——蛛化卓尔精灵"蛛网束缚",敌方技能施放来源、duration 由技能行 buff_duration 覆盖)——状态池零新语义,同构实例照常受理;乏力 sapped = 妨害第二词汇,载体已落地(L3 Boss 灰矮人石君王独占妨害技「大地脉动」,2026-09-20 第三关内容批)。 +削弱行是当量锚在状态池侧的数据落点:封印标中的收益折算成统一价值后,必须严格高于最低档主角增益——"封印标中必须比随便挖一格更值",否则没人愿意封印。这条锚的契约归[行动经济](../排雷循环/行动经济.md),对照验收归[战斗结算](战斗结算.md);暴走与失衡两行分别是 attack/defense 型负向(极性矩阵"标错/踩雷"分支兑付)在状态池侧的数据落点:行内容与载体裁决归它,本表只承载行值(失衡为 AC 轴、不入池)。**失衡另有第二来源**:敌方妨害技(蛛化卓尔精灵"蛛网束缚",敌方技能施放来源、duration 由技能行 buff_duration 覆盖)——状态池零新语义,同构实例照常受理;乏力 sapped = 妨害第二词汇,载体已落地(L3 Boss 灰矮人石君王独占妨害技「大地脉动」)。 ## 依赖与输出 @@ -234,10 +234,10 @@ empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点( | alert 幅度 | [0, 4] | ac 行 magnitude | 警觉(敌方护甲等级 +1/层 provisional);消费 = 战斗结算护甲等级掷点判定 | | weaken 幅度 | 百分比取值域 [60,85],取负生效 | percent 行 magnitude | 削弱;须过"封印标中锚"对照 | | enrage 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 暴走;attack 型负向行,进敌方输出修正池 | -| off_guard 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 失衡;标空封印反噬载体,掷点判定阈值逐层下调(2026-09-18 换装 AC 轴,不入池、退出主角防御池) | -| sapped 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 乏力;危险格负向 weaken 型,进主角输出修正池(2026-09-15 格面资源批补登记) | +| off_guard 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 失衡;标空封印反噬载体,掷点判定阈值逐层下调(AC 轴,不入池) | +| sapped 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 乏力;危险格负向 weaken 型,进主角输出修正池 | | empower 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 蓄力;敌方技能池增益技载体,进敌方输出修正池 | -| fortify 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 硬化;敌方技能池增益技载体,进**敌方防御池**(负值 = 减伤方向——2026-09-18 符号纠正) | +| fortify 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 硬化;敌方技能池增益技载体,进**敌方防御池**(负值 = 减伤方向) | | 初始剩余次数 | 整数 [1,99] | duration_settlements | 累加行 = weaken(duration 2)+ empower/fortify(表值 2 = 先兑付后衰减含施放当轮的 1 个有效增益拍)+ attack_up / ac_up(duration 1);累加语义下重复拿一次就按本次授予时长加一段;拉长表值 = 每次授予攒更多段、规划变简单 | | 叠层上限 | 整数 [1,16] | max_stack | 仅叠加策略消费;累加行层数恒 1、表值上限不消费,empower/fortify ×1(冷却闸下不可能自叠加) | diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index a361cf43..6ecfa2eb 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -1,7 +1,7 @@ # 战斗结算 > 一句话:轮末结算的编排与逐行兑现 -> 状态:已定稿(自旧体系迁移);现行为 v1.6 +> 状态:已定稿;现行为 v1.7 ## 设计目的 @@ -19,7 +19,7 @@ |---|---| | 轮次编排 | 战斗开始序列、每轮五段结算、五种出口分发(继续 / 换图 / 挖掘期刷新 / 战斗结束 / 关卡结束) | | 结算触发与段序 | 轮末自动触发一次整轮结算;五段顺序为冻结结构,改动走文档修订而非调参 | -| 结算队列与判定基线 | 挖掘期动作(开格、封印)入结算队列;封印判定以轮末在场封印为基线,逐行兑付(封印不可逆批 2026-09-19——撤旗动作退役) | +| 结算队列与判定基线 | 挖掘期动作(开格、封印)入结算队列;封印判定以轮末在场封印为基线,逐行兑付(撤旗动作退役) | | 明细流水协议 | 结算中的每件事逐行留档并标注来源,是呈现、回放对账、数据导出共读的唯一数据源 | | 收益对照表 | 一张效果档位对照表归一全部收益的折算口径(详见核心规则) | | 伤害与治疗边界 | 修正池合成与封顶、溢杀丢弃、治疗封顶、死亡判定时机 | @@ -64,7 +64,7 @@ | ④ 衰减段 | 移除到期的临时效果;每轮恰好一次,含末轮——清图奖励先兑付、效果后衰减 | | ⑤ 判定段 | 先判主角倒下(负),再判敌人清空(胜),都不满足则继续下一轮 | -结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰七处(2026-09-16 敌人技能池批由两处扩为三处;2026-09-17 分支节点图批换板入编排后扩为五处;2026-09-20 地形变异首批类型定稿批扩为六处——变异布置;同日 GP+商店房批扩为七处——战斗结束掉落掷定):战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 `behavior_roll` 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 `armor_roll` 封闭流,逐次掷逐次取号,可逐位回放);奖励格摇号(消费 `reward_roll` 封闭流,装板期格面资源批派发)、变异布置(消费 `variant_place` 封闭流,装板与资源预分配之后——棋盘设置顺序第 4 步)与换板棋盘生成(消费 `board_gen` 封闭流,清图轮换板时点)均属初始化随机、发生在结算步骤流之外;战斗结束掉落掷定属出口随机(消费 `gp_drop` 封闭流,按战斗节点身份查商店表掷定 GP 掉落,与关级加值、战斗内缓冲合成本战 GP 掉落),发生在结算步骤流之外。七处皆封闭随机流,同种子同输入逐位复现。 +结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰七处:战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 `behavior_roll` 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 `armor_roll` 封闭流,逐次掷逐次取号,可逐位回放);奖励格摇号(消费 `reward_roll` 封闭流,装板期格面资源批派发)、变异布置(消费 `variant_place` 封闭流,装板与资源预分配之后——棋盘设置顺序第 4 步)与换板棋盘生成(消费 `board_gen` 封闭流,清图轮换板时点)均属初始化随机、发生在结算步骤流之外;战斗结束掉落掷定属出口随机(消费 `gp_drop` 封闭流,按战斗节点身份查商店表掷定 GP 掉落,与关级加值、战斗内缓冲合成本战 GP 掉落),发生在结算步骤流之外。七处皆封闭随机流,同种子同输入逐位复现。 举证:五段为流程编排,无计算;段序常量存配置表,加载时校验与定稿顺序完全一致,不一致拒绝启动。 @@ -79,7 +79,7 @@ | 治疗行 | 治疗生效一行:封顶后的真实回复量 | | 奖励未生效行 | 满层拒收、满血治疗等合法例外一行 | | 封印未中行 | 封印落空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 | -| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 **(2026-09-16 敌人技能池批改型为施放行:敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折〔原"不兑付伏击"读怪奖励语义随 2026-09-20 八型批伏击退役作废〕;蓄力语义改写为纯攻击增益技,见[敌人系统](敌人系统.md))** | +| 蓄力行 | 敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折(蓄力语义 = 纯攻击增益技,见[敌人系统](敌人系统.md)) | | 衰减行 | 到期临时效果移除一行 | | 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 | | 高光行 | 完美封印成立时一行,只记实际有效兑付 | @@ -123,15 +123,15 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 层数 × 行值 | 单条效果的叠层数与行值,读[增益状态](增益状态.md)的实例数据 | 行值归该系统 | | 完美乘数 | 完美封印给清图奖励的乘数,配置值 | 读 `settlement.tres` p_perfect(现行值读表) | -**gp / ap 当量口径注记(2026-10-05 判式换代批 T3——口径空白登记)**:上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 **gp 当量 = flat power 代理**计(GP 袋 3 / 破财 2,方案报告假设 A5);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算(假设 A6)。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。封印溢价兑付(条款3 条件二形态 a,`settlement.tres` flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线向下取整口径分域,登记册顺带登记)。 +**gp / ap 当量口径注记**:上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 **gp 当量 = flat power 代理**计(GP 袋 3 / 破财 2);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。封印溢价兑付(条款3 条件二形态 a,`settlement.tres` flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线向下取整口径分域)。 ### 授予段兑付:极性路由,四类动作各归各系统资源 授予段消费结算队列。**队列与判定基线**:挖掘期玩家对格子的动作——开格、封印——都进入结算队列;结算逐批兑付,不走逐动作出栈直算。封印判定以轮末在场封印位为基线:被直接挖开的封印已随挖掘消失、不在基线(零兑付——标中 / 标空让位于挖掘本体结局,见下文封印不可逆四情况);开格事实不可撤(已开格无法回退)。过滤后按触发源分三批兑换,每格受理、每封印判定恰好一次。 -兑付走**极性矩阵**(定义归[地图战斗资源](地图战斗资源.md)):开安全格 → 该格格面资源的正向;开危险格 → 负向;封印标中 → 该危险格资源的正向;标错封印 → 该安全格资源的负向。九型字典里每型各有一行正向、一行负向(gp 型随 2026-09-20 GP+商店房批增补——gp 正负两向兑付 = 战斗内 GP 缓冲,见下方兑付形态表);伏击随 2026-09-20 八型批退役,blast 型负向现况 = 警觉(敌方护甲等级 +1)。 +兑付走**极性矩阵**(定义归[地图战斗资源](地图战斗资源.md)):开安全格 → 该格格面资源的正向;开危险格 → 负向;封印标中 → 该危险格资源的正向;标错封印 → 该安全格资源的负向。九型字典里每型各有一行正向、一行负向(gp 正负两向兑付 = 战斗内 GP 缓冲,见下方兑付形态表);伏击已退役,blast 型负向现况 = 警觉(敌方护甲等级 +1)。 -**封印不可逆四情况(2026-09-19 用户拍板全套落地,2026-09-18 提案转正)**:封印印记是一次性承诺、移除动作退役、挖封印格放行——兑付按四情况改判: +**封印不可逆四情况(2026-09-19 用户拍板)**:封印印记是一次性承诺、移除动作退役、挖封印格放行——兑付按四情况改判: | 情况 | 兑付 | |---|---| @@ -148,7 +148,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × 授予段当场只兑非伤害形态(增益、治疗、行动点、GP 缓冲、警觉加层);**伤害形态兑付(爆裂、直伤、反噬)以伤害单据暂存,攒到战斗段末统一结算**(2026-10-06 用户裁——地图伤害账殿后,见[伤害单据与伤害控制器](#伤害单据与伤害控制器所有伤害走同一道门)与战斗段两节)。暂存单在授予段按「将兑付」回报——授予段内依赖兑付读数的流程决策(完美封印第二份、高光份数)依据开单时点事实判定,该时点敌人存活有保证;战斗段末实际结账若目标已灭,控制器自记「奖励未生效」行。 -**充能已退役(2026-09-19 用户拍板)**:原"挖格/标中旗给充能计数 → 战斗段折算穿刺/魔法分量"的弹药系统整体移除——主角攻击回归单分量,克制策略归冒险前配置(主角 attack_type 表值,营地换型 = 改字段;未来冒险前参数面承接策略位)。攻防两条抽象分离纪律保留:攻击类型是伤害的属性轴,棋盘事实只是奖励触发源。 +**充能已退役(2026-09-19 用户拍板)**:主角攻击为单分量,克制策略归冒险前配置(主角 attack_type 表值,营地换型 = 改字段;未来冒险前参数面承接策略位)。攻防两条抽象分离纪律保留:攻击类型是伤害的属性轴,棋盘事实只是奖励触发源。 | 兑付形态 | 覆盖 | 兑付方式 | 拒绝语义 | |---|---|---|---| @@ -160,11 +160,11 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进战斗结束信号的 GP 掉落统一到账(GP 归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 | | 行动点修正 | action 正/负向 | 下轮行动点 ±power(行动经济排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) | -警觉(blast 负向——2026-09-20 八型批伏击退役换装)按个体归属:每个存活敌各发一条自己的实例(全体存活敌规则,见[增益状态](增益状态.md)〈目标规则与个体归属〉节),只活一轮、轮末随体清零;战斗段由防守方护甲等级读数消费(我打敌 = 该敌 armor_class + 它名下的 ac 型状态合计)。其余各型负向受池 clamp 与叠层上限承载。 +警觉(blast 负向)按个体归属:每个存活敌各发一条自己的实例(全体存活敌规则,见[增益状态](增益状态.md)〈目标规则与个体归属〉节),只活一轮、轮末随体清零;战斗段由防守方护甲等级读数消费(我打敌 = 该敌 armor_class + 它名下的 ac 型状态合计)。其余各型负向受池 clamp 与叠层上限承载。 标中资格认雷不认封印:兑付资格以危险格实例为键——封印印记无任何移除手段(移除动作已退役,重复封印被"已有封印"拒绝)、同一颗雷跨轮不重复兑付;换图后新雷是新实例,资格自然重置。同一处封印一直落在雷上,每轮都会重新上报标中,去重是本系统的职责。 -标错的惩罚不再是独立机制:标空封印(标了但格不是雷)= 该安全格格面资源的负向兑付(极性矩阵的"标错"分支),类型化、确定性、零额外派生——旧三选一哈希反噬(暴走 / 失衡 / 伏击+2 三池,坐标×板序号哈希派生)随格面资源批(2026-09-15)整段下线,三池内容收编为 attack / defense / blast 三型的负向行。负向兑付与"封印未中"归因行同键去重,每危险格实例只触发一次;叠层已满授予被拒时记"奖励未生效"行,不静默吞掉。 +标错的惩罚:标空封印(标了但格不是雷)= 该安全格格面资源的负向兑付(极性矩阵的"标错"分支),类型化、确定性、零额外派生。负向兑付与"封印未中"归因行同键去重,每危险格实例只触发一次;叠层已满授予被拒时记"奖励未生效"行,不静默吞掉。 完美封印全有或全无:一张板零误标且至少一次封印标中,清图奖励加倍(现行倍数读 `settlement.tres` p_perfect)。完美计数从装板起算、换图重置;高光行只记实际有效兑付(首份加被接受的第二份),首份即零兑付则高光行不发。封印标中的兑付行自带高光标记,与完美封印的独立高光行构成两个强制高光检查点。 @@ -188,15 +188,15 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × **死亡事件由单位自行宣布**:单位生命归零的那一刻自己发出死亡事件(不由流程代查、不由控制器推断)。怪死 → 队列中该敌为来源的未结单据作废(死亡即不动手——静默零行、不进冷却、不进保底计数,同既有口径);主角死 → 兑付终止、余单作废,Game Over 仍归判定段的生命读数路径。 -**结账时机双模式(结构位,非调参项)**:单据开出后何时兑现由控制器政策承载。现行 = **段界结账 + 地图账殿后**(2026-10-06 用户裁):授予段不开具任何当场兑现的伤害单——全部伤害形态单据暂存(含清图批),战斗段按「主角先手 → 逐敌还手 → 地图账」的顺序补提交,攒到战斗段尾统一兑现;主角在敌方还手中倒下 → 暂存单整体不兑,逐单留「未生效(主角已倒下)」行。清图批的完美第二份与高光份数决策依据开单时点事实(该时点敌人存活有保证),暂存单按「将兑付」回报。保留位 = **开单即结**:提交当场兑现,逐位等价 2026-09-24 之前的行为,作回切结构位。两模式同种子同操作均逐位复现(兑现次序 = 开单次序);同一输入在两模式下结果可不同(兑现时机的语义差异),历史基线读数以 2026-10-06 之前的授予段结账口径为准——该口径已随案C退役,新读数一律按地图账殿后重采。切换 = 改控制器政策常量,走代码修订不走调参。 +**结账时机双模式(结构位,非调参项)**:单据开出后何时兑现由控制器政策承载。现行 = **段界结账 + 地图账殿后**(2026-10-06 用户裁):授予段不开具任何当场兑现的伤害单——全部伤害形态单据暂存(含清图批),战斗段按「主角先手 → 逐敌还手 → 地图账」的顺序补提交,攒到战斗段尾统一兑现;主角在敌方还手中倒下 → 暂存单整体不兑,逐单留「未生效(主角已倒下)」行。清图批的完美第二份与高光份数决策依据开单时点事实(该时点敌人存活有保证),暂存单按「将兑付」回报。保留位 = **开单即结**:提交当场兑现,作回切结构位。两模式同种子同操作均逐位复现(兑现次序 = 开单次序);同一输入在两模式下结果可不同(兑现时机的语义差异)。切换 = 改控制器政策常量,走代码修订不走调参。 举证:本节为管线编排约定,无新计算;掷点、折扣、克制与池乘区的算术口径见战斗段一节。 ### 战斗段与胜负判定:谁先动手、怎么扣血、怎么定胜负 -战斗段是兑现的最后一刀。主角的基础攻击恒存在——这是项目拍板:若基线为零,百分比增益乘上去永远是零,增益系统就空转了。攻击力域 [1, 999]、0 于加载期拒绝,行值读主角表。顺序固定:主角先基础攻击顺位最前的存活敌人,随后按行序逐个存活敌人按本拍摇定技能还手;每个敌人依次走"按技能行兑现、结算伤害、执行上报(技能进冷却 + 保底计数)"三步且恰行动一次,主角不在其列;**最后兑地图伤害账**——授予段暂存的全部伤害单按授予段事件序补提交,与主角单、敌方单一起攒到战斗段尾统一结账(见[伤害单据与伤害控制器](#伤害单据与伤害控制器所有伤害走同一道门)一节)。主角中途倒下,剩余敌人全部停手,地图伤害账整体不兑(逐单留「未生效(主角已倒下)」行),直接进判定段。施放技不涉伤害、照旧当场落行。案C 后授予段不产出伤害,主角进入战斗段时恒存活、场上恒有敌——先手必兑。 +战斗段是兑现的最后一刀。主角的基础攻击恒存在——这是项目拍板:若基线为零,百分比增益乘上去永远是零,增益系统就空转了。攻击力域 [1, 999]、0 于加载期拒绝,行值读主角表。顺序固定:主角先基础攻击顺位最前的存活敌人,随后按行序逐个存活敌人按本拍摇定技能还手;每个敌人依次走"按技能行兑现、结算伤害、执行上报(技能进冷却 + 保底计数)"三步且恰行动一次,主角不在其列;**最后兑地图伤害账**——授予段暂存的全部伤害单按授予段事件序补提交,与主角单、敌方单一起攒到战斗段尾统一结账(见[伤害单据与伤害控制器](#伤害单据与伤害控制器所有伤害走同一道门)一节)。主角中途倒下,剩余敌人全部停手,地图伤害账整体不兑(逐单留「未生效(主角已倒下)」行),直接进判定段。施放技不涉伤害、照旧当场落行。授予段不产出伤害,主角进入战斗段时恒存活、场上恒有敌——先手必兑。 -**开轮摇号与敌方技能兑现**(2026-09-16 敌人技能池批):敌人每拍做什么由开轮摇号决定——每轮轮次开始时,本系统在换算层排除冷却中与触发条件不满足的技能(可摇集合语义归[敌人系统](敌人系统.md)),按行序逐敌从 `behavior_roll` 封闭流的独立子流摇定本拍动作写入实例池(首轮同样摇号;每轮恰摇一次;轮内刷新换图不重摇),随后冷却递减。摇定后、兑现前死亡 → 本拍技能作废、不动手(死亡即不动手)。结算战斗段只按技能行兑现:伤害技走三乘法链(见下),增益技记一行施放行并把状态效果按技能行持续回合挂入[增益状态](增益状态.md)的状态池——0 伤害动作不掷不折。池模板、技能行、冷却、保底与触发条件语义归[敌人系统](敌人系统.md)(引用不转述)。 +**开轮摇号与敌方技能兑现**:敌人每拍做什么由开轮摇号决定——每轮轮次开始时,本系统在换算层排除冷却中与触发条件不满足的技能(可摇集合语义归[敌人系统](敌人系统.md)),按行序逐敌从 `behavior_roll` 封闭流的独立子流摇定本拍动作写入实例池(首轮同样摇号;每轮恰摇一次;轮内刷新换图不重摇),随后冷却递减。摇定后、兑现前死亡 → 本拍技能作废、不动手(死亡即不动手)。结算战斗段只按技能行兑现:伤害技走三乘法链(见下),增益技记一行施放行并把状态效果按技能行持续回合挂入[增益状态](增益状态.md)的状态池——0 伤害动作不掷不折。池模板、技能行、冷却、保底与触发条件语义归[敌人系统](敌人系统.md)(引用不转述)。 **三乘法链**(技能伤害的合成顺序,技能倍率乘在最前,其后既有链一字不动): @@ -205,10 +205,10 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × ② AC 判断值:掷点(骰面读表)vs 防守方护甲等级 → 档位折扣;天然最大面 → 暴击 ×暴击倍率(读表)(量程上下限) ③ 命中伤害 H = (A × a) + 克制修正点数 (克制修正点数读 settlement.tres 甲效矩阵——加法点数非百分比;敌打主角不查矩阵恒中性——矩阵消费面 = 主角侧) ── 以下既有链不动 ── -增益池乘区(含敌方防御池)→ 向下取整 → 伤害下限 max(1,·) → 必中附加分量 rider(2026-09-19 新效应词汇批——伤害技 rider_mult 字段:max(伤害下限, floor(攻击基线 × rider_mult)),独立必中加项、不进乘区、不出暴击;无字段 = 无此步) +增益池乘区(含敌方防御池)→ 向下取整 → 伤害下限 max(1,·) → 必中附加分量 rider(伤害技 rider_mult 字段:max(伤害下限, floor(攻击基线 × rider_mult)),独立必中加项、不进乘区、不出暴击;无字段 = 无此步) ``` -主角先手攻击 = 单一基础分量(2026-09-19 充能退役批定稿;量 = 攻击力经增益修正,可被池封顶压到零;**类型 = 主角 `attack_type` 表值**——2026-09-18 营地扩展前置批:基础攻击量与攻击类型抽象分离,基础分量不再恒属普通,缺省 normal 向后兼容)。**攻击类型是伤害的属性轴**——它只决定这个分量查甲效表的哪一行,定义里不含任何棋盘来源。分量查表取整;甲效表把攻击类型与敌方护甲类型交叉成一张 3×3 **克制修正矩阵(加法点数)**——2026-09-18 加法核换装:每个分量在掷点/暴击折算取整后 **+ 克制修正点数**(原百分比乘区退役): +主角先手攻击 = 单一基础分量(量 = 攻击力经增益修正,可被池封顶压到零;**类型 = 主角 `attack_type` 表值**——基础攻击量与攻击类型抽象分离,缺省 normal 向后兼容)。**攻击类型是伤害的属性轴**——它只决定这个分量查甲效表的哪一行,定义里不含任何棋盘来源。分量查表取整;甲效表把攻击类型与敌方护甲类型交叉成一张 3×3 **克制修正矩阵(加法点数)**:每个分量在掷点/暴击折算取整后 **+ 克制修正点数**: | 攻击类型 \ 护甲类型 | 轻甲 | 魔法护甲 | 重甲 | 语义 | |---|---|---|---|---| @@ -216,21 +216,21 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 穿刺 | 被克 | 克制 | 中性 | 对魔法护甲克制;对轻甲被克;**重甲中性**(挡得住刀刃、不排斥穿刺——2026-09-18 用户拍板;现行无重甲敌种,纯结构位) | | 魔法 | 中性 | 被克 | 克制 | 绕得过重甲,被魔法护甲吸收 | -修正三档:克制 +1 / 中性 0 / 被克 −1(加法点数,九格分布读 `settlement.tres` 甲效矩阵——2026-09-18 加法核换装:量纲由百分比改点数、五档词表退役;三档而非五档的理由 = 攻击基线个位数刻度下 ±2 触伤害下限或翻倍超重,假粒度;攻击成长后可扩弱档)。攻击类型是分量的固有属性(每个分量恒属普通 / 穿刺 / 魔法 之一),护甲类型是防守单位的固有属性,两者都不随层数、来源与轮次漂移;基础分量的类型归属是主角表的可配置值(营地永久强化的换型落点),矩阵键集 3×3 满格、结构冻结,数值 provisional。矩阵消费面 = 主角侧(奖励直伤道具 / 主角攻击基础分量)——敌方攻击现行不查矩阵,主角 armor_type 轴仍休眠、生效待敌方技能攻击类型批。主角增益与乏力经主角输出池修正攻击合计(2026-09-18 结构修复批:普通分量直乘旁路退役;2026-09-19 充能退役后合计 = 单分量,见池乘区公式行)。 +修正三档:克制 +1 / 中性 0 / 被克 −1(加法点数,九格分布读 `settlement.tres` 甲效矩阵;三档而非五档的理由 = 攻击基线个位数刻度下 ±2 触伤害下限或翻倍超重,假粒度;攻击成长后可扩弱档)。攻击类型是分量的固有属性(每个分量恒属普通 / 穿刺 / 魔法 之一),护甲类型是防守单位的固有属性,两者都不随层数、来源与轮次漂移;基础分量的类型归属是主角表的可配置值(营地永久强化的换型落点),矩阵键集 3×3 满格、结构冻结,数值 provisional。矩阵消费面 = 主角侧(奖励直伤道具 / 主角攻击基础分量)——敌方攻击现行不查矩阵,主角 armor_type 轴仍休眠、生效待敌方技能攻击类型批。主角增益与乏力经主角输出池修正攻击合计(充能退役后合计 = 单分量,见池乘区公式行)。 -主角攻击 = 单一基础分量(2026-09-19 充能退役批):量 = 攻击力基线(表值),类型 = 主角表 `attack_type`(营地永久强化换型 = 改字段;未来冒险前参数面承接"按关配型"的策略位)。原"普通 + 穿刺/魔法充能三分量"模型整体退役——挖掘期与战斗期之间不再有弹药供给线,克制应对从局内攒桶改为冒险前配型 + 棋盘火力(穿刺弹/魔法矢等直伤奖励道具,消费面不变)。 +主角攻击 = 单一基础分量:量 = 攻击力基线(表值),类型 = 主角表 `attack_type`(营地永久强化换型 = 改字段;未来冒险前参数面承接"按关配型"的策略位)。挖掘期与战斗期之间无弹药供给线,克制应对 = 冒险前配型 + 棋盘火力(穿刺弹/魔法矢等直伤奖励道具,消费面不变)。 -**护甲等级掷点:必中、非归零,只吃基础攻击分量**(2026-09-16 定稿落地,判定式与全部数值已拍板;判定对象措辞随敌人技能池批改述)。防守方由此多了一条数值轴——护甲等级(数据键 `armor_class`):攻击永远命中,没有 miss、没有零收益白回合;只有吃掷点的分量在掷点低于防守方护甲等级时按减伤档位打折,档位再重也不归零。判定式:攻击结算时掷单骰(骰面读表),掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额;掷点 < 护甲等级按缺口(护甲等级 − 掷点)查减伤档位表打折——边界与档值读 `settlement.tres` 减伤档位表,三档皆非零档。暴击:天然最大面(读表)使该次基础攻击分量 ×暴击倍率(读表),双方同规,且天然最大面恒全额(暴击与折扣互斥;天然最大面〔nat20〕暴击是掷点层概念,与技能重击〔池技能〕严格区分——两层禁止混述)。伤害下限:**任何来源的伤害落地**至少 damage_floor(读表,全局 max(damage_floor, ·)——2026-09-20 用户拍板扩全来源:攻击双方、棋盘直伤与爆裂、地形变异、负向反噬;伤害取值域 [1, +∞),**不设上限**)——"被减伤归零 v=0"零值伤害行语义顺带退役,重档折扣的攻击行在行文本记"被压制"。掷点范围:只有基础攻击分量吃掷点——主角先手攻击的基础分量,敌方技能的基础伤害分量(= 攻击基线 × 技能伤害倍率,普通攻击倍率 1 为特例);无伤害分量的技能(增益/妨害类)不掷不折;棋盘来源一律无视护甲等级——爆裂、清障炸药、奖励即时伤害、技能必中附加分量(rider,2026-09-19)全部必中全额不掷,这是本机制的边界切口,与"奖励/惩罚必中"同构。护甲等级(数值轴,掷点打折)与护甲类型(属性轴,克制修正)严格分离:护甲类型不做护甲等级映射,克制修正点数读表、消费面不变,两概念在文档、表字段与代码键中禁止混用。数值载体:主角与敌方护甲等级行值读 hero / enemy 表的 armor_class 列(正式行值归怪物设定批,登记[待办清单](../../../../待办清单.md)),ac_up(盾牌加护)在其上加算(幅度/层数读 `status_effects.tres`)。攻击加成(`attack_bonus`)为结构位预留字段,切片恒 0,未来归元进度 / 武器附魔投值。掷点时机在结算战斗段内、每次基础攻击伤害计算时判定,消费 `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放)。 +**护甲等级掷点:必中、非归零,只吃基础攻击分量**(判定式与全部数值已拍板)。防守方由此多了一条数值轴——护甲等级(数据键 `armor_class`):攻击永远命中,没有 miss、没有零收益白回合;只有吃掷点的分量在掷点低于防守方护甲等级时按减伤档位打折,档位再重也不归零。判定式:攻击结算时掷单骰(骰面读表),掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额;掷点 < 护甲等级按缺口(护甲等级 − 掷点)查减伤档位表打折——边界与档值读 `settlement.tres` 减伤档位表,三档皆非零档。暴击:天然最大面(读表)使该次基础攻击分量 ×暴击倍率(读表),双方同规,且天然最大面恒全额(暴击与折扣互斥;天然最大面〔nat20〕暴击是掷点层概念,与技能重击〔池技能〕严格区分——两层禁止混述)。伤害下限:**任何来源的伤害落地**至少 damage_floor(读表,全局 max(damage_floor, ·)——2026-09-20 用户拍板扩全来源:攻击双方、棋盘直伤与爆裂、地形变异、负向反噬;伤害取值域 [1, +∞),**不设上限**)——"被减伤归零 v=0"零值伤害行语义已退役,重档折扣的攻击行在行文本记"被压制"。掷点范围:只有基础攻击分量吃掷点——主角先手攻击的基础分量,敌方技能的基础伤害分量(= 攻击基线 × 技能伤害倍率,普通攻击倍率 1 为特例);无伤害分量的技能(增益/妨害类)不掷不折;棋盘来源一律无视护甲等级——爆裂、清障炸药、奖励即时伤害、技能必中附加分量(rider)全部必中全额不掷,这是本机制的边界切口,与"奖励/惩罚必中"同构。护甲等级(数值轴,掷点打折)与护甲类型(属性轴,克制修正)严格分离:护甲类型不做护甲等级映射,克制修正点数读表、消费面不变,两概念在文档、表字段与代码键中禁止混用。数值载体:主角与敌方护甲等级行值读 hero / enemy 表的 armor_class 列(正式行值归怪物设定批,登记[待办清单](../../../../待办清单.md)),ac_up(盾牌加护)在其上加算(幅度/层数读 `status_effects.tres`)。攻击加成(`attack_bonus`)为结构位预留字段,切片恒 0,未来归元进度 / 武器附魔投值。掷点时机在结算战斗段内、每次基础攻击伤害计算时判定,消费 `armor_roll` 封闭流(逐次掷逐次取号,可逐位回放)。 EV 参考数不入正文(派生读数,需要时按判定式与现行表值自行复算);旧 defense_up 的减伤墙已整体退役换装为 AC(无双轨)。微调旋钮 = 档位边界与档位值,不动护甲等级值。换装点锚定:基准 AC(读 hero 表)自带的方向性偏移与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)已登记的加难杠杆扫描合并处理;其生存链区间模型按掷点带宽口径复核 **结论**:先合成、再取整、全程非负;吃掷点分量必中非归零、低掷按档位折扣、天然最大面暴击恒全额(倍率读表)、落地伤害保底 ≥ damage_floor(读表);溢杀丢弃、治疗封顶、死亡即时判定。 ``` -敌方一次技能攻击 = max(damage_floor, floor( 掷点档位技能基础分量 ) × 主角防御乘数 × 敌方输出乘数 ) + 必中附加分量 rider(若有——2026-09-19 新效应词汇批:max(damage_floor, floor(攻击基线 × rider_mult)),rider 为后置加法不进乘区不掷不折);增益/妨害技 = 0 伤害施放行(不掷不折),妨害状态按状态行 target_side 落主角 -主角一次攻击 = max(damage_floor, floor( 攻击合计 × (100 + 主角输出乘数池合成值) ÷ 100 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——主角输出池(增伤/乏力载体)与敌方防御池(硬化载体)两池串乘在攻击合计之后(2026-09-19 充能退役后合计 = 单分量) -粒度口径:增益池乘区作用在攻击合计层——合计为个位数时百分比档存在粒度取整(如合计 2 点 ×0.75 → 1,实际约 −33% 大于名义 −25%),为已知行为、接受现状;2026-09-18 数值语言拍板后百分比仅保留增益池 / AC 折扣档 / 暴击三处既有粗档,终值与量纲复核归状态层重设计批 -乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池(2026-09-18 结构修复批:主角输出池乘区接线落地——attack_up 普通分量直乘旁路退役,旧"切片现状"注记销项) +敌方一次技能攻击 = max(damage_floor, floor( 掷点档位技能基础分量 ) × 主角防御乘数 × 敌方输出乘数 ) + 必中附加分量 rider(若有——max(damage_floor, floor(攻击基线 × rider_mult)),rider 为后置加法不进乘区不掷不折);增益/妨害技 = 0 伤害施放行(不掷不折),妨害状态按状态行 target_side 落主角 +主角一次攻击 = max(damage_floor, floor( 攻击合计 × (100 + 主角输出乘数池合成值) ÷ 100 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——主角输出池(增伤/乏力载体)与敌方防御池(硬化载体)两池串乘在攻击合计之后(合计 = 单分量) +粒度口径:增益池乘区作用在攻击合计层——合计为个位数时百分比档存在粒度取整(如合计 2 点 ×0.75 → 1,实际约 −33% 大于名义 −25%),为已知行为、接受现状;百分比仅保留增益池 / AC 折扣档 / 暴击三处既有粗档,终值与量纲复核归状态层重设计批 +乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池(主角输出池乘区已接线——attack_up 普通分量直乘旁路已退役) 护甲等级掷点:掷单骰(骰面读表),掷点 ≥ 护甲等级 + 攻击加成 → 全额;低掷按缺口查减伤档位表(边界与档值读表,无零档) 暴击:天然最大面(读表)→ 该次基础攻击分量 ×暴击倍率(读表)且恒全额(双方同规;掷点层概念,与技能重击严格区分) 伤害下限:任何来源的伤害落地 ≥ damage_floor(读表,全局 max(damage_floor, ·)——折扣与池归零都不产生 v=0 伤害行;2026-09-20 扩全来源,取值域 [1, +∞)) @@ -241,7 +241,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | 边界 | 规则 | |---|---| | 修正池封顶 | 同侧百分比修正加算后每池独立封顶 ±100 百分点;乘数可为 0——输出压制触池底时落地伤害由全局下限保底 damage_floor(读表)(叠满免伤归零的结构面已随护甲等级换装消失) | -| 伤害下限 | 任何来源的伤害落地至少 damage_floor(读表,全局 max(damage_floor, ·)——2026-09-20 扩全来源:攻击双方/棋盘直伤/地形变异/负向反噬,取值域 [1, +∞) 不设上限);"被减伤归零 v=0"零值伤害行语义退役,重档折扣行文本记"被压制"——免伤与零输出仍逐行可见 | +| 伤害下限 | 任何来源的伤害落地至少 damage_floor(读表,全局 max(damage_floor, ·)——覆盖攻击双方/棋盘直伤/地形变异/负向反噬,取值域 [1, +∞) 不设上限);"被减伤归零 v=0"零值伤害行语义退役,重档折扣行文本记"被压制"——免伤与零输出仍逐行可见 | | 护甲等级掷点 | 必中非归零:掷单骰(骰面读表)对防守方护甲等级 + 攻击加成(恒 0),低掷按缺口查减伤档位表(读表)三档折扣、档位不设零档;天然最大面暴击 ×暴击倍率(读表)恒全额;只吃基础攻击分量(主角基础分量、敌方技能基础伤害分量),棋盘来源伤害与增益施放不掷不折 | | 溢杀 | 一刀超出目标剩余生命的部分丢弃:不转移给下一个敌人、不存续、无负生命中间态 | | 治疗 | 生命不溢出上限;满血正向治疗零兑付,记"奖励未生效"行 | @@ -262,11 +262,11 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 └─ 关卡结束(上层显式调用)→ 清空秘宝背包,给出可见反馈 ``` -停手与耗尽收轮的回合恒为同图继续;换图指令只允许出现在清图轮,其他轮发换图属于程序错误、立即上抛。秘宝背包以关卡为界:战斗结束不清背包,跨战斗延续;关卡结束时一次性清空,清空前先返回快照计数,作为"剩余秘宝随关卡结束清空"的可见反馈。战斗道具背包已随可选类删除(2026-09-15)下线。(2026-10-09 注:清空对象 = 关卡域秘宝库存——秘宝过渡形态的机械惰性承载,其投放渠道已随迭代 11 第①批全退役、现行恒空;现行秘宝=营地同调装配件、整局冒险生效不经此域,拆线归实装批——见[秘宝](../跨局循环/秘宝.md)沿革节。) +停手与耗尽收轮的回合恒为同图继续;换图指令只允许出现在清图轮,其他轮发换图属于程序错误、立即上抛。秘宝背包以关卡为界:战斗结束不清背包,跨战斗延续;关卡结束时一次性清空,清空前先返回快照计数,作为"剩余秘宝随关卡结束清空"的可见反馈。战斗道具背包已随可选类删除下线。(注:清空对象 = 关卡域秘宝库存——秘宝过渡形态的机械惰性承载,其投放渠道已全退役、现行恒空;现行秘宝=营地同调装配件、整局冒险生效不经此域,拆线归实装批——见[秘宝](../跨局循环/秘宝.md)沿革节。) 挖掘期刷新是玩家在挖掘中途主动换图,经[行动经济](../排雷循环/行动经济.md)扣费:扣费成功后按"旧板退役、生成新板、装板、资源预分配恰一次、变异布置"编排,本轮不打断——没有结算段、没有轮次结束。储备不足被拒是玩家决策的合法结果,不是编排错误。刷新图不发清图奖励,完美封印计数随装板重置。 -### 换图系专长:刷新事实与本轮兑付(已实装——2026-11-01 迭代 46) +### 换图系专长:刷新事实与本轮兑付(已实装) 持有换图系后续专长时,成功刷新除执行上述换图编排外,还产生一次 `board_refreshed` 事实——它是换图系效果兑付的统一事实挂点。事实只在新板装板成功后登记恰一次;刷新被拒绝时不产生事实,任何后续效果都不触发。同一轮多次成功刷新按发生顺序逐次登记,不合并成一次。 @@ -301,7 +301,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | 上游 | [敌人系统](敌人系统.md) | 单位接口全调用面:生成、查询、扣血、摇定写入、执行上报、默认目标、警觉授予、清场;护甲等级(防守方掷点判定读数)随单位数据供给;池模板与技能行数据归它 | | 上游 | [增益状态](增益状态.md) | 状态池接口全调用面:初始化、授予、读值、衰减、清空 | | 上游 | [地图战斗资源](地图战斗资源.md) | 格面资源接口:预分配、身份查询、受理、清图对象、当量供给投影、映射退役 | -| 上游 | [冒险结构](../冒险循环/冒险结构.md) | 战斗触发、遭遇上下文与主角入参覆盖值(覆盖值通道已随冒险结构实现批正式接线——接口四件套正式侧承载) | +| 上游 | [冒险结构](../冒险循环/冒险结构.md) | 战斗触发、遭遇上下文与主角入参覆盖值(覆盖值通道已正式接线——接口四件套正式侧承载) | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 明细流水是结算明细屏的统一数据源(未生效类行须带形状冗余防误读);状态读取走下方呈现只读面 | | 下游 | [战斗表现](战斗表现.md) | 结算步骤流是战斗动画回放的脚本源 | | 下游 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | 五条经济契约的对账结论是其调参约束输入(对账现状登记 [待办清单](../../../../待办清单.md)) | @@ -312,7 +312,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | 呈现面 | 形态 | 载荷与语义 | |---|---|---| -| 呈现状态快照 | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔技能编号/类型/名〕/敌方增益/存活)、主角活跃效果投影——呈现层唯一的状态读取出口(敌人技能池批批 2 定稿:行为环当前拍/环进度字段随行为环退役拆除——2026-09-16,池与权重不公开) | +| 呈现状态快照 | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔技能编号/类型/名〕/敌方增益/存活)、主角活跃效果投影——呈现层唯一的状态读取出口(池与权重不公开) | | 战斗进行中谓词 | 只读函数,布尔 | 战斗未出结果且主角在场——组合根高频相位判断的低成本面 | | 奖励身份查询 | 只读函数,单格 | 已开格奖励身份解析的代理,转[地图战斗资源](地图战斗资源.md)的身份查询(就绪相位守卫归对方)——组合根注入棋盘徽章回调 | | 结算快照信号 | 信号,每次结算末 | 对象销毁前组装的全量状态快照(终局含胜负结果)——测试记录与数值分析消费 | @@ -345,10 +345,10 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 |---|---|---|---| | 参考敞口 | int [1, 999] | 读 `settlement.tres` equivalence_ref_damage(provisional) | 当量折算的代表性敞口;变更须重跑全部对账 | | 完美乘数 | percent {100, 200} | 读 `settlement.tres` p_perfect(provisional) | 100 为仅高光、无第二份;域外加载拒绝 | -| 甲效矩阵 | 整数点数 {−1, 0, +1} | 三档加法修正(克制 +1 / 中性 0 / 被克 −1)九格现行值读 `settlement.tres`(provisional——2026-09-18 加法核换装,量纲 percent 退役) | 键集 = 攻击类型 {普通, 穿刺, 魔法} × 护甲类型 {轻甲, 魔法护甲, 重甲},3×3 满格结构冻结;数值归调参 | +| 甲效矩阵 | 整数点数 {−1, 0, +1} | 三档加法修正(克制 +1 / 中性 0 / 被克 −1)九格现行值读 `settlement.tres`(provisional) | 键集 = 攻击类型 {普通, 穿刺, 魔法} × 护甲类型 {轻甲, 魔法护甲, 重甲},3×3 满格结构冻结;数值归调参 | | 护甲等级掷点 | 骰面 int [2,1000] · nat 最大面 [1,骰面] · 暴击倍率 percent [100,999] | 骰面 / nat 最大面 / 暴击倍率读表(2026-09-16 拍板定稿) | 回合内随机:每吃掷点分量逐次掷骰,掷点低于防守方护甲等级 + 攻击加成触发档位折扣;天然最大面暴击 ×暴击倍率(读表)且恒全额(双方同规);消费 `armor_roll` 封闭流(逐次掷逐次取号) | | 减伤档位表 | 边界升序 + 档位值降序 percent [1,99],档数 = 边界数 + 1 | 边界与档值读 `settlement.tres`(roll_tier_bounds / discount 档位,2026-09-16 拍板定稿) | 低掷缺口按边界查档(读表);档位不设零档(非归零);微调旋钮 = 本表,不动护甲等级值 | -| 伤害下限 `damage_floor` | int [1, 999] | 读 `settlement.tres` damage_floor(2026-09-16 拍板定稿;2026-09-20 扩全来源) | 任何来源的伤害落地全局 max(damage_floor, ·);零值伤害行语义顺带退役 | +| 伤害下限 `damage_floor` | int [1, 999] | 读 `settlement.tres` damage_floor(2026-09-16 拍板定稿;全来源适用) | 任何来源的伤害落地全局 max(damage_floor, ·);零值伤害行语义已退役 | | 攻击加成 `attack_bonus` | int [0, 999] | 0(结构位) | 掷点阈值 = 防守方护甲等级 + 攻击加成;切片恒 0,未来归元进度 / 武器附魔投值 | | 护甲等级 `armor_class`(防守方字段) | int [0, 999] | 主角与敌方现行值读 hero / enemy 表 armor_class 列(暂定) | 字段本体在敌人表与主角表(归[敌人系统](敌人系统.md)),行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md);敌方正式行值归怪物设定批(见待办清单);与护甲类型(克制属性轴)两概念禁止混用 | | 段序常量 | 固定五段 | 结构冻结 | 加载期恒等校验,违例拒绝启动 | @@ -361,28 +361,28 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 - 五段全序:任一轮结算的明细行按五段顺序排列。 - 触发与到达序无关:同一轮末的两条结束消息按任意先后驱动,结算步骤流逐行相同。 -- 挖封印格兑付改判(封印不可逆批 2026-09-19):有封印格直接挖开被受理——封印安全格直挖零奖励(作废归因行恰一次)、封印危险格直挖只吃挖雷惩罚;被挖开的封印不入轮末判定(零标中 / 标空兑付);开格事实不可撤。 +- 挖封印格兑付改判:有封印格直接挖开被受理——封印安全格直挖零奖励(作废归因行恰一次)、封印危险格直挖只吃挖雷惩罚;被挖开的封印不入轮末判定(零标中 / 标空兑付);开格事实不可撤。 - 每事实恰一次:每格受理、每封印判定恰好一次;重复投递不改变结果。 - 极性路由正确:开安全格 / 封印标中只兑正向、开危险格 / 标错封印只兑负向;兑付效果与该格资源类型的字典行一一对应。 -- 警觉按个体:每只敌各持自己的警觉实例、互不共享;blast 负向逐层直授无上限(伏击退役换装——2026-09-20 八型批;个体化——2026-11-02 用户裁)。 +- 警觉按个体:每只敌各持自己的警觉实例、互不共享;blast 负向逐层直授无上限(个体化——2026-11-02 用户裁)。 - 完美封印:零误标且至少一面标中时第二份兑付恰一次并发高光行;出现误标或零标中则无高光;计数换图重置。 - 开轮摇号:每轮恰摇一次(首轮同样;轮内刷新换图不重摇);摇定后兑现前死亡 → 本拍技能作废(零敌方行动行)、不进冷却不进保底计数;已兑现技能进冷却、保底计数按执行结果更新。 - 战斗段次序:主角先手后逐敌"按摇定技能行兑现、结算伤害、执行上报"各恰一次;主角倒下立即短路,剩余敌人不行动。 - 护甲等级掷点:吃掷点分量(主角基础分量、敌方技能基础伤害分量)逐次掷单骰(骰面读表)——掷点 ≥ 防守方护甲等级 + 攻击加成全额兑付;低掷按缺口查减伤档位表(边界与档值读表),档位不设零档;天然最大面暴击该分量 ×暴击倍率(读表)且恒全额;穿刺/魔法分量与棋盘来源伤害(爆裂、清障炸药、奖励即时)、必中附加分量及增益/妨害施放不掷不折。 -- 新效应词汇(2026-09-19):伤害技 rider_mult 行的每次攻击,伤害行携带 rider 值且终值 = max(伤害下限, 主分量链结果) + rider(停手轮零池下逐拍精确复算);rider 键只随带 rider_mult 的技能行出现;妨害技 = 施放行 + 状态按 target_side 落主角(投掷阈值随行可读下调),冷却/保底/死亡作废三闸无一例外。 -- 伤害下限与留档:任何来源的伤害落地 ≥ damage_floor(读表,2026-09-20 扩全来源),全流水零 v=0 伤害行、零"被减伤归零"行;掷点读数、护甲等级与档位随伤害行留档,天然最大面(nat20)行带暴击标记。 +- 新效应词汇:伤害技 rider_mult 行的每次攻击,伤害行携带 rider 值且终值 = max(伤害下限, 主分量链结果) + rider(停手轮零池下逐拍精确复算);rider 键只随带 rider_mult 的技能行出现;妨害技 = 施放行 + 状态按 target_side 落主角(投掷阈值随行可读下调),冷却/保底/死亡作废三闸无一例外。 +- 伤害下限与留档:任何来源的伤害落地 ≥ damage_floor(读表,全来源适用),全流水零 v=0 伤害行、零"被减伤归零"行;掷点读数、护甲等级与档位随伤害行留档,天然最大面(nat20)行带暴击标记。 - 数值边界:伤害下限保底后全程无零值/负值伤害;溢杀丢弃不转移;治疗封顶不溢出。 - 出口分发:先判主角倒下(负)再判敌清空(胜);停手与耗尽轮恒同图,清图轮才允许换图。 - 关卡收束:关卡结束清空秘宝背包(关卡域库存——现行恒空的机械惰性承载,见「轮次生命周期」节注)恰一次并返回清空前计数;战斗结束不清背包。 - 可回放(封闭随机流口径):同种子同输入两遍步骤流逐位复现;随机消费仅限七处封闭随机流——开战掷骰(初始化随机)、技能摇号 `behavior_roll`(回合内、开轮时点、步骤流之外)、护甲等级掷点 `armor_roll`(回合内、步骤流之内)、奖励格摇号 `reward_roll`(初始化、装板期)、变异布置 `variant_place`(初始化、装板与资源预分配之后)、换板棋盘生成 `board_gen`(初始化、清图轮换板时点)、战斗结束掉落掷定 `gp_drop`(出口随机、战斗结束分支),无未登记随机源、零界面等待;单敌出招轨迹可独立复放、互不穿插。 - 无来源即炸:每行明细都能指回一个来源事实(棋盘格、单位、清图或段级结论);找不到来源即断言失败,行型与来源类别两层豁免清单见明细流水一节,豁免行仍受其它契约约束。 - 行型封闭:流水行型只出现本文登记的基础 9 类与扩展行;行型词表改动必须走本文修订并同步呈现层行格式化,未登记行型禁止落行。 -- 伤害单据管线(2026-09-24):全部伤害(主角先手、敌方伤害技、棋盘克制直伤、群伤、反噬、地形变异)经伤害控制器单据管线兑现,兑付配方封闭五种;目标在结账时刻照规则解析;死亡事件由单位自行宣布——怪死其未结单据作废(零行、不进冷却不进保底计数)、主角死兑付终止;段界结账为现行口径、开单即结为回切结构位,两模式各自同种子同输入逐位复现。 +- 伤害单据管线:全部伤害(主角先手、敌方伤害技、棋盘克制直伤、群伤、反噬、地形变异)经伤害控制器单据管线兑现,兑付配方封闭五种;目标在结账时刻照规则解析;死亡事件由单位自行宣布——怪死其未结单据作废(零行、不进冷却不进保底计数)、主角死兑付终止;段界结账为现行口径、开单即结为回切结构位,两模式各自同种子同输入逐位复现。 - 换图系刷新事实:成功刷新保存旧图探索进度并登记一次事实,被拒绝时不登记;同一轮多次刷新按发生顺序逐次兑付,刷新本身不新增结算段或轮次结束。 - 换图系输出:崩壁冲击在本轮战斗段末经伤害控制器结算;蓄力周转受 3 层上限约束,本轮下一次主角攻击消费全部层数,战斗结束清空;群伤致敌清空时仍由本轮判定段判胜。 - 换图系生存与资源:石层缓冲经全局 `damage_taken` 对敌方攻击、危险格、错误封印与地形伤害各减 2,同轮不叠加;坑道小憩在授予段按累计值回血并封顶;矿道红利每次成功刷新固定入账 1 GP。 - 全局受伤事件:`damage_taken` 只在主角实际承伤消费点发射一次,所有伤害路径均经同一效果引擎减免面,禁止同一张单重复发射或只让部分伤害来源订阅生效。 -- 条款3 对账(2026-10-05 判式换代批 T3——与行动经济 F1 条款3 重立同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(清图支配性审计为常设重跑项,读数快照登记归 clause3 重立条);②封印溢价兑付正确:封印标中正向兑付 = 同型正向 ×(1+δ)(δ 读 `settlement.tres` flag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、危险格与安全格同池结构零触碰。 +- 条款3 对账(与行动经济 F1 条款3 同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(清图支配性审计为常设重跑项,读数快照登记归 clause3 重立条);②封印溢价兑付正确:封印标中正向兑付 = 同型正向 ×(1+δ)(δ 读 `settlement.tres` flag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、危险格与安全格同池结构零触碰。 ## 待办 diff --git a/design/gdd/systems/战斗循环/战斗表现.md b/design/gdd/systems/战斗循环/战斗表现.md index 6165b5bd..a928d1e4 100644 --- a/design/gdd/systems/战斗循环/战斗表现.md +++ b/design/gdd/systems/战斗循环/战斗表现.md @@ -1,6 +1,6 @@ # 战斗表现 -> 一句话:战斗动画与演出(旧体系未单独成文) +> 一句话:战斗动画与演出 > 状态:范围草案(待设计);现行为 v1.3 ## 设计目的 @@ -9,7 +9,7 @@ 本文目前只做两件事:划清范围边界;收拢上游已经登记下来的呈现义务,作为将来的输入清单。动画风格、镜头语言、演出节奏一概未定,且须先过一屏样张才有资格定(见"前置美术测试是硬前置")。 -一句翻译说明:旧体系把本系统概括为"结算画面 → 战斗动画、伤害数字"。战斗屏常驻双舞台裁决之后,结算不再是独立画面,本文按现行口径把范围理解为"在既有呈现上叠加动画密度"。 +一句范围说明:战斗屏常驻双舞台,结算不再是独立画面——本文按现行口径把范围理解为"在既有呈现上叠加动画密度"。 ## 系统范围 @@ -52,7 +52,7 @@ "发生什么"与"怎么动"因此分了工:敌人死亡是血条归零后灰化加碎裂退场、禁止瞬间消失,结算明细带逐行滚动,完美封印与封印标中有高光行强调——这些呈现语义已由 battle.md 与 HUD 框架定稿,本文不复述。本文将来承接的只是其上的动画密度:受击反馈、弹道、退场动画等类别。 -资产侧同理,这也是双舞台带来的管线约束:若舞台形态悬而未决,同一份角色资产可能因舞台不同而重画。现行解法是剪影跨舞台通用——角色剪影按"棋盘、结算画面与任一战斗舞台通用"设计,不为舞台未决问题付重画成本(art-bible §5.1;原 §3.1,2026-09-22 迁 §5.1)。 +资产侧同理,这也是双舞台带来的管线约束:若舞台形态悬而未决,同一份角色资产可能因舞台不同而重画。现行解法是剪影跨舞台通用——角色剪影按"棋盘、结算画面与任一战斗舞台通用"设计,不为舞台未决问题付重画成本(art-bible §5.1)。 ### 收拢上游已登记的呈现输入 @@ -61,26 +61,26 @@ | 输入 | 登记处 | 将来要做的 | |---|---|---| | 受击反馈 / 死亡表现 / 顺位标记 | [敌人系统](敌人系统.md)的资产需求下限三类(终稿归样张批,呈现语义已归 battle.md) | 终稿资产与动画兑现;死亡禁止瞬消 | -| 特殊技技能动画定稿 | [敌人系统](敌人系统.md)三档可见性规格(2026-09-16 敌人技能池批改型:行为环姿态预告〔一态与三态〕退役——现行数据面 = 普通攻击零表示、特殊技三族动画〔攻击系/增益系/妨害系——2026-09-19 妨害系新增〕,暴击为掷点层无前置表示;battle.md 意图线索映射目录已同步改型注记) | 把摇定动画映射(两型)做成终稿资产 | +| 特殊技技能动画定稿 | [敌人系统](敌人系统.md)三档可见性规格(现行数据面 = 普通攻击零表示、特殊技三族动画〔攻击系/增益系/妨害系〕,暴击为掷点层无前置表示) | 把摇定动画映射(两型)做成终稿资产 | | 奖励未生效行的呈现 | [增益状态](增益状态.md)定稿时登记(数据源是[战斗结算](战斗结算.md)的明细协议) | 让这类行在演出中可读、不被吞掉 | | 效果来源格的可读化 | 同上(候选形态:缩略图或格子高亮,坐标不直接呈现) | 把"效果来自哪一格"翻译成玩家可读的演出 | -| 坍塌显形的连锁动画 | [游戏概念](../../00-游戏概念.md)的概念层拍板——坍塌显形是[连锁展开](../排雷循环/排雷玩法.md)的玩家可见名,与音频方向同批配对登记 | 连锁展开触发时的连锁演出 | +| 坍塌显形的连锁动画 | [游戏概念](../../00-游戏概念.md)的概念层拍板——坍塌显形是[连锁展开](../排雷循环/排雷玩法.md)的玩家可见名 | 连锁展开触发时的连锁演出 | | 高光兑现的演出强化 | 完美封印与封印标中强调的机制及呈现位已由战斗结算与 battle.md 定稿 | 在既有高光行呈现之上加强演出密度 | | 伤害数字 | 归档索引中本系统的旧范围一句话即含"伤害数字" | 落点未定:预告上格原则与"敌人不占格、兑现发生在战斗画面区"如何相容,见待设计问题清单 | ### 前置美术测试是硬前置 -正式设计本文之前,必须先做一次"战斗表现美术测试":用一屏样张(一张按候选方案画成的试验图)锁定角色剪影、动画方案、战斗空间三件事。这是旧体系评审登记的排期硬前置,不是建议;battle.md 也登记了该测试须按双舞台布局出样。样张未过,不启动任何终稿资产与动画设计。**该硬前置已解除**:一屏样张整体过闸(凭据=体验验证清单 ㊶)。 +正式设计本文之前,必须先做一次"战斗表现美术测试":用一屏样张(一张按候选方案画成的试验图)锁定角色剪影、动画方案、战斗空间三件事。这是排期硬前置,不是建议;battle.md 也登记了该测试须按双舞台布局出样。样张未过,不启动任何终稿资产与动画设计。**该硬前置已解除**:一屏样张整体过闸(凭据=体验验证清单 ㊶)。 附着在同一次样张上的还有一项已登记的裁决(登记出处 = 敌人系统的呈现契约):敌人层绘制优先级的插入位置——白话就是敌人的姿态精灵画在绘制顺序的哪一层,会不会、以及如何与棋盘上的数字、封印印记、小人发生遮挡。它随美术测试一并裁决,不在本文提前定。 -两项相邻裁定已有结论,设计时直接继承:**敌人呈现形态已裁决(2026-09-20 用户看对照样张拍板)——全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条正下方,卡片式整体退役**(待办清单「敌人卡形态」解决移除,状态记录 99;battle.md 起草条款已随裁决改写,对照样张已在案存档);art-bible 的图标键契约已冻结,动画设计不必等图标终稿。 +两项相邻裁定已有结论,设计时直接继承:**敌人呈现形态已裁决(2026-09-20 用户看对照样张拍板)——全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条正下方,卡片式整体退役**;art-bible 的图标键契约已冻结,动画设计不必等图标终稿。 ### 一屏样张的验收标准 样张是前置美术测试的判定物;本节把"怎么算过"在测试组织前写成文,避免临场现定标准。成文做法参照 [art-bible](../../../art/art-bible.md) §1.4 格子样张测试(内容清单、按序验收项、判定与回退),判据全部落到已冻结的现行口径上——本节不定任何新的视觉参数。 -样张内容清单(一组齐备,缺项即无效):按 [battle.md 布局决策 1](../../ux/battle.md) 的常驻双舞台四区布局整屏出样;角色剪影按棋盘格、结算明细带、战斗舞台三个语境同图摆放;~~敌人卡两候选形态对照(卡片式与站桩式各一版,其余内容不变)~~——**本项已由 2026-09-20 形态裁决提前完成(全站桩定稿、卡片式退役),正式样张按站桩形态单版出样即可**(owner 修订,对照义务解除;见待办清单「敌人卡形态」销项,状态记录 99);受击、退场、高光兑现三组动画关键帧条(每组至少起、中、末三帧);敌人姿态精灵与数字、封印印记、小人同格叠放的遮挡对照组至少一组。 +样张内容清单(一组齐备,缺项即无效):按 [battle.md 布局决策 1](../../ux/battle.md) 的常驻双舞台四区布局整屏出样;角色剪影按棋盘格、结算明细带、战斗舞台三个语境同图摆放;~~敌人卡两候选形态对照(卡片式与站桩式各一版,其余内容不变)~~——**本项已完成(全站桩定稿、卡片式退役),正式样张按站桩形态单版出样即可**;受击、退场、高光兑现三组动画关键帧条(每组至少起、中、末三帧);敌人姿态精灵与数字、封印印记、小人同格叠放的遮挡对照组至少一组。 验收项按序判定,第一项不过 = 整张否决(继承格子样张"数字可读性定风格"的次序): @@ -90,25 +90,25 @@ 4. **战斗空间成立**:双舞台同屏下挖掘期视线锚在棋盘区、结算期锚在明细带与战斗画面区(B 区),两舞台边界清晰、无焦点争夺。 5. **敌层插入位置可裁**:遮挡对照组足以裁决敌人姿态精灵画进绘制顺序的哪一层——任何层叠组合下数字、封印印记、小人禁止被遮挡到不可辨。 -判定与回退:第 1 项不过即演出元素回炉,禁止以牺牲可读性换氛围(改演出、不动数字口径);第 2–4 项不过对应资产或方案回炉重交,已过项结果保留。第 5 项(敌层插入位置)不产生过/不过,产出一条裁决记录:插入位置结论由[敌人系统](敌人系统.md)的呈现契约登记(~~敌人卡形态对照~~半边已于 2026-09-20 提前裁决完成——全站桩定稿,结论已回写 battle.md 起草条款)。样张通过 = 角色剪影、动画方案、战斗空间、敌层插入位置四件锁定物冻结;通过前不启动任何终稿资产与动画设计。 +判定与回退:第 1 项不过即演出元素回炉,禁止以牺牲可读性换氛围(改演出、不动数字口径);第 2–4 项不过对应资产或方案回炉重交,已过项结果保留。第 5 项(敌层插入位置)不产生过/不过,产出一条裁决记录:插入位置结论由[敌人系统](敌人系统.md)的呈现契约登记(~~敌人卡形态对照~~半边已完成裁决——全站桩定稿)。样张通过 = 角色剪影、动画方案、战斗空间、敌层插入位置四件锁定物冻结;通过前不启动任何终稿资产与动画设计。 -**现行状态(2026-10-30 战斗一屏样张批)**:五项验收的机检断言已随该批全绿(机器代理口径与实测读数查战斗一屏样张批 git 提交史,合并提交 3b66d1a6);样张整体过闸仍差方向稿目检先行(art-bible §1.4 闸形,目检项登记体验验证清单 ㊶)。 +**现行状态**:样张整体过闸仍差方向稿目检先行(art-bible §1.4 闸形,目检项登记体验验证清单 ㊶)。 ### 演出服从信息与可读性 两条现行硬约束,将来任何动画方案都禁止越过。其一,数字可读性高于氛围:挖掘期画面无杂音,动画禁止遮挡数字、禁止在挖掘期抢焦;结算期的色彩与能量走向以 art-bible 第 2 节为权威。其二,结算逐行兑现是信息载体:battle.md 已承诺不可整体跳过、只提供减动效选项(时长减半或直达终态,逐行兑现可加速不可省略),本文将来兑现其动画侧。 -### 结算演出与轮间节奏(已实装,2026-09-30 拍板点 3 裁决落位) +### 结算演出与轮间节奏(已实装) -**定义**:轮末结算的呈现节奏规则——结算行按演出层排播队列分组依次呈现、轮切换以「第 N 轮」横幅驻留,把核心层一帧同步跑完的结算翻译成玩家可跟读的逐行过程;与结算演出覆盖层(光带横扫/跨区弹道,迭代 6)共同构成结算期的演出面。 +**定义**:轮末结算的呈现节奏规则——结算行按演出层排播队列分组依次呈现、轮切换以「第 N 轮」横幅驻留,把核心层一帧同步跑完的结算翻译成玩家可跟读的逐行过程;与结算演出覆盖层(光带横扫/跨区弹道)共同构成结算期的演出面。 -**作用对象与范围**:只作用于演出层——排播常量(段间间隔/段内间隔/横幅驻留)归演出层单点持有,本文登记现行值,横幅与节奏在演出层呈现。核心层零触碰:结算零界面等待、零动画等待,且「MC 与基线数据逐项比对」口径不受扰(T1 态 400/400 逐位实证在案)。 +**作用对象与范围**:只作用于演出层——排播常量(段间间隔/段内间隔/横幅驻留)归演出层单点持有,本文登记现行值,横幅与节奏在演出层呈现。核心层零触碰:结算零界面等待、零动画等待,且「MC 与基线数据逐项比对」口径不受扰。 -**生命周期**:进结算期起播——结算行按五段分组依序进明细带(段间 0.3s、段内 0.22s;段内值 0.06→0.22 系迭代 8 三轮修改批用户裁决「逐条演出可感知」);轮切换横幅驻留 0.6s 后消隐进下一轮;战斗结束排播收尾。**减动效双态**:开关开启 = 延迟归零同帧直落 + 横幅静态化(与设置面减动效联动——「可加速不可整体跳过」承诺的节奏侧兑现)。 +**生命周期**:进结算期起播——结算行按五段分组依序进明细带(段间 0.3s、段内 0.22s);轮切换横幅驻留 0.6s 后消隐进下一轮;战斗结束排播收尾。**减动效双态**:开关开启 = 延迟归零同帧直落 + 横幅静态化(与设置面减动效联动——「可加速不可整体跳过」承诺的节奏侧兑现)。 -**关联与边界**:结算顺序与结果归[战斗结算](战斗结算.md)(本节零触碰,逻辑先行、演出后行);减动效开关归[设置与本地化](../表现与支撑/设置与本地化.md);节奏常量由演出层单点持有,本文登记现行值与沿革,表值化随演出批再议;横幅发射计数构成验收判据。 +**关联与边界**:结算顺序与结果归[战斗结算](战斗结算.md)(本节零触碰,逻辑先行、演出后行);减动效开关归[设置与本地化](../表现与支撑/设置与本地化.md);节奏常量由演出层单点持有,本文登记现行值,表值化随演出批再议;横幅发射计数构成验收判据。 -**状态**:已实装(2026-09-29 迭代 8 卡⑦已入库、三轮修改批调参追认;验收套件第 15 套在册)。本节是本文第一块已落地内容,其余部分维持范围草案。 +**状态**:已实装(验收套件第 15 套在册)。本节是本文第一块已落地内容,其余部分维持范围草案。 ## 依赖与输出 @@ -119,7 +119,7 @@ | 上游 | [敌人系统](敌人系统.md) | 资产需求下限三类与敌种姿态数据面——数据已锁,本文出终稿;另登记一项随样张一并裁决的事项:敌人层绘制优先级的插入位置 | | 上游 | [art-bible](../../../art/art-bible.md)(现行权威) | 剪影、色彩、图标键契约、各阶段氛围——表现侧约束 | | 上游 | [battle.md](../../ux/battle.md)(现行权威) | 屏级呈现形态与呈现语义 | -| 协作 | [音频](../表现与支撑/音频.md) | 坍塌显形动画与音效方向系同批配对登记,将来对位设计(挂点未定) | +| 协作 | [音频](../表现与支撑/音频.md) | 坍塌显形动画与音效方向配对登记,将来对位设计(挂点未定) | ## P0 最小闭环 diff --git a/design/gdd/systems/战斗循环/敌人系统.md b/design/gdd/systems/战斗循环/敌人系统.md index 252ea658..ca486875 100644 --- a/design/gdd/systems/战斗循环/敌人系统.md +++ b/design/gdd/systems/战斗循环/敌人系统.md @@ -1,7 +1,7 @@ # 敌人系统 > 一句话:敌人数据、技能池出招、意图呈现 -> 状态:已定稿(自旧体系迁移);现行为 v1.7 +> 状态:已定稿;现行为 v1.8 ## 设计目的 @@ -70,7 +70,7 @@ | 规则 | 含义 | |---|---| -| 敌方效果对全体生效 | 范围效果作用于所有存活敌人——混编放开后(2026-10-07 行集多行批)场上可多种敌种共存,结算语义按存活单位逐一生效、不依赖"场上全同种"前提;"只打某一个"的单体寻址接口已在[增益状态](增益状态.md)〈单体寻址扩展位〉节定稿,随首个单体效果的内容批开放(见 P1) | +| 敌方效果对全体生效 | 范围效果作用于所有存活敌人——场上可多种敌种共存,结算语义按存活单位逐一生效、不依赖"场上全同种"前提;"只打某一个"的单体寻址接口已在[增益状态](增益状态.md)〈单体寻址扩展位〉节定稿,随首个单体效果的内容批开放(见 P1) | | 行集构成纪律 | 敌人表按(关卡序号 × 深度带)存放;深度带=节点深度的区间——逐局生成使单点深度不再固定,配池按带不按点,难度坡随带递增。同一带键行集允许多行、允许不同敌种混编;Boss 行按终点配置,多终点各配一行(走哪条路决定打谁)。纪律三条,违规加载期返回错误并止动:①行集内 enemy_id 唯一(同一敌种在同行集仍只许一行);②同带键多行必须表文件内相邻,行序 = 声明序 = 生成序(行序即契约);③行集实例总数(各行骰后数量求和)≤ 4,单行数量域 [1,3] 不变(单行数量上限语义 = 单种数)。行数不设上限;同关随深度换敌种合法 | | 主角数据行 | 主角战斗数值单独放一张全局单行表:生命上限、基础攻击力、护甲等级三字段(见调参表) | | 基础攻击恒存在 | 基础攻击不许配 0(配置为 0 加载期拒绝)——零基线乘任何百分比增益恒为零,"胜利路径恒有"的保障从数据层杜绝死锁 | @@ -98,17 +98,17 @@ |---|---|---| | skill_id | 全部 | 主键,池条目引用键 | | display_name | 全部 | 玩家可见名(明细行与动画共用) | -| type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益, 妨害}——**新效应词汇批 2026-09-19 由三扩四**(设计权威 proposal-status-vocabulary.md〔提案已吸收退役——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0;多段命中经用户拍板退役不入枚举);新类型走本文修订 | +| type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益, 妨害}(现行事实源=敌人系统.md 词汇表/增益状态.md;多段命中经用户拍板退役不入枚举);新类型走本文修订 | | damage_mult | 仅伤害 | 伤害倍率;域 [1.1, 16] provisional。普通攻击恒 1、不可配 | -| rider_mult | 仅伤害、可省 | **必中附加分量(2026-09-19 新增)**:域 (0, 1],缺省无字段 = 无附加;分量值 = max(伤害下限, floor(攻击基线 × rider_mult))——随施放者攻击基线缩放,后置加法、必中全额、不进乘区、不出暴击(后置加法同族);价位锚 0.75 = AC 折扣档最轻档"不掉档的稳定伤害" | +| rider_mult | 仅伤害、可省 | **必中附加分量**:域 (0, 1],缺省无字段 = 无附加;分量值 = max(伤害下限, floor(攻击基线 × rider_mult))——随施放者攻击基线缩放,后置加法、必中全额、不进乘区、不出暴击(后置加法同族);价位锚 0.75 = AC 折扣档最轻档"不掉档的稳定伤害" | | cooldown_beats | 全部 | 施放后连续 N 拍不可摇中;普通攻击恒 0、不可配 | | buff_ref / buff_duration | 仅增益与妨害 | 效果引用(指向状态效果行)与持续回合数;**落点:增益技归施放者自己(每只敌是独立个体,一只施放只强化自己——2026-11-02 用户裁),妨害技归主角**;施放类 side 守卫加载拒绝——妨害技零新授予通道 | -| trigger(触发条件) | 全部,可省 | {fact, op, value, latch} 四键——fact 与 op 取「触发条件」节封闭词表,value 类型与域随 fact,出域加载期拒绝;缺省无字段=无条件技,旧行为零变化(2026-10-26 情境条件触发器批立列、2026-10-27 迭代 39 实装落地;原池条目的血量百分比字段收编为本字段闩型首用例) | -| P1 字段位 | — | 命中段数、目标数——随对应后置批加列(触发条件位已由 trigger 立列收编——2026-10-26 立列、2026-10-27 实装;原"固定值分量"位已由 rider_mult 实装收编——2026-09-19;多段命中「命中段数」保留以防复活) | +| trigger(触发条件) | 全部,可省 | {fact, op, value, latch} 四键——fact 与 op 取「触发条件」节封闭词表,value 类型与域随 fact,出域加载期拒绝;缺省无字段=无条件技 | +| P1 字段位 | — | 命中段数、目标数——随对应后置批加列(触发条件位已由 trigger 立列收编;"固定值分量"位已由 rider_mult 收编;多段命中「命中段数」保留以防复活) | -普通攻击也是一行技能行,两条域校验锁死它的特殊性:倍率恒 1、冷却恒 0——想配倍率或冷却的就不是普攻,是伤害技。技能伤害存倍率、不存固定值:伤害 = 施放者攻击基线 × 技能倍率——同一行"重击",不同敌种按各自攻击基线缩放 = 基线 A × 技能倍率 M(行值读 enemy.tres / skills.tres),深层强化行自动缩放,这是共享技能表成立的前提;**固定的绝对值伤害不满足该前提**(不随基线缩放、跨关稀释——Brotato 教训),"固定值伤害"的合法形态是**必中附加分量 rider_mult**(×攻击基线的必中小倍率,2026-09-19 实装)。增益技带效果引用与持续回合,百分比天然按施放者同池生效,无缩放问题;妨害技同构,落点由状态行 target_side 路由到主角。技能伤害基线的取整:攻击基线 × 倍率按四舍五入、正好半格时一律向上取——全伤害管线唯一不用向下取整的点(半点上取保住低攻击档特殊技的辨识度:攻击 1 配 ×1.5 的突刺落到 2 而不是 1)。 +普通攻击也是一行技能行,两条域校验锁死它的特殊性:倍率恒 1、冷却恒 0——想配倍率或冷却的就不是普攻,是伤害技。技能伤害存倍率、不存固定值:伤害 = 施放者攻击基线 × 技能倍率——同一行"重击",不同敌种按各自攻击基线缩放 = 基线 A × 技能倍率 M(行值读 enemy.tres / skills.tres),深层强化行自动缩放,这是共享技能表成立的前提;**固定的绝对值伤害不满足该前提**(不随基线缩放、跨关稀释——Brotato 教训),"固定值伤害"的合法形态是**必中附加分量 rider_mult**(×攻击基线的必中小倍率)。增益技带效果引用与持续回合,百分比天然按施放者同池生效,无缩放问题;妨害技同构,落点由状态行 target_side 路由到主角。技能伤害基线的取整:攻击基线 × 倍率按四舍五入、正好半格时一律向上取——全伤害管线唯一不用向下取整的点(半点上取保住低攻击档特殊技的辨识度:攻击 1 配 ×1.5 的突刺落到 2 而不是 1)。 -池构成纪律(加载校验,违规拒绝入表):**每池恰一行普通攻击**(普攻冷却恒 0 → 可摇集合恒非空,"空池不可能"由结构保证,最坏情况怪物平砍等待——那是玩家的反打窗口而非死拍);**每池增益类技能 ≤1**(非 RPG,怪物连出不同增益显得呆);**每池妨害类技能 ≤1**(2026-09-19 新效应词汇批同构纪律);**每池至少一行不带触发条件的特殊技**(普攻不算——保底特殊技集合恒非空的结构保证,2026-10-26 触发条件批);池条目 skill_id 悬空致命;权重 > 0、冷却 ≥ 0。 +池构成纪律(加载校验,违规拒绝入表):**每池恰一行普通攻击**(普攻冷却恒 0 → 可摇集合恒非空,"空池不可能"由结构保证,最坏情况怪物平砍等待——那是玩家的反打窗口而非死拍);**每池增益类技能 ≤1**(非 RPG,怪物连出不同增益显得呆);**每池妨害类技能 ≤1**;**每池至少一行不带触发条件的特殊技**(普攻不算——保底特殊技集合恒非空的结构保证);池条目 skill_id 悬空致命;权重 > 0、冷却 ≥ 0。 两道闸(表值 provisional,投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md),行值读技能表): @@ -132,15 +132,15 @@ 死亡即不动手(保留):摇定后、兑现前死亡(主角先手 / 更早兑现的敌方伤害技),本拍技能作废——不动手、不进冷却、不进保底计数;其余存活敌人照常。拍结构保留:**每结算每存活敌恰行动一次、按行序、先作用后推进**——变的只是"轮到什么",由固定剧本改为摇号。同种敌人不再锁步:各自实例池独立摇号、独立冷却,怪物 1 的重击在冷却里不影响怪物 2,轨迹分歧是涌现,不设开战分配机制。 -蓄力语义(2026-09-16 纠偏定稿):蓄力不是重击前奏——它是一行增益技:0 伤害动作,施加 empower 状态(幅度读 `status_effects.tres`),持续 1 个有效结算(provisional)。旧环"蓄力→猛击"的固定配对是地精弹珠的拷贝(给玩家输出窗口用的),随行为环一并退役;蓄力与重击之间**没有任何组合语义**——增益与技能倍率恰好同拍只是增益倍率 × 技能倍率的两层乘法共存(增益幅度 × 增益幅度 = 两层乘法读表可得),蓄力后摇中普通攻击则是增益倍率的加成平砍,两者同为平常事,不是设计的连招。技能冷却(几拍内不能再摇中,技能行属性)与增益持续(状态挂几回合,状态行属性)是两个计时器,互不相干。施放行 = 0 伤害动作,不掷不折(原"零兑付、不读伏击"的读怪奖励语义随伏击退役作废——2026-09-20 八型批)。 +蓄力语义:蓄力不是重击前奏——它是一行增益技:0 伤害动作,施加 empower 状态(幅度读 `status_effects.tres`),持续 1 个有效结算(provisional)。蓄力与重击之间**没有任何组合语义**——增益与技能倍率恰好同拍只是增益倍率 × 技能倍率的两层乘法共存(增益幅度 × 增益幅度 = 两层乘法读表可得),蓄力后摇中普通攻击则是增益倍率的加成平砍,两者同为平常事,不是设计的连招。技能冷却(几拍内不能再摇中,技能行属性)与增益持续(状态挂几回合,状态行属性)是两个计时器,互不相干。施放行 = 0 伤害动作,不掷不折。 -Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错峰两轨口径,2026-10-05 技能池执行批立 Boss 轨、2026-10-13 迭代 24 N2 补普通敌轨**:**Boss 轨** = L1 酋长池含独占增益技"硬化"〔敌方防御池词汇载体〕+ 半血解锁伤害技"震地怒击";L2 卓尔池独占妨害技"蛛网束缚"+伤害技"毒爆"+ 半血解锁"遏毒";L3 石君王池独占妨害技"大地脉动"+ 半血解锁"岩崩"——独占技随关错峰投放,三行解锁技=每 Boss 一行新独占伤害技〔用户裁案甲,2026-10-04〕;**普通敌轨** = L2/L3 普通敌种技能随关错峰投放(2026-10-13 N2:巨蜘蛛族+毒吐〔(2,5)/(2,6)/(2,7),首遇教学位 (2,4) 不投〕、灰矮人族+盾击〔(3,0)/(3,5)/(3,7)〕,`skills.tres` 12→14 行)——第一关不见的招式第二/三关普通战可见;旧"专属四拍环且含蓄力拍"约定顺带退役,增益 ≤1 纪律下旧蓄力拍不进 Boss 池)。 +Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错峰两轨口径**:**Boss 轨** = L1 酋长池含独占增益技"硬化"〔敌方防御池词汇载体〕+ 半血解锁伤害技"震地怒击";L2 卓尔池独占妨害技"蛛网束缚"+伤害技"毒爆"+ 半血解锁"遏毒";L3 石君王池独占妨害技"大地脉动"+ 半血解锁"岩崩"——独占技随关错峰投放,三行解锁技=每 Boss 一行新独占伤害技〔用户裁案甲,2026-10-04〕;**普通敌轨** = L2/L3 普通敌种技能随关错峰投放(巨蜘蛛族+毒吐〔(2,5)/(2,6)/(2,7),首遇教学位 (2,4) 不投〕、灰矮人族+盾击〔(3,0)/(3,5)/(3,7)〕)——第一关不见的招式第二/三关普通战可见;增益 ≤1 纪律下蓄力拍不进 Boss 池)。 举证:**摇定结果 = 可摇集合按权重份额归一的一次抽签;当前可摇集合 = 实例池排除冷却中与触发条件不满足的技能(保底命中时 = 条件满足的全部特殊技)。**连带可判别:把权重当固定百分比、把冷却当只锁高伤技、把蓄力当重击前奏,都是与本规约相悖的旧口径。 ### 触发条件:情境技与闩型解锁共用一套门槛 -技能行可以带一个触发条件:条件不满足的拍,这行技能不进可摇集合——与冷却中的排除同一待遇;条件满足时,按正常权重照摇。它服务两类出招:情境技(自身低血才用的防御、上轮玩家停手才会出的偷袭等)让怪物像在"看情况出招",停手与压血因此有了代价;闩型解锁(半血解锁)让大招只在血量跌破阈值后才可被摇出。两类用例、一套机制——条件只管"现在能不能被摇到",不改权重、不强制出手。本节 2026-10-26 设计定稿,实装随需求卡片批落地。 +技能行可以带一个触发条件:条件不满足的拍,这行技能不进可摇集合——与冷却中的排除同一待遇;条件满足时,按正常权重照摇。它服务两类出招:情境技(自身低血才用的防御、上轮玩家停手才会出的偷袭等)让怪物像在"看情况出招",停手与压血因此有了代价;闩型解锁(半血解锁)让大招只在血量跌破阈值后才可被摇出。两类用例、一套机制——条件只管"现在能不能被摇到",不改权重、不强制出手。 规则(人话阶段):求值发生在每轮开轮摇号前——对实例池逐行求值,读当时战斗快照;逐敌自身的事实(self 类)各自求值,全局事实全场一份。本系统零随机纪律不变:条件只是可摇集合的又一排除项,摇号公式(权重份额归一)与随机流消费序都不动,同种子回放逐位复现。字段是技能行 trigger 四键 {fact, op, value, latch}:fact 与 op 各取下方封闭词表,value 类型与域随 fact——出域加载期拒绝止动;缺省无字段=无条件技。latch(单向闩)为真时,条件首次求值为真后整场保持为真(治疗抬血不回锁);缺省为假=每轮开轮重新求值(瞬态条件,如"上轮停手"过了就过)。 @@ -166,15 +166,15 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | 死亡作废 | 照常——摇定后兑现前死亡,本拍作废、不进冷却不进保底计数 | | 意图呈现 | 三档规格不变——情境技属特殊技,走类型级预告+结算明细具名,因果由技能名承载(如"趁隙偷袭");闩型保留解锁弹出规格(见"目标顺位与意图线索"节) | -半血解锁的收编:原池条目的血量百分比字段(2026-10-05 技能池执行批)收编为本字段闩型首用例——Boss 解锁技=trigger {fact: self_hp_pct, op: lte, value: 行值, latch: 真};解锁弹出规格(归因明细行+一次性技能名 toast)、单向闩语义、双面过滤行为全部不变(字段换代与三 Boss 行值迁移已随 2026-10-27 迭代 39 实装落地)。 +半血解锁:Boss 解锁技=trigger {fact: self_hp_pct, op: lte, value: 行值, latch: 真}——解锁弹出规格(归因明细行+一次性技能名 toast)、单向闩语义、双面过滤。 -首批落地(已实装——2026-10-27 迭代 39):①三 Boss 解锁技迁移为闩型条件(行为零变化);②两个示范投放——地精池+低血防御增益「孤注守势」(self_hp_pct lte 35,纯增益)、L2/L3 群行位+停手偷袭伤害技「趁隙偷袭」(last_round_end eq 停手)。投放敌种、权重与阈值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md);"每池增益≤1"纪律不动,条件技照常计入预算。 +首批落地(已实装):①三 Boss 解锁技为闩型条件;②两个示范投放——地精池+低血防御增益「孤注守势」(self_hp_pct lte 35,纯增益)、L2/L3 群行位+停手偷袭伤害技「趁隙偷袭」(last_round_end eq 停手)。投放敌种、权重与阈值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md);"每池增益≤1"纪律不动,条件技照常计入预算。 举证:触发条件为门槛过滤规则,无计算——可摇集合 = 实例池排除冷却中与触发条件不满足的技能(保底命中时 = 条件满足的全部特殊技)。 ### 伏击(已退役)与群伤负向现况 -伏击词条(敌方每刀附加固定点数伤害)已随 2026-09-20 格面资源八型批整体退役:奖励/惩罚镜像对账发现其"层数 × 出手敌数"的复利全部集中在主角单血条,与群伤奖励"摊到 N 条敌方血条"构成双重不对称;单轮授予上限护栏已先行退役(同日删除批)。blast 型负向现况 = **警觉**(敌方全体护甲等级 +1/层,持续 1 结算,逐颗叠加无上限)——状态行定义与承载归[增益状态](增益状态.md),掷点消费归[战斗结算](战斗结算.md)的护甲等级判定;本系统不再承载敌方侧受击语义。 +伏击词条(敌方每刀附加固定点数伤害)已整体退役:奖励/惩罚镜像对账发现其"层数 × 出手敌数"的复利全部集中在主角单血条,与群伤奖励"摊到 N 条敌方血条"构成双重不对称;单轮授予上限护栏已先行退役。blast 型负向现况 = **警觉**(敌方全体护甲等级 +1/层,持续 1 结算,逐颗叠加无上限)——状态行定义与承载归[增益状态](增益状态.md),掷点消费归[战斗结算](战斗结算.md)的护甲等级判定;本系统不再承载敌方侧受击语义。 ### 目标顺位与意图线索:打谁不用选,特殊技开轮有一次类型级预告 @@ -185,12 +185,12 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | 摇中 | 挖掘期呈现 | 结算揭示 | |---|---|---| | 普通攻击 | 零表示——完全不可预测 | 明细行"普通攻击(暴击/被压制)" | -| 特殊技 | 技能动画占位(攻击系 / 增益系 / 妨害系三族——2026-09-19 妨害系 ☠ 新增)——纯类型级提醒,不预告技能名与数值 | 明细行具名技能 + 数值 | +| 特殊技 | 技能动画占位(攻击系 / 增益系 / 妨害系三族)——纯类型级提醒,不预告技能名与数值 | 明细行具名技能 + 数值 | | nat20 暴击 | 无前置表示(掷点层,与技能重击严格区分) | 明细行"(暴击)"标注 | 即:普攻完全不可预测;特殊技有一次类型级预告,不可撤销,但给"继续挖还是停手"的决策依据。 -**半血解锁弹出规格(2026-10-05 技能池执行批,D8 用户裁;内容数据驱动扩展批 T1 补登记——解锁判定点=通用事件「血量阈值 `enemy_hp_threshold`」的发射点,对所有带闩型血量触发条件的敌人逐个发射、非 Boss 专属——Boss 语义留给订阅条件判定;条件载体 2026-10-26 触发条件批起改技能行 trigger 闩型〔原池条目的血量百分比字段收编,行为零变化,见「触发条件」节〕)**:Boss 血量降至解锁阈值(trigger 行值,域 [1,99],缺省无字段=无门槛)时,下一个开轮摇号前出一次归因明细行「XX 解锁了 YY」(高光键为技能解锁,行型复用高光行零新增);呈现层对该行弹**一次性技能名 toast**(轻量提示,非演出——零动画资产、不改演出规格),只报技能名不报数值,池与权重不公开纪律不变。解锁=单向闩(治疗抬血不解锁);锁定条目双面过滤(不进可摇集合与保底特殊技集合——保底禁止逼出未解锁技);解锁后冷却初值 0 即可摇。投放纪律=机制通用、闩型解锁用例仅 Boss 专属技投放(enemy 表无 boss 编码位,硬闸须跨表查节点类型——不做硬闸,本句即文档纪律登记)。旧环"下一拍全程亮出(意图徽标 + 环点)"的预告粒度随行为环退役。技能动画的攻/防系映射归[战斗表现](战斗表现.md),敌人侧摇定动画位归[HUD 框架](../表现与支撑/HUD框架.md)(呈现载体 = 站桩立绘,2026-09-20 全站桩拍板),本系统只锁上面这张三档规格。 +**半血解锁弹出规格(解锁判定点=通用事件「血量阈值 `enemy_hp_threshold`」的发射点,对所有带闩型血量触发条件的敌人逐个发射、非 Boss 专属——Boss 语义留给订阅条件判定;条件载体=技能行 trigger 闩型,见「触发条件」节)**:Boss 血量降至解锁阈值(trigger 行值,域 [1,99],缺省无字段=无门槛)时,下一个开轮摇号前出一次归因明细行「XX 解锁了 YY」(高光键为技能解锁,行型复用高光行零新增);呈现层对该行弹**一次性技能名 toast**(轻量提示,非演出——零动画资产、不改演出规格),只报技能名不报数值,池与权重不公开纪律不变。解锁=单向闩(治疗抬血不解锁);锁定条目双面过滤(不进可摇集合与保底特殊技集合——保底禁止逼出未解锁技);解锁后冷却初值 0 即可摇。投放纪律=机制通用、闩型解锁用例仅 Boss 专属技投放(enemy 表无 boss 编码位,硬闸须跨表查节点类型——不做硬闸,本句即文档纪律登记)。技能动画的攻/防系映射归[战斗表现](战斗表现.md),敌人侧摇定动画位归[HUD 框架](../表现与支撑/HUD框架.md)(呈现载体 = 站桩立绘,2026-09-20 全站桩拍板),本系统只锁上面这张三档规格。 | 规格 | 含义 | |---|---| @@ -235,18 +235,18 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | 优先级 | 内容 | 后置原因 | |---|---|---| -| P1 | 情境条件触发器(低血触发防御、玩家停手时偷袭技等) | 已实装(2026-10-27 迭代 39——三 Boss 闩型迁移+两示范投放,见「触发条件」节与「首批落地」段) | +| P1 | 情境条件触发器(低血触发防御、玩家停手时偷袭技等) | 已实装(三 Boss 闩型+两示范投放,见「触发条件」节与「首批落地」段) | | P1 | 个体化变体池(A 型好斗 / B 型守势、精英专属池) | 共识点 A 的 A2 案;登记[待办清单](../../../../待办清单.md) | | P1 | 全局特殊间隔旋钮 | 特殊技背靠背实测仍嫌时的备用闸;登记[待办清单](../../../../待办清单.md) | -| P1 | 新效应词汇批(妨害技 + 必中附加分量已实装 2026-09-19——设计权威 proposal-status-vocabulary.md〔提案已吸收退役——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0,实装面 = L2 Boss 卓尔;多段命中经用户拍板退役) | 妨害类型 + rider_mult 字段已落地;登记[待办清单](../../../../待办清单.md)(已解决移除,去向见状态记录) | +| P1 | 新效应词汇(妨害技 + 必中附加分量已实装——实装面 = L2 Boss 卓尔;多段命中经用户拍板退役) | 妨害类型 + rider_mult 字段已落地;登记[待办清单](../../../../待办清单.md)(已解决移除,去向见状态记录) | | P1 | 敌种扩容与投放节奏(含第二关池与投放) | 投放节奏是关卡命脉,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | -| P1 | 单体寻址("只打某一个敌人"的目标指定) | 归集语义与呈现已裁定(2026-10-26;语义归[增益状态](增益状态.md)〈单体寻址扩展位〉节);实现随首个单体效果的内容批落地 | +| P1 | 单体寻址("只打某一个敌人"的目标指定) | 归集语义与呈现已裁定(语义归[增益状态](增益状态.md)〈单体寻址扩展位〉节);实现随首个单体效果的内容批落地 | | P2 | 敌方技能图鉴 / 学习呈现(玩家侧技能知识系统) | 池不公开口径下的进阶信息面;登记[待办清单](../../../../待办清单.md) | | P2 | ~~精英 / Boss 遭遇编码位~~(已完成——不设编码位:同层多遭遇由节点编号消解,关卡节点地图 v1.0⑥ 用户裁决) | — | ## 调参表 -配置表共三张。数值纪律(2026-09-17 降级批定稿):**本文只锁字段、取值域与规则,行值一律读配置表(切片 `game/data/tables/` 的 enemy / skills / hero 表),不在本文登记具体数值——防双写失同步**;曲线调参所有权归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)。 +配置表共三张。数值纪律:**本文只锁字段、取值域与规则,行值一律读配置表(切片 `game/data/tables/` 的 enemy / skills / hero 表),不在本文登记具体数值——防双写失同步**;曲线调参所有权归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)。 敌人表(按深度带坐标存放,每坐标行集一行或多行——多行即混编遭遇,构成纪律见核心规则「行集构成纪律」;单行行集 = 既有形态): @@ -259,7 +259,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | unit_count_max | [unit_count, 3],可省略 | 数量区间上界;开战时在区间内掷定本战实际数量;缺省 = 定值 | | atk_min / atk_max | [0, 999] 可选配对 | 攻击基线区间:开战掷定一次、整战持久;缺省 = 定值行 | | armor_type | {轻甲, 魔法护甲, 重甲},缺省轻甲 | 克制结算归[战斗结算](战斗结算.md) | -| attack_type | {普通, 穿刺, 魔法},缺省普通 | 敌方攻击类型轴(**2026-10-13 迭代 24 N3 开列实装**:20 行全填 normal,攻击类型闭集枚举+缺省回退向后兼容,与 armor_type 同位同款);消费面 = 战斗结算敌方技兑付路径的护甲克制矩阵查表(敌方开单第 9 参传值+克制消费点,见战斗结算);行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | +| attack_type | {普通, 穿刺, 魔法},缺省普通 | 敌方攻击类型轴(20 行全填 normal,攻击类型闭集枚举+缺省回退向后兼容,与 armor_type 同位同款);消费面 = 战斗结算敌方技兑付路径的护甲克制矩阵查表(敌方开单第 9 参传值+克制消费点,见战斗结算);行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | armor_class(护甲等级) | int [0, 999],缺省 0 | 防守方护甲等级——基础攻击掷点的折扣判定读数,掷点结算归[战斗结算](战斗结算.md);与 armor_type(克制属性轴)两概念禁止混用;行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | hp | [1, 999] | 单位生命基线(难度修饰前) | | atk | [0, 999] | 攻击基线 | @@ -283,12 +283,12 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | max_hp | [1, 999] | 主角生命上限 | | atk | [1, 999] | 基础攻击;配 0 加载期拒绝——基础攻击恒在 | | armor_class(护甲等级) | int [0, 999] | 主角作为防守方的护甲等级基准,ac_up(盾牌加护)在其上加算;掷点结算归[战斗结算](战斗结算.md) | -| armor_type | {轻甲, 魔法护甲, 重甲},缺省轻甲 | 主角护甲类型轴(2026-09-18 营地扩展前置批:可配置可修改);克制结算归[战斗结算](战斗结算.md)——**矩阵消费面双向在役(2026-10-13 迭代 24 N3:敌方 attack_type 轴开列+敌方兑付路径克制消费点补齐后,轴休眠态终结;现役敌方全 normal 档,主角三甲型对敌方的读数差 = 穿重甲 −1 / 穿魔法护甲 +1 / 轻甲 0,同种子配对实测在案,数值终值归 M4)** | -| attack_type | {普通, 穿刺, 魔法},缺省普通 | 主角基础攻击类型轴(2026-09-18 营地扩展前置批:基础攻击量与攻击类型抽象分离——营地永久强化换型 = 改此字段,atk 量轴不动);消费面 = 战斗结算·战斗段基础分量 | +| armor_type | {轻甲, 魔法护甲, 重甲},缺省轻甲 | 主角护甲类型轴(可配置可修改);克制结算归[战斗结算](战斗结算.md)——**矩阵消费面双向在役(现役敌方全 normal 档,主角三甲型对敌方的读数差 = 穿重甲 −1 / 穿魔法护甲 +1 / 轻甲 0,同种子配对实测在案,数值终值归 M4)** | +| attack_type | {普通, 穿刺, 魔法},缺省普通 | 主角基础攻击类型轴(基础攻击量与攻击类型抽象分离——营地永久强化换型 = 改此字段,atk 量轴不动);消费面 = 战斗结算·战斗段基础分量 | 各敌种行值、池权重与池 EV 读数(含闸长期速率实测)一律读配置表与调参日志,本文不登记具体数值;EV 重锚与权重投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)。 -结构冻结(非调参项,修订走本文流程):技能类型枚举封闭、每池恰一普攻、每池增益 ≤1、死亡即不动手(摇定后兑现前死亡作废不进账)、每结算每存活敌恰行动一次、行序、先作用后推进、固定顺位、**行集构成纪律(2026-10-07 行集多行批换代——原「每坐标恰一敌种」退役:行集内 enemy_id 唯一 + 同带键多行文件内相邻且行序 = 声明序 = 生成序 + 行集实例总数 ≤ 4)**、零随机(本系统自身语义零随机不变——摇号与掷点随机一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现,单敌出招轨迹可独立复放)。联动纪律:技能倍率 × 攻击(伤害拍支配)、权重 × 冷却 × 保底(池节奏三联动)禁止独立调参,联调须重跑方向性预检并同步登记册(登记 [待办清单](../../../../待办清单.md))。 +结构冻结(非调参项,修订走本文流程):技能类型枚举封闭、每池恰一普攻、每池增益 ≤1、死亡即不动手(摇定后兑现前死亡作废不进账)、每结算每存活敌恰行动一次、行序、先作用后推进、固定顺位、**行集构成纪律(行集内 enemy_id 唯一 + 同带键多行文件内相邻且行序 = 声明序 = 生成序 + 行集实例总数 ≤ 4)**、零随机(本系统自身语义零随机不变——摇号与掷点随机一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现,单敌出招轨迹可独立复放)。联动纪律:技能倍率 × 攻击(伤害拍支配)、权重 × 冷却 × 保底(池节奏三联动)禁止独立调参,联调须重跑方向性预检并同步登记册(登记 [待办清单](../../../../待办清单.md))。 ## 验收标准 @@ -298,7 +298,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 - 触发条件:条件不满足的技能不进可摇集合与保底集合(保底禁止逼出条件不满足的技);条件求值零随机、同种子回放逐位复现;闩型条件首次为真后整场保持(治疗抬血不回锁);每池至少一行无条件特殊技(加载校验);缺省无 trigger 字段=无条件技,旧表零变化。 - 死亡即不动手:摇定后、兑现前被杀——本拍技能作废(零行动明细行),不进冷却、不进保底计数;行动完成后才死——已兑付已进账;对已死亡单位上报受击被拒绝且状态不变。 - 空池不可能:每池恰一行普通攻击(域校验),普攻冷却恒 0 → 任意实例任意拍可摇集合恒非空。 -- 伤害拍读值:读值 = 基线 × 倍率;普攻 = 倍率 1 特例;施放拍恒为 0(原伏击读值条随伏击退役作废——2026-09-20 八型批)。 +- 伤害拍读值:读值 = 基线 × 倍率;普攻 = 倍率 1 特例;施放拍恒为 0。 - 警觉授予:踩 N 颗雷叠 N 层、逐层直授无上限;按个体归属——每个存活敌各发一条自己的实例(全体存活敌规则,见[增益状态](增益状态.md)〈目标规则与个体归属〉节)。 - 目标顺位:多敌时单体目标恒为生成序最前存活者,杀最前后顺延;杀至空返回空;单敌时顺位与范围效果重合。 - 快照抗改表:实例化后修改敌人表,已生成单位的数值投影与实例池逐字不变;新实例才用新表值。 diff --git a/design/gdd/systems/排雷循环/地形变异.md b/design/gdd/systems/排雷循环/地形变异.md index caa9995a..453fdfd2 100644 --- a/design/gdd/systems/排雷循环/地形变异.md +++ b/design/gdd/systems/排雷循环/地形变异.md @@ -1,13 +1,13 @@ # 地形变异 > 一句话:格子的非雾变异(荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘)与 Boss 图整图变异(贫矿脉),挖掘中可遭遇的地貌偏离 -> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地;首个整图变异随 2026-10-04 全局作用域变异首发批落地);现行为 v1.2 +> 状态:已定稿;现行为 v1.3 ## 设计目的 地形变异是一个定义层的框架:它允许给棋盘上的格子挂上"变异"标记,让某片格子在基础扫雷规则之外多一层玩家在挖掘中可遭遇的偏离。没有这个框架,关卡之间的差异只能靠雷的数量单调缩放,"每关解锁新元素"的推进感和越深越险的地貌变化都无处安放。 -变异带来的行为改变发生在数据侧:格子只是多携带一条数据,读取到它的系统按数据行动,规则本体一个分支都不加。首批变异类型已按两关地形背景定稿(第一关平原/密林基线:荆棘丛 + 藤蔓缠绕;第二关幽暗地域:岩浆 + 烬覆),第三关内容批随灰矮人矿城追加第三对(落石 + 矿尘——幽暗地域最深层),机制全部经由「效果 / 触发 / 布置约束」三枚举声明——新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方。 +变异带来的行为改变发生在数据侧:格子只是多携带一条数据,读取到它的系统按数据行动,规则本体一个分支都不加。变异类型按各关地形背景定稿(第一关平原/密林基线:荆棘丛 + 藤蔓缠绕;第二关幽暗地域:岩浆 + 烬覆;第三关灰矮人矿城:落石 + 矿尘——幽暗地域最深层),机制全部经由「效果 / 触发 / 布置约束」三枚举声明——新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方。 ## 系统范围 @@ -21,7 +21,7 @@ | 数据侧行为约定 | 变异是格子的只读数据,随图生灭;读取方按数据行动 | | 零特判原则 | 禁止任何系统为变异改写扫雷规则本体——框架的承重约束(见核心规则) | | 枚举抽象 | 每类变异以「效果(effect)/ 触发(trigger)/ 布置约束(placement)」三枚举声明机制;读取方按枚举路由,不按类型名分支 | -| 反制道具配套义务 | **已作废(2026-10-03 用户终裁)**——原义务「每定稿一类变异,顺带配至少一件反制道具」(义务在本系统,道具本体归秘宝;首批四类型的兑现改排 Alpha——2026-09-19 用户拍板):同调位反制件=冒险周期常驻资源对抗关卡周期局部威胁,层级错配,设计废弃(详见下文 §反制道具配套义务 节注记) | +| 反制道具配套义务 | **已作废(2026-10-03 用户终裁)**——反制道具本体归秘宝:同调位反制件=冒险周期常驻资源对抗关卡周期局部威胁,层级错配,设计废弃(详见下文 §反制道具配套义务 节注记) | 不负责: @@ -62,20 +62,20 @@ | 矿尘 | region | 数字遮蔽(hide_number) | 打开且显示数字时(on_number_shown) | 任意格(any) | 第 3 关 | deep_underdark | — | | 贫矿脉 | global | 资源面偏斜(resource_face) | 整图恒在(always) | 任意格(any,无格子布置域) | 第 2 关 | 通配(∅) | — | -机制口径(2026-09-19 定稿批): +机制口径: - 伤害型:挖开变异格(含连锁揭示,chain 通道同口径)在轮末结算逐行兑现扣生命——地形后果同挖雷口径,非奖励、封印格直挖不作废;危险格恒不吃变异(双层叠罚污染逐行归因,首版排除)。 - 信息型:已开且显示数字时该格真实数字不呈现(呈现层读取遮蔽;挖掘规划被迫降级为盲区推理)。呈现层读取不回灌规则本体——模拟试玩走查询面、不经遮蔽,读数口径不受影响。 - 直伤量为加法核小整数(effect_value ∈ [1,9],行值 provisional 归难度曲线与Boss);每格携带单类型单 id。 - 变异格未开时无预告呈现(遭遇式;视觉标识归表现层升级批)。 -候选池门控(框架级现行机制):一种变异要进入本关的布置候选,须同时满足三个条件——它的解锁关号不大于当前关卡序号(直接整数比较)、它声明的地形(board_types)与本地形有交集(声明为空集等于通配)、且节点身份匹配(scope=global 行仅 Boss/精英节点入池,普通战斗节点静默跳过——2026-10-04 全局作用域变异批增第三维;elite 系前向词位,首发零表行)。候选池为空是合法状态:静默布置一张无变异的普通图,不返回错误、不警告。门控谓词与取值域见本文候选池门控节与变异表字段定义。 +候选池门控(框架级现行机制):一种变异要进入本关的布置候选,须同时满足三个条件——它的解锁关号不大于当前关卡序号(直接整数比较)、它声明的地形(board_types)与本地形有交集(声明为空集等于通配)、且节点身份匹配(scope=global 行仅 Boss/精英节点入池,普通战斗节点静默跳过;elite 系前向词位,现行零表行)。候选池为空是合法状态:静默布置一张无变异的普通图,不返回错误、不警告。门控谓词与取值域见本文候选池门控节与变异表字段定义。 ### 全局作用域型(scope=global——Boss 图整图变异) region 型变异是「格子级」的:布置段往候选格域写格子快照。global 型变异是「整图」的:整图一个类型生效,不落任何格子(棋盘持有整图变异记录,逐格变异记录恒空)。**每图一型的整图推广(2026-10-04 用户裁决)**:普通图带 region 片,Boss/精英图带 global 型——两类图各自至多一型。 -**替换制**:Boss/精英图命中全局型时,布置段跳过 region 布置(该图既无 region 片、也无格子级变异标记)——L2 完美 Boss 承伤已越 ≤50% 带,region 叠全局的叠加制火上浇油,不采纳。**兜底回落**:Boss/精英图的全局候选池为空时(含第 1 关 Boss 解锁门控未达=免疫,第 1 关是过滤器不是墙的教学保护)回落 region 布置,即回批前行为(保守向后兼容,防配置缺行静默裸奔——provisional)。 +**替换制**:Boss/精英图命中全局型时,布置段跳过 region 布置(该图既无 region 片、也无格子级变异标记)——L2 完美 Boss 承伤已越 ≤50% 带,region 叠全局的叠加制火上浇油,不采纳。**兜底回落**:Boss/精英图的全局候选池为空时(含第 1 关 Boss 解锁门控未达=免疫,第 1 关是过滤器不是墙的教学保护)回落 region 布置(保守向后兼容,防配置缺行静默裸奔——provisional)。 **恒定制**:第 2/3 关 Boss 图 100% 带一型(非掷定结果——配置事实;全局取用确定性,不消费布置随机流=零取号合法态)。首发型=**贫矿脉(skewed_veins)**:资源面偏斜(resource_face)——整图修正资源摇号分布,不动任何格子数据、不动生成端:进攻族(增伤/爆裂/穿刺/奥术)权重等比上浮,生存族(回血/护甲)权重按 effect_value% 下调,白名单三行(削弱/GP/行动点)恒不动,下调量按进攻族原权重比例重分配、正向池合计恒 77。玩家体验=回复与护甲类资源出现频率下降、攻击类资源出现频率上升(生存资源变薄、进攻资源变肥),玩家转向用进攻续命的主动策略——不是纯挨打。第 2/3 关两关同型(关间台阶由第 3 关既有新内容满足)。清图槽(clear_default/clear_blast)是独立池,不受偏斜影响。资源投影的执行面(摇号前权重合成、合成序=图级先件级后)归[地图战斗资源](../战斗循环/地图战斗资源.md)。 @@ -96,15 +96,15 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 - 候选格域 = 安全格 − 初始展开区,且排除危险格。 - 布置取数走专用随机流(variant_place,一板恰一 scope),换图/轮内刷新图各取号一次,确定性可复放。 - 生成器管线不布置变异(产物恒零变异格)——布置域的"未开"语义由设置顺序保障。 -- **全局作用域型决议(2026-10-04 首发批)**:Boss/精英图的全局型在装板序内前置于资源格设置之前决议(图级偏斜旋钮须在资源摇号前定型;全局门控与板无关,确定性取用不消费 variant_place 流)——命中即写整图字段并跳过本步的 region 布置(替换制);未命中则本步按上列规则原样执行(含兜底回落)。普通图路径零改动。 +- **全局作用域型决议**:Boss/精英图的全局型在装板序内前置于资源格设置之前决议(图级偏斜旋钮须在资源摇号前定型;全局门控与板无关,确定性取用不消费 variant_place 流)——命中即写整图字段并跳过本步的 region 布置(替换制);未命中则本步按上列规则原样执行(含兜底回落)。普通图路径零改动。 ### 反制道具配套义务 -**【已作废——2026-10-03 用户终裁】** 原义务:每定稿一类变异,必须顺带配套至少一件反制道具(针对该变异、给玩家提供应对手段的道具),不让任何变异成为只亏不赚的纯税。义务归属方是本系统;"反制"作为道具的一个维度,由秘宝的五维度框架承接,效果、时效与定价归秘宝定稿。首批四类型的反制兑现改排 Alpha(2026-09-19 用户拍板),类型行 counter_items 字段位已预留。 +**【已作废——2026-10-03 用户终裁】** 反制道具不再作为变异的配套义务:"反制"作为道具的一个维度,由秘宝的五维度框架承接,效果、时效与定价归秘宝定稿;类型行 counter_items 字段位已预留。 -**终裁理由(2026-10-03)**:原计划反制件入同调目录(局外装配、伴随整局、稀缺槽位)对抗按关绑定的局部威胁(unlock_level 关绑定),被定性为层级错配的失败设计——「拿冒险循环的东西对抗关卡循环」,等同做一个只对第三关生效的道具,其余关卡全部用不上;且关卡序列与变异分布固定,装配时信息完备,反制选牌退化为查表必带清单,坍缩随机构筑多样性。 +**终裁理由(2026-10-03)**:同调目录(局外装配、伴随整局、稀缺槽位)对抗按关绑定的局部威胁(unlock_level 关绑定)属层级错配——「拿冒险循环的东西对抗关卡循环」,等同做一个只对第三关生效的道具,其余关卡全部用不上;且关卡序列与变异分布固定,装配时信息完备,反制选牌退化为查表必带清单,坍缩随机构筑多样性。 -**处置**:①counter_items 字段保留恒空(合法态),承载形态待迭代 12 双层 BD 调研仲裁后重定——变异应对若做,只挂局内、贴近威胁出现的决策点;②变异=受控纯税现状维持(2026-09-20 用户已知情接受,延续有效),不再以反制道具为唯一兑现路径;③连带修订见秘宝.md v0.8(同批)。 +**处置**:①counter_items 字段保留恒空(合法态),承载形态待双层 BD 调研仲裁后重定——变异应对若做,只挂局内、贴近威胁出现的决策点;②变异=受控纯税现状维持,不再以反制道具为唯一兑现路径。 ## 依赖与输出 @@ -115,7 +115,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 | 上游 | [数据配置](../表现与支撑/数据配置.md) | 变异类型清单的表结构承载与统一读取;本系统是清单内容的回填责任方 | | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 布置段的编排执行位(棋盘设置顺序第 4 步)+ 伤害型兑付面(轮末结算逐行兑现) | | 下游 | [排雷玩法](排雷玩法.md) | 零特判义务的承接方:执行逻辑不按变异分支,只按格子数据行动 | -| 下游 | [秘宝](../跨局循环/秘宝.md) | 五维度框架"反制"维度的承接方——配套义务已作废(2026-10-03 终裁),维度承载待迭代 12 双层 BD 调研重定 | +| 下游 | [秘宝](../跨局循环/秘宝.md) | 五维度框架"反制"维度的承接方——配套义务已作废(2026-10-03 终裁),维度承载待双层 BD 调研重定 | | 相邻 | [行动经济](行动经济.md) | "地形成本修饰"价目钩子(不同格子不同价)暂缓启用,待变异类型扩展(见该文档 P1/P2 后置) | ## P0 最小闭环 @@ -129,8 +129,8 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 | 优先级 | 内容 | 后置原因 | |---|---|---| -| 迭代 12(调研前置) | 反制路径重定(原:首批四类型的反制道具兑现,counter_items 回填——已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 | -| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(全局作用域设计空间调研(已退役,git 历史可查);原需求卡片已退役);带 A 杠杆注册全局难度批(Beta 阶段,未排期)顺带读数只测不判;精英图留词表前向位(首发零表行) | +| 调研前置 | 反制路径重定(counter_items 回填义务已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 | +| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | 现行型=贫矿脉(资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见 git 提交史;带 A 杠杆注册全局难度批(Beta 阶段,未排期)读数只测不判;精英图留词表前向位(现行零表行) | | P2 | "地形成本修饰"价目钩子启用 | 由行动经济持有;启用须随变异类型扩展,与行动经济重议按格定价的接口 | | P2 | 变异解锁节奏复核 | "每关至少引入一个新元素"的推进节奏,随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)定稿复核 | | P2 | 变异格视觉标识与预告呈现 | 首批为遭遇式(未开无预告);标识位随表现层升级批 | @@ -144,9 +144,9 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 | 连通片下限 pack_min | int [1, pack_max];现行值读 `variation.tres` 表头 | 形状约束:单片至少几格连通成片,与 pack_max 合为成包尺寸域 | | 连通片上限 pack_max | int [pack_min, 9];现行值读 `variation.tres` 表头 | 定稿值(2026-09-19 用户拍板形状约束) | | 直伤量 effect_value | 荆棘丛 1 / 岩浆 2 / 落石 3 | 难度曲线与Boss(provisional,加法核 [1,9]) | -| 资源面偏斜 effect_value | 贫矿脉 30(生存族下调百分比;0=中性 off 锚;总期望微降 3-5% 为 provisional 设计目标——精确方向与幅度归读数批判读只测不判) | 难度曲线与Boss(provisional,域 [0,50]——2026-10-04 首发批投值) | +| 资源面偏斜 effect_value | 贫矿脉 30(生存族下调百分比;0=中性 off 锚;总期望微降 3-5% 为 provisional 设计目标——精确方向与幅度归读数批判读只测不判) | 难度曲线与Boss(provisional,域 [0,50]) | -变异表字段集的现行口径(字段定义归变异表,条目归属即表行):标识 / 玩家可见名 / 解锁关号 / 作用域 / 效果 / 效果量 / 触发 / 布置约束 / 地形(board_types)/ 反制道具绑定(counter_items,恒空保留——回填义务 2026-10-03 作废,承载形态待迭代 12 重定)。 +变异表字段集的现行口径(字段定义归变异表,条目归属即表行):标识 / 玩家可见名 / 解锁关号 / 作用域 / 效果 / 效果量 / 触发 / 布置约束 / 地形(board_types)/ 反制道具绑定(counter_items,恒空保留——承载形态待双层 BD 调研重定)。 ## 验收标准 @@ -154,5 +154,5 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 - 零特判(负验收):排雷玩法的挖格、封印、连锁展开执行路径中不存在任何按变异类型分支的代码;读取方按 effect/trigger/placement 枚举路由。 - 数据生命周期:格子携带的变异是只读数据——战斗初始化末段布置、随图消亡,布置后零运行时写入,无跨图存续;生成器产物恒零变异格。 - 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片格数落在 [pack_min, pack_max] 内。 -- 配套义务闭环(**已作废,2026-10-03 终裁**):原「定稿批须含反制兑现条目否则验收不通过」随反制道具配套义务一并作废;counter_items 恒空为合法态。 -- 全局作用域型(2026-10-04 首发批):替换制生效——Boss 图恰一行整图变异+零格子级变异标记;普通图 region 路径逐位不变(同种子布置/摇号快照与批前基线逐项比对);off 态零扰动(effect_value=0 资源摇号与无偏斜逐位相同,白名单三行任何状态逐位不动);L1 Boss 零全局变异;Boss 图全局池空回落 region;全局取用零取号(确定性,不消费布置随机流);资源面偏斜正向池合计恒 77。 +- 配套义务闭环(**已作废,2026-10-03 终裁**):反制兑现不作为验收条目;counter_items 恒空为合法态。 +- 全局作用域型:替换制生效——Boss 图恰一行整图变异+零格子级变异标记;普通图 region 路径逐位不变;off 态零扰动(effect_value=0 资源摇号与无偏斜逐位相同,白名单三行任何状态逐位不动);L1 Boss 零全局变异;Boss 图全局池空回落 region;全局取用零取号(确定性,不消费布置随机流);资源面偏斜正向池合计恒 77。 diff --git a/design/gdd/systems/排雷循环/排雷玩法.md b/design/gdd/systems/排雷循环/排雷玩法.md index 51db2402..f86e5f44 100644 --- a/design/gdd/systems/排雷循环/排雷玩法.md +++ b/design/gdd/systems/排雷循环/排雷玩法.md @@ -1,13 +1,13 @@ # 排雷玩法 > 一句话:挖格、封印、连锁展开等扫雷规则本体 -> 状态:已定稿(自旧体系迁移) +> 状态:已定稿 ## 设计目的 排雷玩法是扫雷规则本体:玩家在地牢厅室里做的每个动作——挖格、封印、移动——都由它裁决,并把发生的事实如实上报给全项目。它不决定每个动作花多少钱(系统资源归[行动经济](行动经济.md)),也不决定收益怎么兑现成战斗效果(归[战斗结算](../战斗循环/战斗结算.md))——它只保证棋盘上的事实真实、顺序确定:数字从不说谎,每个拒绝有据可查。没有它,[棋盘生成](棋盘生成.md)生成的板没有发生地,战斗结算也没有事实来源。 -格子的正式名称全库统一(2026-10-11 用户裁):有惩罚的格子一律称**危险格**(原内部名「雷格」与界面名「惩罚格」统一并退役,见[术语表](../../术语表.md);同日补裁=无具体类型划分,怪物巢穴类型概念退役)——惊动危险格则怪物倾巢而出、敌方占得先机;封印叫**控制**(标中则化险为利)、连锁展开叫**坍塌显形**(挖穿薄壳,整片塌陷露出)、标错叫**控制失败**。本文一律使用「危险格」。 +格子的正式名称全库统一(2026-10-11 用户裁):有惩罚的格子一律称**危险格**(见[术语表](../../术语表.md);同日补裁=无具体类型划分,怪物巢穴类型概念退役)——惊动危险格则怪物倾巢而出、敌方占得先机;封印叫**控制**(标中则化险为利)、连锁展开叫**坍塌显形**(挖穿薄壳,整片塌陷露出)、标错叫**控制失败**。本文一律使用「危险格」。 ## 系统范围 @@ -49,7 +49,7 @@ 移动不花行动点:点任何已开格,小人沿已探明区一次走到位,"已探明区"包括踩过的危险格残址。点击已开格的唯一含义就是移动——本作没有经典扫雷里"双击数字格一键翻开周围"的 chord(双击快开),每一格的兑现都必须花行动点。 -挖已封印的格是合法动作(2026-09-19 封印不可逆批用户拍板):封印印记是一次性承诺、没有撤旗动作,直接挖开就是对承诺的兑现——封印印记随挖掘消失、该封印轮末不再判定;挖开封印格的兑付改判(标中不发 / 安全格零奖励等四情况)归[战斗结算](../战斗循环/战斗结算.md)。 +挖已封印的格是合法动作(2026-09-19 用户拍板):封印印记是一次性承诺、没有撤旗动作,直接挖开就是对承诺的兑现——封印印记随挖掘消失、该封印轮末不再判定;挖开封印格的兑付改判(标中不发 / 安全格零奖励等四情况)归[战斗结算](../战斗循环/战斗结算.md)。 | 动作 | 合法对象 | 棋盘面拒绝情形 | |---|---|---| @@ -215,7 +215,7 @@ | 优先级 | 内容 | 后置原因 | |---|---|---| | P2 | 探测类道具的查询接口 | 接口已由身份解析只读面桥接,本系统不预写 | -| P2 | 地形变异接入的格面规则 | 地形变异已定稿落地(2026-09-19 四类型两轴×两关、2026-09-20 枚举化 schema 扩批),新增类型走双方修订流程 | +| P2 | 地形变异接入的格面规则 | 地形变异已定稿落地,新增类型走双方修订流程 | ## 调参表 @@ -228,7 +228,7 @@ - 数字恒真:任意已开安全格的数字恒等于其 8 向相邻雷数;出生区无雷、数字恒真、初始展开不吞全图三条结构前提任一不满足时,装板被拒绝。 - 初始展开恰等:装板后翻开的格集合恰为"出生 3×3 加连通开阔地"——不止 3×3,也不外扩一圈;全程免费、恒无格面资源(封锁格)、计入清图进度;跨轮不重放。 - 连锁免费且遇封印即止:一次触发连锁翻开任意多格,扣费恒为首格按价计的一笔;封印格不被链开、不作传播跳板;连锁格计入清图进度、资源资格照常。 -- 挖封印格放行(封印不可逆批 2026-09-19):有封印格直接挖开被受理——封印印记随挖掘消失、该封印轮末不判;重复封印仍被"已有封印"拒绝;兑付改判四情况(标中不发 / 安全格零奖励)归战斗结算。 +- 挖封印格放行:有封印格直接挖开被受理——封印印记随挖掘消失、该封印轮末不判;重复封印仍被"已有封印"拒绝;兑付改判四情况(标中不发 / 安全格零奖励)归战斗结算。 - 已引爆危险格可通行:挖雷后轮次不结束,小人可站、可经已开区穿行续挖;危险格不计清图、不可再挖再封印。 - 移动合法且预览同源:目标未开或无已开区连通路径时拒绝;路径预览与实际执行逐格相同;移动免费、零事件。 - 批次仲裁与到达序无关:同一批意图按任意顺序提交,结束路径与结算结果一致;赢家定出后其余意图丢弃——零棋盘效果、零扣费、零事件,且丢弃区别于拒绝。 diff --git a/design/gdd/systems/排雷循环/棋盘生成.md b/design/gdd/systems/排雷循环/棋盘生成.md index 9559015d..53dc353f 100644 --- a/design/gdd/systems/排雷循环/棋盘生成.md +++ b/design/gdd/systems/排雷循环/棋盘生成.md @@ -1,7 +1,7 @@ # 棋盘生成 > 一句话:棋盘怎么生成、怎么保证可推理可清图 -> 状态:已定稿(自旧体系迁移);现行为 v1.2 +> 状态:已定稿;现行为 v1.3 ## 设计目的 @@ -15,7 +15,7 @@ | 负责 | 说明 | |---|---| -| 四阶段确定性生成管线 | 读参数 → 布雷 → 生成-验证 → 产出上报;顺序冻结,不调换、不跳步(变异布置段 2026-09-20 随棋盘设置顺序拍板移出管线) | +| 四阶段确定性生成管线 | 读参数 → 布雷 → 生成-验证 → 产出上报;顺序冻结,不调换、不跳步(变异布置段已移出管线) | | 棋盘生成参数表 | 全项目第一张按进度键(关卡序号 × 节点深度)回填的配置表;表结构归本系统定 | | 可推理率度量与达标判定 | 生成时刻的质量承诺,含计算口径与定义版本号 | | 出生区与反退化保证 | 出生 3×3 无雷、最小安全格数、开局白给板拒绝、清图可达性(变异不落出生区与展开域由布置段顺序保障) | @@ -94,11 +94,11 @@ | 反退化规则 | 内容 | |---|---| -| 先布后删 | 先把 N 颗雷在"全格 − 出生 3×3"上布完,再把剃雷域内的雷移除——只减不增、不重投、无迭代,必然终止且可复现;实际雷数与 N 的差额随指标观测。**剃雷域已收窄(2026-10-05 初始展开收窄批)**:从「开局免费展开(flood)域∪外扩一圈」缩到「出生 3×3 ∪ 外扩 r 环」(切比雪夫距离 ≤1+r,r=shave_ring_radius 现行 1 → 5×5=25 格)——全域剃雷=开局免费展开巨大(10×10 板 R₀ 均值 68.6=板面 68.6%)的根因;收窄后开局免费展开=出生邻域剃雷诱发的自然连锁,均值降至板面约四成(10×10 实测 39.7) | +| 先布后删 | 先把 N 颗雷在"全格 − 出生 3×3"上布完,再把剃雷域内的雷移除——只减不增、不重投、无迭代,必然终止且可复现;实际雷数与 N 的差额随指标观测。**剃雷域**:「出生 3×3 ∪ 外扩 r 环」(切比雪夫距离 ≤1+r,r=shave_ring_radius 现行 1 → 5×5=25 格)——全域剃雷=开局免费展开巨大(10×10 板 R₀ 均值 68.6=板面 68.6%)的根因;现口径下开局免费展开=出生邻域剃雷诱发的自然连锁,均值降至板面约四成(10×10 实测 39.7) | | 出生区安全 | 出生 3×3 与开局免费展开域内恒无雷;变异不落两域由布置段顺序保障(非本管线义务) | | 开局白给板拒绝 | 开局免费展开域禁止覆盖全部安全格——等于即退化板,尝试弃用重试;运行期另有同义兜底不变式,归[排雷玩法](排雷玩法.md) | | 清图可达性 | 每个安全格都必须能从出生区沿安全格八向连通走到;带孤岛安全格的板判非法,不进降级候选 | -| R₀≤cap 重掷闸(2026-10-05 初始展开收窄批) | 每次尝试出板后实测自然 R₀(开局免费展开格数),超过该行 r0_max_cap 即整板作废同流重试——合法性先于质量评分(同白给板先例);全部尝试超阈 → 既有三分出口接受最不坏+非法产物标记诚实降级,玩家永不卡死;闸触发次数随指标集 r0_cap_rejected 观测(占比过高=剃雷半径与闸配比失衡信号) | +| R₀≤cap 重掷闸 | 每次尝试出板后实测自然 R₀(开局免费展开格数),超过该行 r0_max_cap 即整板作废同流重试——合法性先于质量评分(同白给板先例);全部尝试超阈 → 既有三分出口接受最不坏+非法产物标记诚实降级,玩家永不卡死;闸触发次数随指标集 r0_cap_rejected 观测(占比过高=剃雷半径与闸配比失衡信号) | 清图可达性与可推理率是两道独立的闸:合法性先查、质量分后算——一张"分高但通不了"的图没有意义。另一条推理前提也由本系统保证:数字恒真,每个非危险格的数字恒等于它的八邻雷数,整局推理都建立在这句话上。 @@ -146,7 +146,7 @@ ### 图类型标签与第三轴预留:主题恒定、Boss 板有座位 -每张图带一个图类型标签(board_type 字段;图类型即图的主题、题材,玩家侧显示名「地图类型」)。同关卡的所有图,主题静态恒定——不存在逐图重掷主题的接口,"不会上钓鱼的当"是结构保证而非文案。词表现行 v1.1(2026-09-20 第三关内容批增补;v1.0 两词 2026-09-19 定稿):**dungeon(地牢基线)/ underdark(幽暗地域)/ deep_underdark(灰矮人矿道方向)**,现行值见 board_gen.tres(L1 = dungeon,L2 = underdark,L3 = deep_underdark);域校验 = 词表成员检查(词表归棋盘参数表,扩词随内容批走修订)。这组标签是表现侧换色板与[地图战斗资源](../战斗循环/地图战斗资源.md)图类型差异化插槽的数据源。本节为数据约定,无计算。 +每张图带一个图类型标签(board_type 字段;图类型即图的主题、题材,玩家侧显示名「地图类型」)。同关卡的所有图,主题静态恒定——不存在逐图重掷主题的接口,"不会上钓鱼的当"是结构保证而非文案。词表现行 v1.1:**dungeon(地牢基线)/ underdark(幽暗地域)/ deep_underdark(灰矮人矿道方向)**,现行值见 board_gen.tres(L1 = dungeon,L2 = underdark,L3 = deep_underdark);域校验 = 词表成员检查(词表归棋盘参数表,扩词随内容批走修订)。这组标签是表现侧换色板与[地图战斗资源](../战斗循环/地图战斗资源.md)图类型差异化插槽的数据源。本节为数据约定,无计算。 参数表的键是关卡序号 × 节点深度,难度沿这两条轴雕刻;精英与 Boss 修饰是预留的第三条轴。本系统不定任何修饰数值,只锁定落点约定——这也是[关卡节点地图](../冒险循环/关卡节点地图.md)与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)两份文档的输入: @@ -195,7 +195,7 @@ | P1 | 与排雷玩法的展开域回验集成 | 回验两臂登记在对方文档,集成随对方排期 | | P2 | 推理域扩展(solver_rules 启用其他规则集或新增信息源) | 改可推理率定义 = 文档修订,MVP 冻结 | | P2 | 生成异步化与成本闸正式值定稿 | 实现期决策,随性能预算批 | -| P2 | ~~变异布置内容接入~~(已完成——2026-09-20 首批类型定稿批:布置执行位改排战斗初始化第 4 步,管线零布置义务化) | — | +| P2 | ~~变异布置内容接入~~(已完成——布置执行位在战斗初始化第 4 步,管线零布置义务) | — | ## 调参表 @@ -209,12 +209,12 @@ | solver_rules | enum {single, single_subset} | single_subset(冻结,非调参) | 推理规则域 | | min_safe_count | int [1, 999] | 现行值见 board_gen.tres | 最小安全格数下限 | | max_gen_attempts | int [1, 32] | 域 [1, 32],现行按行取值见 board_gen.tres | 生成-验证重试上限;受成本闸联合约束 | -| board_type | String,词表 {dungeon, underdark, deep_underdark} | 现行值见 board_gen.tres(词表 v1.1,2026-09-20 第三关内容批增补) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 | -| shave_ring_radius | int [0, 2] | 现行 1(board_gen.tres 全行) | 先布后删剃雷半径:剃雷域=距出生中心切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格;r=0 即只剃出生 3×3 本身=无环剃雷)。**2026-10-05 初始展开收窄批新参数**(调参项非结构冻结) | -| r0_max_cap | int [出生格数, 板格数一半](护栏,违例加载期致命;出生格数=出生区边长自乘,读出生区行) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** | -| 出生区边长 | int [3, 5],奇数(中心对称,side = 2r+1);现行值读 board_gen.tres 表头 | 表头全局单值(非逐行) | 玩家出生区为以出生中心对称的 side×side 方区,区内恒无雷;布雷域基与 r0_max_cap 护栏下限均由它导出(格数 = side²)。**2026-11-02 架构整改批新参数**(原为代码常量,入表后格数零字面量) | +| board_type | String,词表 {dungeon, underdark, deep_underdark} | 现行值见 board_gen.tres(词表 v1.1) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 | +| shave_ring_radius | int [0, 2] | 现行 1(board_gen.tres 全行) | 先布后删剃雷半径:剃雷域=距出生中心切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格;r=0 即只剃出生 3×3 本身=无环剃雷)。调参项非结构冻结 | +| r0_max_cap | int [出生格数, 板格数一半](护栏,违例加载期致命;出生格数=出生区边长自乘,读出生区行) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面锚现行值 = 45/43/51/59(10×10 行经用户裁上调——r=1 自然均值 39>30 结构性倒挂;其余行维持 30% 锚) | +| 出生区边长 | int [3, 5],奇数(中心对称,side = 2r+1);现行值读 board_gen.tres 表头 | 表头全局单值(非逐行) | 玩家出生区为以出生中心对称的 side×side 方区,区内恒无雷;布雷域基与 r0_max_cap 护栏下限均由它导出(格数 = side²)。入表后格数零字面量 | -结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段 2026-09-20 已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记在案,调整走文档修订)、先布后删语义。 +结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记在案,调整走文档修订)、先布后删语义。 ## 验收标准 @@ -230,6 +230,6 @@ - 降级诚实:零合法板照常出图,必带非法产物标记与最高级告警;进程不死锁,玩家界面得到诚实告知。 - 加载期校验:布雷数下限、计数可行性、标签非空等违例组合加载期致命。 - 黄金图回归:手工核验小板集的可推理率输出与登记整数对逐位相等(整数对比对,禁浮点容差);换生成参数(推理定义、信息源、定义版本号)必须重制向量并入版本库。 -- R₀≤cap 闸(2026-10-05 初始展开收窄批):每张出图自然 R₀ ≤ 该行 r0_max_cap(合法板),或带非法产物标记(接受最不坏·诚实降级);闸触发次数入指标集 r0_cap_rejected。 -- 剃雷域参数化(同批):剃雷域=出生中心切比雪夫 ≤1+shave_ring_radius 的方域,出图 ring_removed ≤ 域内候选危险格数 (3+2r)²−9;同种子布雷序列与收窄前逐位一致(零 RNG 消费变化)。 +- R₀≤cap 闸:每张出图自然 R₀ ≤ 该行 r0_max_cap(合法板),或带非法产物标记(接受最不坏·诚实降级);闸触发次数入指标集 r0_cap_rejected。 +- 剃雷域参数化:剃雷域=出生中心切比雪夫 ≤1+shave_ring_radius 的方域,出图 ring_removed ≤ 域内候选危险格数 (3+2r)²−9。 - 表实一致:配置表字段与棋盘参数表字段定义一致。 diff --git a/design/gdd/systems/排雷循环/行动经济.md b/design/gdd/systems/排雷循环/行动经济.md index 229cb45b..4c693029 100644 --- a/design/gdd/systems/排雷循环/行动经济.md +++ b/design/gdd/systems/排雷循环/行动经济.md @@ -1,7 +1,7 @@ # 行动经济 > 一句话:每轮行动点怎么花、停手与刷新的代价 -> 状态:已定稿(自旧体系迁移);现行为 v1.4 +> 状态:已定稿;现行为 v1.5 ## 设计目的 @@ -18,7 +18,7 @@ | 负责 | 说明 | |---|---| | 行动点(当前池) | 全项目唯一扣减入口:余量检查、扣费、结束判定在同一个原子事务里完成,不允许双重折算 | -| 统一价目 | 挖 / 封印同一价目(表值见 action_economy.tres;移除动作已随封印不可逆批 2026-09-19 退役);移动与连锁展开免费(冻结项,不参与调参) | +| 统一价目 | 挖 / 封印同一价目(表值见 action_economy.tres;移除动作已退役);移动与连锁展开免费(冻结项,不参与调参) | | 轮次结束仲裁 | 清图、停手、耗尽三种结束方式同时成立时,按固定优先级只裁出一个赢家 | | 储备行动点池 | 停手转入、刷新支出、战斗结束清零(详见核心规则) | | 对下游的经济契约 | 五条契约约束收益兑现侧,由战斗结算负责对账验收 | @@ -55,7 +55,7 @@ | 动作 | 花费 | 说明 | |---|---|---| | 挖开格 | 标准价(见 action_economy.tres) | 只能挖小人 8 向相邻的格子;若触发连锁展开(flood fill 式整片翻开),连锁翻开的部分免费,且计入清图进度 | -| 封印 | 标准价(见 action_economy.tres) | 同样限相邻格。封印印记只是棋盘上的标记,不是背包里的实物,想用多少有多少——它的稀缺性完全由"要花一次标准价行动点"承载。封印印记是一次性承诺(封印不可逆批 2026-09-19):落子就没有移除动作,纠错 = 直接挖开该格 | +| 封印 | 标准价(见 action_economy.tres) | 同样限相邻格。封印印记只是棋盘上的标记,不是背包里的实物,想用多少有多少——它的稀缺性完全由"要花一次标准价行动点"承载。封印印记是一次性承诺:落子就没有移除动作,纠错 = 直接挖开该格 | 不花钱的有两件事:移动小人(点已翻开的格子走过去,仅限已探明区域)和连锁展开。这两项免费是冻结设计,服务"边缘探索不心疼"的氛围,不是经济杠杆。 @@ -79,7 +79,7 @@ ### 停手与储备行动点 -停手是玩家在挖掘期任意时刻的主动决定:立即结束本轮,剩余行动点按 1:1 原值存入储备池——基线没有乘数、没有加成。图没开完,下一轮接着在同一张图上挖。停手不是收入来源,而是纯粹的风险管理工具:它买到的是"退出权",不是战斗收益。停手意图经排雷玩法的批次提交入口进入账本(保证单一结算序),由账本仲裁后自行外发轮次结束消息。**转存率参数化(迭代 22 秘宝批反哺写入,2026-10-12)**:转存率实现为停手收轮时的转存率参数——缺省 100=1:1 与旧口径逐位一致;秘宝「储备罐」注入 125=1.25:1(整数除法向下取整——每 4 点剩余 AP 多转 1 点 RAP,零头顺延向下);无装配时行为与参数化前逐位相同。转存率归秘宝操作包络参数,本账本的仲裁与发射结构不变。 +停手是玩家在挖掘期任意时刻的主动决定:立即结束本轮,剩余行动点按 1:1 原值存入储备池——基线没有乘数、没有加成。图没开完,下一轮接着在同一张图上挖。停手不是收入来源,而是纯粹的风险管理工具:它买到的是"退出权",不是战斗收益。停手意图经排雷玩法的批次提交入口进入账本(保证单一结算序),由账本仲裁后自行外发轮次结束消息。**转存率参数化**:转存率实现为停手收轮时的转存率参数——缺省 100=1:1;秘宝「储备罐」注入 125=1.25:1(整数除法向下取整——每 4 点剩余 AP 多转 1 点 RAP,零头顺延向下)。转存率归秘宝操作包络参数,本账本的仲裁与发射结构不变。 储备池的生命周期以一场战斗为界:战斗内跨轮次、跨雷图一直累积;战斗结束立刻清零。清零必须在界面上可见,防止玩家觉得"攒的钱凭空没了"。MVP 阶段储备池没有上限。 @@ -91,7 +91,7 @@ 停手与刷新合起来构成这本账的基线节拍:满行动点一轮停手,正好攒够一次刷新。行动点修正队列会扰动该节拍的实际兑现(+1 轮可多挖一格),不变式本身不动;对账归曲线调参批。 -### 换图系专长对储备与刷新的改写(已实装——2026-11-01 迭代 46 落表 `feats.tres`) +### 换图系专长对储备与刷新的改写(已实装,落表 `feats.tres`) 换图系两件基座分别改写 RAP 的来源与刷新价格。它们只给持有专长的玩家增加规则,不改变无专长时的基线账本。 @@ -104,15 +104,15 @@ 无矿脉储能时,挖格不新增 RAP;无省力周转时,刷新成本仍读全局基值。后续输出、生存与资源专长如何使用成功刷新这个事实,归[战斗结算](../战斗循环/战斗结算.md)。 -### 下轮行动点修正(格面资源八型批 2026-09-20) +### 下轮行动点修正 -格面资源八型批(2026-09-20)新增 action 型格面资源:正向行 ap_up = 下轮行动点 +1,负向行 ap_drain(迟滞)= 下轮行动点 −1。修正不在授予当轮生效:结算期经行动经济的行动点修正队列登记(同轮多笔按净值累加),下一轮开始时(开轮通知)一次性兑现——兑现值 = 基线 ap_per_round + 排队净值,下限 0,兑现后队列清零;排队净值不跨轮保留。明细在结算流水记效果行(effect_id=ap_delta)。 +action 型格面资源:正向行 ap_up = 下轮行动点 +1,负向行 ap_drain(迟滞)= 下轮行动点 −1。修正不在授予当轮生效:结算期经行动经济的行动点修正队列登记(同轮多笔按净值累加),下一轮开始时(开轮通知)一次性兑现——兑现值 = 基线 ap_per_round + 排队净值,下限 0,兑现后队列清零;排队净值不跨轮保留。明细在结算流水记效果行(effect_id=ap_delta)。 跨轮携带量口径随之改写:RAP 仍是唯一显式携带的系统资源(停手转存、玩家可见可花),行动点修正队列是第二携带量——一次性、自动清零、不可主动消费。 -### 跨冒险行动点加成轴(迭代 10 奖励重构批) +### 跨冒险行动点加成轴 -统一冒险加算区(归[冒险结构](../冒险循环/冒险结构.md))自迭代 10 起扩第四轴「行动点」:三选一 AP 件兑付后,加算区行动点轴累加(值读冒险表 bonus_ap_flat,全冒险获取至多 bonus_cap_ap 次)。加成经战斗开始入参的覆盖值通道传入战斗域(与生命/攻防上参同族),行动点侧兑现口径: +统一冒险加算区(归[冒险结构](../冒险循环/冒险结构.md))的第四轴「行动点」:三选一 AP 件兑付后,加算区行动点轴累加(值读冒险表 bonus_ap_flat,全冒险获取至多 bonus_cap_ap 次)。加成经战斗开始入参的覆盖值通道传入战斗域(与生命/攻防上参同族),行动点侧兑现口径: ``` 开轮(第 1 轮)行动点 = max(0, ap_per_round + 加成轴值 + 当轮排队净值) @@ -129,7 +129,7 @@ |---|---| | 一次性 | 每颗雷在一场战斗内至多兑付一次,资格随首次兑付消费 | | 当轮结算 | 封印印记只是当轮兑付的载体,不囤积到以后 | -| 资格认危险格实例 | 挖开重封同一格(封印印记随挖掘消失),不恢复已消费的资格——堵死"重复计费重封刷收益"的农场(注:移除动作已退役,封印不可逆批 2026-09-19) | +| 资格认危险格实例 | 挖开重封同一格(封印印记随挖掘消失),不恢复已消费的资格——堵死"重复计费重封刷收益"的农场(注:移除动作已退役) | | 不逐轮重复 | 同一颗雷的收益不会每轮反复发 | | 换图重置 | 新图的雷是新实例,资格自然重来 | @@ -141,7 +141,7 @@ 1. **单一当量**:所有收益来源用同一张效果对照表归一换算,不允许分源改率。 2. **封印标中锚**:封印标中的减益档位必须严格高于最低档安全格增益——否则没人愿意封印。 -3. **挖掘风险不等式**(2026-10-05 判式换代批重立——迭代14②号卡;原"敌方伏击暴露不等式"2026-09-20 随伏击机制退役作废,惩罚当量对账模型由本条重立承接,详细推导见下方推导节):聚合健康式 + 封印溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。 +3. **挖掘风险不等式**(详细推导见下方推导节):聚合健康式 + 封印溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。 4. **清图奖励大于零**,并预留按图类型差异化分支的结构位。 5. **清图支配性**:推到底清图的期望收益,不低于"确定格挖完就弃图刷新"的期望收益——否则清图玩法会被刷新策略淘汰。 @@ -150,14 +150,14 @@ 推导: ``` -条款 3(2026-10-05 判式换代批重立——三层口径并行立,2026-10-04 用户裁 P2; - 设计权威 = 方案报告 §四/§九(已退役;现行判式口径=本文条款③)) +条款 3(三层口径并行立,2026-10-04 用户裁 P2; + 现行判式口径=本文条款③) 条款 2(封印标中锚,既有不动):封印标中的减益档位必须严格高于最低档安全格增益。 - 条款 3(聚合健康式,接替旧界形式)——盲挖净期望非负: + 条款 3(聚合健康式)——盲挖净期望非负: (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 对全部参考板形 × u ∈ {1,2,3} - 下限 0 = 盲挖不为负;上限不设(旧 U_band 删,2026-10-04 grill Q3 裁)—— + 下限 0 = 盲挖不为负;上限不设(2026-10-04 grill Q3 裁)—— 收益端通胀防护由 β 比值带的 β_hi 独家承载(同一约束单一承载)。 封印边际引理(同池结构定理):危险格与安全格同池 + 极性矩阵同字典 ⇒ 封印标中兑付分布 ≡ 安全格 @@ -172,16 +172,12 @@ (a) 兑付溢价——标中兑付按同型正向 ×(1+δ)(改战斗结算兑付公式一处,机制载体 settlement.tres flag_hit_premium = 125,percent 域);(b) 专属池重摇不启 (危险格与安全格同池结构冻结不动,留给异池后备案一并裁)。 - 登记态(写入文档时点):δ 落地前现行值已知破(E[标中] = E_dig < 1.25·E_dig 恒假)—— - 按「登记已知破·限期闭合」纪律写入文档,本批 T4 机制小批闭合;δ=1.25 时条件二以 - 等号压线成立(严格大于须 δ>0.25,×1.5 档留后手)。 β 比值带(数值层看护,2026-10-04 用户裁 P4): β(u) = V_mine(u) ÷ E_dig(u) ∈ [1.2, 2.5] β_lo = 风险端定价下限(封印的避险价值为真);β_hi < (1−ρ̂)÷ρ̂ 蕴含条款3 恒成立。 现行读数 β = 1.71 / 1.37 / 1.17(u=1/2/3,名义 ρ)——u=1/2 带内,u=3(1.17) - 微破下限 = 登记态点名,不强制回滚。直伤雷行值/ρ 每次提案逐档检算落带 - (2026-10-04 grill Q3 裁:删「≤15pp·S 形」装饰条款)。 + 微破下限,不强制回滚。直伤雷行值/ρ 每次提案逐档检算落带。 η 读数(行为面,非判式——2026-10-04 用户裁 P1 乙降格读数): η = flag_hit ÷ flag_placed(分母 = 全部封印数,2026-10-04 grill Q5 裁), @@ -233,7 +229,7 @@ |---|---|---| | P1 | 储备池跨战斗携带开关 | 现行每场战斗清零(防滚雪球);是否解禁连刷策略,等实测数据说话 | | P1 | 清图奖励按图类型差异化 | 结构位已预留,内容归地图战斗资源的表设计 | -| P2 | 地形成本修饰(不同格子不同价) | MVP 价目均匀是有意简化;钩子已预留,待地形变异首批类型定稿。**2026-10-04 注记(全局作用域变异首发批)**:地形变异首批已定稿且 Boss 图整图型(贫矿脉)已落地——资源面偏斜走摇号权重投影、零行动点计费接触,本钩子(案D 规则改写向的按格 AP 差价)**留位不启用**,启用条件仍=未来出现真正按格差异化成本的地形型(随类型扩展重议) | +| P2 | 地形成本修饰(不同格子不同价) | MVP 价目均匀是有意简化;钩子已预留,待地形变异首批类型定稿。**注记**:地形变异首批已定稿且 Boss 图整图型(贫矿脉)已落地——资源面偏斜走摇号权重投影、零行动点计费接触,本钩子(按格 AP 差价)**留位不启用**,启用条件仍=未来出现真正按格差异化成本的地形型(随类型扩展重议) | | P2 | 行动点耗尽的教学提示 | 规则已定"0 点即收轮";若新手困惑,加提示不改规则,归教学引导 | ## 调参表 @@ -253,7 +249,7 @@ | (跨表)省力周转成本率 | percent | 表值 50%(已入 `feats.tres`) | 只改持有者的刷新价格;双基座叠加时不覆盖矿脉储能 | | (跨表)跨冒险行动点加成 | int [0,10] / int [0,99],冒险表 | adventure_table bonus_ap_flat / bonus_cap_ap(provisional) | 三选一 AP 件兑现值与全冒险次数上限;加成轴语义见「跨冒险行动点加成轴」节 | -字段名注记:2026-09-18 措辞完成批已全链对齐正式名——表字段与本文行名统一为 `refresh_cap_per_round`,刷新入口命名与表字段口径对齐(命名统一登记兑现,切片临时名零残留)。 +字段名注记:表字段与本文行名统一为 `refresh_cap_per_round`,刷新入口命名与表字段口径对齐(切片临时名零残留)。 跨字段校验:任一动作成本禁止超过每轮预算,违反即加载期致命(fail-fast)。各域上界(8 / 64)是 MVP 量级护栏而非推导界,随调参需要修订。 diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index 6e081116..3ee13988 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -1,7 +1,7 @@ # HUD框架 > 一句话:界面布局与呈现层契约 -> 状态:已定稿(自旧体系迁移) +> 状态:已定稿 ## 设计目的 @@ -59,11 +59,11 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 |---|---|---| | B 战斗画面 | 全宽,高读布局表 `stage_h`(背景三关变体+连续地面层高另读 `ground_h`) | 三关舞台背景+连续地面层、主角站桩立绘、敌人站桩立绘 ×1–3(**全站桩形态,2026-09-20 用户拍板:无框立绘+底座、状态小图标挂血条下,英雄卡/敌人卡退役**)、轮次阶段指示、结算明细带 | | C 角色信息 | 左下,宽读 `info_panel_w`,高 = 基准屏高 − B 区高 | 生命 / 攻击 / 储备数据框、状态效果槽、小人立绘 | -| D 扫雷图 | 中下,宽 = 基准屏宽 − C 区宽 − 列间距(原右下面板删除后横向加宽),高同 C 区 | 行动点条与按钮组、棋盘本体、toast 槽 | +| D 扫雷图 | 中下,宽 = 基准屏宽 − C 区宽 − 列间距,高同 C 区 | 行动点条与按钮组、棋盘本体、toast 槽 | 分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`(经 `ConfigDb.presentation.battle_layout` 读取);分区尺寸与组件落位的像素级裁决归 [battle.md](../../ux/battle.md),两份文档只写结构关系、不复写数值。三区结构与双舞台常驻是结构冻结项,修订走文档修订而非调参。节点链进度不在战斗屏呈现——它由关卡画面(选路覆盖层常驻形态)的节点态承载,见[关卡节点地图](../冒险循环/关卡节点地图.md)。 -**结论**:棋盘格边长由 [battle.md](../../ux/battle.md)「棋盘格尺寸公式」按棋盘区实测面积与板型算出;本文只判"塞不塞得进",不复制算式与算例。**分辨率档位(2026-09-30 迭代 9 三裁决案甲修订)**:两档=1280×800 基准档(本表全部定值的口径)+1920×1080 档=**全局等比**(stretch canvas_items+aspect keep——16:10 设计在 16:9 窗口为等比 1.35×+左右黑边各 ~96px);本节与各屏定值一律按 1280 基准档书写,1920 档由引擎等比承载、零重排。 +**结论**:棋盘格边长由 [battle.md](../../ux/battle.md)「棋盘格尺寸公式」按棋盘区实测面积与板型算出;本文只判"塞不塞得进",不复制算式与算例。**分辨率档位**:两档=1280×800 基准档(本表全部定值的口径)+1920×1080 档=**全局等比**(stretch canvas_items+aspect keep——16:10 设计在 16:9 窗口为等比 1.35×+左右黑边各 ~96px);本节与各屏定值一律按 1280 基准档书写,1920 档由引擎等比承载、零重排。 ``` 装板可行性(网格实高 ≤ 棋盘区可用高): @@ -134,11 +134,11 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 信息内容 | 只表达格面资源的类型(九类格面资源归五组色相呈现,色相/明度/画法规格归 [art-bible](../../../art/art-bible.md) §4.2);不表达极性(安全/雷)、不表达具体收益档位 | | 生命周期 | 资源身份装板期摇定(微光只是显示,不改任何游戏数据)→ 未开 ∧ 在 8 格内 → 亮;格子被挖开/连锁开/踩雷 → 灭;角色走远出圈 → 灭,走回 → 复亮;换图随旧图全重置 | | 关联与边界 | 信息本体(格面资源身份)归[地图战斗资源](../战斗循环/地图战斗资源.md);棋盘格态与动作合法性归[排雷玩法](../排雷循环/排雷玩法.md);与「接触带微光」同圈不同职责——接触带微光=可挖域的交互反馈光(「这里能挖」),类型微光=相邻格的类型先读(「这格是什么类型」) | -| 实装状态 | 呈现契约已定稿(五组色相经样张 v2 冻结 2026-09-28);**已实装(迭代 30 卡① 2026-10-17 入库)**——2026-09-30 核证的「呈现层仅接触带微光在跑,类型微光无独立实现」状态自此注销;在役实现(五组色相 = 呈现套件色相常量、格面微光子件 + 距离场渲染)与验收转正见本节末「验收标准」类型微光行,登记面归 [待办清单](../../../../待办清单.md)「未开格类型徽章呈现时机」条(已完成) | +| 实装状态 | 呈现契约已定稿(五组色相经样张 v2 冻结 2026-09-28);**已实装**——在役实现(五组色相 = 呈现套件色相常量、格面微光子件 + 距离场渲染),验收见本节末「验收标准」类型微光行,登记面归 [待办清单](../../../../待办清单.md)「未开格类型徽章呈现时机」条(已完成) | -口径史注记(防复发):本概念曾只活在待办清单登记与 art-bible 复述里,「常显」「全部未开格」等无范围表述于 2026-09-30 酿成理解事故;用户裁决「英雄周围 8 格」为正确口径并落位本节。教训=概念必须落地权威文档,零散复述不是定义。 +口径注记:概念必须落地权威文档,零散复述不是定义——本概念口径 =「英雄周围 8 格」,「常显」「全部未开格」等无范围表述不成立。 -两带分工注记(2026-10-17 迭代 30 卡①登记):类型微光实装后,棋盘外另有「卡顶色带」(徽章/条目顶边色带,悬赏与秘宝等面板格面条目顶边的类型色带)与本格面微光并存——卡顶带 = 条目级静态色带(一眼扫类型),格面微光 = 棋盘格内动态微光(相邻先读);两套载体不同、职责不同,**禁互为引用**。 +两带分工注记:类型微光实装后,棋盘外另有「卡顶色带」(徽章/条目顶边色带,悬赏与秘宝等面板格面条目顶边的类型色带)与本格面微光并存——卡顶带 = 条目级静态色带(一眼扫类型),格面微光 = 棋盘格内动态微光(相邻先读);两套载体不同、职责不同,**禁互为引用**。 ### 可挖域指示(接触带微光):「这里能挖」的交互反馈光 @@ -150,26 +150,26 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 画法 | 光画英雄格周界空间侧:正交邻墙=该侧整条边,斜向邻墙=共享角点+向两侧各延伸半条边;光只画英雄格一侧、不进墙格;色相=蓝族浅一档——画法细则归 [art-bible](../../../art/art-bible.md) §3.2 | | 生命周期 | 挖掘期呈现且呼吸(挖掘期唯一在动元素——art-bible §2.1;相位门控,结算期停息);减动效开启=呼吸停格(静态保留指界功能);换图/装板随新可挖域重算 | | 关联与边界 | 逐格指认=悬停金框(pattern 4 悬停预承诺——微光是常驻指界、悬停是意图预承诺,两概念分工);不携带类型/极性信息(那是类型微光的职责);零信息写入(纯呈现层) | -| 实装状态 | 已实装(呈现层现行在跑——2026-09-30 核证;程序化占位,画法终稿随样张批) | +| 实装状态 | 已实装(呈现层现行在跑;程序化占位,画法终稿随样张批) | ### 视野迷雾:菱形灯光区与黑暗边界 -> 本节是「视野迷雾」在全项目的唯一权威定义(2026-09-30 用户拍板立项):其他文档引用只许指路本节。定义一句话:**棋盘只完整渲染以角色为中心的菱形灯光区,区外一切呈迷雾黑暗,移动角色才逐步照亮**——像在洞穴里举灯探索。与已退役的「雾格」无关:雾格是格面机制(2026-09-15 退役),视野迷雾是纯呈现层机制,不改任何游戏数据。 +> 本节是「视野迷雾」在全项目的唯一权威定义(2026-09-30 用户拍板立项):其他文档引用只许指路本节。定义一句话:**棋盘只完整渲染以角色为中心的菱形灯光区,区外一切呈迷雾黑暗,移动角色才逐步照亮**——像在洞穴里举灯探索。与已退役的「雾格」无关:雾格是格面机制,视野迷雾是纯呈现层机制,不改任何游戏数据。 | 要素 | 口径 | |---|---| | 作用对象与范围 | 棋盘渲染可见性:灯光区内照常渲染;区外**已开格=暗淡记忆态**(灰显可见、数字可读——2026-09-30 拍板),区外**未开格=全黑不渲染** | | 生命周期 | 随角色位置实时变化;战斗内持续;换图按新板重置;已开/未开格态、数字真值、清图判定零影响(纯呈现遮罩——同板同动作序列的结算结果与无迷雾逐位一致) | | 关联与边界 | 与「未开格类型微光」同边界——灯光区起步半径=微光环 8 格(同圈起步,实测后可调);格态数据归[排雷玩法](../排雷循环/排雷玩法.md);黑暗区域渲染规格(暗淡态明度、迷雾过渡)归 [art-bible](../../../art/art-bible.md) 修订随实施批;初始展开收窄不在本案(后置与 Alpha 差异化批窗口合并再议) | -| 实装状态 | **已实装**(2026-10-03 迭代 11 第④批已入库;四裁决逐条对账与验收线转正见本节末「实施状态」注记;渲染规格 = [art-bible](../../../art/art-bible.md) §6.5) | +| 实装状态 | **已实装**(渲染规格 = [art-bible](../../../art/art-bible.md) §6.5;逐条口径见本节末「实施状态」注记) | -配套拍板(同日):魔法提灯=灯甲形态(光照圈外扩 +2 格,flat 整数档)随迷雾立项;**类型微光不随视野扩大**(类型先读仍只贴身 8 格,微光锚=可挖域);提灯载体归 aux_items 新行(登记原文——2026-10-07 用户令改道为独立卡,2026-10-08 裁案A=秘宝·同调位新行落位,见下方实施状态注记;**2026-10-09 用户裁退役**——新目录 15 件未收提灯,提灯数据行与卡④接线拆除归退役删行批〔实装批〕,功能由新目录普通档「阔视野带」承接,待办清单登记条在册),呈现面挂「资产升档重产批」(挂账不动)。 +配套拍板:魔法提灯=灯甲形态(光照圈外扩 +2 格,flat 整数档);**类型微光不随视野扩大**(类型先读仍只贴身 8 格,微光锚=可挖域);提灯数据行(秘宝·同调位「魔法提灯」)**已退役**,功能由新目录普通档「阔视野带」承接,登记面归 [待办清单](../../../../待办清单.md)。 -**实施状态(2026-10-03 迭代 11 第④批已入库)**:迷雾遮蔽+菱形灯光区跟随+暗淡记忆态上线,输入探针断言顺带扩(迷雾案)。四裁决逐条对账——①案甲视野迷雾立项(纯呈现层):迷雾开关分层验证可用(呈现态布尔,off 态=无迷雾基线),同板同动作序列与 MC 逐项比对逐位一致;②暗淡记忆态:区外已开格灰显+数字可读,明度按 [art-bible](../../../art/art-bible.md) §6.5 写入文档值(记忆板 #3A3A3A/记忆墨 #C4C4C4,provisional);③灯光半径=微光环 8 格同圈:半径 8 参数化(曼哈顿菱形,常量);④提灯 +2、微光不扩:提灯加成 +2,类型微光仍贴身 8 邻格零改动。**〔2026-10-05 迭代14⑤接线注记〕公共接线面已就位**——公共提灯开关接口(开=半径 8+2、关=复原 0;写入即重算雾态),迷雾批已在位消费该值;输入探针增接线断言(开=距离 9 格转可见+提灯 2/关=复原)。**〔2026-10-08 迭代 19 卡④入库注记〕载体到位+接线闭环=功能可达**——载体=秘宝·同调位新行「魔法提灯」(treasure_items.tres 表尾追加,desc「灯光区半径+2」,slot_cost 1、营地秘宝匣同调装配获渠,行字段=用户「按推荐」全收);生产路径=冒险装配→战斗装配集注入→公共只读出口查装配含否→组合根呈现桥每战首轮装配链**显式重算含否**(🔴 复原语义=禁战斗结束隐式复原——卸装/未装配写 0,断点续玩/跨关天然正确);未装配=零加成(缺省零扰动基线逐位不变)。顺带测试:载体级迷雾案(装配→提灯 2+距离 R+1 转可见+卸装复原)+冒烟行字段/同调目录投影(九件→十件)/装配贯通断言+存档回归 Part 6+单测提灯接线(全套 17→18 套)。原「提灯载体归 aux_items 新行随 Alpha 信息件重定批」登记去向就此注销(改道留痕=需求卡片-提灯载体道具批-2026-10-07 §一)。验收线(本篇「验收标准」视野迷雾行)逐条转正式验收:区内完整渲染/区外已开格灰显可读/区外未开格不可见/灯光区随移动跟随/两态结算逐位一致;实机目检人闸(迷雾观感/记忆态可读性/移动跟随流畅度)随出口闸。黑暗区域渲染规格承载 = art-bible §6.5(v3.5)。 +**实施状态**:迷雾遮蔽+菱形灯光区跟随+暗淡记忆态上线,输入探针断言扩(迷雾案)。四要点——①视野迷雾(纯呈现层):迷雾开关分层验证可用(呈现态布尔,off 态=无迷雾基线),同板同动作序列与 MC 逐项比对逐位一致;②暗淡记忆态:区外已开格灰显+数字可读,明度按 [art-bible](../../../art/art-bible.md) §6.5 写入文档值(记忆板 #3A3A3A/记忆墨 #C4C4C4,provisional);③灯光半径=微光环 8 格同圈:半径 8 参数化(曼哈顿菱形,常量);④提灯 +2、微光不扩:提灯加成 +2,类型微光仍贴身 8 邻格零改动。**公共接线面已就位**——公共提灯开关接口(开=半径 8+2、关=复原 0;写入即重算雾态),迷雾在位消费该值;输入探针增接线断言(开=距离 9 格转可见+提灯 2/关=复原)。**提灯载体已退役**——原载体=秘宝·同调位新行「魔法提灯」(treasure_items.tres 表尾行,desc「灯光区半径+2」,slot_cost 1、营地秘宝匣同调装配获渠),生产路径=冒险装配→战斗装配集注入→公共只读出口查装配含否→组合根呈现桥每战首轮装配链**显式重算含否**(🔴 复原语义=禁战斗结束隐式复原——卸装/未装配写 0,断点续玩/跨关天然正确);未装配=零加成(缺省零扰动基线逐位不变)。验收线(本篇「验收标准」视野迷雾行)逐条正式验收:区内完整渲染/区外已开格灰显可读/区外未开格不可见/灯光区随移动跟随/两态结算逐位一致;实机目检人闸(迷雾观感/记忆态可读性/移动跟随流畅度)随出口闸。黑暗区域渲染规格承载 = art-bible §6.5(v3.5)。 -### 营地:可点击场景图(旧四柜台并排形态已随卡④改版取代) +### 营地:可点击场景图 -营地形态**已换代为一张可点击的场景图 + 七物件点选**(2026-10-22 卡④美术设计段定稿,现行权威=[camp](../../ux/camp.md));2026-10-12(迭代 21 落地)起至换代前的旧形态为**四柜台并排**布局:①树淬炼(树脊柱界面形态,营地主界面)②锻造工坊(钥匙门+点亮展开工作间)③秘宝匣(钥匙门+目录与同调装配)④奖励格图鉴(常开无门槛)——宽度不足横向滚动兜底;全部程序占位视觉(占位纪律延续,2026-10-11 用户令),**视觉与布局终稿归 HUD 营地视觉批**(未立项)。结构现行事实源 = [天赋树](../跨局循环/天赋树.md)「营地=树:统一模型」节(2026-10-13 迭代 21 反哺⑤写入文档登记——本篇原无营地柜台登记面,顺带补缺)。 +营地形态**已换代为一张可点击的场景图 + 七物件点选**(现行权威=[camp](../../ux/camp.md));全部程序占位视觉(占位纪律延续,2026-10-11 用户令),**视觉与布局终稿归 HUD 营地视觉批**(未立项)。结构现行事实源 = [天赋树](../跨局循环/天赋树.md)「营地=树:统一模型」节。 ### 可访问性基线:看得清、不闪、纯鼠标玩得通 @@ -196,7 +196,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 棋盘只读投影(格态、数字、封印印记、小人)与移动路径查询;玩家意图批次经组合根提交 | | 上游 | [行动经济](../排雷循环/行动经济.md) | 行动点 / 储备 / 相位只读值;刷新入口可用性预判加返回值兜底 | | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 明细流水是结算明细带的统一数据源(现行 9 类行封闭协议);段序编排信号经组合根接线 | -| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔技能标识·类型·名称〕、敌方增益、存活——经战斗结算呈现快照;敌人技能池批批 2 定稿:当前拍/行动环进度字段拆除,池与权重不公开) | +| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔技能标识·类型·名称〕、敌方增益、存活——经战斗结算呈现快照;敌人技能池定稿:当前拍/行动环进度字段拆除,池与权重不公开) | | 上游 | [增益状态](../战斗循环/增益状态.md) | 状态投影经战斗结算呈现面取得,零直读 | | 上游 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格奖励身份投影(只读回调,组合根注入)零直读 | | 上游 | [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链、当前节点、跨战斗生命携带的读数;胜利后推进 | @@ -212,13 +212,13 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | [排雷玩法](../排雷循环/排雷玩法.md) | 已开 / 未开格态一眼可辨;悬停预承诺与可挖域常驻指示;移动路径预览即合法性指示;每次拒绝可感知且棋盘面细因可区分;停手被改判可感知 | | [行动经济](../排雷循环/行动经济.md) | 行动点与储备常显;储备清零反馈;棋盘面与资源面拒绝可区分;刷新入口与代价可读 | | [战斗结算](../战斗循环/战斗结算.md) | 未生效类明细行(奖励未生效)的呈现;高光行强调 | -| [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链进度呈现(关卡画面选路覆盖层节点态承载:暗金已过、金当前、候选下一跳通道亮金、Boss 紫赤描边(旗朱→紫赤 2026-09-26 封印紫批));选路覆盖层只读呈现(零自动推进停点语义)——屏级 spec:[level-map](../../ux/level-map.md)(2026-09-27 建档) | +| [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链进度呈现(关卡画面选路覆盖层节点态承载:暗金已过、金当前、候选下一跳通道亮金、Boss 紫赤描边);选路覆盖层只读呈现(零自动推进停点语义)——屏级 spec:[level-map](../../ux/level-map.md) | | [敌人系统](../战斗循环/敌人系统.md) | 意图线索映射成文且全局恒定;单位顺位与血条可读;敌方共享层数各卡同值 | | [增益状态](../战斗循环/增益状态.md) | 状态栏常显;无状态时整排槽隐藏;有利 / 有害极性呈现不看数值符号 | | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读;未开格类型微光(英雄周围 8 格内的未开格显示资源类型——概念定义见本篇「未开格类型微光」节) | | [秘宝](../跨局循环/秘宝.md) | 装配件与充能常读;使用交互与目标拾取;整图叠加层信息呈现(在役旧框架——随实装批整体替换,秘宝.md v1.7 同款口径) | | [棋盘生成](../排雷循环/棋盘生成.md) | 零合法板的诚实告知(数据面经战斗结算上抛,本系统只管提示形态) | -| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义现行事实源=地形变异 §全局作用域型):①开战横幅一行(整图变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奇物段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照的整图变异投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | +| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(语义现行事实源=地形变异 §全局作用域型):①开战横幅一行(整图变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奇物段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照的整图变异投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | ## P0 最小闭环 @@ -236,7 +236,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | P1 | 远格点击自动"先移动再挖"复合意图 | 移动免费高频,两击摩擦先经实测验证再裁 | | P1 | Gamepad 焦点序 | 纯鼠标已覆盖 MVP 全部操作 | | P1 | 可访问性正式分层(文本缩放 / 色盲模式 / 按键重映射) | 归[设置与本地化](设置与本地化.md)设置项全集裁决(2026-09-27 拍板不另立专项文档) | -| P1 | 相邻域屏(节点奖励 / 关卡结算)完整屏形态 | 归后续 UX 文档(关卡结算屏 spec 已建 [level-clear](../../ux/level-clear.md)——2026-09-27;节点奖励屏 spec 已在役:[node-reward](../../ux/node-reward.md) v2.5 令牌池口径);MVP 以覆盖层反馈承载 | +| P1 | 相邻域屏(节点奖励 / 关卡结算)完整屏形态 | 归后续 UX 文档(关卡结算屏 spec 已建 [level-clear](../../ux/level-clear.md);节点奖励屏 spec 已在役:[node-reward](../../ux/node-reward.md) v2.5 令牌池口径);MVP 以覆盖层反馈承载 | | P2 | 提示一次性作用域升级为存档级"一生一次" | 归[存档序列化](存档序列化.md)与[元进度](../跨局循环/元进度.md)后重议 | | P2 | 调试面板退役 | 正式侧归元进度;诊断按钮保留为调试设施 | | P2 | 探测类秘宝的显影呈现面 | 接口归[秘宝](../跨局循环/秘宝.md)定稿批 | @@ -264,7 +264,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 - 三区无遮挡、无重叠、无内容裁切(棋盘全部格子与数字完整可见),分区几何与布局表 `battle_layout.tres` 一致;同屏 draw calls < 200;进入战斗屏 500ms 内首格可点。 - 任意板型装板后网格实高不超出棋盘区:N × 格边长 + (N−1) × 2px ≤ 棋盘区可用高;数字字号与整数倍缩放判据见 battle.md。 - 已开 / 未开格态在灰度截图下可逐格分类;已引爆危险格"可通行可读"(已开底加巢穴纹、可作移动目标)。 -- 类型微光:微光只在英雄周围 8 格内的未开格显示;出圈即灭、入圈即亮;已开格与封锁格恒无微光;微光呈现不随格是雷是安变化(不泄危险格与安全格)。(迭代 30 卡①实装后转正式验收) +- 类型微光:微光只在英雄周围 8 格内的未开格显示;出圈即灭、入圈即亮;已开格与封锁格恒无微光;微光呈现不随格是雷是安变化(不泄危险格与安全格)。 - 视野迷雾:棋盘仅菱形灯光区内完整渲染;区外已开格灰显可读、区外未开格不可见;灯光区随角色移动跟随;同一张板同一份动作序列,迷雾开关两种状态下的结算结果逐位一致(纯呈现,零游戏数据改动)。 - 悬停光标三语义(移动 / 挖 / 封印)随目标切换并高亮目标格;悬停已开格画出合法路径(不可达不显示);可挖域常驻呼吸微光。 - 一帧内意图整批到达,停手点击终结当帧收集。 @@ -272,12 +272,12 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 - 结算逐行实时滚出且每行带来源标注;未生效类行聚合计数并带形状冗余;零值行不被吞;效果行的单次贡献与池合成值分示、禁相加误读。 - 高光三档:封印标中行金框、清图奖励行金框、完美封印全屏喝彩级——庆祝不打在空兑现上(首份即零兑付则不发高光)。 - 状态槽显示图标加层数加剩余结算次数,悬停见来源;极性按键级表呈现(金满框 / 红缺框),空态整排隐藏、数据框上移补位;战斗结束全清有微文案。 -- 敌人呈现(站桩立绘,2026-09-20 全站桩拍板后载体由敌人卡改为无框立绘+底座,义务面平移不重述):意图占位 = 本拍摇定结果的动画占位(敌人技能池批三档可见性——普通攻击零表示、特殊技类型级提示〔攻/防系两型〕,不预告技能名与数值、池与权重不公开)且挖掘期全程可见、映射跨局恒定、顺位可读、血量数字可读、敌方共享层数各立绘同值(血条悬浮头顶、状态小图标挂血条正下方);死亡灰化加碎裂退场(禁止瞬间消失)且就地更新不丢灰化态。 +- 敌人呈现(站桩立绘,载体 = 无框立绘+底座):意图占位 = 本拍摇定结果的动画占位(敌人技能池三档可见性——普通攻击零表示、特殊技类型级提示〔攻/防系两型〕,不预告技能名与数值、池与权重不公开)且挖掘期全程可见、映射跨局恒定、顺位可读、血量数字可读、敌方共享层数各立绘同值(血条悬浮头顶、状态小图标挂血条正下方);死亡灰化加碎裂退场(禁止瞬间消失)且就地更新不丢灰化态。 - 终局:胜利金蜡封、失败暮蓝氛围层(明度不变);储备清零与状态全清两反馈不合并、时序不倒挂(关卡末清库反馈义务载体 = 秘宝背包〔关卡域库存恒空机械惰性承载,拆线归实装批——见「轮次生命周期」同款节注于战斗结算〕,随秘宝 P0 落地补验收)。 - 任一模态层打开时遮挡物隐藏或输入锁定、关闭逐层恢复;tooltip 与明细行等动态区固定槽高、换行裁剪不推挤布局。 - 终局呈现只消费流水与快照:核心对象销毁后呈现层对生命周期状态零回读;终局后重放渲染与实时渲染一致。 - 消费的每份载荷逐字段断言通过(缺字段、多字段都算失败)。 -- 地形变异三层预告(2026-10-04 全局作用域变异首发批——规则现行事实源=地形变异 §全局作用域型):Boss 图开战横幅一行显示且普通图不显示;C 区常驻角标战斗全程可见、空态整节隐藏;帮助手册含整图变异说明行;减动效开启横幅走静态驻留(轮横幅同款双态);普通图三层零打扰(恒空态)。 +- 地形变异三层预告(规则现行事实源=地形变异 §全局作用域型):Boss 图开战横幅一行显示且普通图不显示;C 区常驻角标战斗全程可见、空态整节隐藏;帮助手册含整图变异说明行;减动效开启横幅走静态驻留(轮横幅同款双态);普通图三层零打扰(恒空态)。 - 字号下限成立;无每秒超三次闪烁;减动效开启时时长减半或跳终态(结算兑现降速不跳过);全程纯鼠标可玩;中文渲染无缺字。 - 呈现层零随机调用;切片临时名零残留。 diff --git a/design/gdd/systems/表现与支撑/存档序列化.md b/design/gdd/systems/表现与支撑/存档序列化.md index 2f171125..2be98b54 100644 --- a/design/gdd/systems/表现与支撑/存档序列化.md +++ b/design/gdd/systems/表现与支撑/存档序列化.md @@ -1,7 +1,7 @@ # 存档序列化 > 一句话:存档契约与版本迁移 -> 状态:已定稿(2026-09-21 存档序列化批落地);现行为 v1.2 +> 状态:已定稿;现行为 v1.3 ## 设计目的 @@ -22,7 +22,7 @@ | 读写时机 | 启动读盘;正式冒险收束写盘;原子写盘原语 | | 元进度的持久化承载 | 归档登记的职责口径:"元进度持久化框架"——钥石与解锁进度由本系统落盘 | | 最近冒险摘要的持久化 | 冒险摘要五件事副本入档(cap 10),重开对照跨进程成立 | -| 冒险断点快照的持久化承载 | 停点粒度续玩快照(`breakpoint` 域)写入/读回/清除/迁移——内容口径归[冒险结构](../冒险循环/冒险结构.md)(2026-09-29 迭代 8 卡①,P1 预挂号兑现) | +| 冒险断点快照的持久化承载 | 停点粒度续玩快照(`breakpoint` 域)写入/读回/清除/迁移——内容口径归[冒险结构](../冒险循环/冒险结构.md) | 不负责: @@ -30,7 +30,7 @@ |---|---| | 存进去的内容口径(钥石怎么得、能换什么) | [元进度](../跨局循环/元进度.md)——本系统只承载,不定义 | | 冒险摘要记哪几件事 | [冒险结构](../冒险循环/冒险结构.md)——本系统只消费其摘要五件事 | -| 冒险断点快照记哪些字段、何时算一个合法停点 | [冒险结构](../冒险循环/冒险结构.md)——本系统只承载 `breakpoint` 域的写入/读回/清除(2026-09-29 迭代 8 卡①起,原 P1 预挂号兑现) | +| 冒险断点快照记哪些字段、何时算一个合法停点 | [冒险结构](../冒险循环/冒险结构.md)——本系统只承载 `breakpoint` 域的写入/读回/清除 | | Boss 击杀的钥石金额计算(首杀全量 / 重复杀小额) | [元进度](../跨局循环/元进度.md)——本系统只记域内事实,不算账 | | 数值配方本体(所有玩家一致的表) | [数据配置](数据配置.md)——表是配方,存档是玩家进度,两者分离(见核心规则) | | 局内数值的持久化 | 无——局内系统资源全部单局清零,没有局内数值需要入档(见核心规则的反面清单) | @@ -56,9 +56,9 @@ 第二条边界是反面清单:局内资源不入存档。行动点、储备行动点、道具库存、生命、GP 全部单局清零——各归各的系统管,没有局内数值需要持久化。若未来某局内资源要开放跨局携带(如储备行动点跨战斗携带),须修订其池规则并向本系统登记持久化归属,禁止静默超域。 -**唯一豁免 = `breakpoint` 断点域**(2026-09-29 迭代 8 卡①顺带修订):断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(通关/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描顺带收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。断点顶层键(27 键+2026-10-27 迭代 39 获得日记键扩列至 28)的登记单源=冒险应用层的断点键表(键→回退策略;现行契约见架构文档「冒险域拆分」节);写读已换代为各件自交片段——主角账/停点件/关卡件各自写读自己的键(缺键回退策略随领域知识归各件),冒险应用层是唯一拼盘落盘口(收齐各件片段拼成顶层快照后写盘,写触发点不变)。**关卡完成停点的同调未用行留存**(2026-10-27 迭代 39 副卡边界裁定):`aux_items` 键在此停点形态含同调未用行(关卡末清空改选择性保留——「同调行始终留在 treasure_inventory」与「键值形态逐位不变」在关卡完成停点互斥,采行留存;玩家可见 C 区投影零变化,24 停点充能读数逐位一致)。 +**唯一豁免 = `breakpoint` 断点域**:断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(通关/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。断点顶层键(28 键)的登记单源=冒险应用层的断点键表(键→回退策略;现行契约见架构文档「冒险域拆分」节);写读已换代为各件自交片段——主角账/停点件/关卡件各自写读自己的键(缺键回退策略随领域知识归各件),冒险应用层是唯一拼盘落盘口(收齐各件片段拼成顶层快照后写盘,写触发点不变)。**关卡完成停点的同调未用行留存**:`aux_items` 键在此停点形态含同调未用行(「同调行始终留在 treasure_inventory」与「键值形态逐位不变」在关卡完成停点互斥,采行留存;玩家可见 C 区投影零变化,24 停点充能读数逐位一致)。 -**三存档位(迭代 33 卡①,2026-10-22 反哺写入)**:存档是 3 个独立的 JSON 文件(三个独立存档文件,槽文件名只经存档系统单点派生,槽 1 禁复用旧单档名),字典键一律字符串。写盘目标=当前激活槽的文件;启动(boot)不读任何槽文件——启动态=无激活态,不读写;激活态由选档界面的「新档」或「进档」建立(选档界面归迭代 33 卡③)。数据模型(现行 = v7;示例值全为零值默认态): +**三存档位**:存档是 3 个独立的 JSON 文件(三个独立存档文件,槽文件名只经存档系统单点派生,槽 1 禁复用旧单档名),字典键一律字符串。写盘目标=当前激活槽的文件;启动(boot)不读任何槽文件——启动态=无激活态,不读写;激活态由选档界面的「新档」或「进档」建立。数据模型(现行 = v7;示例值全为零值默认态): ```json { @@ -95,34 +95,34 @@ | `attune_refresh_level` | 营地刷新升级(Y 源)等级(v4) | [秘宝](../跨局循环/秘宝.md)(三选一刷新双源) | | `tree_nodes` | 天赋树已购等级(node_id→int,v5) | [天赋树](../跨局循环/天赋树.md) | | `fork_sides` | Fork 组激活侧(fork_group→a/b,v5) | [天赋树](../跨局循环/天赋树.md) | -| `tree_struct` | 树结构版本标记(迭代 21 T5;缺失 = 换代前结构,加载废弃重置) | [天赋树](../跨局循环/天赋树.md) | +| `tree_struct` | 树结构版本标记(缺失 = 换代前结构,加载废弃重置) | [天赋树](../跨局循环/天赋树.md) | | `recent_summaries` | 最近冒险摘要副本,最新在前,最多 10 条 | [冒险结构](../冒险循环/冒险结构.md) | | `first_adventure_done` | 首冒险完成标记(新档默认 false;旧档缺省按已完成兜底) | [元进度](../跨局循环/元进度.md) | | `adventure_total` | 冒险总局数终身计数(开局即计、含放弃与失败,v6) | [生涯](../跨局循环/生涯.md) | | `adventure_cleared` | 冒险成功局数终身计数(三关全通才计 1,v6;秘宝条件解锁计数键) | [生涯](../跨局循环/生涯.md) | -| `vision_used` | 真视类工具累计使用次数终身计数(迭代 22 新增——信标网络解锁行为条件;**v6 域后扩列补零、不升版本**;写入唯一经真视计数入口,冒险收束聚合入账;断点随件键=`vision_counter_used`,续玩回填缺省 0) | [秘宝](../跨局循环/秘宝.md) | -| ~~`forge_levels`~~ | ~~属性锻造三档等级~~ | **已退役**(迭代 21 T5:域与访问器随攻防所有权切分删除;继任 = 锻造路线等级域) | -| `forge_routes`(**已落地 v7——锻造工坊实装批 T5,迭代 23**) | {levels: 六路线等级(sword/spear/staff/light/heavy/ward), unlocked: 直购解锁路线 id 清单, weapon: 当前武器路线 id, armor: 当前甲路线 id};无特效域;旧档缺键补齐 = 初始持有态 | [锻造工坊](../跨局循环/锻造工坊.md) | +| `vision_used` | 真视类工具累计使用次数终身计数(信标网络解锁行为条件;**v6 域后扩列补零、不升版本**;写入唯一经真视计数入口,冒险收束聚合入账;断点随件键=`vision_counter_used`,续玩回填缺省 0) | [秘宝](../跨局循环/秘宝.md) | +| ~~`forge_levels`~~ | ~~属性锻造三档等级~~ | **已退役**(继任 = 锻造路线等级域) | +| `forge_routes`(**已落地 v7**) | {levels: 六路线等级(sword/spear/staff/light/heavy/ward), unlocked: 直购解锁路线 id 清单, weapon: 当前武器路线 id, armor: 当前甲路线 id};无特效域;旧档缺键补齐 = 初始持有态 | [锻造工坊](../跨局循环/锻造工坊.md) | | `breakpoint` | 冒险断点快照(停点粒度续玩域;空字典 = 无断点合法态——「继续上局」隐藏) | [冒险结构](../冒险循环/冒险结构.md) | -v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零迁移损失;收束自增域(通关次数/Boss 计数/终身计数/真视使用计数)的唯一入账点 = 冒险摘要入账(vision_used 走真视计数入口收束)。**v6 域后扩列不升版先例**:`vision_used`(迭代 22,2026-10-12——迭代 21 同款口径;断点随件 `vision_counter_used` 同批新增;旧断点随件键 `bonus_aux_carry` 已随替换子交互拆除退役,迭代 22 T5)。 +v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零迁移损失;收束自增域(通关次数/Boss 计数/终身计数/真视使用计数)的唯一入账点 = 冒险摘要入账(vision_used 走真视计数入口收束)。 -消费面纪律:其他系统只经存档系统的类型化访问器(读余额/加钥石/花钥石、读写树等级等)与域更新原语(冒险摘要入账)操作存档,不碰内部数据结构。三条槽位纪律(迭代 33 卡①):一、无激活态下一切写盘路径拒绝并返回 false(boot 后未进档/未新档即结算或购买=不落盘,激活后照常);二、槽文件名单点派生——消费方禁各自拼槽文件名,测试与探针的隔离走注入口(槽模板注入/摘要窥视);三、UI 读别槽摘要只走窥视 API(不激活、不写内存、零盘面副作用),返回结构 = 可读标记 + 三项摘要值(钥石/通关数/总局数)——可读标记 = 槽文件可读(空槽=零值合法态可读;损坏/高版本/缺版本字段=不可读标记);槽主文件在盘与否不作摘要项、只供操作集二分判定(零 UI 语义),三项摘要值只在可读时有意义。 +消费面纪律:其他系统只经存档系统的类型化访问器(读余额/加钥石/花钥石、读写树等级等)与域更新原语(冒险摘要入账)操作存档,不碰内部数据结构。三条槽位纪律:一、无激活态下一切写盘路径拒绝并返回 false(boot 后未进档/未新档即结算或购买=不落盘,激活后照常);二、槽文件名单点派生——消费方禁各自拼槽文件名,测试与探针的隔离走注入口(槽模板注入/摘要窥视);三、UI 读别槽摘要只走窥视 API(不激活、不写内存、零盘面副作用),返回结构 = 可读标记 + 三项摘要值(钥石/通关数/总局数)——可读标记 = 槽文件可读(空槽=零值合法态可读;损坏/高版本/缺版本字段=不可读标记);槽主文件在盘与否不作摘要项、只供操作集二分判定(零 UI 语义),三项摘要值只在可读时有意义。 ### 读写时机 ``` 启动 ──▶ 不读盘(boot 无激活态,不读写任何槽;只做一次旧单档迁移,见「版本与迁移」节) -选档界面「新档」/「进档」──▶ 建立激活态(读盘=该槽文件;迭代 33 卡①/卡③) +选档界面「新档」/「进档」──▶ 建立激活态(读盘=该槽文件) 正式冒险收束 ──▶ 冒险摘要入账 ──▶ 原子写盘(落当前激活槽) -营地钥石消费(元进度实现批接线)──▶ 每笔变更后即时写盘(落当前激活槽) -冒险停点(选路停点)──▶ 断点快照写盘(迭代 8 卡①) -冒险三结局收束(冒险成功/失败/放弃)──▶ 清除断点 + 原子写盘(迭代 8 卡①/T3 退出口径) +营地钥石消费 ──▶ 每笔变更后即时写盘(落当前激活槽) +冒险停点(选路停点)──▶ 断点快照写盘 +冒险三结局收束(冒险成功/失败/放弃)──▶ 清除断点 + 原子写盘 ``` -写盘时机纪律:**凡钥石发生变动的时刻都要落盘**——正式冒险收束写一次,营地内每笔消费后即时写(元进度实现批接线)。这是"钥石不丢"判据的最强保证:任何时刻拔电源,玩家最多丢当前这一局的局内进程,不丢档。 +写盘时机纪律:**凡钥石发生变动的时刻都要落盘**——正式冒险收束写一次,营地内每笔消费后即时写。这是"钥石不丢"判据的最强保证:任何时刻拔电源,玩家最多丢当前这一局的局内进程,不丢档。 -断点写盘纪律(迭代 8 卡①):停点快照在每个选路停点(战斗胜利/兑付确认/入口呈现后的选路态)整体覆写——战斗进行中不写(棋盘中局不入档,续玩恢复至最近停点、当场战斗从头打)。因为快照总在每个停点即时落盘,「关游戏走人」在任何停点都不丢续玩进度,无需窗口关闭钩子。 +断点写盘纪律:停点快照在每个选路停点(战斗胜利/兑付确认/入口呈现后的选路态)整体覆写——战斗进行中不写(棋盘中局不入档,续玩恢复至最近停点、当场战斗从头打)。因为快照总在每个停点即时落盘,「关游戏走人」在任何停点都不丢续玩进度,无需窗口关闭钩子。 写盘是原子操作:先写同目录临时文件,写完改名覆盖正式档——写一半断电不留烂档。 @@ -130,7 +130,7 @@ v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零 ### 版本与迁移 -存档带版本字段(`version`,当前 = **7**;版本沿革:v2 = 断点域出生〔迭代 8 卡①〕→ v3 = 断点附随件扩列 + 摘要 keystone_drops〔迭代 10 奖励重构〕→ v4 = 同调批扩域〔boss_kill_count / attunement_equipped / attune_refresh_level,迭代 11 第①批〕→ v5 = 天赋树域〔tree_nodes / fork_sides,迭代 12〕→ v6 = 生涯终身计数域〔adventure_total / adventure_cleared,迭代 18 卡④〕→ **v7 = 锻造工坊域〔forge_routes,迭代 23 T5——已落地:{levels 六路线等级 + unlocked 直购解锁清单 + weapon/armor 当前选中标记},无特效域;旧档缺键按默认补齐 = 初始持有态(sword/light 在档、余四锁、选中=初始路线),v6→v7 空迁移 = 缺键补齐模式(v3→v4 先例);开发阶段禁迁移禁折算——契约 4〕**)。三条走向: +存档带版本字段(`version`,当前 = **7**;版本沿革:v2 = 断点域出生 → v3 = 断点附随件扩列 + 摘要 keystone_drops → v4 = 同调扩域〔boss_kill_count / attunement_equipped / attune_refresh_level〕→ v5 = 天赋树域〔tree_nodes / fork_sides〕→ v6 = 生涯终身计数域〔adventure_total / adventure_cleared〕→ **v7 = 锻造工坊域〔forge_routes:{levels 六路线等级 + unlocked 直购解锁清单 + weapon/armor 当前选中标记},无特效域;旧档缺键按默认补齐 = 初始持有态(sword/light 在档、余四锁、选中=初始路线),v6→v7 空迁移 = 缺键补齐模式(v3→v4 先例);开发阶段禁迁移禁折算——契约 4〕**)。三条走向: | 情形 | 处置 | |---|---| @@ -138,9 +138,9 @@ v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零 | 版本更高(未来版本的档) | **拒读且禁写**:不加载、后续写盘一律拒绝、内存以默认新档运行——保护未来版本的档不被当前版本覆写 | | 版本更低(旧档) | 读档时逐级迁移:从旧版本起逐个调用注册的迁移函数升到当前版本;任一步失败按损坏兜底处理 | -迁移函数按旧版本号逐一注册:函数把数据从「旧版本」改写成「旧版本 + 1」。生产迁移链现行六件(v2 起自注册):v1→v2 = 断点域补空;v2→v3 = 断点附随件与摘要 keystone_drops 补键(读取方 .get 兜底);v3→v4 = 同调三域补键;v4→v5 = 树域两键补齐(原挂接的「三体系迁移」体已随迭代 21 T5 攻防所有权切分删除;forge_levels 旧域同批清退,加载时按默认模型键集白名单收窄);v5→v6 = 生涯两终身计数域补零;**v6→v7 = 锻造工坊域 forge_routes 缺键补齐(迭代 23 T5——无结构迁移体,版本号推进仅随表结构变化;解锁态派生不落档:初始持有〔表 initial_owned〕∨ 直购〔unlocked 清单〕∨ 练满前一档〔levels[prereq]≥cap〕)**。任一步失败按损坏兜底处理。 +迁移函数按旧版本号逐一注册:函数把数据从「旧版本」改写成「旧版本 + 1」。生产迁移链现行六件(v2 起自注册):v1→v2 = 断点域补空;v2→v3 = 断点附随件与摘要 keystone_drops 补键(读取方 .get 兜底);v3→v4 = 同调三域补键;v4→v5 = 树域两键补齐(forge_levels 旧域清退,加载时按默认模型键集白名单收窄);v5→v6 = 生涯两终身计数域补零;**v6→v7 = 锻造工坊域 forge_routes 缺键补齐(无结构迁移体,版本号推进仅随表结构变化;解锁态派生不落档:初始持有〔表 initial_owned〕∨ 直购〔unlocked 清单〕∨ 练满前一档〔levels[prereq]≥cap〕)**。任一步失败按损坏兜底处理。 -旧单档一次性迁移(迭代 33 卡①,用户裁决 Q1 甲):本系统从单档制换代为 3 存档位制时,盘上残留的旧单档文件在启动时被处理——文件**字节级原样搬运**进槽 1(零解析零改造:损坏或高版本的旧档也原样迁入,之后由该槽进档时的损坏兜底/高版本拒读接管,不静默丢数据),源文件改名留痕不删;槽 1 文件已存在则不重迁(幂等,二次启动零操作);迁移失败(拷贝或改名失败)源文件保留、下次启动重试。留痕与结果记在启动日志(开发者向,非玩家面)。 +旧单档一次性迁移:本系统从单档制换代为 3 存档位制时,盘上残留的旧单档文件在启动时被处理——文件**字节级原样搬运**进槽 1(零解析零改造:损坏或高版本的旧档也原样迁入,之后由该槽进档时的损坏兜底/高版本拒读接管,不静默丢数据),源文件改名留痕不删;槽 1 文件已存在则不重迁(幂等,二次启动零操作);迁移失败(拷贝或改名失败)源文件保留、下次启动重试。留痕与结果记在启动日志(开发者向,非玩家面)。 ### 损坏兜底 @@ -153,7 +153,7 @@ v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零 | 方向 | 系统 / 文档 | 接口要点 | |---|---|---| | 下游 | [元进度](../跨局循环/元进度.md) | 钥石余额、锻造等级、关卡完成次数、首杀标记的持久化承载方;对方以"钥石不丢"为验收,本系统以不破坏它为约束 | -| 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险摘要五件事副本入档(cap 10);快照与复盘的持久化承接 P1 后置 | +| 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险摘要五件事副本入档(cap 10);快照与复盘的持久化承接 | | 协作 | [数据配置](数据配置.md) | 表与档分家:数值口径永远以加载时的表为准 | ## P0 最小闭环 @@ -164,8 +164,8 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)把单 | 优先级 | 内容 | 后置原因 | |---|---|---| -| ~~P1~~ | ~~快照与复盘的持久化承接~~ | **已兑现**(2026-09-29 迭代 8 卡①:断点域承载 + rng「主种子+计数器」快照契约回填面) | -| ~~P2~~ | ~~多存档槽位~~ | **已实现**(2026-10-22 迭代 33 卡①——3 存档位三文件制落地,口径见「三存档位」段;原「单档 MVP(2026-09-21 裁决)」后置条随兑现注销) | +| ~~P1~~ | ~~快照与复盘的持久化承接~~ | **已兑现**(断点域承载 + rng「主种子+计数器」快照契约回填面) | +| ~~P2~~ | ~~多存档槽位~~ | **已实现**(3 存档位三文件制,口径见「三存档位」段) | ## 调参表 @@ -177,8 +177,8 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)把单 - 钥石不丢:写入、读回与迁移禁止破坏[元进度](../跨局循环/元进度.md)的钥石只增不减判据;余额不足的消费被拒绝且无副作用(冒烟承载)。 - 高版本拒读禁写:高版本档加载被拒、原文件字节不动、后续写盘被拒且文件仍字节不动(冒烟承载)。 - 改版不弃档:旧版本档经迁移链读回;低版本档缺新域按默认补齐,既有值保留(冒烟承载)。 -- 断点域契约(迭代 8 卡①):七字段拍板面写读往返逐位一致;旧档无断点域迁移为合法空态;三结局清除(冒烟+单测承载)。 -- 域界干净:meta 永久进度域不含局内系统资源键(行动点/储备行动点/道具库存/生命/GP)——断点域按豁免条款单列(冒烟承载,2026-09-29 卡①修订)。 +- 断点域契约:七字段拍板面写读往返逐位一致;旧档无断点域迁移为合法空态;三结局清除(冒烟+单测承载)。 +- 域界干净:meta 永久进度域不含局内系统资源键(行动点/储备行动点/道具库存/生命/GP)——断点域按豁免条款单列(冒烟承载)。 - 零玩法依赖:存档系统不引入任何玩法脚本、不碰数值表与随机服务,可独立实例化验证(冒烟独立段承载)。 ## 待办 diff --git a/design/gdd/systems/表现与支撑/数据配置.md b/design/gdd/systems/表现与支撑/数据配置.md index eb46fa93..e389308b 100644 --- a/design/gdd/systems/表现与支撑/数据配置.md +++ b/design/gdd/systems/表现与支撑/数据配置.md @@ -1,7 +1,7 @@ # 数据配置 > 一句话:数值表与单一事实源管线 -> 状态:已定稿(自旧体系迁移);现行为 v1.2 +> 状态:已定稿;现行为 v1.3 ## 设计目的 @@ -58,7 +58,7 @@ |---|---|---| | 行动经济表 | 每轮行动点、动作价目、停手与刷新门槛 | [行动经济](../排雷循环/行动经济.md) | | 棋盘生成参数表 | 板尺寸、雷密度、可推理率目标等(进度键表) | [棋盘生成](../排雷循环/棋盘生成.md) | -| 变异表 | 变异类型清单(现行六行:region 六行两轴×三关〔2026-09-20 落地〕;首发 global 整图型贫矿脉 2026-10-16 用户令屏蔽删行,global 型机制代码保留) | [地形变异](../排雷循环/地形变异.md) | +| 变异表 | 变异类型清单(现行六行:region 六行两轴×三关;global 整图型贫矿脉行已删,global 型机制代码保留) | [地形变异](../排雷循环/地形变异.md) | | 敌人表 | 敌种基线数值、遭遇数量区间、护甲类型、技能池模板(进度键表) | [敌人系统](../战斗循环/敌人系统.md) | | 技能表 | 技能行定义(类型/倍率/冷却/增益引用/触发条件)与保底阈值 | [敌人系统](../战斗循环/敌人系统.md) | | 主角表 | 主角生命上限、基础攻击与护甲等级(armor_class)等单行战斗数值 | [敌人系统](../战斗循环/敌人系统.md) | @@ -69,7 +69,7 @@ | 难度表 | 难度修饰乘数(占位空表) | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | 关卡表 | 逐关节点图与层名 | [冒险结构](../冒险循环/冒险结构.md) | | 冒险表 | 关卡大奖励与钥石入账(单行全局) | [冒险结构](../冒险循环/冒险结构.md) | -| 元进度表 | 元进度字段(已建表 2026-09-21——现行五行族:属性锻造 / Boss 钥石 / 工坊阈值 / 换算率 / 同调刷新升级行族,顺带扩列) | [元进度](../跨局循环/元进度.md) | +| 元进度表 | 元进度字段(现行五行族:属性锻造 / Boss 钥石 / 工坊阈值 / 换算率 / 同调刷新升级行族) | [元进度](../跨局循环/元进度.md) | | 战斗屏布局表(`battle_layout.tres`) | 分区几何、B 区连续地面层高与明细带两态高(单行;呈现层布局配置,非玩法数值——供呈现层与样张工具同源读取) | [战斗屏规格](../../ux/battle.md)(结构)/[HUD框架](HUD框架.md)(呈现常量) | 举证:本节为数据纪律约定,无计算。违规检测 = 静态扫描加人工复核,随各表回填定稿与里程碑检查执行。 @@ -78,7 +78,7 @@ 全项目的随机数只经随机服务的统一流发放(2026-09-27 用户两轮复裁,七流并一并加全事件日志)。统一流(本文含义:唯一主种子 + 唯一派生公式〔单盐〕+ 唯一全局取数计数器)是对"随机即失控"的制度化设防:玩法代码禁止自建随机源、禁止调用全局随机函数。目的只有一个——同一条主种子(master_seed,一场冒险的随机源头数字,由冒险结构在冒险开始时注入,仅全局计数器归零时受理)驱动下,相同决策序列必然跑出相同结果,这是回放、审计与自动化测试共同的立足点。 -取号按用途标签记账。用途标签(本文含义:取号时声明的用途名,只进事件日志、不参与种子派生)沿用并流前七条流名作封闭词表——标签让日志可读,也让"哪类事件在什么时机取号"仍保有登记位: +取号按用途标签记账。用途标签(本文含义:取号时声明的用途名,只进事件日志、不参与种子派生)沿用七条流名作封闭词表——标签让日志可读,也让"哪类事件在什么时机取号"仍保有登记位: | 用途标签 | 消费方 | 用途:何时取号 | |---|---|---| @@ -89,7 +89,7 @@ 取数有两个入口。玩法代码用取号入口:每调用一次,全局计数器加一并派生新种子,同一事件内共享同一实例。测试与预览用纯函数入口:按指定全局序号计算种子、不推计数器——预览不污染正式序列。种子由登记的派生公式计算(单盐),纯函数、跨引擎版本恒定,并登记了可复算的黄金向量。 -全事件日志(并流批新增):冒险开始即开日志会话(随机事件日志文件,每主种子一份),每次取数落一行——全局序号、用途标签、派生种子。号位在全序账本下不再单独回答"第 N 次某类事件"(路线依赖为已裁决代价),单点定位与复盘由日志承载。写盘失败只告警降级,不致命、不影响玩法随机。 +全事件日志:冒险开始即开日志会话(随机事件日志文件,每主种子一份),每次取数落一行——全局序号、用途标签、派生种子。号位在全序账本下不再单独回答"第 N 次某类事件"(路线依赖为已裁决代价),单点定位与复盘由日志承载。写盘失败只告警降级,不致命、不影响玩法随机。 生命周期:进程启动后流待命(未注入主种子就取数,致命中止,禁止默认种子兜底)→ 冒险开始注入主种子并开日志会话 → 冒险中按事件取号(全局计数器只增不重置)→ 冒险结束流保留供复盘。续玩与复盘的快照 = 主种子加全局取数计数器,由[存档序列化](存档序列化.md)消费;快照切出须发生在没有在用取号实例的时刻。要新增随机用途(含战斗内随机),走扩签通道:改代码加用途标签并通过评审——词表封闭是刻意的设卡。 @@ -121,7 +121,7 @@ ### 进度坐标查行:跟着冒险进度成长的表带两维坐标 -跟着冒险进度成长的表(难度、生成参数、敌人配置)每行带(关卡序号 × 节点深度)两维坐标——难度曲线的雕刻轴从第一天就留在表结构层,而不是散落各处的魔法数字。解析规则两条:其一,进度坐标向上取整(2026-09-18 用户拍板修订,原「就近向下」退役)——无精确行时取**不低于**请求坐标的最近已有行并留一条警告(警告按"哪张表、缺哪维、停在哪个键"去重,是开发期异常信号而非审计工具);取整方向的理由是**保证偏难**:宁可在内容缺口上高估难度让工具读数保守,不可静默降难掩盖断档;请求坐标低于合法域(关卡序号 <1、节点深度 <0)不属于取整,走运行期致命;请求高于最大已有行时**取最大已有行封顶**(2026-09-18 追加拍板:可取范围内向上取整,超出最大值就用最大值,封顶同样留警告)。其二,实体键精确匹配,那一行没有这个名字就是悬空引用,直接致命中止——进度可以向上近似,"是哪种敌人"不能近似,身份近似会静默改变遭遇构成。 +跟着冒险进度成长的表(难度、生成参数、敌人配置)每行带(关卡序号 × 节点深度)两维坐标——难度曲线的雕刻轴从第一天就留在表结构层,而不是散落各处的魔法数字。解析规则两条:其一,进度坐标向上取整(2026-09-18 用户拍板)——无精确行时取**不低于**请求坐标的最近已有行并留一条警告(警告按"哪张表、缺哪维、停在哪个键"去重,是开发期异常信号而非审计工具);取整方向的理由是**保证偏难**:宁可在内容缺口上高估难度让工具读数保守,不可静默降难掩盖断档;请求坐标低于合法域(关卡序号 <1、节点深度 <0)不属于取整,走运行期致命;请求高于最大已有行时**取最大已有行封顶**(2026-09-18 追加拍板:可取范围内向上取整,超出最大值就用最大值,封顶同样留警告)。其二,实体键精确匹配,那一行没有这个名字就是悬空引用,直接致命中止——进度可以向上近似,"是哪种敌人"不能近似,身份近似会静默改变遭遇构成。 三条配套边界。每关必须含深度 0 的锚行(关卡入口行),缺失即加载期致命,防止入口请求静默落到深处行造成难度突刺。请求越域(关卡序号小于 1 或深度为负)在进入解析前致命中止。没有兜底行、没有外推:超过表范围的成长外推归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)的公式职责,本系统只解析到最近已有行——解析永不发明数据。 @@ -188,7 +188,7 @@ |---|---|---| | 表路径清单 | data/tables/ 固定(调试注入根除外) | 冻结:散装路径破坏单点访问 | | 随机流口径 | 统一流单盐单计数器 + 七用途标签封闭词表 | 统一口径为 2026-09-27 裁决;扩签 = 改代码 + 评审,有意设卡 | -| 进度坐标解析策略 | 可取范围内向上取整 + 警告(保证偏难);超出最大行封顶取最大值 + 警告;域越界致命(2026-09-18 两段拍板,原「就近向下」退役) | 冻结:静默降难会掩盖难度断档 | +| 进度坐标解析策略 | 可取范围内向上取整 + 警告(保证偏难);超出最大行封顶取最大值 + 警告;域越界致命(2026-09-18 两段拍板) | 冻结:静默降难会掩盖难度断档 | | 入口锚行校验 | 写死开 | 非调参项;重议走文档修订流程 | | 调试覆盖开关 | 仅调试构建,默认关 | 正式构建结构性不存在;覆盖值永不回写表文件 | diff --git a/design/gdd/systems/表现与支撑/设置与本地化.md b/design/gdd/systems/表现与支撑/设置与本地化.md index 7fe2e49b..f066939d 100644 --- a/design/gdd/systems/表现与支撑/设置与本地化.md +++ b/design/gdd/systems/表现与支撑/设置与本地化.md @@ -1,7 +1,7 @@ # 设置与本地化 > 一句话:设置项与多语言 -> 状态:范围草案·最小设置面已兑现(2026-09-29 迭代 8 卡④);现行为 v1.1 +> 状态:范围草案·最小设置面已兑现;现行为 v1.2 ## 设计目的 @@ -30,7 +30,7 @@ | 呈现语义与可访问性基线本体(字号下限、闪烁上限、纯鼠标可玩等) | [HUD 框架](HUD框架.md) | | 逐行结算的呈现规则 | [battle.md](../../ux/battle.md) 与 [HUD 框架](HUD框架.md),本文只引用 | | 减动效开启后动画怎么演 | [战斗表现](../战斗循环/战斗表现.md)——本文提供开关,动画侧兑现归对方 | -| 音量调节对声音怎么生效 | [音频](音频.md)——生效侧归对方,口径已对齐(2026-09-18 音频成文) | +| 音量调节对声音怎么生效 | [音频](音频.md)——生效侧归对方,口径已对齐 | | 文案内容本体(教学条目、界面用语等写了什么) | 各系统文档——本文只做翻译生产,不改含义 | | 数值调试工具(TunePanel 的另一半去向) | [元进度](../跨局循环/元进度.md) | | 设置界面的布局与呈现 | [HUD 框架](HUD框架.md) | @@ -92,7 +92,7 @@ MVP 不要求本系统的闭环:[不做清单](../../05-不做清单.md)把设 | 优先级 | 内容 | 后置原因 | |---|---|---| -| ~~P1~~ | ~~已承诺设置项落位:减动效开关、音量控制入口~~ | **已兑现**(2026-09-29 迭代 8 卡④最小设置面:音量 master bus 实时+持久、减动效开关转正〔测试调整板旧开关退役,设置面唯一入口〕、全屏切换、退出游戏;载体=独立设置存储 + 设置界面视图(一安装一份,不进存档);键位映射/多语言仍按后置表排期) | +| ~~P1~~ | ~~已承诺设置项落位:减动效开关、音量控制入口~~ | **已兑现**(最小设置面:音量 master bus 实时+持久、减动效开关转正〔测试调整板旧开关退役,设置面唯一入口〕、全屏切换、退出游戏;载体=独立设置存储 + 设置界面视图(一安装一份,不进存档);键位映射/多语言仍按后置表排期) | | P1 | 多语言生产流程与首批语言清单 | 生产流程未定:文案怎么管理、谁负责校对 | | P2 | 设置项全集(画面 / 键位 / 可访问性 / 语言各类别) | 全集无来源,待设计问题清单裁决后展开 | | P2 | 结算风味词输入的承接 | 归档只登记了存在,各归各的时机 | @@ -117,7 +117,7 @@ MVP 不要求本系统的闭环:[不做清单](../../05-不做清单.md)把设 ## 待设计问题清单 1. 设置项全集:画面、键位、可访问性、语言各类别各收哪些项——目前有来源的只有减动效与音量入口两条。 -2. 设置持久化(已拍板 2026-09-19):独立存储,不随存档——系统级设置一安装一份;具体文件格式与读写时机随存档序列化设计批对齐(设置域归本系统所有)。 +2. 设置持久化(已拍板 2026-09-19):独立存储,不随存档——系统级设置一安装一份;具体文件格式与读写时机随存档序列化对齐(设置域归本系统所有)。 3. 语言清单与字体覆盖:做哪些语言,字体对相应字符集的覆盖怎么保证。 4. 文案生产流程:文本键(每条文案在工程里的唯一编号,机器据此找到译文)怎么管理、谁负责校对、翻译在流程的哪一步介入。 5. 设置界面的入口与形态:从哪里打开、什么时刻可以打开——与 HUD 框架协作定。 diff --git a/design/gdd/systems/跨局循环/元进度.md b/design/gdd/systems/跨局循环/元进度.md index 643b463a..c01abf51 100644 --- a/design/gdd/systems/跨局循环/元进度.md +++ b/design/gdd/systems/跨局循环/元进度.md @@ -1,13 +1,13 @@ # 元进度 > 一句话:跨局成长——钥石在营地换成永久强化,存档随冒险变厚 -> 状态:**已定稿(现行为 v1.26)**——2026-09-18 元进度定稿批用户拍板;历次升版明细见 git 提交史。 +> 状态:**已定稿(现行为 v1.27)**——历次升版明细见 git 提交史。 ## 设计目的 -元进度管的是跨局成长:一场冒险结束,局内的血、库存与随机种子全部清零重来,而存档里攒下的东西不清零。玩家在下探途中夺得一种叫钥石的永久系统资源(渠道 = Boss / 精英怪击杀掉落——原「关卡大奖励入账」渠道随迭代 10 奖励重构退役,见核心规则),在冒险与冒险之间用它换永久强化——这就是核心循环里「存档在变厚」的故事线,本系统就是这条线的归属地。 +元进度管的是跨局成长:一场冒险结束,局内的血、库存与随机种子全部清零重来,而存档里攒下的东西不清零。玩家在下探途中夺得一种叫钥石的永久系统资源(渠道 = Boss / 精英怪击杀掉落,见核心规则),在冒险与冒险之间用它换永久强化——这就是核心循环里「存档在变厚」的故事线,本系统就是这条线的归属地。 -定名(2026-09-18 用户拍板):**元进度**(Meta Progression)是系统族名,本作落地名叫**永久强化**——伴随存档生命周期、可被钥石换取的成长资源集合。归档线索里的旧概念「天赋树」随定名退役的是其旧义;树形结构本身已随迭代 12 以锻造脉形态落地在役——存档域 tree_nodes / fork_sides(save v5)、营地树面板,系统现行事实源 = [天赋树](天赋树.md)。**营地**是存档内消费钥石的枢纽场所,只是界面壳(呈现层概念),不是机制实体——机制主语一律用「永久强化」。 +定名(2026-09-18 用户拍板):**元进度**(Meta Progression)是系统族名,本作落地名叫**永久强化**——伴随存档生命周期、可被钥石换取的成长资源集合。树形结构本身以锻造脉形态落地在役——存档域 tree_nodes / fork_sides(save v5)、营地树面板,系统现行事实源 = [天赋树](天赋树.md)。**营地**是存档内消费钥石的枢纽场所,只是界面壳(呈现层概念),不是机制实体——机制主语一律用「永久强化」。 **系统资源口径**(定义见[核心循环](../../01-核心循环.md)「系统资源」节):钥石与 GP 是两条平行独立的系统资源,不立统一上位概念,按生命周期各归各档——钥石=存档级系统资源归本文,GP=冒险级系统资源归[冒险结构](../冒险循环/冒险结构.md)「GP」节。 @@ -33,7 +33,7 @@ | 关卡大奖励的钥石入账 | [冒险结构](../冒险循环/冒险结构.md)——记账挂点已定,本文是消费方 | | 存档的读写与版本迁移 | [存档序列化](../表现与支撑/存档序列化.md)——本系统是存进去的内容之一 | | 换算率表数值行与配置表承载 | [数据配置](../表现与支撑/数据配置.md)——本系统登记键结构、设计批回填数值 | -| 营地界面、钥石余额与解锁呈现 | [HUD 框架](../表现与支撑/HUD框架.md)——本批只拍交互框架(双入口),视觉与实现随对方 | +| 营地界面、钥石余额与解锁呈现 | [HUD 框架](../表现与支撑/HUD框架.md)——本文只拍交互框架(双入口),视觉与实现随对方 | | 难度区间模型本身 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md)——本文只经区间平移换算率接入 | | 奖励格图鉴的格子内容设计 | [地图战斗资源](../战斗循环/地图战斗资源.md)(差异化批,排 Alpha)——本文只登记功能界面结构位 | @@ -49,9 +49,9 @@ ### 钥石:入账渠道与重复获取 -钥石是玩家在局内夺得、在局外消费的永久系统资源,2026-09-14 拍板定名。渠道自迭代 10 起改一(2026-09-30 用户拍板奖励重构——原「关卡大奖励入账」渠道随大奖励三件套退役,keystone_per_level 行值退役):**Boss / 精英怪击杀掉落**(逐杀实时入账,行值读 meta.tres boss_keystone 首杀/复杀两档;精英怪未实装,掉 1 个预留)。钥石存进存档、永不丢失,就算之后倒下也不收回。 +钥石是玩家在局内夺得、在局外消费的永久系统资源,2026-09-14 拍板定名。渠道 = **Boss / 精英怪击杀掉落**(2026-09-30 用户拍板奖励重构;逐杀实时入账,行值读 meta.tres boss_keystone 首杀/复杀两档;精英怪未实装,掉 1 个预留;原「关卡大奖励入账」渠道与 keystone_per_level 行值已退役)。钥石存进存档、永不丢失,就算之后倒下也不收回。 -**与 GP 的分工(2026-09-20 GP+商店房批注记,知会性质)**:钥石 = 跨局持久的解锁资源(入存档永不丢失);GP = 冒险内一次性的属性提升货币——局内清零、不入存档,GP 归[冒险结构](../冒险循环/冒险结构.md)。两币的记录与生命周期完全分离,永不互兑。 +**与 GP 的分工(知会性质)**:钥石 = 跨局持久的解锁资源(入存档永不丢失);GP = 冒险内一次性的属性提升货币——局内清零、不入存档,GP 归[冒险结构](../冒险循环/冒险结构.md)。两币的记录与生命周期完全分离,永不互兑。 **重复获取规则(2026-09-18 用户拍板)**:同一 Boss **首次击杀给大额**,之后的重复击杀只给**固定小额**——不设递减曲线,存档只记首杀标记位。设计意图:深度关的产出优势是长线驱动(配合定价几何递增,见下),重复刷老关仍有小额意义但不构成无上限的产出泵。两档数值与两渠道量级配比归元进度设计批配读数投值,行值读表。 @@ -62,18 +62,18 @@ | 功能界面 | 内容 | 解锁渠道 | |---|---|---| | 属性锻造 | 生命上限、基础攻击、护甲等级——三档可重复升级的属性强化 | 钥石直购 | -| 秘宝匣 | 秘宝解锁与同调装配——**件的目录与效果权威定义在[秘宝](秘宝.md)「目录(重设计 v1)」**(12 件三档〔2026-10-11 裁回能器删/换装券撤/第四只手删〕;旧目录全退役只作素材库) | 解锁=混合制(基础件钥石购买/特定件条件解锁——见秘宝.md「道具从哪来」;装配只在冒险开始前配置,冒险中零更换途径〔2026-10-11 终裁〕);**迭代 22 实装批落地(2026-10-12)**:购买钮(余额不足禁用态)+条件解锁进度呈现+分档装配呈现(名后缀·档位/未解锁禁装)+空目录合法态;界面数据投影=秘宝匣柜台状态(解锁态/条件进度/价格单点);旧道具工坊渠道面(行族/词表/解锁函数)已顺带退役;钥石定价与阈值 provisional 归调参批 | +| 秘宝匣 | 秘宝解锁与同调装配——**件的目录与效果权威定义在[秘宝](秘宝.md)「目录(重设计 v1)」**(12 件三档〔2026-10-11 裁回能器删/换装券撤/第四只手删〕;旧目录全退役只作素材库) | 解锁=混合制(基础件钥石购买/特定件条件解锁——见秘宝.md「道具从哪来」;装配只在冒险开始前配置,冒险中零更换途径〔2026-10-11 终裁〕);界面实现:购买钮(余额不足禁用态)+条件解锁进度呈现+分档装配呈现(名后缀·档位/未解锁禁装)+空目录合法态;界面数据投影=秘宝匣柜台状态(解锁态/条件进度/价格单点);旧道具工坊渠道面(行族/词表/解锁函数)已退役;钥石定价与阈值 provisional 归调参批 | | 奖励格图鉴 | 特殊奖励格的解锁——更强效果的格面 | 结构位现定;格子内容排 Alpha,随[地图战斗资源](../战斗循环/地图战斗资源.md)差异化批落地 | -属性锻造的树形节点结构已随迭代 12 落地在役——**结构/节点/数值的现行事实源 = [天赋树](天赋树.md),本文不复制树侧内容、只作指路**;本界面三档直线强化与树淬炼 flat 在注入面叠加生效(注入口径见下文「跨局注入」节)。 +属性锻造的树形节点结构已落地在役——**结构/节点/数值的现行事实源 = [天赋树](天赋树.md),本文不复制树侧内容、只作指路**;本界面三档直线强化与树淬炼 flat 在注入面叠加生效(注入口径见下文「跨局注入」节)。 -属性锻造的攻击、护甲两档已按[锻造工坊](锻造工坊.md) v0.6(成文时名「武器锻造」,2026-10-11 更名)设计定案转为武器与护甲的独立等级路线——**行族本体随迭代 21 T5 退役、路线为新建行族,已随迭代 23 实装入库(2026-10-12,新表 `forge.tres`)**。营地钥石入口族换代(2026-10-13 v1.18 迭代 23 反哺写入):原逐级购买写口随 forge_products 退役删除后,本柜台钥石消费写口 = **逐级锻造价 / 一次性解锁价 / 免费选中武器·甲**——写口唯一经元进度锻造写口族(契约 9 写口单点,UI 只发意图);钥石定价历史考古参数 20 钥石/150% 公比见 `meta.tres` 退役批注,provisional 投值终值归 M4。 +属性锻造的攻击、护甲两档已按[锻造工坊](锻造工坊.md)设计定案转为武器与护甲的独立等级路线——**路线为新建行族(新表 `forge.tres`),已实装在役**。本柜台钥石消费写口 = **逐级锻造价 / 一次性解锁价 / 免费选中武器·甲**——写口唯一经元进度锻造写口族(写口单点,UI 只发意图);钥石定价考古参数 20 钥石/150% 公比见 `meta.tres` 退役批注,provisional 投值终值归 M4。 -**营地统一(2026-10-11 天赋树设计会话裁案甲;2026-10-13 v1.20 迭代 21 反哺写入——「落地前维持现役」过渡态终结)**:树=营地本体,本属性锻造柜台已随迭代 21 退役、属性升级唯一入口=树脊柱淬炼节点(四柜台并排已实装,2026-10-12 入库)。**完整模型(四柜台并排/钥匙工作间/图鉴常开)唯一事实源 = [天赋树](天赋树.md)「营地=树:统一模型」节——本文只登记本柜台在系统内的去留,不复制树侧内容。** +**营地统一(2026-10-11 用户裁案甲)**:树=营地本体,本属性锻造柜台已退役、属性升级唯一入口=树脊柱淬炼节点(四柜台并排已实装)。**完整模型(四柜台并排/钥匙工作间/图鉴常开)唯一事实源 = [天赋树](天赋树.md)「营地=树:统一模型」节——本文只登记本柜台在系统内的去留,不复制树侧内容。** **投值语言锁定(2026-09-18 数值语言拍板)**:营地属性强化一律 **flat 整数加减**("每级 +1 基础攻击"式,而非"+50% 攻击"式)——避开百分比词条被数值成长稀释的先例陷阱、守住数字可读性锚;具体每级数值仍归元进度设计批投值。 -各界面定价纪律:**定价曲线一律几何递增**(每级费用按公比上浮——原则已拍板,起步价与公比数字归设计批配读数),与产出逻辑配套:深层关钥石产出多、后级强化贵,逼玩家往深处走。~~秘宝匣首版只挂通关次数渠道~~(历史排期裁决已消解:秘宝匣现役=钥石直购+条件解锁混合制,迭代 22 落地,2026-10-12)。**存档义务随柜台产生**:钥石余额、永久强化等级表、每关通关次数表、Boss 首杀标记位——四件已逐域登记在存档登记条目(内容 owner = 元进度,承载 owner = [存档序列化](../表现与支撑/存档序列化.md))。 +各界面定价纪律:**定价曲线一律几何递增**(每级费用按公比上浮——原则已拍板,起步价与公比数字归设计批配读数),与产出逻辑配套:深层关钥石产出多、后级强化贵,逼玩家往深处走。秘宝匣现役=钥石直购+条件解锁混合制。**存档义务随柜台产生**:钥石余额、永久强化等级表、每关通关次数表、Boss 首杀标记位——四件已逐域登记在存档登记条目(内容 owner = 元进度,承载 owner = [存档序列化](../表现与支撑/存档序列化.md))。 护甲等级进首版属性柜台是 2026-09-18 拍板(用户选 A),其代价条款见下方换算率节的强条目登记。 @@ -81,7 +81,7 @@ 解锁让玩家变强,难度验收区间随之需要平移——双方约定(难度曲线与Boss 定稿口径)永久强化的影响**不直接改难度判据**,而是按统一换算率折算成关卡完成率带的平移量后套用:完美档 gate 与 normal 目标带的判读口径不变,带随解锁等级平移。 -换算率表(数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(2026-09-23 换算率标定批投值——OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径 + 当日数值包现行态;报告已按生命周期条款退役,判定端 ④ 段可复判): +换算率表(数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径;判定端 ④ 段可复判): | 换算行 | 折算语义 | 每级带平移量(现行表值) | |---|---|---| @@ -89,7 +89,7 @@ | 基础攻击强化 | 每级折算为关卡完成率带平移量 | **9 点** | | 护甲等级强化 | 每级折算为关卡完成率带平移量 | **1 点** | -判定端按表值驱动消费:验收带按解锁状态折算后套用,表改则判定随动。护甲行强条目重测义务已于标定批履行(解锁后参数实测,非基线外推);标定同时暴露并修复一处缺口:主角护甲锻造与局内加算区护甲轴的生效值此前未进战斗(该轴此前无消费方=已知缺口,已随标定批修复并登记)。 +判定端按表值驱动消费:验收带按解锁状态折算后套用,表改则判定随动。护甲行强条目已履行(解锁后参数实测,非基线外推)。 后续柜台商品(秘宝匣钥石价、奖励格图鉴)上架时逐条补行——每次上架新商品伴随一行换算登记,逐行归因纪律不破。 @@ -99,11 +99,11 @@ 执行口径:开始一次新冒险时,本系统按存档内的永久强化状态算好一份 override,逐字段显式传给战斗初始化——配置因此不是完全静态的,随游戏进程动态改变(用户拍板原话口径)。字段清单随柜台扩展:道具池、遭遇权重、奖励格解锁是集合操作,参数面登记**追加 / 替换**两种语义。 -**开局属性四层叠加(2026-10-12 v1.16 补登记——事实源=[锻造工坊](锻造工坊.md)「注入衔接」节 v0.6 / [天赋树](天赋树.md);原「属性锻造三档是数值覆盖」随迭代 21 T5 行族退役换代为下述分层;2026-10-13 v1.18 迭代 23 反哺写入补终态句)**:开局属性 = 角色基础值 + 树生命/命中淬炼 flat + 锻造路线加值(当前选中武器的攻击加值 + 当前甲的 AC 加值——默认值由锻造工坊配置常驻持有、与柜台解锁状态解耦,当前选中读存档域)+ 局内加算区 flat。入战 AC 三层可加 = 甲型基础 AC + 甲路线等级加值 + 局内加算区累加——**第一层「甲型基础 AC」= 选中甲路线行 `base_ac`(`forge.tres`,轻 10/重 12/魔法护甲 9 provisional),已随迭代 23 实装在役(入战 AC 三层公式第一层,树 flat + 锻造路线加值同批在役)**。 +**开局属性四层叠加(事实源=[锻造工坊](锻造工坊.md)「注入衔接」节 / [天赋树](天赋树.md))**:开局属性 = 角色基础值 + 树生命/命中淬炼 flat + 锻造路线加值(当前选中武器的攻击加值 + 当前甲的 AC 加值——默认值由锻造工坊配置常驻持有、与柜台解锁状态解耦,当前选中读存档域)+ 局内加算区 flat。入战 AC 三层可加 = 甲型基础 AC + 甲路线等级加值 + 局内加算区累加——**第一层「甲型基础 AC」= 选中甲路线行 `base_ac`(`forge.tres`,轻 10/重 12/魔法护甲 9 provisional;入战 AC 三层公式第一层)**。 ### 解锁界面:双入口框架 -(2026-09-18 拍板;入口拓扑随迭代 33 卡② 三入口化换代,2026-10-22 反哺写入)营地消费面(消费钥石、查看与管理永久强化)经主菜单「进入存档」→选档界面→进档/新档进入,主菜单不再设营地独立钮;局内状态面板(原称暂停层,2026-10-13 改名——游戏非实时无暂停语义)也可查看钥石余额与本局冒险信息(只读)。钥石余额在 HUD 常驻展示。呈现 spec 已出生:[ux/camp.md](../../ux/camp.md) v1.0(2026-09-30 审计拍板点 4A 裁决写入文档——退役/封存件「已退役/已解锁·能力封存中」呈现语义随 spec 落位);视觉终稿已随迭代 9 9A 段落码(2026-09-30)。本节锁框架与需求,呈现细节归 spec;局内状态面板入口已实装(2026-10-06 迭代 17 卡③〔时名暂停层〕——实机目检待用户,待办清单登记条在册)。 +(2026-09-18 拍板;入口拓扑=三入口化)营地消费面(消费钥石、查看与管理永久强化)经主菜单「进入存档」→选档界面→进档/新档进入,主菜单不再设营地独立钮;局内状态面板(游戏非实时无暂停语义)也可查看钥石余额与本局冒险信息(只读)。钥石余额在 HUD 常驻展示。呈现 spec:[ux/camp.md](../../ux/camp.md) v1.0(退役/封存件「已退役/已解锁·能力封存中」呈现语义随 spec 落位);视觉终稿已落码。本节锁框架与需求,呈现细节归 spec;局内状态面板入口已实装(实机目检待用户,待办清单登记条在册)。 ### 单局循环零依赖:排期边界的推论 @@ -130,9 +130,9 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)整体 | 优先级 | 内容 | 后置原因 | |---|---|---| | P1 | 营地功能界面内容铺量与定价数字 | 界面结构已定稿;清单明细、几何定价的起步价与公比、Boss 两档产出数值,随设计批配读数投值 | -| P1 | 秘宝匣钥石直购价 | **已投 provisional 占位**(普通档 10/优秀档 25 钥石,迭代 22 落地,2026-10-12);终值归调参批(原「首版只挂通关次数渠道」排期态随混合制落地消解) | +| P1 | 秘宝匣钥石直购价 | **已投 provisional 占位**(普通档 10/优秀档 25 钥石);终值归调参批 | | P1 | 奖励格图鉴的格子内容 | 排 Alpha,随[地图战斗资源](../战斗循环/地图战斗资源.md)差异化批 | -| P1 | 换算率表数值行标定 | **已完成**(2026-09-23 换算率标定批——首版三行投值 6/9/1,护甲行强条目重测顺带履行并修复护甲断链)(原系笔误孤例,换算率登记与 meta.tres 均为 6/9/1——2026-09-30 勘误) | +| P1 | 换算率表数值行标定 | **已完成**(首版三行投值 6/9/1,护甲行强条目已履行) | | P2 | 营地界面与解锁呈现实现 | 归[HUD 框架](../表现与支撑/HUD框架.md)协作批,以表现层样张过审为前置 | ## 调参表 @@ -143,7 +143,7 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)整体 |---|---|---| | 换算率表 | 本文 owner,键结构见元进度表结构声明 | `data/tables/`,设计批投值(首版三行,护甲行强条目) | | 定价表(属性锻造 / 秘宝匣 / 奖励格图鉴费用曲线) | 随设计批建表 | `data/tables/`,几何递增参数 | -| 钥石产出(Boss 首杀额 / 重复杀小额) | 入账挂点见[冒险结构](../冒险循环/冒险结构.md)调参表(boss_keystone 行);Boss 两档归本文设计批(每关入账值 keystone_per_level 已随迭代 10 奖励重构退役) | `data/tables/` | +| 钥石产出(Boss 首杀额 / 重复杀小额) | 入账挂点见[冒险结构](../冒险循环/冒险结构.md)调参表(boss_keystone 行);Boss 两档归本文设计批(每关入账值 keystone_per_level 已退役) | `data/tables/` | ## 验收标准 diff --git a/design/gdd/systems/跨局循环/天赋树.md b/design/gdd/systems/跨局循环/天赋树.md index d83689e6..a52ce40c 100644 --- a/design/gdd/systems/跨局循环/天赋树.md +++ b/design/gdd/systems/跨局循环/天赋树.md @@ -7,7 +7,7 @@ ## 设计目的 -元进度管「钥石与永久强化」的跨局系统资源,天赋树回答这组系统资源里「永久强化长什么样」——并且它是营地的机制本体(2026-10-11 用户裁案甲),营地升级就是天赋树升级。主干脊柱管生命/命中的积累节奏(两线唯一入口——2026-10-11 攻防所有权切分:攻击唯一入口=锻造工坊武器路线、AC 唯一入口=锻造工坊甲路线,树零攻防来源=红线,每根数值轴全游戏单一来源);锻造脉与钥石脉是两把工作间钥匙——点亮后展开锻造工坊(武器/护甲路线升级)与秘宝匣(秘宝解锁与同调装配)两个工作间;同调脉管同调位挂载与规则抉择。营地界面呈现=四柜台并排(2026-10-11 锻造工坊裁决会话 A② 裁):树淬炼柜台是树脊柱的界面形态,锻造工坊柜台在钥匙点亮前呈锁定态。玩家在两场冒险之间回到营地,用钥石逐节点点亮这棵树,点亮的属性与规则在下一局开局注入。 +元进度管「钥石与永久强化」的跨局系统资源,天赋树回答这组系统资源里「永久强化长什么样」——并且它是营地的机制本体(2026-10-11 用户裁案甲),营地升级就是天赋树升级。主干脊柱管生命/命中的积累节奏(两线唯一入口——2026-10-11 攻防所有权切分:攻击唯一入口=锻造工坊武器路线、AC 唯一入口=锻造工坊甲路线,树零攻防来源=红线,每根数值轴全游戏单一来源);锻造脉与钥石脉是两把工作间钥匙——点亮后展开锻造工坊(武器/护甲路线升级)与秘宝匣(秘宝解锁与同调装配)两个工作间;同调脉管同调位挂载与规则抉择。营地界面呈现=四柜台并排(2026-10-11 用户裁):树淬炼柜台是树脊柱的界面形态,锻造工坊柜台在钥匙点亮前呈锁定态。玩家在两场冒险之间回到营地,用钥石逐节点点亮这棵树,点亮的属性与规则在下一局开局注入。 树同时是账号姿态的承载:买了哪些节点、双态开关节点当前激活哪态,构成这个存档的跨局姿态——「我的账号玩成了什么样」。 @@ -19,7 +19,7 @@ | 负责 | 说明 | |---|---| -| 节点结构与解锁规则 | 12 节点的一脊三脉构成、脊柱行门槛(节点第 N 级)、点亮前置(requires)+ **等级阈值前置(requires_level——R1 机制位 2026-10-13 顺带重立,现役零配置空转)**、Fork 一节点双态与免费切换、彩蛋觉醒——结构事实源 = `data/tables/meta_tree.tres`(**已实装在役,迭代 21 T1**) | +| 节点结构与解锁规则 | 12 节点的一脊三脉构成、脊柱行门槛(节点第 N 级)、点亮前置(requires)+ **等级阈值前置(requires_level——机制位,现役零配置空转)**、Fork 一节点双态与免费切换、彩蛋觉醒——结构事实源 = `data/tables/meta_tree.tres`(**已实装在役**) | | 树的购买与货币规则 | 全树钥石单币;free 节点零币;购买校验四件套(等级上限 / 行门槛 / 前置 / 未解锁) | | 营地统一模型 | 树=营地本体(呈现=四柜台并排):生命/命中淬炼唯一入口=树脊柱淬炼节点,攻/AC 唯一入口=锻造工坊路线(所有权切分,2026-10-11 裁);工作间钥匙模型(锻造工坊 / 秘宝匣);图鉴常开;旧属性锻造柜台退役(生命归脊柱、攻防归锻造工坊) | | 树域存档的内容语义 | tree_nodes(node_id→已购等级)与 fork_sides(fork_group→激活态)两域语义;旧档废弃规则(开发阶段无迁移——2026-10-11 用户裁) | @@ -49,43 +49,42 @@ ### 营地=树:统一模型 -营地机制本体=这一棵树(2026-10-11 用户裁案甲,取代旧「三柜台→一树」界面重构议题);营地界面呈现=四柜台并排(2026-10-11 锻造工坊裁决会话 A② 裁):①树淬炼柜台(树脊柱的界面形态,生命/命中淬炼唯一入口)②锻造工坊柜台(武器+护甲攻防两区)③秘宝匣柜台(秘宝解锁与同调装配)④奖励格图鉴(常开无门槛)。攻防独立柜台;宽度不足时横向滚动条兜底;程序占位先行,视觉与布局终稿归 HUD 营地批(后续 UI 优化另批)。机制语义不随呈现措辞变: +营地机制本体=这一棵树(2026-10-11 用户裁案甲);营地界面呈现=四柜台并排(2026-10-11 用户裁):①树淬炼柜台(树脊柱的界面形态,生命/命中淬炼唯一入口)②锻造工坊柜台(武器+护甲攻防两区)③秘宝匣柜台(秘宝解锁与同调装配)④奖励格图鉴(常开无门槛)。攻防独立柜台;宽度不足时横向滚动条兜底;程序占位先行,视觉与布局终稿归 HUD 营地批(后续 UI 优化另批)。机制语义不随呈现措辞变: -- **生命/命中淬炼唯一入口**——生命/命中的永久强化只在树脊柱淬炼节点购买;攻/AC 的永久强化唯一入口=锻造工坊武器/护甲路线(所有权切分,2026-10-11 裁——树零攻防来源=红线)。旧属性锻造柜台(forge_levels 三档直购)退役:生命档吸收进脊柱、攻/护档由[锻造工坊](锻造工坊.md)实装批路线化改造承接,`forge_levels` 旧存档域随实装批清退(开发阶段无迁移——旧档破坏性废弃,见存档域节)。 +- **生命/命中淬炼唯一入口**——生命/命中的永久强化只在树脊柱淬炼节点购买;攻/AC 的永久强化唯一入口=锻造工坊武器/护甲路线(所有权切分,2026-10-11 裁——树零攻防来源=红线)。旧属性锻造柜台(forge_levels 三档直购)已退役:生命档吸收进脊柱、攻/护档由[锻造工坊](锻造工坊.md)路线承接,`forge_levels` 旧存档域已清退(开发阶段无迁移——旧档破坏性废弃,见存档域节)。 - **工作间钥匙模型**——锻造工坊、秘宝匣是树上两枚免费解锁节点(钥匙):点亮后展开对应工作间柜台面板,工作间内的升级操作(武器/护甲路线升级、秘宝解锁与同调装配)不在树上重复成节点。钥匙节点本身零币、不可跳过——锻造工坊钥匙无前置、直接可点亮(2026-10-11 裁),秘宝匣钥匙前置=脊柱生命第 1 级;钥匙未点亮时对应柜台锁定态,没点亮就进不去工作间。 - **图鉴常开**——奖励格图鉴是查看类功能,不设钥匙、不设门槛。 -- 实装前过渡态:旧柜台三档直购维持现役(与树淬炼在注入面叠加),退役动作随待办清单「天赋树实装批」执行。 ### 一脊三脉:节点构成 -天赋树(玩家可见名)换代后 12 节点,按脉(vein)分四族: +天赋树(玩家可见名)12 节点,按脉(vein)分四族: | 脉 | 节点数 | 内容 | 结构要点 | |---|---|---|---| -| 主干脊柱(spine) | 2 | 生命淬炼 / 命中淬炼——一线一节点(kind=stat),每节点内 4 个等级状态 | 行门槛:节点第 N 级可购需全树已购总等级 ≥ 4×(N−1)。2026-10-11 一线一节点换代(用户裁:一个内容一个节点、等级在节点内、不拆多节点)——原「一线 4 层×层内 3 购」收编为单节点 4 级(层=级),行门槛常量=4 的公式平移到等级轴,row 字段随层行退役;达成节奏重算=注记在册、值归数值批 | -| 锻造脉(forge) | 2 | 锻造工坊(kind=unlock,free,工作间钥匙)+ 彩蛋节点地脉共鸣(kind=easter) | 锻造工坊前置 = **无**(free,直接可点亮——2026-10-11 攻防所有权切分裁,原「攻击淬炼累计 ≥2 且 护甲淬炼累计 ≥2」等级阈值前置随两线砍除作废);彩蛋挂本脉 | +| 主干脊柱(spine) | 2 | 生命淬炼 / 命中淬炼——一线一节点(kind=stat),每节点内 4 个等级状态 | 行门槛:节点第 N 级可购需全树已购总等级 ≥ 4×(N−1)(2026-10-11 用户裁一线一节点:一个内容一个节点、等级在节点内、不拆多节点;row 字段随层行退役);达成节奏重算=注记在册、值归数值批 | +| 锻造脉(forge) | 2 | 锻造工坊(kind=unlock,free,工作间钥匙)+ 彩蛋节点地脉共鸣(kind=easter) | 锻造工坊前置 = **无**(free,直接可点亮——2026-10-11 攻防所有权切分裁);彩蛋挂本脉 | | 钥石脉(keystone) | 2 | 秘宝匣(kind=unlock,free,工作间钥匙)/ 刷新升级(kind=rule) | 前置链:秘宝匣 ← 脊柱生命第 1 级;刷新升级 ← 秘宝匣 | | 同调脉(attune) | 6 | 同调位 1/2/3 三节点(kind=socket)+ Fork 3 节点(kind=fork,一节点双态)= **3 同调位 + 3 双态开关节点** | **同调位 1 为根节点、无前置**,其后逐级前置(1→2→3);全部 Fork 前置 = 同调位 1;Fork=开局姿态/危险直觉/财富之道各一节点(2026-10-11 用户裁:一节点双态、解锁后 A/B 可切——非六节点) | -节点类型是封闭枚举六类:stat(生命/命中两线数值)/ rule(全局规则)/ unlock(内容解锁)/ socket(同调位)/ fork(一节点双态开关)/ easter(彩蛋觉醒)。字段、词表与跨字段约束由 schema 校验(加载期校验:脉 / 类型 / 币出域即拒、effects 键封闭、Fork 三组每组恰一节点、彩蛋 ≤3、禁 archetype 键)。**schema 连带已随迭代 21 T1 落地**:Fork 由 A/B 双行改单行双态(行持 a/b 双效果键 effects_a/b+name_a/b,效果按激活态取值;Fork 组词表 4→3 组)、规则键词表 2→6 键(见 Fork 节)、row 字段随一线一节点退役;「等级阈值前置」机制位 **2026-10-13 顺带重立**(requires_level 字段+加载校验,现役零配置——见头部状态行)。 +节点类型是封闭枚举六类:stat(生命/命中两线数值)/ rule(全局规则)/ unlock(内容解锁)/ socket(同调位)/ fork(一节点双态开关)/ easter(彩蛋觉醒)。字段、词表与跨字段约束由 schema 校验(加载期校验:脉 / 类型 / 币出域即拒、effects 键封闭、Fork 三组每组恰一节点、彩蛋 ≤3、禁 archetype 键)。**schema 现行**:Fork 为单行双态(行持 a/b 双效果键 effects_a/b+name_a/b,效果按激活态取值;Fork 组词表三组)、规则键词表六键(见 Fork 节)、row 字段随一线一节点退役;「等级阈值前置」机制位=requires_level 字段+加载校验(现役零配置——见头部状态行)。 ### 节点总表(12 节点) -换代后全名单(2026-10-11 Fork 一节点双态批换代:15→12)。数值行(价格/上限/效果取值)不在此表,读配置文件 `data/tables/meta_tree.tres`(**12 行结构已实装在役——迭代 21 T1,33 行旧结构已废弃重置不迁移**): +全名单(12 节点)。数值行(价格/上限/效果取值)不在此表,读配置文件 `data/tables/meta_tree.tres`(**12 行结构已实装在役,33 行旧结构已废弃重置不迁移**): | 节点 | 脉 | 类型 | 前置 | 效果方向 | |---|---|---|---|---| | 生命淬炼 | 脊柱 | stat | 第 1 级无门槛;第 2~4 级=行门槛(全树总投入 ≥4/8/12) | 单节点 4 级,每级生命上限 +5 量级 | | 命中淬炼 | 脊柱 | stat | 同上行门槛 | 单节点 4 级,每级命中 +1 量级(暂不注入——消费面归数值批) | -| 锻造工坊 | 锻造 | unlock | 无(free,直接可点亮——2026-10-11 裁,原等级阈值前置作废) | 免费点亮→展开锻造工坊工作间(武器/护甲路线升级=攻/AC 数值唯一入口,内容现行事实源=[锻造工坊](锻造工坊.md)) | +| 锻造工坊 | 锻造 | unlock | 无(free,直接可点亮——2026-10-11 裁) | 免费点亮→展开锻造工坊工作间(武器/护甲路线升级=攻/AC 数值唯一入口,内容现行事实源=[锻造工坊](锻造工坊.md)) | | 地脉共鸣 | 锻造 | easter | 生命/命中两线全部买满(两节点均 4 级拉满)**且** 同调位 1/2/3 全部解锁 | 免费自动觉醒;生命/命中两线 flat 各一份(命中分量随命中线注入面落位生效) | | 秘宝匣 | 钥石 | unlock | 脊柱生命第 1 级 | 免费点亮→展开秘宝匣工作间(秘宝解锁+同调装配,现行事实源=[秘宝](../跨局循环/秘宝.md)) | -| 刷新升级 | 钥石 | rule | 秘宝匣 | 每级提升同调刷新能力(现役生效走同调段账本;树上接线=缺陷修复归实装批) | -| 同调位 1 | 同调 | socket | 无(根节点) | 解锁同调挂载位 1(**槽位收编已落地——判定源 = 树点亮数,迭代 21 T4**) | +| 刷新升级 | 钥石 | rule | 秘宝匣 | 每级提升同调刷新能力(现役生效走同调段账本) | +| 同调位 1 | 同调 | socket | 无(根节点) | 解锁同调挂载位 1(**槽位收编已落地——判定源 = 树点亮数**) | | 同调位 2 | 同调 | socket | 同调位 1 | 挂载位 2 | | 同调位 3 | 同调 | socket | 同调位 2 | 挂载位 3 | | 开局姿态 | 同调 | fork·双态 | 同调位 1 | **A** 先手压制=每关首轮行动点 +1 / **B** 稳健拓荒=每关首轮内受击减伤(购买解锁·默认 A·营地零币切换) | -| 危险直觉 | 同调 | fork·双态 | 同调位 1 | **A** 锋=踩中危险格伤害减半·每关限次 / **B** 守=危险格标记错误返还行动点·每关限次(**六键已接线在役——迭代 21 T3;标错机制存在性 T0 已实查结案**) | +| 危险直觉 | 同调 | fork·双态 | 同调位 1 | **A** 锋=踩中危险格伤害减半·每关限次 / **B** 守=危险格标记错误返还行动点·每关限次(**六键已接线在役**) | | 财富之道 | 同调 | fork·双态 | 同调位 1 | **A** 聚=战斗掉落 GP 增益(仅此渠道)/ **B** 散=GP 消费折价(全部 GP 消费面) | 三组 Fork 各为一个双态开关节点:购买一次解锁(cap1、零重复购买),解锁后默认 A 态,营地零币在 A/B 间切换;同一时刻每组恰一个激活态(互斥由单态承载);六态效果数值全 provisional 读表。 @@ -94,25 +93,25 @@ 所有付费节点只收钥石(2026-10-07 用户裁甲落定;行内 currency 字段保留为呈现元数据)。free 节点零币:两枚工作间钥匙(锻造工坊 / 秘宝匣)与彩蛋(觉醒)不经购买消费。 -购买校验四件套,全部通过才受理:①当前等级未满上限;②行门槛——脊柱节点第 N 级需全树已购总等级 ≥ 4×(N−1)(总等级口径 = tree_nodes 全部节点等级之和,免费点亮与分叉激活均计入——2026-10-11 歧义扫描裁甲沿现役实态;常量行门槛=4;2026-10-11 一线一节点换代后门槛主语=节点目标等级,原层行判定作废;达成节奏重算归数值批);③requires 前置满足——点亮前置(前置节点全部已点亮)+ **等级阈值前置(requires_level:指定前置节点等级 ≥ n——R1 机制位 2026-10-13 顺带重立,2026-10-12 曾按卡片默认裁撤案执行、用户推翻补机制位;现役 12 行零配置空转,配置归表行随需填)**;④Fork 节点未解锁(一节点双态——解锁后的态切换走零币切换口,不经购买)。执行购买时另查钥石余额:余额不足则购买失败,存档零副作用(等级、余额、激活态均不动)。 +购买校验四件套,全部通过才受理:①当前等级未满上限;②行门槛——脊柱节点第 N 级需全树已购总等级 ≥ 4×(N−1)(总等级口径 = tree_nodes 全部节点等级之和,免费点亮与分叉激活均计入——2026-10-11 歧义扫描裁甲;常量行门槛=4;门槛主语=节点目标等级;达成节奏重算归数值批);③requires 前置满足——点亮前置(前置节点全部已点亮)+ **等级阈值前置(requires_level:指定前置节点等级 ≥ n——机制位,现役 12 行零配置空转,配置归表行随需填)**;④Fork 节点未解锁(一节点双态——解锁后的态切换走零币切换口,不经购买)。执行购买时另查钥石余额:余额不足则购买失败,存档零副作用(等级、余额、激活态均不动)。 写口唯一:营地界面只发购买意图信号,扣币、升级、写盘全部经元进度系统的树上购买写口;Fork 节点购买走树上分叉购买写口(购即解锁、默认 A 态),态切换走树上分叉切换写口(零币、只改激活态)。 ### Fork 三组:一节点双态与免费切换 -Fork 组是封闭词表三组(2026-10-11 裁:克制专精整组砍除,类型表达归[锻造工坊](锻造工坊.md)):fg_posture(开局姿态)、fg_sense(危险直觉)、fg_economy(财富之道)。**每组一个节点、节点内两个状态**(2026-10-11 用户裁换代:现役 A/B 双行结构系迭代 12 沿袭,收编为单行双态):购买节点即解锁开关(tree_nodes 入档),解锁后默认 A 态(激活态写入存档 fork_sides);营地零币在 A/B 间切换——切换只改激活态,效果按新激活态效果键生效;同态重复切换是零操作;已解锁节点无重复购买。体验形态是「付一次钱得到一个双态开关」——现役 fork_sides 存档语义(组→激活态)不变,变的只是节点行的组织方式。 +Fork 组是封闭词表三组(类型表达归[锻造工坊](锻造工坊.md)):fg_posture(开局姿态)、fg_sense(危险直觉)、fg_economy(财富之道)。**每组一个节点、节点内两个状态**(2026-10-11 用户裁):购买节点即解锁开关(tree_nodes 入档),解锁后默认 A 态(激活态写入存档 fork_sides);营地零币在 A/B 间切换——切换只改激活态,效果按新激活态效果键生效;同态重复切换是零操作;已解锁节点无重复购买。体验形态是「付一次钱得到一个双态开关」——fork_sides 存档语义(组→激活态)不变。 效果定案(2026-10-11 用户逐组裁,数值全 provisional 归数值批): | 组(节点) | A 态 | B 态 | 设计注记 | |---|---|---|---| | fg_posture 开局姿态 | 先手压制 = 每关首轮 AP +1 | 稳健拓荒 = 每关首轮内受击减伤 | 两侧同收**每关首轮窗**(每关第一场战斗的第一轮,第二关自动刷新——时间范围一致性裁甲) | -| fg_sense 危险直觉 | 锋 = 踩中危险格伤害减半·每关限次 | 守 = 危险格标记错误返还行动点·每关限次 | 唯一根植排雷半边的组;玩家文案沿用「危险格 / 安全格」正主词,不出现雷字、不另造别名(2026-10-11 歧义扫描裁甲,废「陷阱/危险标记」自造词)。**前提核实在册**:标记错误机制存在性随实装批 T0 实查,查无则守侧换安全网向等价效果经用户裁 | -| fg_economy 财富之道 | 聚 = 战斗掉落 GP 增益 | 散 = GP 消费折价 | 范围(2026-10-11 歧义扫描裁):聚 = **仅战斗掉落渠道**;散 = **全部 GP 消费面**。**折扣定义边界(2026-10-12 卡片 v1.7 ⑪②裁决写入文档——原「设计避让」句按裁决改写)**:散的折价只覆盖商品购买价(消费折价系数),不含三选一付费刷新与商店刷新(`shop_refresh_cost` 不折)——这是折扣的定义边界本身,非对外两处旋钮的临时避让 | +| fg_sense 危险直觉 | 锋 = 踩中危险格伤害减半·每关限次 | 守 = 危险格标记错误返还行动点·每关限次 | 唯一根植排雷半边的组;玩家文案沿用「危险格 / 安全格」正主词,不出现雷字、不另造别名(2026-10-11 歧义扫描裁甲,废「陷阱/危险标记」自造词) | +| fg_economy 财富之道 | 聚 = 战斗掉落 GP 增益 | 散 = GP 消费折价 | 范围(2026-10-11 歧义扫描裁):聚 = **仅战斗掉落渠道**;散 = **全部 GP 消费面**。**折扣定义边界(2026-10-12 用户裁)**:散的折价只覆盖商品购买价(消费折价系数),不含三选一付费刷新与商店刷新(`shop_refresh_cost` 不折)——这是折扣的定义边界本身 | 「每关限次」的计数生命周期(2026-10-11 歧义扫描裁甲):限次计数随单次冒险持久、按关重置、新冒险清零、断点续玩保留。 -A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。**规则键的效果参数长在节点行的效果键值里**(每键一个参数字典,键集与取值域由 schema 按键声明;六键参数见下方「规则键参数表」),效果引擎只读参数、不持字面量。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。 +A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。**规则键的效果参数长在节点行的效果键值里**(每键一个参数字典,键集与取值域由 schema 按键声明;六键参数见下方「规则键参数表」),效果引擎只读参数、不持字面量。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp。 **规则键参数表**(参数名与取值域本文 owner;现行值读 `meta_tree.tres` 对应节点行 effects_a / effects_b): @@ -131,29 +130,29 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 ### 彩蛋节点:满排觉醒 -彩蛋节点全树上限 3 枚(schema 校验),在役 1 枚 = 地脉共鸣:**生命/命中两线全部买满(两节点均 4 级拉满)且 同调位 1/2/3 全部解锁**时自动觉醒点亮(2026-10-11 裁:原条件「四条淬炼线全部买满」随攻防所有权切分换代两线、复随一线一节点换代为两节点拉满),零币、不经购买;效果 = **生命/命中两线属性 flat**(取值读表;攻/护分量随所有权切分摘除——攻防归锻造工坊路线;命中分量随命中线注入面落位生效——命中线在账未注入纪律不变),经注入面进下一局。彩蛋不进主路径,是深度玩家的挖掘位。 +彩蛋节点全树上限 3 枚(schema 校验),在役 1 枚 = 地脉共鸣:**生命/命中两线全部买满(两节点均 4 级拉满)且 同调位 1/2/3 全部解锁**时自动觉醒点亮,零币、不经购买;效果 = **生命/命中两线属性 flat**(取值读表;攻防归锻造工坊路线;命中分量随命中线注入面落位生效——命中线在账未注入纪律不变),经注入面进下一局。彩蛋不进主路径,是深度玩家的挖掘位。 ### 存档域与旧档废弃 存档 v5 起树域两键(meta 域下):tree_nodes = node_id→已购等级(Fork 节点购买态=1 级解锁标记);fork_sides = fork_group→激活态("a" / "b")。承载与读写归[存档序列化](../表现与支撑/存档序列化.md),本文登记内容语义。 -**旧档废弃(2026-10-11 用户裁:开发阶段无迁移)**——Alpha 未出、无存量玩家,结构换代 = 破坏性废弃:加载检测到换代前结构(已删节点 id 残留)即废弃树域重置(或整档废弃),**禁做数据迁移与折算**;三体系迁移函数与旧域 `forge_levels` 随实装批清退删除。 +**旧档废弃(2026-10-11 用户裁:开发阶段无迁移)**——Alpha 未出、无存量玩家,结构换代 = 破坏性废弃:加载检测到换代前结构(已删节点 id 残留)即废弃树域重置(或整档废弃),**禁做数据迁移与折算**;三体系迁移函数与旧域 `forge_levels` 已清退删除。 ### 跨局注入:树效果怎么进下一局 树的效果经两条通道随冒险开始参数面下传(通道现行事实源 = [元进度](元进度.md)「跨局注入」节): -① 属性通道——开局属性 = **角色基础值 + 树生命/命中淬炼 flat(Σ 节点 effects × 等级)+ 锻造路线加值(当前武器攻击加值 + 当前甲 AC 加值,只按当前选中生效,正主 = [锻造工坊](锻造工坊.md))+ 局内加算区 flat**(2026-10-11 攻防所有权切分叠加公式换代:树脊柱只持生命/命中,攻/AC 唯一来源=锻造路线——每根数值轴全游戏单一来源;旧「柜台三档 flat」项随柜台退役移除,树淬炼成账号全局基础层、锻造路线成专精层,两层相加)。写入覆盖值通道(攻击 / 生命上限 / 护甲等级),开局显式传入战斗初始化。命中线已购等级已记但未入注入面——消费面(命中折扣档)归数值批(代码批注在册披露)。 +① 属性通道——开局属性 = **角色基础值 + 树生命/命中淬炼 flat(Σ 节点 effects × 等级)+ 锻造路线加值(当前武器攻击加值 + 当前甲 AC 加值,只按当前选中生效,正主 = [锻造工坊](锻造工坊.md))+ 局内加算区 flat**(2026-10-11 用户裁攻防所有权切分:树脊柱只持生命/命中,攻/AC 唯一来源=锻造路线——每根数值轴全游戏单一来源;树淬炼为账号全局基础层、锻造路线为专精层,两层相加)。写入覆盖值通道(攻击 / 生命上限 / 护甲等级),开局显式传入战斗初始化。命中线已购等级已记但未入注入面——消费面(命中折扣档)归数值批(代码批注在册披露)。 ② 规则通道——各 Fork 组激活态的效果键集经冒险开始参数面下传;每场战斗开始时由效果引擎重建合成订阅行生效。开新冒险与继续上局两入口同参同值。 -### 已建未接面(接线落地态——2026-10-13 迭代 21 反哺写入换代) +### 已建未接面(接线落地态) -三条原「已建表/已可购但消费面未接」的实态,**两条已随迭代 21 接线在役、一条维持纪律**: +三条原「已建表/已可购但消费面未接」的实态,**两条已接线在役、一条维持纪律**: -- 同调位数量判定源——**已接(迭代 21 T4)**:同调位判定源已切树点亮数(同调位 1/2/3 三节点),旧条件表(按 Boss 击杀次数自动涨)已随迭代 21 T5 删除(attunement_growth.tres 谓词表退役)。 -- 刷新升级节点——**已接(迭代 21 T4)**:树上购买(刷新升级节点)同路由营地刷新升级写口,价格/cap 单一事实源 = Y 行表值;双入口并存(树上节点与秘宝匣装配段升级钮写同一笔,Q1 裁)。 -- 命中线 flat 不入注入面——**维持(契约 6 纪律)**:注入参数面无命中字段,命中未注入;消费面开启归数值批(M4)。 +- 同调位数量判定源——**已接**:同调位判定源已切树点亮数(同调位 1/2/3 三节点),旧条件表(按 Boss 击杀次数自动涨)已删除(attunement_growth.tres 谓词表退役)。 +- 刷新升级节点——**已接**:树上购买(刷新升级节点)同路由营地刷新升级写口,价格/cap 单一事实源 = Y 行表值;双入口并存(树上节点与秘宝匣装配段升级钮写同一笔)。 +- 命中线 flat 不入注入面——**维持**:注入参数面无命中字段,命中未注入;消费面开启归数值批(M4)。 ## 依赖与输出 @@ -162,7 +161,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 | 上游 | [元进度](元进度.md) | 钥石——树是永久强化的承载结构与营地本体;消费经钥石余额(写口存档系统),注入通道现行事实源在对方;旧柜台退役面在对方登记 | | 上游 | [数据配置](../表现与支撑/数据配置.md) | meta_tree.tres 承载与 schema 校验机制——本系统为结构 owner、数值回填归数值批 | | 上游 | [存档序列化](../表现与支撑/存档序列化.md) | tree_nodes / fork_sides 持久化与旧档废弃承载 | -| 上游 | [秘宝](秘宝.md) | 同调位槽位判定源 = 树点亮数(**已切换在役,迭代 21 T4**;旧条件表已删);秘宝匣工作间内目录与装配现行事实源在彼 | +| 上游 | [秘宝](秘宝.md) | 同调位槽位判定源 = 树点亮数(**已切换在役**;旧条件表已删);秘宝匣工作间内目录与装配现行事实源在彼 | | 上游 | [锻造工坊](锻造工坊.md) | 武器/护甲路线升级现行事实源在彼——树持钥匙节点(无前置),工作间柜台=钥匙展开面板;攻/AC 数值唯一来源在彼(所有权切分红线) | | 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险开始参数面——树生命/命中淬炼 flat(叠加进覆盖值通道)与规则键集的注入通道 | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 营地四柜台并排呈现——树淬炼柜台=树脊柱界面形态(案甲);信号 = 树上购买意图 / 树上分叉切换意图 | @@ -170,7 +169,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 ## P0 最小闭环 -**P0 语义已随迭代 21 全量落地(2026-10-12 入库;2026-10-13 反哺写入换代——原「33 节点现役态维持」过渡态终结)**:12 节点结构(脊柱 = 生命/命中一线一节点、Fork = 三节点双态)+ 营地统一(树 = 营地本体、生命/命中唯一入口、攻防归锻造工坊、工作间钥匙、四柜台呈现)+ 三组 Fork 双态真效果 + 购买/切换/门槛/彩蛋/注入/旧档废弃全链,逐条判据见「验收标准」节;残留人闸 = 实机目检营地四柜台(体验验证清单 ⑳)。旧 33 节点结构随树结构版本换代废弃重置(禁迁移,Q3 裁)。 +**P0 语义已全量落地**:12 节点结构(脊柱 = 生命/命中一线一节点、Fork = 三节点双态)+ 营地统一(树 = 营地本体、生命/命中唯一入口、攻防归锻造工坊、工作间钥匙、四柜台呈现)+ 三组 Fork 双态真效果 + 购买/切换/门槛/彩蛋/注入/旧档废弃全链,逐条判据见「验收标准」节;残留人闸 = 实机目检营地四柜台(用户实机目检核销,沿革查 git 提交史)。旧 33 节点结构已废弃重置(禁迁移)。 ## P1 / P2 后置 @@ -179,29 +178,27 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 | P1 | 命中线 flat 入注入面 | 消费面 = 命中折扣档归数值批(代码批注在册) | | P2 | 彩蛋发现率监控 | 发现率过低改树内灰色预告的反例条件在册;监控读数归呈报线 | -(原 P1「Fork 效果面差异化」已定案归实装批;「同调位 / 刷新升级消费面接管」已定案归实装批〔刷新升级定性缺陷修复〕;「三柜台→一树」已由营地统一模型〔案甲〕承接——三者均并入待办清单「天赋树实装批」,不再单列。) - ## 调参表 本系统的数值行全部外置(数值纪律:正文只定规则与键结构,行值读配置表): | 表 / 常量 | 键结构归属 | 数值行 | |---|---|---| -| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键,每键值=参数字典,参数名与取值域见「规则键参数表」); row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 | +| 节点表 `data/tables/meta_tree.tres`(12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键,每键值=参数字典,参数名与取值域见「规则键参数表」);row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 | | 脊柱行门槛 = 4 | 节点表结构声明持有,本文 owner | 规则即门槛(节点第 N 级需全树总等级 ≥ 4×(N−1)) | -| Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果参数读节点行,效果引擎按参数合成 | +| Fork 组词表(三组)/ 规则键词表(六键) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果参数读节点行,效果引擎按参数合成 | | 钥石产出、刷新升级行族 | 现行事实源 = [元进度](元进度.md)调参表 | `data/tables/meta.tres` | ## 验收标准 - 结构封闭:meta_tree.tres 通过 schema 校验零违例——12 节点、脉 / 类型 / 币词表出域即拒、Fork 三组每组恰一节点且持 a/b 双效果键、彩蛋 ≤3、effects 键封闭、零 archetype 键;六键效果键值均持参数字典且参数名/取值域合规(见「规则键参数表」),缺参数或越域加载期致命。 - 行门槛可判:全树已购总等级 < 4×(N−1) 时脊柱节点第 N 级不可购;总等级达标当刻该级开放购买。 -- 前置可判(点亮前置):requires 任一未点亮则节点不可购,逐一点亮后可购;锻造工坊钥匙无前置——初始即可点亮(free 零币)。**等级阈值前置:配置了该键的节点,指定前置节点等级 < n 时不可购、达标当刻开放(现役零配置,判定面已单独验证)。** +- 前置可判(点亮前置):requires 任一未点亮则节点不可购,逐一点亮后可购;锻造工坊钥匙无前置——初始即可点亮(free 零币)。**等级阈值前置:配置了该键的节点,指定前置节点等级 < n 时不可购、达标当刻开放(现役零配置)。** - 工作间可判:钥匙节点(锻造工坊 / 秘宝匣)未点亮时对应柜台锁定态、工作间不可进入;点亮后展开;图鉴无门槛常开。 - 单币可判:任一付费节点购买只扣钥石;余额不足购买失败,且存档零变化(等级、余额、激活态均不动)。 - 双态可判:Fork 节点购买解锁后默认 A 态;切换零币,切换后规则键集=新激活态效果键;同态重复切换零操作;未解锁 Fork 不可切换、不可重复购买。 - 彩蛋可判:生命/命中两节点均买满(4 级拉满)且同调位 1/2/3 全部解锁时彩蛋节点自动点亮且零消费;任一条件不满足则不亮。 -- 注入可判:开局覆盖值 = 角色基础值 + 树生命/命中淬炼 flat(命中暂不注入——消费面开启归数值批,契约 6 纪律维持、非缺陷)+ 锻造路线加值 + 局内加算区(各层语义清晰可加);规则键集 = 全部 Fork 组激活态效果键集;开新冒险与继续上局两入口参数同值;全新存档(树全零)开局与零树状态完全一致。 +- 注入可判:开局覆盖值 = 角色基础值 + 树生命/命中淬炼 flat(命中暂不注入——消费面开启归数值批、非缺陷)+ 锻造路线加值 + 局内加算区(各层语义清晰可加);规则键集 = 全部 Fork 组激活态效果键集;开新冒险与继续上局两入口参数同值;全新存档(树全零)开局与零树状态完全一致。 - 旧档废弃可判:加载换代前结构存档 → 树域废弃重置 → 后续游玩正常且无残留脏节点(开发阶段纪律,禁迁移);全新存档(树全零)开局与零树状态完全一致。 ## 待办 diff --git a/design/gdd/systems/跨局循环/生涯.md b/design/gdd/systems/跨局循环/生涯.md index b8810734..00078b82 100644 --- a/design/gdd/systems/跨局循环/生涯.md +++ b/design/gdd/systems/跨局循环/生涯.md @@ -1,25 +1,25 @@ # 生涯 > **一句话定位**:营地里与三柜台平级的**局外只读界面**——营地管「花」(花钥石买永久强化),生涯管「看」(看自己跨局攒下的一切:累计战绩、历史冒险、图鉴收集)。冒险进行中不给任何数据回看(2026-10-04 用户裁决 P-C7 的延续),生涯是历史数据唯一的家。 -> **状态**:期一已实装(2026-10-07 迭代 18 卡④生涯界面实装批·期一——跨局汇总页+主菜单入口+终身计数域存档 v6 落地;期二/期三另行立项,本文不预占排期)。入口拓扑已随迭代 33 卡② 三入口化换代、营地里经笔记本接入归迭代 34 卡④(信息架构节 v1.1,2026-10-22 反哺写入)。现行为 v1.4。 +> **状态**:期一已实装(跨局汇总页+主菜单入口+终身计数域存档 v6 落地;期二/期三另行立项,本文不预占排期)。入口拓扑已三入口化换代、营地里经笔记本接入(信息架构节 v1.1)。现行为 v1.5。 > **来源**:[待办清单「『生涯』界面——冒险中数据回看的唯一承接处」条](../../../../待办清单.md)(2026-10-04 用户裁决 P-C7——冒险中不给数据回看,历史战报与结算明细的查看去向 = 新「生涯」界面)。 ## 一、信息架构 -生涯入口经营地接入(目标结构=营地笔记本,迭代 34 卡④承载;迭代 33 卡② 三入口化后主菜单无生涯钮,现期无玩家可见入口,内部路径直调可达)。现行主菜单只有三个一级钮(迭代 33 卡②,用户裁决 1):「进入存档」「设置」「退出游戏」——「进入存档」为唯一进度入口,点击打开选档界面(3 存档位,迭代 33 卡③)。 +生涯入口经营地接入(目标结构=营地笔记本;三入口化后主菜单无生涯钮,现期无玩家可见入口,内部路径直调可达)。现行主菜单只有三个一级钮(用户裁决):「进入存档」「设置」「退出游戏」——「进入存档」为唯一进度入口,点击打开选档界面(3 存档位)。 ``` 主菜单(开始覆盖层,三入口) ├─ 进入存档 → 选档界面(3 存档位;空槽「新档」/有档「进档」/「删档」二次确认) - │ └─ 进档/新档 → 营地(迭代 34 卡④改为营地场景图;现期暂行落点=营地覆盖层) + │ └─ 进档/新档 → 营地(目标=营地场景图;现期暂行落点=营地覆盖层) ├─ 设置 └─ 退出游戏 -调试浮窗(发布态恒隐:调试入口的写死行已随迭代 38 卡⑦ 删除,开始层与战斗屏/关卡地图屏均零调试入口与角标; +调试浮窗(发布态恒隐:开始层与战斗屏/关卡地图屏均零调试入口与角标; 开发期临时启用=本地改调试入口缺省、不提交) 营地(存档内,进档/新档落点) - └─ 生涯(局外只读面;入口=营地笔记本,迭代 34 卡④承载) + └─ 生涯(局外只读面;入口=营地笔记本) ├─ 跨局汇总(累计战绩与解锁总览) ├─ 历史冒险回看(逐局摘要与单局明细) └─ 图鉴(敌人优先,秘宝/奇物随后) @@ -27,29 +27,29 @@ 边界三条(均为 2026-10-06 用户裁 P4 甲): -1. **局内不放生涯入口**。冒险进行中玩家只看状态面板(迭代 17 卡③并行批——局内只读查看钥石与本局冒险进度);若历史回看能从局内到达,等于绕回 P-C7 退役前的形态,禁止。 +1. **局内不放生涯入口**。冒险进行中玩家只看状态面板(局内只读查看钥石与本局冒险进度);若历史回看能从局内到达,等于绕回 P-C7 退役前的形态,禁止。 2. **生涯内零跳转**。不放「去营地」之类的操作引导,生涯纯只读。 3. **与 P-C7 的关系**:生涯的成立正是 P-C7 裁决的补偿面——「冒险中无回看」的已知代价由生涯承接(待办清单条目原文口径),本文不提议在冒险中恢复任何回看入口。 ## 二、承载内容清单(逐段标数据可行性) -生涯装三段内容:跨局汇总、历史冒险回看、图鉴。这三段是待办清单条目给定的骨架,本节在其上逐项落到数据源。跨局汇总与图鉴的收集类数据大多现成;历史回看的数据面已在存(见下),缺口只有三件,已随 P2 甲裁决定方向。 +生涯装三段内容:跨局汇总、历史冒险回看、图鉴。这三段是待办清单条目给定的骨架,本节在其上逐项落到数据源。跨局汇总与图鉴的收集类数据大多现成;历史回看的数据面已在存(见下),缺口只有三件,方向已按 P2 甲裁决定。 ### 跨局汇总(期一) | 内容 | 数据源 | 现状 | |---|---|---| -| 冒险总局数 / 通关局数 | `adventure_total` / `adventure_cleared` 两终身计数域(save v6——期一已落地) | 现成(2026-10-07 迭代 18 卡④期一实装) | +| 冒险总局数 / 通关局数 | `adventure_total` / `adventure_cleared` 两终身计数域(save v6——期一已落地) | 现成 | | 各关完成次数 | 存档域 `level_clear_counts`(按关卡序号计) | 现成 | | Boss 首杀与总击杀 | Boss 首杀标记(存档域 `boss_first_kill`)/ Boss 击杀总数(存档域 `boss_kill_count`) | 现成 | -| 钥石余额 | 存档域 `keystone_balance`;累计收支流水不入存档 | 现成。加钥石与花钥石只动余额——如要做属新增流水域,期一实装批另呈报,本文只登记 | -| ~~三柜台解锁完成度概览~~ | (整行删——2026-10-12 用户裁:生涯页不统计天赋树与账号成长态,只统计终身计数;数据源属性锻造等级/工坊状态/树节点三投影随天赋树实装批退役,体验验证清单⑲两观测项同步摘除) | — | +| 钥石余额 | 存档域 `keystone_balance`;累计收支流水不入存档 | 现成。加钥石与花钥石只动余额——如要做属新增流水域,另呈报,本文只登记 | +| 三柜台解锁完成度概览(已删) | 2026-10-12 用户裁:生涯页不统计天赋树与账号成长态,只统计终身计数 | — | ### 历史冒险回看(期二) -数据面现役事实:每局冒险收束时已有逐局摘要自动入档——存于存档域 `recent_summaries`:新局插最前、按上限截断,上限 10 条。摘要字段在冒险收束时组装(冒险收束受理:结局 result、完成关数 levels_cleared、止步关 stopped_at、钥石合计 keystone_total、本局主种子 master_seed,另附逐杀掉落 keystone_drops 与终局专长持有集 relics(存档键名沿用历史形态)等;钥石与逐杀明细、真视计数、特性持有集取数经主角账两件〔属性账 / 获得日记〕只读投影——2026-10-27 迭代 39 拆件后形态);摘要的内容口径 owner = [冒险结构](../冒险循环/冒险结构.md),本文不复述其口径。 +数据面现役事实:每局冒险收束时已有逐局摘要自动入档——存于存档域 `recent_summaries`:新局插最前、按上限截断,上限 10 条。摘要字段在冒险收束时组装(冒险收束受理:结局 result、完成关数 levels_cleared、止步关 stopped_at、钥石合计 keystone_total、本局主种子 master_seed,另附逐杀掉落 keystone_drops 与终局专长持有集 relics(存档键名沿用历史形态)等;钥石与逐杀明细、真视计数、特性持有集取数经主角账两件〔属性账 / 获得日记〕只读投影);摘要的内容口径 owner = [冒险结构](../冒险循环/冒险结构.md),本文不复述其口径。 -2026-10-06 用户裁(P2 甲):每局一行摘要,行内给**结局 / 到达关卡 / 钥石收入 / 用时**四件事,上限存最近 N 局。对应三件实绩(本批代码级复核确认的缺口,非新建数据面): +2026-10-06 用户裁(P2 甲):每局一行摘要,行内给**结局 / 到达关卡 / 钥石收入 / 用时**四件事,上限存最近 N 局。对应三件实绩(代码级复核确认的缺口,非新建数据面): 1. **扩容**:cap 10 → N。N 候选 20 / 50 / 维持 10,实装期按存档体积读数三选一;读数方法与列表形态的参数化维度由设计稿给出、实装期执行。 2. **补「用时」埋点**:全仓现在没有任何用时采集点(摘要字段集〔冒险收束受理组装面〕无此项)——属新增埋点,随期二。 @@ -63,14 +63,14 @@ - **敌人图鉴(优先,2026-10-06 用户裁 P3 甲)**:直接承接待办清单在册「敌方技能图鉴 / 学习呈现」条(P2——见过 → 认得 → 记谱;归属 [HUD 框架](../表现与支撑/HUD框架.md) 与 [敌人系统](../战斗循环/敌人系统.md))。「见过」记账面 = 新增 meta 域,涉存档 schema 迁移(与期一终身计数域同属 schema 义务面;版本号按实装时点的现行版本顺延)。 - **秘宝 / 奇物图鉴(随后)**:无在册条目,立项时另行登记。 -- **奖励格图鉴:只登记不激活**(P3 甲)。营地「奖励格图鉴」柜台现况 = 常开独立位(迭代 21 T6 四柜台并排重排——树淬炼柜台升主界面,图鉴本体仍空置、内容排 Alpha);该柜台已随配比预设批整体挂起冻结(2026-10-05 用户令,待办清单在册),重启须用户另行发令。 +- **奖励格图鉴:只登记不激活**(P3 甲)。营地「奖励格图鉴」柜台现况 = 常开独立位(四柜台并排,树淬炼柜台升主界面,图鉴本体仍空置、内容排 Alpha);该柜台已整体挂起冻结(2026-10-05 用户令,待办清单在册),重启须用户另行发令。 ## 三、与既有界面的关系 | 界面 | 管什么(现状指证) | 与生涯的边界 | |---|---|---| -| 营地([camp UX spec](../../ux/camp.md)) | 跨局成长**操作**面(花钥石买强化 / 装配 / 点树——2026-11-01 迭代 47 卡④ 起为营地场景图+五功能窗口形态);原底栏「最近冒险」条带已随同批撤下(P6 甲提前落地),逐局历史回看唯一归生涯 | 营地不改生涯只读定位;生涯不做任何购买入口,也不放「去买」按钮。营地条带已撤(P6 甲——随迭代 47 卡④ 执行) | -| 状态面板(迭代 17 卡③,并行批开发中) | **局内**只读查看这一局进行中的钥石与本局冒险进度 | 状态面板看当局当前值,生涯看跨局累计与历史;局内无生涯入口(P4 甲) | +| 营地([camp UX spec](../../ux/camp.md)) | 跨局成长**操作**面(花钥石买强化 / 装配 / 点树——营地场景图+五功能窗口形态);原底栏「最近冒险」条带已撤下(P6 甲),逐局历史回看唯一归生涯 | 营地不改生涯只读定位;生涯不做任何购买入口,也不放「去买」按钮。营地条带已撤(P6 甲) | +| 状态面板 | **局内**只读查看这一局进行中的钥石与本局冒险进度 | 状态面板看当局当前值,生涯看跨局累计与历史;局内无生涯入口(P4 甲) | | 结算屏([settlement-summary UX spec](../../ux/settlement-summary.md)) | 冒险收束当下的入账明细——冒险收束时由结算屏呈现入账明细与钥石明细(复用终局面账行的呈现形态) | 收束当下的呈现保留不动;生涯承接的是收束之后的任意时刻回看 | | 帮助手册(Beta 批,未实装——教学内容归 Beta 帮助手册) | 讲「怎么玩」 | 生涯讲「我玩过什么」。图鉴条目文案与手册是否共用内容源,接口登记归 Beta 批一并裁 | | 图例面板 | 局内符号/徽标即时解码 | 不合并——图例是局内解码面,图鉴是跨局收集面 | @@ -81,25 +81,22 @@ | 期 | 内容 | 前置 | 建议窗口(候选) | |---|---|---|---| -| 期一 | 跨局汇总页 + 主菜单生涯入口落位。总局数/通关局数两个终身计数域随该批做存档 schema 迁移——**✅ 已实装(2026-10-07 迭代 18 卡④)**:汇总段六类九项+营地与系统组生涯钮+存档 v6 两终身计数域〔v5 升 v6 幂等迁移〕;闸读数与代拍板追认单原记于该批出口报告,该件已按「吸收即死」删除,读数以本行与该批提交信息为准 | 提纲评审通过。实装批前置义务 = 对齐迭代 16 UI 批后的现行基线:字号六档 / 语义色 / 按钮最小高 40 点等现行界面基线 / 色板单源 / 页面壳的模态栈纪律——与卡③需求卡片同款红线,本文只登记、不展开 | Alpha 后最近一个 UI 窗口 | -| 期二 | 历史冒险回看整段:N 扩容 + 用时埋点 + 旧档摘要迁移 + 逐局列表 + 单局明细(遗留明细界面复活承接)——营地条带处置已随 P6 甲提前落地(2026-11-01 迭代 47 卡④ 撤下),期二无残留条带义务 | 期一。实装批开工前须向用户呈报两件:N 终值读数(20 / 50 / 维持 10 三选一)与「用时」埋点口径(计时起点、暂停是否计入——字段级细节本文不做) | 期一落地后独立批 | +| 期一 | 跨局汇总页 + 主菜单生涯入口落位。总局数/通关局数两个终身计数域随该批做存档 schema 迁移——**✅ 已实装**:汇总段六类九项+营地与系统组生涯钮+存档 v6 两终身计数域〔v5 升 v6 幂等迁移〕 | 对齐现行界面基线:字号六档 / 语义色 / 按钮最小高 40 点等现行界面基线 / 色板单源 / 页面壳的模态栈纪律——本文只登记、不展开 | Alpha 后最近一个 UI 窗口 | +| 期二 | 历史冒险回看整段:N 扩容 + 用时埋点 + 旧档摘要迁移 + 逐局列表 + 单局明细(遗留明细界面复活承接)——营地条带已撤(P6 甲),期二无残留条带义务 | 期一。实装批开工前须向用户呈报两件:N 终值读数(20 / 50 / 维持 10 三选一)与「用时」埋点口径(计时起点、暂停是否计入——字段级细节本文不做) | 期一落地后独立批 | | 期三 | 图鉴承接(敌人优先,范围与顺序随 P3 甲);「见过」记账面 schema 义务随该批执行 | 期二或独立评估 | Beta 窗口候选(与教学引导同段评估——图鉴的「认得」轴与教学相关;待办清单教学引导节各条 2026-10-04 起已整体标 Beta 阶段) | 本地化文案权:生涯界面本体按钮、页签、空态文案归[设置与本地化](../表现与支撑/设置与本地化.md)线(全仓无多语言实装;文案权先例 = 教学文案定稿权登记于待办清单),实装批承接。 ## 五、待裁点 -P0-P5 六点已于 2026-10-06 用户全裁(案甲 × 6,备选案与淘汰依据在需求卡片 §8),结论已写入上文对应节,不重复列。本批新发现的待裁点一项: +P0-P5 六点已于 2026-10-06 用户全裁(案甲 × 6),结论已写入上文对应节,不重复列。另待裁点一项: -### P6 · 营地底栏「最近冒险」条带去留(已裁甲案并落地——2026-11-01 迭代 47 卡④) +### P6 · 营地底栏「最近冒险」条带去留(已裁甲案并落地) -**现状与问题**:营地底栏「最近冒险」条带把摘要逐行全部拼进同一个标签(行模板「完成/放弃/失败 · 通关 N 关 · 钥石 +N · 种子 N」,无截断上限),数据源与生涯历史回看同属一份最近摘要。生涯期二把上限扩到 N 后,条带按现行逻辑会把 N 行全拼进底栏——这是本批复核发现的实际耦合点,期二落地时必须给条带一个去处。 -**裁决与执行**:用户裁甲案(2026-11-01,随迭代 47 卡④ 四柜台拆解执行)——条带已撤下、逐局历史回看唯一归生涯;期二生涯历史回看批的条带处置义务随之清空。 +**裁决与执行**:用户裁甲案(2026-11-01)——条带已撤下、逐局历史回看唯一归生涯;期二生涯历史回看批的条带处置义务随之清空。 | 案 | 内容 | 淘汰/保留依据 | |---|---|---| | 甲(建议) | 期二生涯历史回看落地时,营地条带撤下、逐局回看整体归生涯;期一(汇总页上线、数据面未动)期间条带原样保留零改动 | 分工矩阵干净——「看」归生涯、「买」归营地;逐局历史只剩一个权威呈现面,去重问题自然消解;顺带解开 N 扩容后底栏无上限拼行的实耦合 | | 乙 | 两处并存——营地留最近几条速览、生涯给完整列表 | 营地顺手一眼仍有价值;淘汰候选:同一数据两处呈现,玩家要猜哪边全;条带须另加截断逻辑 = 新增一处维护面;「看」留在操作面违反分工矩阵 | | 丙 | 条带原样永久保留(固定存 10 条,不随 N 动) | 改动最小;淘汰候选:与生涯列表长期双轨,上限语义分裂(营地固定 10 / 生涯 N),N 大于 10 后两处看到的条数对不上 | - -裁决方式:随本提纲评审一并定案,期二实装批执行。 diff --git a/design/gdd/systems/跨局循环/秘宝.md b/design/gdd/systems/跨局循环/秘宝.md index 4c68004a..3bcff951 100644 --- a/design/gdd/systems/跨局循环/秘宝.md +++ b/design/gdd/systems/跨局循环/秘宝.md @@ -1,42 +1,42 @@ # 秘宝 > 一句话:营地装配、整局冒险生效的角色机能件——操作包络加强(视野/行动点/刷新/挖掘距离等),不出角色战斗属性值、不改战斗结算机制(经济与操作参数——视野/距离/行动点/刷新/转存率——属操作包络;分界规则归[核心循环](../../01-核心循环.md)「道具三层职责与分界」节) -> 状态:已定稿(现行形态=局外同调件——2026-10-03 迭代 11 第①批同调实施批已入库);现行为 v1.1 +> 状态:已定稿(现行形态=局外同调件);现行为 v1.2 > 定位与形态:见下节 > 术语:本文件的项目术语(同调位/RAP/GP/真视/危险格/整图等)定义见[术语表](../../术语表.md) ## 定位与形态 -**现行形态 = 局外同调件**:开局前在营地装配(营地·秘宝匣柜台「同调装配」段)、占同调位(0 起步、固定 3 格,每件固定占 1 格)、被动件整局生效/主动件每冒险充能(冒险开始重置)。实现面 = `treasure_items.tres` + 同调系统件(同调位数量判定源=天赋树同调位节点点亮数——2026-10-11 Q2 裁甲、迭代 21 T4 槽位收编落地;原 `attunement_growth.tres` 谓词表已顺带退役;解锁条件=数据行内解锁条件字段承载——迭代 22 实装落地,2026-10-12)。**新目录 12 件已随迭代 22 实装批全量落地(2026-10-12,T1-T7)**,逐件实录见「目录(重设计 v1)」各表实态列。 +**现行形态 = 局外同调件**:开局前在营地装配(营地·秘宝匣柜台「同调装配」段)、占同调位(0 起步、固定 3 格,每件固定占 1 格)、被动件整局生效/主动件每冒险充能(冒险开始重置)。实现面 = `treasure_items.tres` + 同调系统件(同调位数量判定源=天赋树同调位节点点亮数;原 `attunement_growth.tres` 谓词表已退役;解锁条件=数据行内解锁条件字段承载)。**新目录 12 件已全量落地**,逐件实录见「目录(重设计 v1)」各表实态列。 -**沿革一句话**:本系统前身为切片期掉落消耗品形态(2026-09-29 迭代 7),2026-10-03 随同调实施批整体替换为现行形态;旧目录九件已全数退役入素材库(2026-10-08/10 用户裁)。历史细节见 git 提交史。 +**沿革一句话**:旧目录九件已全数退役入素材库(2026-10-08/10 用户裁)。历史细节见 git 提交史。 **现行形态速览**: -- **同调位分档**(2026-10-07 用户裁):同调位分三档=普通格/优秀格/稀有格;装配规则=**槽位可装 ≤ 槽位档位的件**(向下兼容,不惩罚早解锁);格品质随天赋树同调位节点递增(1=普通格/2=优秀格/3=稀有格,2026-10-10 用户裁;树侧接线=迭代 21 T4 槽位收编落地)。装配面呈现槽位档位(迭代 22 秘宝匣柜台落地)。 -- **旧目录退役指针**:旧目录九件、魔法提灯、机制向三件处置已全数退役入素材库(表一 14 件)——现行目录见下方「目录(重设计 v1)」节;代码旧行已全数删除(迭代 20 先行删 2 行+迭代 22 T1 删 12 行,2026-10-12)。 -- **三选一刷新双源**:刷新能力=**存量+临时**两笔系统资源——存量=持久(开局注入基值 0;来源=秘宝匣刷新升级行购买〔meta.tres attune_refresh_upgrade 行族〕+刷新练习件加仓;跨呈现持续、用完即无)、临时量=每次三选一呈现重置为基线 0(来源=效果件的临时注入,未用不结转);**消耗顺序=先扣临时、不足再扣存量**(2026-10-10 用户复述定案;代码字段名 X/Y 与两笔的字母对表归实装批 T0,正文不依赖字母)。重抽复用现有洗牌逻辑,池规则全保留;自动游玩模式默认不刷。**GP 付费档(2026-10-06 用户令)**:免费双源用尽后可 GP 付费刷新,价=ceil(20×1.8^本次停点已付费刷) provisional(与商店货架刷新读同两个调参参数 shop_refresh_*,单点调参);付费刷计数每停点清零;钱包=冒险 GP 同一笔系统资源(唯一入口=冒险 GP 扣账口);余额不足=钮禁用(不隐藏)。店内专长凭证三选一暂不挂刷新面(扩面须先裁凭证保底计数交互)。**两笔语义**两笔语义的框架定义见[核心循环](../../01-核心循环.md)「生命周期轴」节。「三选一呈现」是比节点更细的事件——奖励节点、Boss 通关奖励、商店(凭证)三处都触发。奇物「刷新次数+1」类资源件的语义=存量一次性加仓。 +- **同调位分档**(2026-10-07 用户裁):同调位分三档=普通格/优秀格/稀有格;装配规则=**槽位可装 ≤ 槽位档位的件**(向下兼容,不惩罚早解锁);格品质随天赋树同调位节点递增(1=普通格/2=优秀格/3=稀有格,2026-10-10 用户裁)。装配面呈现槽位档位。 +- **旧目录退役指针**:旧目录九件、魔法提灯、机制向三件处置已全数退役入素材库(表一 14 件)——现行目录见下方「目录(重设计 v1)」节;代码旧行已全数删除。 +- **三选一刷新双源**:刷新能力=**存量+临时**两笔系统资源——存量=持久(开局注入基值 0;来源=秘宝匣刷新升级行购买〔meta.tres attune_refresh_upgrade 行族〕+刷新练习件加仓;跨呈现持续、用完即无)、临时量=每次三选一呈现重置为基线 0(来源=效果件的临时注入,未用不结转);**消耗顺序=先扣临时、不足再扣存量**(2026-10-10 用户复述定案;正文不依赖代码字段名字母)。重抽复用现有洗牌逻辑,池规则全保留;自动游玩模式默认不刷。**GP 付费档(2026-10-06 用户令)**:免费双源用尽后可 GP 付费刷新,价=ceil(20×1.8^本次停点已付费刷) provisional(与商店货架刷新读同两个调参参数 shop_refresh_*,单点调参);付费刷计数每停点清零;钱包=冒险 GP 同一笔系统资源(唯一入口=冒险 GP 扣账口);余额不足=钮禁用(不隐藏)。店内专长凭证三选一暂不挂刷新面(扩面须先裁凭证保底计数交互)。**两笔语义**两笔语义的框架定义见[核心循环](../../01-核心循环.md)「生命周期轴」节。「三选一呈现」是比节点更细的事件——奖励节点、Boss 通关奖励、商店(凭证)三处都触发。奇物「刷新次数+1」类资源件的语义=存量一次性加仓。 - **🔴 承重契约**(红线;其中真视范围等由数据加载校验强制):效果不允许写成直接加减属性的裸数值——效果类型只能取封闭白名单;真视(直接标出危险格的效果,定义见「核心规则」)单次范围 ≤3×3;核心逻辑不做异步等待;零随机;排雷玩法零特判;危险格与安全格的分布同池冻结——资源类件只能调整权重投影、不能改池结构;**棋盘事实不可变**(秘宝效果不移除、不增改危险格位置与邻接数字——效果形态只允许信息呈现与开格动作;2026-10-10 用户裁,原爆破工兵包「中立移除」即违规形态、随件退役废止)。 - **验收分层**:难度验收分两层——同调系统关闭时沿用现行关卡完成率验收带;开启时验收带按投值平移(归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)投值;商店开关分层同法)。 ## 目录(重设计 v1) -> 秘宝目录的权威版本(2026-10-08 用户终审全落——「都可以先落;旧的去掉只保留新的」;**2026-10-12 迭代 22 实装批全量落地**,逐件实态=item_id/解锁/效果实现三实态列)。代号制:正式命名归用户;数值全 provisional 归调参批。准入约束(机能件判定尺/定义卡 3+1 句)见[核心循环](../../01-核心循环.md)「道具三层职责与分界」节。旧目录全数退役,名单与处置映射见[道具退役素材库](../../../content-archive/道具退役素材库.md)表一。 +> 秘宝目录的权威版本(2026-10-08 用户终审全落——「都可以先落;旧的去掉只保留新的」;逐件实态=item_id/解锁/效果实现三实态列)。代号制:正式命名归用户;数值全 provisional 归调参批。准入约束(机能件判定尺/定义卡 3+1 句)见[核心循环](../../01-核心循环.md)「道具三层职责与分界」节。旧目录全数退役,名单与处置映射见[道具退役素材库](../../../content-archive/道具退役素材库.md)表一。 ### 三档骨架 -- 数量:普通档 7 件 / 优秀档 3 件 / 稀有档 2 件(优秀档两位空位=2026-10-11 回能器删〔孤儿件〕/换装券撤〔冒险中零更换途径无此件〕;稀有档一位空位=2026-10-11 第四只手删〔净收益为零的自指件——占一槽换一槽、携带量 3=3 且自锁唯一稀有格〕——空位不构成补件议程;传说位留空,与跨系统的四级稀有度框架〔普通/优秀/稀有/传说〕兼容——秘宝不用满四档)。 -- 解锁方式(2026-10-10 用户裁**混合制**):基础件=秘宝匣内**钥石购买**解锁(定价归定价批);特定件=**条件解锁**(游玩里程碑或行为条件,阈值 provisional 归调参批)。逐件分配已随实装批锁定(2026-10-11 用户裁 C1):钥石购买 8 件(普通 7 件各 10 钥石+双管装填 25 钥石)+条件解锁 4 件(远程镐=生涯通关≥1/刷新执照=Boss 击杀≥3/天眼=通关≥3 且 Boss 击杀≥4/信标网络=真视类工具累计使用≥10);解锁条件承载=`treasure_items.tres` 行内 `unlock_requires` 字段(计数键 adventure_cleared/boss_kill_count/vision_used,schema 词表校验单点——2026-10-12 迭代 22 落地);旧「档位谓词分级(普通 0/优秀中/稀有高里程碑)」口径作废。 +- 数量:普通档 7 件 / 优秀档 3 件 / 稀有档 2 件(优秀档两位空位=回能器删〔孤儿件〕/换装券撤〔冒险中零更换途径无此件〕;稀有档一位空位=第四只手删〔净收益为零的自指件——占一槽换一槽、携带量 3=3 且自锁唯一稀有格〕——空位不构成补件议程;传说位留空,与跨系统的四级稀有度框架〔普通/优秀/稀有/传说〕兼容——秘宝不用满四档)。 +- 解锁方式(2026-10-10 用户裁**混合制**):基础件=秘宝匣内**钥石购买**解锁(定价归定价批);特定件=**条件解锁**(游玩里程碑或行为条件,阈值 provisional 归调参批)。逐件分配已锁定(2026-10-11 用户裁 C1):钥石购买 8 件(普通 7 件各 10 钥石+双管装填 25 钥石)+条件解锁 4 件(远程镐=生涯通关≥1/刷新执照=Boss 击杀≥3/天眼=通关≥3 且 Boss 击杀≥4/信标网络=真视类工具累计使用≥10);解锁条件承载=`treasure_items.tres` 行内 `unlock_requires` 字段(计数键 adventure_cleared/boss_kill_count/vision_used,schema 词表校验单点);旧「档位谓词分级(普通 0/优秀中/稀有高里程碑)」口径作废。 - 验收纪律:**同档内不许存在严格支配关系**(同档 A 在所有维度不劣于 B 即违规)——防首选内定的结构检查。 - 装配面:同调位分档(普通格/优秀格/稀有格,槽位可装 ≤ 槽位档位的件)——见「定位与形态」速览。 ### 普通档(7 件) -| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁(迭代 22 实态) | 效果实现 | +| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁 | 效果实现 | |---|---|---|---|---|---| | 晨操令 | morning_order | 每场战斗第 1 轮 +1 AP | AP 池/轮始 | 钥石 10 provisional | 订阅行 round_start→grant_ap | | 阔视野带 | wide_scout_band | 视野照亮范围 8 格→12 格,类型微光不扩 | 视野参数/常时 | 钥石 10 provisional | 参数面 light_radius_bonus(+4) | -| 试炼镐 | trial_pick | 每开 8 个安全格,当轮 AP +1(自动) | AP 池/开格自动兑付 | 钥石 10 provisional | ap_charge_safe 满 charge_n=8 自动 grant_ap(2026-10-12 反哺批⑤用户裁自动兑付) | +| 试炼镐 | trial_pick | 每开 8 个安全格,当轮 AP +1(自动) | AP 池/开格自动兑付 | 钥石 10 provisional | ap_charge_safe 满 charge_n=8 自动 grant_ap | | 刷新练习 | refresh_practice | 三选一刷新存量 +1 | 刷新存量/装配即得 | 钥石 10 provisional | 参数面 refresh_stock_grant | | 储备罐 | reserve_jar | 停手转存率 1:1 → 1.25:1 | 储备行动点(RAP)转存率参数/停手时 | 钥石 10 provisional | 参数面 rap_transfer_mult(125) | | 巢穴预告 | nest_forecast | 装板后揭示本板危险格数量 | 危险格计数(不碰危险格分布)/装板时 | 钥石 10 provisional | 订阅行 board_installed→mine_count_preview(呈现=开局 toast) | @@ -44,7 +44,7 @@ ### 优秀档(3 件) -| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁(迭代 22 实态) | 效果实现 | +| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁 | 效果实现 | |---|---|---|---|---|---| | 双管装填 | twin_loader | 每战前 2 轮各 +1 AP | AP 池/轮始 | 钥石 25 provisional | 订阅行 round_start→grant_ap | | 远程镐 | ranged_pick | 挖掘距离 +1(可挖距英雄 2 格的格) | 可达性规则/常时 | 条件:生涯冒险成功 ≥1 provisional | 参数面 dig_range_bonus | @@ -52,9 +52,9 @@ ### 稀有档(2 件) -| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁(迭代 22 实态) | 效果实现 | +| 代号 | item_id | 一句话 | 写哪笔系统资源/时点 | 解锁 | 效果实现 | |---|---|---|---|---|---| -| 天眼 | sky_eye | 每关一次:选 3×3,危险格显示且安全格直接开 | 真视+开格复合/主动 | 条件:冒险成功 ≥3 且 Boss 击杀 ≥4 provisional | reveal_tiles+safe_dig(关卡级充能;安全格开格按普通挖格全额兑付免 AP——C5 裁) | +| 天眼 | sky_eye | 每关一次:选 3×3,危险格显示且安全格直接开 | 真视+开格复合/主动 | 条件:冒险成功 ≥3 且 Boss 击杀 ≥4 provisional | reveal_tiles+safe_dig(关卡级充能;安全格开格按普通挖格全额兑付免 AP) | | 信标网络 | beacon_network | 封印不限相邻(可对任何未开格封印) | 封印的可达性规则/常时 | 条件:真视类工具累计使用 ≥10 provisional(vision_used 生涯计数域) | 参数面 flag_range_free | ## 设计骨架(可设计方向 × 代价空间) @@ -69,7 +69,7 @@ | 行动资源 | 直接供给 · 行为转化 · 效率改写 · 充能维护 · 资源容量扩展 | 晨操令、双管装填 / 试炼镐 / 储备罐 / —(空位) / —(空位) | | 操作能力 | 范围扩展 · 规则放宽 · 程序权限 · 容量扩展 · 抉择刷新 | 远程镐 / 信标网络 / —(空位) / —(空位) / 刷新练习、刷新执照 | -※奖励预读=空位预留,**备注与「微光常显」概念有重合**(微光若重构此格需重审;该方向被否过一次,不主动补)。 +※奖励预读=空位预留,**备注与「微光常显」概念有重合**(微光若重构此格需重审;不主动补)。 ※无差别开格(如 3×3 全部炸开:收益不获取、惩罚不触发,纯粹开格)=预留拓展方向(2026-10-10 用户提,现不做、后续拓展再裁)——与天眼的有差别开格(安全格直接开、危险格仅显示)相区分;改变棋盘事实的近似形态(移除危险格)已裁禁。 ### 代价轴(新件设计时与效果格组合选用) @@ -80,10 +80,10 @@ | 形态 | 语义 | 计量与重置 | 现状 | |---|---|---|---| -| 冒险级限量 | 每次冒险共 N 次 | 开局满额,用完即止 | 空位(旧目录主动件充能 2 次形态随目录退役) | +| 冒险级限量 | 每次冒险共 N 次 | 开局满额,用完即止 | 空位 | | 关卡级限量 | 每关 N 次 | 每关开始重置 | 天眼(每关一次) | | 战斗级限量 | 每场战斗 N 次 | 每场战斗开始重置 | 线香(每战一次) | -| 转化获取 | 付出换取使用次数:行为转化(开 N 格→+1)/ 资源转化(耗 N AP→+1)/ 时间触发(每 N 回合→+1) | 行为计数满额即时兑付 | 试炼镐(行为通道在役——**每开 8 个安全格自动兑当轮 AP+1:无玩家发起入口、计数即时清空〔2026-10-12 反哺批⑤用户裁自动兑付〕;战斗级重置=计数即时清空自然无感;兑付时序=揭示先于本格扣费,AP 归零恰逢满点时先兑再扣、轮次不因本格结束**);资源/时间两通道空位 | +| 转化获取 | 付出换取使用次数:行为转化(开 N 格→+1)/ 资源转化(耗 N AP→+1)/ 时间触发(每 N 回合→+1) | 行为计数满额即时兑付 | 试炼镐(行为通道在役——**每开 8 个安全格自动兑当轮 AP+1:无玩家发起入口、计数即时清空;战斗级重置=计数即时清空自然无感;兑付时序=揭示先于本格扣费,AP 归零恰逢满点时先兑再扣、轮次不因本格结束**);资源/时间两通道空位 | | 常时(无使用代价) | 被动件无「使用」概念——占装配位即全部代价 | — | 现役被动件 | **恢复机制**(独立参数,不与限量周期混同):基准=冒险开局满额;中途回充现役**无来源**——回能器已删(2026-10-11 用户裁孤儿件:新目录无冒险级限量件,而关卡级/战斗级件天然周期重置、开局回充对其结构性冗余);恢复机制留作骨架参数,未来冒险级限量件出现时启用。 @@ -96,7 +96,7 @@ 2. 档位(普通/优秀/稀有)=代价×效果的预置平衡带:普通=弱效果配松代价,稀有=强效果配紧代价——骨架与档位体系在此接口。 3. 覆盖检查只跑效果三方向;细分格空位**不构成补件议程**(预读格教训记录在案)。 4. 信息方向的价值检验按目的做(减少了多少盲赌),不按信息形式堆料;强效果必须配紧代价。 -5. 各周期系统资源独立、互不换算;全部限量值 provisional 归调参批;逐件的效果格与代价格归属见「目录(重设计 v1)」三表(2026-10-12 迭代 22 落地登记)。 +5. 各周期系统资源独立、互不换算;全部限量值 provisional 归调参批;逐件的效果格与代价格归属见「目录(重设计 v1)」三表。 ## 设计目的 @@ -111,7 +111,7 @@ | 负责 | 说明 | |---|---| -| 道具定义表 | 秘宝件的字段定义:名称、效果格归属、效果组合、目标形态、数值;现行目录=「目录(重设计 v1)」节 12 件(已随迭代 22 实装批全量落地,2026-10-12);承重护栏在加载期校验中强制 | +| 道具定义表 | 秘宝件的字段定义:名称、效果格归属、效果组合、目标形态、数值;现行目录=「目录(重设计 v1)」节 12 件(已全量落地);承重护栏在加载期校验中强制 | | 设计骨架与覆盖检查 | 效果三方向(信息/行动资源/操作能力)覆盖检查——每方向至少一件承载(口径见「设计骨架」节);加载后自动检查 | | 同调装配与充能账 | 营地装配入同调位(每件固定占 1 格、共 3 格;分档规则见「定位与形态」速览);主动件充能每冒险开始重置 | | 使用规则与目标校验 | 什么时候能用、目标合不合法、失败分几级、哪一级不消耗 | @@ -158,14 +158,14 @@ ### 道具从哪来:解锁与营地装配 -秘宝不可合成,唯一来路=**营地解锁**(2026-10-10 用户裁混合制——基础件钥石购买/特定件条件解锁;冒险中无购买)。**装配只在冒险开始前于营地配置;冒险中不存在任何更换途径**(2026-10-11 用户裁,无例外——拾取与效果均不产生装配变化;原当日早间试行的「冒险拾取未知秘宝」渠道同日废止,奇物侧无对应实现)。解锁条件实录(2026-10-12 迭代 22 落地,阈值 provisional 归调参批):钥石购买 8 件(晨操令/阔视野带/试炼镐/刷新练习/储备罐/巢穴预告/线香各 10 钥石+双管装填 25 钥石);条件解锁 4 件——远程镐=生涯通关 ≥1(adventure_cleared)、刷新执照=Boss 击杀 ≥3(boss_kill_count)、天眼=通关 ≥3 且 Boss 击杀 ≥4、信标网络=真视类工具累计使用 ≥10(vision_used,行为计数域随迭代 22 新增);承载=`treasure_items.tres` 行内 `unlock_requires` 字段(改表不动码;schema 计数键词表校验单点)。同调位槽位由天赋树同调位节点提供(1=普通格/2=优秀格/3=稀有格递增,共 3 格)——树与秘宝同为角色属性的贡献者,槽位参数的提供方在树侧。开局前在营地·秘宝匣柜台「同调装配」段装入同调位(每件固定占 1 格;分档装配规则见「定位与形态」速览)。 +秘宝不可合成,唯一来路=**营地解锁**(2026-10-10 用户裁混合制——基础件钥石购买/特定件条件解锁;冒险中无购买)。**装配只在冒险开始前于营地配置;冒险中不存在任何更换途径**(2026-10-11 用户裁,无例外——拾取与效果均不产生装配变化)。解锁条件实录(阈值 provisional 归调参批):钥石购买 8 件(晨操令/阔视野带/试炼镐/刷新练习/储备罐/巢穴预告/线香各 10 钥石+双管装填 25 钥石);条件解锁 4 件——远程镐=生涯通关 ≥1(adventure_cleared)、刷新执照=Boss 击杀 ≥3(boss_kill_count)、天眼=通关 ≥3 且 Boss 击杀 ≥4、信标网络=真视类工具累计使用 ≥10(vision_used 行为计数域);承载=`treasure_items.tres` 行内 `unlock_requires` 字段(改表不动码;schema 计数键词表校验单点)。同调位槽位由天赋树同调位节点提供(1=普通格/2=优秀格/3=稀有格递增,共 3 格)——树与秘宝同为角色属性的贡献者,槽位参数的提供方在树侧。开局前在营地·秘宝匣柜台「同调装配」段装入同调位(每件固定占 1 格;分档装配规则见「定位与形态」速览)。 ### 什么时候怎么用:挖掘期发起,战斗结算编排 -受理框架现役=主动使用件线香/天眼(2026-10-12 迭代 22 落地);**试炼镐为自动兑付件,无使用动作、不经本节四步**(每开 8 个安全格自动当轮 AP+1——2026-10-12 反哺批⑤用户裁,兑付时序见「设计骨架·代价轴」转化获取行)。 +受理框架现役=主动使用件线香/天眼;**试炼镐为自动兑付件,无使用动作、不经本节四步**(每开 8 个安全格自动当轮 AP+1,兑付时序见「设计骨架·代价轴」转化获取行)。 -使用动作在挖掘期发起:轮次进行中的任意时点都行。战斗阶段没有道具使用窗口(战斗道具已于 2026-09-15 随可选类删除下线),秘宝的使用窗口独占挖掘期。发起之后由战斗结算编排受理,按固定次序走四步: +使用动作在挖掘期发起:轮次进行中的任意时点都行。战斗阶段没有道具使用窗口,秘宝的使用窗口独占挖掘期。发起之后由战斗结算编排受理,按固定次序走四步: ``` 发起使用 ─▶ ① 相位检查(非挖掘期 → 拒绝) @@ -201,11 +201,11 @@ | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 使用编排的调用方:四步固定次序的受理,叠加层与充能账的清空也由它编排 | | 上游 | [行动经济](../排雷循环/行动经济.md) | 加行动点效果经其账本入口入账;使用道具本身不过账本、零扣费 | | 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 目标校验与信息呈现读取棋盘只读面;对侧代码零本系统分支 | -| 上游 | [地形变异](../排雷循环/地形变异.md) | 地形变异的对抗件方向——框架契约已作废(2026-10-03 终裁,理由见 v0.8 版本行);counter_items 恒空保留,变异应对若做只挂局内,待迭代 12 双层 BD 调研重定 | +| 上游 | [地形变异](../排雷循环/地形变异.md) | 地形变异的对抗件方向——框架契约已作废(2026-10-03 终裁,沿革查 git 提交史);counter_items 恒空保留,变异应对若做只挂局内,待双层 BD 调研仲裁后重新立项 | | 上游 | [数据配置](../表现与支撑/数据配置.md) | 道具定义表的 schema 承载与加载校验通道;本系统是该表的回填责任方 | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 装配件与充能常读、使用交互与目标拾取、叠加层信息呈现、充能重置反馈 | | 下游 | [教学引导](../表现与支撑/教学引导.md) | 教学候选:"买情报"闭环与"真视不是保护"的措辞口径(非阻塞) | -| 双向 | 各对侧系统 | 旧目录遗留的跨系统配合项随实装批替换自然消解;现行配合面即上表各行 | +| 双向 | 各对侧系统 | 旧目录遗留的跨系统配合项已消解;现行配合面即上表各行 | 负空间:本系统不监听事件、不画界面、不用随机数、不写任何其他系统的数据;信息只来自三个既有事实源——棋盘真值、奖励身份、行动点。 @@ -224,15 +224,15 @@ | P1 | 道具使用的动效与音频反馈 | 表现打磨项后置;音频排 Alpha | | P1 | "买情报"闭环教学与"真视不是保护"口径 | 归教学引导,Alpha 里程碑,非阻塞 | | P1 | 信息类道具的战斗当量入战斗结算效果对照表 | 间接效应的定量换算,调参期扩列,MVP 不入表 | -| 迭代 12(调研前置) | 反制路径重定(原:地形变异新类型的反制道具——已作废) | 2026-10-03 用户终裁:原归 Alpha 反制批的同调位反制件=层级错配失败设计,契约「每变异≥1反制道具」废止;counter_items 恒空合法,变异应对若做只挂局内,待双层 BD 调研仲裁后重新立项 | +| P1 | 反制路径重定 | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,契约「每变异≥1反制道具」废止;counter_items 恒空合法,变异应对若做只挂局内,待双层 BD 调研仲裁后重新立项 | ## 调参表 -道具定义表的全部数值均为 provisional,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参;`aux_items` 条目已随迭代 22 换代为新目录 12 件登记(2026-10-12);表 schema 归[数据配置](../表现与支撑/数据配置.md)承载、本系统回填。 +道具定义表的全部数值均为 provisional,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参;`aux_items` 条目已换代为新目录 12 件登记;表 schema 归[数据配置](../表现与支撑/数据配置.md)承载、本系统回填。 结构冻结(非调参项,改动走本文修订流程):真视窄域护栏、零信息目标不消耗、边缘窗口照常受理、使用零行动点成本、同调位装配与充能每冒险重置、用后不可逆、零随机。 -效果声明形态(内容数据驱动扩展批落地,在役沿用):被动件的效果行为=**订阅行**——行内声明**订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)**,由效果引擎统一解释执行;主动件按效果类型通用分发(受理闸=使用事件订阅);常时参数面件(阔视野带/储备罐/远程镐/信标网络/刷新练习/刷新执照六件)effect_kinds 挂参数 kind、由注入面按装配集分发读取;试炼镐=自动兑付(ap_charge_safe 满 charge_n 直接 grant_ap)。事件/效果类型/条件事实/算子四词表封闭(效果引擎单一事实源);卡面效果摘要=行 `desc` 字段直读(文案表值化)。新目录 12 件的效果行已随迭代 22 落地登记。 +效果声明形态(在役沿用):被动件的效果行为=**订阅行**——行内声明**订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)**,由效果引擎统一解释执行;主动件按效果类型通用分发(受理闸=使用事件订阅);常时参数面件(阔视野带/储备罐/远程镐/信标网络/刷新练习/刷新执照六件)effect_kinds 挂参数 kind、由注入面按装配集分发读取;试炼镐=自动兑付(ap_charge_safe 满 charge_n 直接 grant_ap)。事件/效果类型/条件事实/算子四词表封闭(效果引擎单一事实源);卡面效果摘要=行 `desc` 字段直读(文案表值化)。新目录 12 件的效果行已落地登记。 playtest 预警(预注册,归难度曲线与Boss): @@ -243,7 +243,7 @@ playtest 预警(预注册,归难度曲线与Boss): ## 验收标准 -- 护栏强制:任何标出危险格的道具定义,目标域字段超过 3×3 时数据加载直接返回错误并拒绝;现行 12 件逐件过护栏校验(迭代 22 已交付,2026-10-12)。 +- 护栏强制:任何标出危险格的道具定义,目标域字段超过 3×3 时数据加载直接返回错误并拒绝;现行 12 件逐件过护栏校验。 - 覆盖检查:效果三方向(信息/行动资源/操作能力)各有新目录承载,检查按「设计骨架」节口径执行;逐件的效果格归属见「目录(重设计 v1)」三表。 - 两域正交:秘宝件经同调位装配生效,不入局内道具背包,与奇物背包互不混装。 - 使用窗口:非挖掘期的使用请求被拒绝且不消耗;挖掘期任意时点可发起。 diff --git a/design/gdd/systems/跨局循环/锻造工坊.md b/design/gdd/systems/跨局循环/锻造工坊.md index 8319cdb8..152a71f5 100644 --- a/design/gdd/systems/跨局循环/锻造工坊.md +++ b/design/gdd/systems/跨局循环/锻造工坊.md @@ -1,16 +1,16 @@ # 锻造工坊 > 一句话:营地的武器与护甲成长——武器锻造区三条路线、护甲锻造区三条路线各练各的,钥石消费,一次冒险各选一件,满级特效留位本期不做 -> 状态:**v0.11(2026-11-02 补验收标准节:九条结构面判据落文,规则与数值零变化)**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕 +> 状态:**v0.12**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕 ## 设计目的 用户原案(playnote 2026-10-06):把现役"营地花钱买攻击 +1"改造成有等级、有成长、有满级特效的**武器升级路线**;新增长枪(穿刺)与法杖(魔法)实现武器间差异化;护甲同理——初始只有轻甲(升级只提 AC),最高等级后解锁重甲/魔法护甲,基础 AC 各异、各带满级特效。 -这套设计同时是成长曲线反馈(playnote 2026-10-05「前期成长系数不能太高,能力解锁后才能匹配关卡难度」)的执行载体:锻造工坊同时握着**数字成长的速率**(每级加多少)与**能力解锁的节奏**(什么时候拿到新武器/新甲),曲线形状直接服务"前期靠挖掘技巧过关、后期靠解锁追平难度"的体验目标。(原提案把"满级特效"也列为能力台阶之一——2026-10-12 裁 6:特效本期不做、只留扩展位,能力台阶收缩为新武器/新甲型的解锁,见「满级特效扩展位」节。) +这套设计同时是成长曲线反馈(playnote 2026-10-05「前期成长系数不能太高,能力解锁后才能匹配关卡难度」)的执行载体:锻造工坊同时握着**数字成长的速率**(每级加多少)与**能力解锁的节奏**(什么时候拿到新武器/新甲),曲线形状直接服务"前期靠挖掘技巧过关、后期靠解锁追平难度"的体验目标。 ## 系统范围 -边界这样划:锻造工坊管「三件武器与三型护甲的等级路线、解锁规则、定价与满级特效的设计口径」——它是对现役营地属性锻造柜台中攻击、护甲两档的路线化改造设计,不是新系统。钥石从哪来、余额怎么记,归元进度;数值终值归数值批;代码与数据表改动全部归实装批。 +边界这样划:锻造工坊管「三件武器与三型护甲的等级路线、解锁规则、定价与满级特效的设计口径」——它是对现役营地属性锻造柜台中攻击、护甲两档的路线化改造设计,不是新系统。钥石从哪来、余额怎么记,归元进度;数值终值归数值批。 负责: @@ -27,10 +27,10 @@ |---|---| | 钥石与营地柜台结构 | [元进度](元进度.md)——本系统即属性锻造柜台攻击/护甲两档的改造,消费货币与柜台框架归彼 | | 数值终值(每级增量/等级上限/价格/基础 AC/特效值) | Alpha 收官 M4 数值批——本文全部数值只有量纲与锚点,标 provisional | -| 代码与数据表落地 | 实装批(已入库) | +| 代码与数据表落地 | 已落地 | | 克制矩阵与伤害结算 | [战斗结算](../战斗循环/战斗结算.md)——矩阵九格结构冻结是既有条款,本系统零改动 | | 局内属性奖励件 | [奇物](../冒险循环/奇物.md)——账号层永久强化与单冒险加算区分层并存,互不侵入 | -| 存档读写 | [存档序列化](../表现与支撑/存档序列化.md)——实装后新增等级与当前选中域,旧档废弃口径随实装批(开发阶段无迁移) | +| 存档读写 | [存档序列化](../表现与支撑/存档序列化.md)——新增等级与当前选中域,旧档破坏性废弃(开发阶段无迁移) | ## 在核心循环中的位置 @@ -41,32 +41,32 @@ ## 现行设计(定案口径) -### 柜台承载(2026-10-11 锻造工坊裁决会话 A 组定案) +### 柜台承载(2026-10-11 用户裁) -**营地=四柜台并排布局**(A② 裁):营地界面并排呈现四个柜台——①树淬炼(树脊柱界面,生命/命中淬炼唯一入口)②锻造工坊(武器+护甲攻防两区,本系统)③秘宝匣(秘宝解锁与同调装配)④奖励格图鉴(常开无门槛)。**攻防锻造独立成柜台**,不并入秘宝匣(职责分立:工坊=武器/护甲路线升级,秘宝匣=秘宝解锁与同调装配,混装淘汰)。宽度不足时横向滚动条兜底;程序占位先行,视觉与布局终稿归 HUD 营地批(后续 UI 优化另批)。 +**营地=四柜台并排布局**:营地界面并排呈现四个柜台——①树淬炼(树脊柱界面,生命/命中淬炼唯一入口)②锻造工坊(武器+护甲攻防两区,本系统)③秘宝匣(秘宝解锁与同调装配)④奖励格图鉴(常开无门槛)。**攻防锻造独立成柜台**,不并入秘宝匣(职责分立:工坊=武器/护甲路线升级,秘宝匣=秘宝解锁与同调装配,混装淘汰)。宽度不足时横向滚动条兜底;程序占位先行,视觉与布局终稿归 HUD 营地批(后续 UI 优化另批)。 -**生命档不设于本工作间**(A① 裁):生命强化唯一入口=树脊柱生命线;旧属性柜台生命档随「天赋树实装批」旧柜台清退吸收进脊柱。本工作间=纯攻防两区:武器区加攻击、护甲区加 AC,注入面零生命项。 +**生命档不设于本工作间**(用户裁):生命强化唯一入口=树脊柱生命线;旧属性柜台生命档已清退吸收进脊柱。本工作间=纯攻防两区:武器区加攻击、护甲区加 AC,注入面零生命项。 -**工作间内两区并列**(A③ 裁):武器区/护甲区并列呈现,机制层面零顺序门槛;同屏分栏或页签切换=呈现细节归 HUD 批。 +**工作间内两区并列**(用户裁):武器区/护甲区并列呈现,机制层面零顺序门槛;同屏分栏或页签切换=呈现细节归 HUD 批。 -**树侧钥匙(2026-10-11 裁:无前置)**:本柜台由天赋树「锻造工坊」钥匙节点展开——free 节点、**无前置条件、直接可点亮**(原「攻击淬炼累计 ≥2 级 且 护甲淬炼累计 ≥2 级」等级阈值前置,随树脊柱砍攻/护两线作废);未点亮时本柜台锁定态,点亮后开放。树侧结构换代(脊柱砍攻/护两线 + 一线一节点 + Fork 一节点双态,三轮换代 **29→21→15→12**,地脉共鸣条件效果随之换代——2026-10-12 订正:原记「29→21」系 v0.6 时点旧数,树侧现行终态 12 节点)设计权威文档 = [天赋树](天赋树.md);**钥匙节点已随迭代 21 实装在役(2026-10-12 入库——free 无前置、点亮展开本柜台、锁定态零购买路径),2026-10-13 反哺写入换代原「实装归待办清单」悬置指针**。 +**树侧钥匙(2026-10-11 裁:无前置)**:本柜台由天赋树「锻造工坊」钥匙节点展开——free 节点、**无前置条件、直接可点亮**;未点亮时本柜台锁定态,点亮后开放。树侧结构(脊柱=生命/命中两线 + 一线一节点 + Fork 一节点双态,现行终态 12 节点)设计权威文档 = [天赋树](天赋树.md);**钥匙节点已实装在役(free 无前置、点亮展开本柜台、锁定态零购买路径)**。 **注入衔接(所有权切分,2026-10-11 裁)**:每根数值轴全游戏单一来源——生命/命中唯一入口=树脊柱;**攻击唯一入口=武器路线、AC 唯一入口=甲路线(本系统)**,树零攻防来源(红线)。锻造路线加值 = 当前武器攻击加值 + 当前甲路线 AC 加值,与树淬炼 flat、局内加算区在开局属性注入面分层相加(通道现行事实源 = [元进度](元进度.md)「跨局注入」节);锻造加值只按**当前选中**的武器/甲生效(长剑的练度在换带长枪后回家待命,不丢级、不生效)。 -**两根类型轴的所有权(2026-10-12 v0.6 订正,用户裁)**:`attack_type` / `armor_type` 的默认值由锻造工坊配置**常驻持有**(默认值 = 现役静态表现役值 normal / light),hero.tres 静态表两轴随实装删除——静态表不再存放这两项。冒险开始时参数面读「锻造工坊配置默认值 + 存档当前选中覆盖」注入。**默认值与柜台解锁状态解耦**:树钥匙节点未点亮时柜台为锁定态(玩家无交互入口),但配置表常驻可读、默认值照常注入——不存在「锻造工坊解锁前读不到默认值」的窗口。选中态写存档(与等级域同批新增),与现役「表运行期只读、永久强化写存档」纪律一致。 +**两根类型轴的所有权(2026-10-12 用户裁)**:`attack_type` / `armor_type` 的默认值由锻造工坊配置**常驻持有**(默认值 = 现役静态表现役值 normal / light),hero.tres 静态表两轴已删除——静态表不再存放这两项。冒险开始时参数面读「锻造工坊配置默认值 + 存档当前选中覆盖」注入。**默认值与柜台解锁状态解耦**:树钥匙节点未点亮时柜台为锁定态(玩家无交互入口),但配置表常驻可读、默认值照常注入——不存在「锻造工坊解锁前读不到默认值」的窗口。选中态写存档,与现役「表运行期只读、永久强化写存档」纪律一致。 ### 三件武器 | 武器 | 正式显示名 | 攻击类型 | 路线(行名) | |---|---|---|---| -| 剑 → **长剑**(8a 改名,见下) | **长剑锻造** | 普通 | 语义继承自已退役的攻击锻造行(+基础攻击);行族本体随迭代 21 T5 退役,路线行为新建(对象与命名归实装批) | +| **长剑** | **长剑锻造** | 普通 | 语义继承自已退役的攻击锻造行(+基础攻击);路线行为新建 | | 长枪 | **长枪锻造** | 穿刺 | 解锁后从 1 级练起 | | 法杖 | **法杖锻造** | 魔法 | 解锁后从 1 级练起 | -> **改名注(2026-10-12,8a 裁·Y 层)**:六条路线的行名统一为「件名 + 锻造」——长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造。其中第一件武器的正式显示名由「剑」改「长剑」(用户原话口径)。`attack_type` 字段值、矩阵语义、攻击类型词条登记均不受此改名影响——改的只是显示名。 +> **行名注(2026-10-12 用户裁)**:六条路线的行名统一为「件名 + 锻造」——长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造;第一件武器的正式显示名为「长剑」(用户原话口径)。`attack_type` 字段值、矩阵语义、攻击类型词条登记均不受行名影响——改的只是显示名。 -- 每件武器有**独立等级**(1 到上限,锚点 5 级量级,provisional;**0 级 = 未练合法态**——未解锁或已解锁未锻造均为 0 加值裸体态,锻出第 1 级 = 首个 +1,Q1 裁 2026-10-12)、独立成长曲线、独立的满级特效挂位(**本期为空位**——6 裁,见「满级特效扩展位」节)——三件武器的等级各自保留,换当前武器不丢任何进度。 -- **当前武器单选出场**:类型由武器决定(选长枪=穿刺)。选中态写**存档域**(与等级域同批新增),冒险开始经参数面注入;`attack_type` 的默认值归锻造工坊配置常驻持有、hero.tres 静态表该轴随实装删除(原「写入 hero.tres 休眠轴」口径与现役「表运行期只读、永久强化写存档」纪律冲突,且与本文存档域条目自相矛盾;现役静态值 normal 由锻造工坊配置默认值接管)。 +- 每件武器有**独立等级**(1 到上限,锚点 5 级量级,provisional;**0 级 = 未练合法态**——未解锁或已解锁未锻造均为 0 加值裸体态,锻出第 1 级 = 首个 +1,2026-10-12 用户裁)、独立成长曲线、独立的满级特效挂位(**本期为空位**,见「满级特效扩展位」节)——三件武器的等级各自保留,换当前武器不丢任何进度。 +- **当前武器单选出场**:类型由武器决定(选长枪=穿刺)。选中态写**存档域**,冒险开始经参数面注入;`attack_type` 的默认值归锻造工坊配置常驻持有、hero.tres 静态表该轴已删除(现役静态值 normal 由锻造工坊配置默认值接管)。 - **一次冒险 = 一个武器类型 + 一个甲型(1a 裁)**:同一时刻只有一件武器、一件甲生效(出场行显示"当前:长剑锻造 + 轻甲锻造")。多持轮换淘汰——棋盘穿刺/魔法直伤件已承载"对不同甲型换着打"的战术价值,战斗内换械要给结算管线新开"类型可变"维度,收益不成比例。(原裁点只问武器携带数,本裁把它扩到"一次冒险"粒度并同时覆盖甲侧。) - **营地内随时切换、免费(1b / 1c 裁)**:等级都是玩家花资源练出来的,切换只是决定"今天带谁出门";二次收费会惩罚尝试性构筑,与成长曲线诉求(低成本试错找匹配武器)相逆。**冒险开始后锁死**:伤害单据的类型在开单时声明、管线内不变。 @@ -78,24 +78,24 @@ | 重甲 | 12(+2) | −1(挡普通) | 解锁后从 1 级练起,独立等级路线 | | 魔法护甲 | 9(−1) | +1(被普通克) | 即现役甲域 ward——对号入座,零扩域 | -- **命名统一(3a / 2b 裁)**:**只有「魔法护甲」这一个名字**(= 现役甲域 ward)。用户原案里的「魔法甲」是**笔误**,不是别名、不做简称退役处理——正文与界面文案一律写「魔法护甲」([术语表](../../术语表.md) 已登记);仅历史版本行与过程稿引用原文时按记载保留。"第四甲型"不存在也不需要讨论(2b 随之自动消解)。 +- **命名统一(3a / 2b 裁)**:**只有「魔法护甲」这一个名字**(= 现役甲域 ward)。用户原案里的「魔法甲」是**笔误**,不是别名、不做简称退役处理——正文与界面文案一律写「魔法护甲」([术语表](../../术语表.md) 已登记)。"第四甲型"不存在也不需要讨论(2b 随之自动消解)。 - **每型独立等级路线(3c 裁)**:与武器路线同构;"当前甲"单选与"当前武器"单选同构,营地内免费切换。 -- **甲型差异当下双轴可感(3b 裁——推翻原「显式边界·诚实收窄」条款)**:**敌方攻击是有类型的**;未显式设置的敌方攻击一律按**默认普通(normal)**参与结算(用户裁)。矩阵 normal 行取值 = 轻甲 0 / 重甲 −1 / 魔法护甲 +1(整数点数:+1 被克 / 0 中性 / −1 挡住)。所以甲型差异不是"只有基础 AC 可感",而是 **基础 AC + 克制修正两轴当下同时生效**——不再有"克制反向要等敌方攻击类型批"的推迟。 +- **甲型差异当下双轴可感(3b 裁)**:**敌方攻击是有类型的**;未显式设置的敌方攻击一律按**默认普通(normal)**参与结算(用户裁)。矩阵 normal 行取值 = 轻甲 0 / 重甲 −1 / 魔法护甲 +1(整数点数:+1 被克 / 0 中性 / −1 挡住)。所以甲型差异不是"只有基础 AC 可感",而是 **基础 AC + 克制修正两轴当下同时生效**。 - **现役实态与本裁定的落差(跨系统汇合点,本系统只登记需求)**:现役敌方攻击单据的攻击类型栏为空(空串恒不查克制矩阵,与"群伤/反噬/地形/敌方技"同列无类型族),敌人表登记「敌方技能攻击类型轴仍未开(全部 normal 档)」——轴未开、开了也全 normal。**按 3b 裁执行 = 把该轴按「缺省填 normal」启用**;填值动作面落在敌人系统 / 战斗结算侧,不在本工作间内。本系统只登记该需求与它的数值影响。 - - **连带后果(3b 裁的前置信息,用户裁定:不在本批考虑,留作后续开发改造的输入)**:按"敌方攻击缺省普通"落定后,现行数据下三型会成**纯序**——重甲(AC +2 且挡普通 −1)= 双正、轻甲 = 中性、魔法护甲(AC −1 且被普通克 +1)= 负向,且因现行敌方无魔法攻击而暂无优势窗口。这是**后续开发改造的前置事实**不是缺陷裁定:敌方攻击类型的差异化、魔法护甲的正当性由后续批次负责(含 M4 在基础 AC / 解锁价上的取值);本批只需按统一伤害轴把结构与字段落对即可。 + - **连带后果(3b 裁的前置信息,用户裁定:留作后续开发改造的输入)**:按"敌方攻击缺省普通"落定后,现行数据下三型会成**纯序**——重甲(AC +2 且挡普通 −1)= 双正、轻甲 = 中性、魔法护甲(AC −1 且被普通克 +1)= 负向,且因现行敌方无魔法攻击而暂无优势窗口。这是**后续开发改造的前置事实**不是缺陷裁定:敌方攻击类型的差异化、魔法护甲的正当性由后续批次负责(含 M4 在基础 AC / 解锁价上的取值);本系统只需按统一伤害轴把结构与字段落对即可。 - 每 1 点 AC 的期望减伤约 3.75% 量级(现役 EV 复算锚:AC10 期望减免 21.25%、AC11 25%),终值归 M4。 ### 成长曲线与解锁 -- **曲线形状:前缓后陡(4a 裁,只锁方向不锁值)**——低等级每级攻击增量小(+0/+1 量级),高等级每级 +1/+2 量级。前期刻意压数字:玩家靠挖掘技巧过关(这是特性不是缺陷);**能力台阶 = 新武器 / 新甲型的解锁**(满级特效本期不做,见「满级特效扩展位」节)。只锁形状方向,参数全体 provisional 归 M4。(程序性登记:曲线形状与几何定价是两条独立旋钮,终值同归 M4 一批标定——不含任何方向性判断。) +- **曲线形状:前缓后陡(4a 裁,只锁方向不锁值)**——低等级每级攻击增量小(+0/+1 量级),高等级每级 +1/+2 量级。前期刻意压数字:玩家靠挖掘技巧过关(这是特性不是缺陷);**能力台阶 = 新武器 / 新甲型的解锁**(满级特效本期不做,见「满级特效扩展位」节)。只锁形状方向,参数全体 provisional 归 M4。(曲线形状与几何定价是两条独立旋钮,终值同归 M4 标定。) - **本系统=攻防数值成长唯一来源**(2026-10-11 所有权切分裁):攻击成长只在武器路线、AC 成长只在甲路线;树脊柱零攻防数值(只有生命/命中两线)。数字成长的速率与能力解锁的节奏由本曲线统一握持——这是本系统对成长曲线反馈诉求的独占载体地位。 - **解锁节奏:锻造内自闭环(4b 裁)**——新武器 / 新甲型的解锁条件全部在锻造系统内部,不绑关卡进度(与"营地 = 消费钥石的成长枢纽"定位冲突,且首局教学局不该被绑死在长剑上)。 -- **解锁通道:并联双通道(4b-1 裁)**——每条待解锁路线(长枪 / 法杖 / 重甲 / 魔法护甲)都开两个**互不影响、玩家自选其一**的通道:① **练满前一档**(长剑练满开长枪/法杖、轻甲练满开重甲/魔法护甲);② **一次性解锁价**直购开。不设串联门槛(不需要先练满才能买)。与秘宝的关系:共享钥石单币与「钥石直购 / 条件解锁」的成分语义,但通道结构不同——秘宝为件级单通道分派(`秘宝.md:29`),本系统为同路线双通道并联任选(2026-10-12 v0.6 订正:原「与秘宝解锁的混合制同构」表述删除——「同构」非本项目概念,两者功能、结构、位置均不同)。 +- **解锁通道:并联双通道(4b-1 裁)**——每条待解锁路线(长枪 / 法杖 / 重甲 / 魔法护甲)都开两个**互不影响、玩家自选其一**的通道:① **练满前一档**(长剑练满开长枪/法杖、轻甲练满开重甲/魔法护甲);② **一次性解锁价**直购开。不设串联门槛(不需要先练满才能买)。与秘宝的关系:共享钥石单币与「钥石直购 / 条件解锁」的成分语义,但通道结构不同——秘宝为件级单通道分派(`秘宝.md:29`),本系统为同路线双通道并联任选(两者功能、结构、位置均不同)。 ### 经济 - **纯钥石(5b 裁)**:与现役属性锻造、天赋树(树全钥石单币)、同调刷新升级同币同柜。原案语义是"攻击力提升改造"——同一笔钱换个花法。GP = 局内一次性货币、局内清零不入存档、与钥石永不互兑,两币分工是拍板条款,不引入局外 GP 余额域或第三货币。(用户裁定注:当前没有其他材料,钥石就是统一货币;**后续若要分出专用币或材料,届时再重构设计,不预先建面**。) -- **几何递增定价**:每级价格 = 基础价 × 150%^(已购级数)(历史考古参数:单次 20 钥石、公比 150%——退役行批注;forge_products 行族已随迭代 21 T5 退役、无现役计价字段可沿,实装投值归 M4 从零标定);路线解锁 = 一次性解锁价(量纲 ≈ 中段几级锻造花费)。全部终值归 M4。 +- **几何递增定价**:每级价格 = 基础价 × 150%^(已购级数)(考古参数:单次 20 钥石、公比 150%——见退役行批注;forge_products 行族已退役、无现役计价字段可沿,投值归 M4 从零标定);路线解锁 = 一次性解锁价(量纲 ≈ 中段几级锻造花费)。全部终值归 M4。 - **零材料经济(5c 裁)**:不引入账号层锻造材料。现役效果引擎的 grant_material 是**局内**材料计数器(如雷区图谱),不是账号层库存;账号层材料=全新经济面(存档域/获取渠道/囤积规则全套新建),原案全文只字未提材料,武器差异化的价值轴是类型(与预留的特效位)不是采集刷料。 ### 满级特效扩展位(本期不启用——6 裁) @@ -103,11 +103,11 @@ **裁决(2026-10-12)**:满级特效**本期不做**——不设计清单、不定数值、不实装、不开参数位。只保留**扩展位**: - 每条路线(三武器 + 三甲)的等级终点各预留 1–2 条特效挂点,本期**为空位**; -- 启用前提 = 后续专门立项,**不随锻造工坊实装批落地**; -- 启用时沿用的既有约束:优先复用现役效果引擎效果类型闭集(**31 种**——2026-10-13 迭代 23 反哺写入订正,原记 24 系 2026-10-07 旧快照;迭代 20 T1 +7、迭代 22 T3 +1),**不往闭集加新词**——闭集是高代价变更面(加载校验 / 文档词表 / 回归测试三处连带); -- 未启用的候选池七条(2026-10-21 自过程稿 §八 迁入,原只留彼不进正文)——**备用清单,不是承诺清单**:启用时逐条取用或推翻,终选清单与数值仍归实装批需求卡片+M4 数值批: +- 启用前提 = 后续专门立项; +- 启用时沿用的既有约束:优先复用现役效果引擎效果类型闭集(**31 种**),**不往闭集加新词**——闭集是高代价变更面(加载校验 / 文档词表 / 回归测试三处连带); +- 未启用的候选池七条——**备用清单,不是承诺清单**:启用时逐条取用或推翻,终选清单与数值仍归实装批需求卡片+M4 数值批: -| 路线 | 候选特效(量纲方向) | 实现代价分档(2026-10-21 按现役代码复核) | +| 路线 | 候选特效(量纲方向) | 实现代价分档 | |---|---|---| | 长剑 | 破甲:命中重甲时克制修正额外 +1 点量级 | 零新代码——`modify_ticket` 效果类型与 matchup 条件算子均在现役闭集 | | 长剑(第二条) | 暴击面扩大:暴击骰面 −1 量级 | **需新参数位**——暴击面现役是表上恒定值(`settlement.tres` 的 `crit_roll=20`),改成武器级可变=实装批改读表面 | @@ -117,7 +117,7 @@ | 重甲 | 反震:被命中时对攻击者反贴 1 点量级伤害 | 零新代码——`spike` 在册 | | 魔法护甲 | 护盾:每场战斗开场自带护盾(层数 X 量级,终值归 M4) | 零新代码+参数面桥接——`shield` 在册,护盾层数进战斗开场参数需接线 | -- 候选池的实现深度前提(沿用过程稿结论并经现役复核):七条全部可用现役效果类型闭集词或参数位表达,**无一条需要往闭集加新效果类型词**——加词是高代价变更面(加载校验/文档词表/回归测试三处连带),启用时禁走此路。 +- 候选池的实现深度前提:七条全部可用现役效果类型闭集词或参数位表达,**无一条需要往闭集加新效果类型词**——加词是高代价变更面(加载校验/文档词表/回归测试三处连带),启用时禁走此路。 **对相邻口径的两处连带**:① 设计目的节"能力解锁的节奏"台阶收缩为新武器 / 新甲型解锁(不再含特效);② 存档域不设特效域。 @@ -126,14 +126,14 @@ - **奇物属性件**:分层并存,互不侵入。武器/护甲锻造动的是**账号层基础值**(营地永久强化,冒险开始时经参数面传入);奇物属性件动的是**单次冒险加算区**(关间不清零、冒险结束清零)。本设计不扩奇物"生命/AC/攻击"三轴封闭分类、不动渠道开关表、不往局内池加任何东西。入战 AC 的三层语义清晰可加:甲型基础 AC + 营地甲路线等级加值 + 局内加算区累加。 - **克制矩阵(2a 裁:伪裁点消解)**:**伤害结算只有一套,类型不是待仲裁的槽位**。每份伤害单据自带攻击类型栏——主角基础攻击单据取当前武器的攻击类型,棋盘格面直伤件(穿刺弹 / 魔法矢)取奖励表自身的类型——各自按**同一张 3×3 克制矩阵**取克制修正。因此"叠加 / 替代 / 互斥"三分法不成立:两根参数之间无冲突可裁,也不需要任何共存规则。二者的真实差异只在**单据形态与生命周期**(主角基础攻击走掷点折扣 + 暴击;棋盘克制直伤走必中全额不掷点;且前者 = 账号层永久、后者 = 局内一次性)——那是两条不同的伤害来源,不是两种类型语义。矩阵九格满格结构冻结(2b 随 3a 自动消解:魔法护甲 = 现役 ward,不存在第四甲型)。 - **工作间两区定名 + 路线行名(8a 裁)**:锻造工坊工作间内先立两个分区,各装三条锻造路线(路线行名统一为"件名 + 锻造")——①**武器锻造区**:长剑锻造 / 长枪锻造 / 法杖锻造;②**护甲锻造区**:轻甲锻造 / 重甲锻造 / 魔法护甲锻造。两区并列、机制层面零顺序门槛(A③ 裁),区内路线各自独立升级。 -- **局内不存在武器/护甲的提升(8a 裁连带核结)**:用户指出"局内没有可以提升武器的地方"——**属实**。查实:局内商店货架的三行(现役旧名"攻击锻升 / 生命锻升 / 护甲锻升"——**2026-10-12 已改名,见下**),**正是奇物「属性值提升」三轴(攻击 / 生命上限 / AC)的货架前台标签**——`shop.tres` pool_shelf 六行用种类字段指向冒险表的奇物种类词表(其中凭证行为显式豁免种、不入该词表,六行中五行命中),`display_name` 只是这层的前台名;买到的东西进**冒险加算区**、冒险结束清零。所以它们是**奇物属性件**,既不是武器也不是护甲,局内不改变任何锻造等级。命名上的隐患确凿:行名里的"锻"字与营地锻造同字,是误读的直接来源。**2026-10-12 用户裁决(8a 连带·C 项)**:三行按「属性 + 后缀」改名,后缀取 **祝福** ⇒ **攻击祝福 / 生命祝福 / 护甲祝福**(D&D 参照调研:Blessing 为"神赐恩惠"义;用户同时裁定——参考书目里出现过「祝福」一词不构成禁用)。**改名后这三条在语感上彻底脱离"锻造"一词,与营地工作间不再有字面关联**,而结构关系不变(仍是奇物「属性值提升」三轴,机制分类名不动,只改玩家向显示名)。**改名已于 2026-10-12 执行完毕并合入 master**(shop.tres 六行锻升→祝福;reward.tres / status_effects.tres 护甲强化→盾牌加护)。 -- **专长联动**:现役专长均为跨攻击类型通用件(不按 attack_type 分系——既无 normal 条件件、也无 pierce/magic 条件件,`feats.tres` 29 行实证),武器类型差异只经克制矩阵的 matchup 行体现;「选某类型激活某系专长」在本项目专长体系下不成立(2026-10-12 v0.6 订正:原「选长枪激活穿刺系专长的价值」为无现役对应物的表述,删除)。现有死条件 `magic_vs_magic`(魔法打"魔法甲"——现行甲域无此型,永不可触发 = 废卡):**改值复活案已作废(2026-10-11 D 组核结——所属件魔网织者在素材库表二专长 27 件退役删除名单)**,该行随专长退役删行批整体消解,本系统零触碰(2026-10-12 订正:本节原写"推荐复活"与实装边界第 3 条结案口径冲突,随本批对齐)。「魔法打魔法护甲」的克制语义由矩阵九格承载(magic vs ward = −1),新专长框架如需同类件 = 彼批的新卡设计题。 +- **局内不存在武器/护甲的提升(8a 裁连带核结)**:用户指出"局内没有可以提升武器的地方"——**属实**。查实:局内商店货架的三行(现名"攻击祝福 / 生命祝福 / 护甲祝福"),**正是奇物「属性值提升」三轴(攻击 / 生命上限 / AC)的货架前台标签**——`shop.tres` pool_shelf 六行用种类字段指向冒险表的奇物种类词表(其中凭证行为显式豁免种、不入该词表,六行中五行命中),`display_name` 只是这层的前台名;买到的东西进**冒险加算区**、冒险结束清零。所以它们是**奇物属性件**,既不是武器也不是护甲,局内不改变任何锻造等级。命名上的隐患确凿:行名里的"锻"字与营地锻造同字,是误读的直接来源。**命名(2026-10-12 用户裁)**:三行按「属性 + 后缀」改名,后缀取 **祝福** ⇒ **攻击祝福 / 生命祝福 / 护甲祝福**(D&D 参照调研:Blessing 为"神赐恩惠"义;用户同时裁定——参考书目里出现过「祝福」一词不构成禁用)。**改名后这三条在语感上彻底脱离"锻造"一词,与营地工作间不再有字面关联**,而结构关系不变(仍是奇物「属性值提升」三轴,机制分类名不动,只改玩家向显示名)。改名已执行完毕(shop.tres 六行锻升→祝福;reward.tres / status_effects.tres 护甲强化→盾牌加护)。 +- **专长联动**:现役专长均为跨攻击类型通用件(不按 attack_type 分系——既无 normal 条件件、也无 pierce/magic 条件件,`feats.tres` 29 行实证),武器类型差异只经克制矩阵的 matchup 行体现;「选某类型激活某系专长」在本项目专长体系下不成立。现有死条件 `magic_vs_magic`(魔法打"魔法甲"——现行甲域无此型,永不可触发 = 废卡):**复活作废**——所属件魔网织者在素材库表二退役名单,该行已随专长退役消解,本系统零触碰。「魔法打魔法护甲」的克制语义由矩阵九格承载(magic vs ward = −1),新专长框架如需同类件 = 彼批的新卡设计题。 - **天赋树**:同钥石经济;注入面分层叠加且**所有权切分**(2026-10-11 裁)——树脊柱只持生命/命中淬炼(树零攻防来源),攻/AC 唯一入口=本系统路线加值(只按当前选中武器/甲生效)。 - **冒险前资源配比预设批(挂起冻结中)**:本设计不预设该批的重启口径、不占用其任何冻结裁决、不改其冻结文本。该批重启时须显式核对两处交汇面:①预算包络是否把武器类型计入克制注;②容量柜台与锻造工坊工作间(同在营地)的资源竞争关系。 -## 裁决结果清单(17 裁点全表·2026-10-12 清零) +## 裁决结果清单 -17 裁点全部拍板,本表即终态(含本会话呈报的两条子问 4a-1 / 4b-1,共 19 行)。「推翻推荐」四行已同步改正文对应节。 +全部裁点已拍板,本表即终态。 | # | 裁点 | 裁决结果 | 写入处 | 备注 | |---|---|---|---|---| @@ -143,7 +143,7 @@ | 1c | 换械收费 | 免费 | 同上 | 按推荐案 | | 2a | 类型轴共存 | **伪裁点消解**——伤害结算只有一套、单据自带类型,"叠加 / 替代 / 互斥"三分法不成立 | 「与相邻系统的边界·克制矩阵」 | **推翻推荐案** | | 2b | 矩阵扩维 | 不扩(九格冻结)——**随 3a 自动消解**;且「魔法甲」系笔误、只有魔法护甲一型,第四甲型无从谈起 | 同上 | 附庸裁点 + 笔误消解 | -| 2c | 死条件 magic_vs_magic | **已结案(2026-10-11 D 组核结)**:复活作废——所属件魔网织者在素材库表二退役名单,随专长 27 件退役消解 | 实装边界 3 | v0.4 结案 | +| 2c | 死条件 magic_vs_magic | **已结案**:复活作废——所属件魔网织者在素材库表二退役名单,随专长退役消解 | 实装边界 3 | — | | 3a | 甲域定名 | **就叫魔法护甲**(= 现役 ward);三型 = 轻甲 / 重甲 / 魔法护甲 | 「三型护甲」节 | 按推荐案 + **「魔法甲」系笔误,不立别名** | | 3b | 甲型可感面 | **敌方攻击有类型、未设置 = 默认普通** ⇒ 甲型差异"基础 AC + 克制修正"两轴**当下即生效**;原"克制反向留结构位"收窄条款作废 | 「三型护甲」节 + 实装边界 6 | **推翻推荐案**(连带跨系统填值需求 + 魔法护甲双负呈报) | | 3c | 护甲升级结构 | 每型独立路线(与武器同构) | 「三型护甲」节 | 按推荐案 | @@ -151,15 +151,15 @@ | 4a-1 | 〔子问〕曲线×定价"又贵又弱"提示 | **撤回**——该结论无依据(定价为现役沿用参数、前期弱是曲线意图),不落任何方向性判断;只留"两条旋钮同批标定"程序句 | 同上 | 呈报方撤回 | | 4b | 解锁节奏 | 锻造内自闭环(不绑关卡进度) | 同上 | 按推荐案 | | 4b-1 | 〔子问〕解锁通道语义 | **并联双通道**:练满前一档 **OR** 一次性解锁价,两者互不影响、玩家自选 | 同上 | 原正文"或"字歧义完成裁决 | -| 5a | 柜台承载 | **已结案(2026-10-11 A②)**:四柜台并排、攻防独立柜台、生命档移除 | 「柜台承载」节 | v0.4 结案 | +| 5a | 柜台承载 | **已结案**:四柜台并排、攻防独立柜台、生命档移除 | 「柜台承载」节 | — | | 5b | 货币 | 纯钥石(用户注:当前无其他材料,钥石 = 统一货币;后续若要区分再重构,不预先建面) | 「经济」节 | 按推荐案(且受两币分工条款锁定) | | 5c | 材料经济 | 纯钥石零材料 | 「经济」节 | 按推荐案 | | 6 | 满级特效深度 | **本期不做,只留扩展位**——不设计清单 / 不定数值 / 不实装 / 不开参数位 | 「满级特效扩展位」节 | **推翻推荐案**(原 = 复用为主 + 三条新参数位) | -| 8a | 货架现名 → 实裁 = 工作间命名(区名 + 路线行名)+ 局内核结 | **区名**:武器锻造区 / 护甲锻造区;**路线行名**统一「件名 + 锻造」= 长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造(第一件武器显示名 剑 → **长剑**)。**局内核结**:局内不存在武器 / 护甲的提升——商店货架三行「攻击锻升 / 生命锻升 / 护甲锻升」即奇物「属性值提升」三轴的货架前台标签(`shop.tres` pool_shelf 种类字段 → `adventure.tres` 奇物种类词表),与锻造无关;是否去"锻"字归实装批呈现面 | 「与相邻系统的边界·工作间两区定名 / 局内不存在武器提升」 | 裁点重定向 + Y 层命名 | +| 8a | 货架现名 → 实裁 = 工作间命名(区名 + 路线行名)+ 局内核结 | **区名**:武器锻造区 / 护甲锻造区;**路线行名**统一「件名 + 锻造」= 长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造(第一件武器显示名 = **长剑**)。**局内核结**:局内不存在武器 / 护甲的提升——商店货架三行(现名攻击祝福 / 生命祝福 / 护甲祝福)即奇物「属性值提升」三轴的货架前台标签(`shop.tres` pool_shelf 种类字段 → `adventure.tres` 奇物种类词表),与锻造无关 | 「与相邻系统的边界·工作间两区定名 / 局内不存在武器提升」 | 裁点重定向 + Y 层命名 | -## 工作间内容清单(实装批需求卡片输入) +## 工作间内容清单 -本节把定案口径压成一张可照做的清单——需求卡片逐条取用即可。 +本节把定案口径压成一张可照做的清单。 ### 1 · 承载与入口 - 营地四柜台之一(树「锻造工坊」钥匙节点点亮后展开;未点亮 = 锁定态;钥匙 free、无前置)。 @@ -170,7 +170,7 @@ | 路线(行名) | 攻击类型 | 初始 / 待解锁 | 解锁通道 | |---|---|---|---| -| **长剑锻造** | 普通 | **初始持有**(语义继承自已退役的攻击锻造行;行族新建归实装批) | — | +| **长剑锻造** | 普通 | **初始持有**(语义继承自已退役的攻击锻造行) | — | | **长枪锻造**(穿刺) | 穿刺 | 待解锁,解锁后从 1 级练起 | 并联双通道 | | **法杖锻造**(魔法) | 魔法 | 待解锁,解锁后从 1 级练起 | 并联双通道 | @@ -178,14 +178,14 @@ | 路线(行名) | 基础 AC(provisional) | 挨普通攻击的克制修正 | 初始 / 待解锁 | 解锁通道 | |---|---|---|---|---| -| **轻甲锻造** | 10(现役主角值,不动) | 0 | **初始持有**(语义继承自已退役的护甲锻造行;行族新建归实装批) | — | +| **轻甲锻造** | 10(现役主角值,不动) | 0 | **初始持有**(语义继承自已退役的护甲锻造行) | — | | **重甲锻造** | 12(+2) | −1 | 待解锁,从 1 级练起 | 并联双通道 | | **魔法护甲锻造**(ward) | 9(−1) | +1 | 待解锁,从 1 级练起 | 并联双通道 | ### 4 · 每条路线的内容(六条同构) -- **等级**:1 → 上限(锚点 5 级量级,provisional 归 M4);**0 级 = 未练合法态**(未解锁/未锻造 = 0 加值裸体态,锻出第 1 级 = 首个 +1——Q1 裁,正文「1 → 上限」为量级描述)。 +- **等级**:1 → 上限(锚点 5 级量级,provisional 归 M4);**0 级 = 未练合法态**(未解锁/未锻造 = 0 加值裸体态,锻出第 1 级 = 首个 +1;正文「1 → 上限」为量级描述)。 - **成长曲线**:前缓后陡(武器 = 攻击加值;甲 = AC 加值),只锁方向。 -- **终点**:满级特效挂位 1–2 条——**本期为空位**(6 裁)。 +- **终点**:满级特效挂位 1–2 条——**本期为空位**。 - **独立保留**:换当前件后,原来那件的练度**保留但不生效**(长剑的练度在换带长枪后回家待命)。 - **定价**:钥石单币,每级价格 = 基础价 × 150%^(已购级数)(现役 20 钥石基价参数沿用)。 @@ -205,10 +205,10 @@ 三武器等级 + 三甲等级 + 当前武器标记 + 当前甲标记;**无特效域**。旧档破坏性废弃(禁迁移 / 折算)。存档域见[存档序列化](../表现与支撑/存档序列化.md)(域清单与版本沿革 v7 行)。 ### 9 · 本期明确不做 -① 满级特效(清单 / 数值 / 参数位 / 存档域全不做);② 敌方攻击类型轴填值——跨系统需求,执行面在敌人系统 / 战斗结算侧,本批只登记。 +① 满级特效(清单 / 数值 / 参数位 / 存档域全不做);② 敌方攻击类型轴填值——跨系统需求,执行面在敌人系统 / 战斗结算侧,本系统只登记。 ### 10 · 数值与验证 -全部数值 provisional 归 Alpha 收官 M4 数值批;实装批必须带改前 / 改后同随机种子配对读数验证难度影响。 +全部数值 provisional 归 Alpha 收官 M4 数值批;改值须带同随机种子配对读数验证难度影响。 ## 验收标准 diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 2c38522d..85d61daf 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -4,10 +4,10 @@ > **Author**: user + ux-designer > **Last Updated**: 2026-11-02 > **Platform Target**: PC (Steam)——Keyboard/Mouse 主(全部操作纯鼠标可完成)、Gamepad Partial 非 MVP、Touch None(同 technical-preferences) -> **上游修订依赖**: 弃图刷新挖掘期受理已随布局决策 4 落稿上游(2026-09-12:行动经济 Active 受理 + 每轮上限 2 次、排雷玩法 Active·仅刷新路径装板、战斗结算的挖掘期刷新编排 + 恒同盘不变、系统索引的刷新规则同步——见 OQ11) +> **上游修订依赖**: 弃图刷新挖掘期受理依赖上游现行规则(行动经济 Active 受理 + 每轮上限 2 次、排雷玩法 Active·仅刷新路径装板、战斗结算的挖掘期刷新编排 + 恒同盘不变、系统索引的刷新规则同步——见布局决策 4 与 OQ11) > **Template**: UX Spec -> **覆盖子屏**: 挖掘阶段主界面 · 轮末自动战斗结算(战斗结算明细屏) · 胜利/失败终局 · ~~结算明细回看~~(2026-10-04 P-C7 裁:冒险中回看退役归「生涯」——待办清单登记) -> **输入义务**: 排雷玩法×6 + 行动经济 + 战斗结算×3 + 敌人系统×4 + 增益状态×4 + 地图战斗资源×5(旧版 systems-index 门禁增补记录,缺项即 blocking——承接落点见 §13 义务对照表) +> **覆盖子屏**: 挖掘阶段主界面 · 轮末自动战斗结算(战斗结算明细屏) · 胜利/失败终局 +> **输入义务**: 排雷玩法×6 + 行动经济 + 战斗结算×3 + 敌人系统×4 + 增益状态×4 + 地图战斗资源×5(缺项即 blocking——承接落点见 §13 义务对照表) --- @@ -47,10 +47,10 @@ 战斗屏是**上下文相关屏**(仅由战斗节点进入),非顶层常驻。关卡内节点进度常驻关卡画面(独立屏的常驻枢纽形态,节点态即进度呈现:已过暗金、当前金、候选通道亮金、Boss 紫赤描边),战斗屏零进度承载——战斗结束返回关卡画面,玩家始终知道自己身处图中第几环。 -- 上游屏:关卡画面(选路枢纽,屏级 spec:[level-map.md](level-map.md)——2026-09-27 建档;分支节点图形态,切片第一关为单链特例) -- 下游屏:关卡画面(选路枢纽,spec:[level-map.md](level-map.md))——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(恢复点全量服务、奖励点=三选一构筑点)确认兑付——节点奖励屏 spec 已出生:[node-reward.md](node-reward.md) v1.0(2026-09-29 迭代 7 T5 顺带出生,待办清单条目兑现;2026-09-27「不立独立 spec」拍板随之被取代) -- 下游屏:关卡结算([level-clear.md](level-clear.md),末节点 Boss 胜利——2026-09-27 建档) -- 平行屏:图例面板 overlay(本屏内域屏);~~结算明细回看 overlay~~(2026-10-04 P-C7 退役——冒险中回看归「生涯」) +- 上游屏:关卡画面(选路枢纽,屏级 spec:[level-map.md](level-map.md);分支节点图形态,切片第一关为单链特例) +- 下游屏:关卡画面(选路枢纽,spec:[level-map.md](level-map.md))——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(恢复点全量服务、奖励点=三选一构筑点)确认兑付——节点奖励屏 spec:[node-reward.md](node-reward.md) +- 下游屏:关卡结算([level-clear.md](level-clear.md),末节点 Boss 胜利) +- 平行屏:图例面板 overlay(本屏内域屏) --- @@ -68,7 +68,7 @@ | Exit Destination | Trigger | Notes | |---|---|---| | 关卡画面(选路枢纽) | 敌方全灭(战斗结算判定段判胜)且非末节点 | 不可逆:战斗结束已发生,RAP 清零;落地奖励/恢复节点时开节点覆盖层确认(关卡画面域) | -| 关卡结算 | Boss 战胜利 → 关卡完成(spec:[level-clear.md](level-clear.md)) | 不可逆:~~关卡收束清库义务载体 = 秘宝背包~~(秘宝过渡形态〔关卡域库存/局内两步使用〕已随迭代 11 第①批退役——现行形态 = 营地同调装配、整局冒险生效,无关卡域清库面〔旧关卡域库存 treasure_inventory 为投放渠道全退役后恒空的机械惰性承载,拆线归实装批——见战斗结算「轮次生命周期」节注〕,见秘宝.md) | +| 关卡结算 | Boss 战胜利 → 关卡完成(spec:[level-clear.md](level-clear.md)) | 不可逆:关卡收束无清库面——现行秘宝 = 营地同调装配、整局冒险生效(见秘宝.md)。旧关卡域库存 treasure_inventory 为投放渠道全退役后恒空的机械惰性承载,拆线待实装清理(见战斗结算「轮次生命周期」节注) | | 冒险落幕 | 主角 HP=0(判负) | 不可逆:Roguelike 死亡重开(art-bible §2.5 温柔惋惜调性) | | 无中途退出 | — | MVP 不设战斗内放弃/暂停菜单(回合制无时间压力;如需暂停留 Playtest 诊断按钮,调试用) | @@ -104,14 +104,14 @@ - **C 区角色信息(规划数据框)** - 攻击值 + 修正来源角标(战斗在消费、且站桩上无展示) - 护甲 AC(2026-09-26 二轮拍板补入——我方 AC 的唯一展示面;掷点判定轴,受击侧可读性) - - 秘宝槽(四槽壳在役、空槽占位——局内两步使用与关卡域库存随秘宝过渡形态退役〔迭代 11 第①批〕;现行秘宝 = 营地同调装配件,本区展示内容归装配面批次重接) - - 奇物列表(**已实装**——现行标题「特性」,迭代 9 卡⑫ 接线 + 迭代 12 呈现补齐;锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读。**2026-10-12 奇物呈现修复批整改落地**:原逐流派聚合行退役改逐件行「件名 ×N」,零内部分类字样上屏——原待办清单「内部分类禁写入玩家可见面」条顺带完成移除) + - 秘宝槽(四槽壳在役、空槽占位——局内两步使用与关卡域库存随秘宝过渡形态退役;现行秘宝 = 营地同调装配件,本区展示内容归装配面重接) + - 奇物列表(**已实装**——现行标题「特性」;锻造/大奖励/关卡奖励节点获得的属性提升,逐件行「件名 ×N」呈现、零内部分类字样上屏;与战斗内状态效果分区呈现,防「战斗结束被清」误读) - **D 区扫雷图 · AP 条** - AP 点阵 + 停手按钮(现行) - - **RAP 读数(点阵+数字)**——自 C 区迁入,置于弃图刷新按钮旁(2026-09-26 拍板:RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮) -- **战斗屏不承载(迁出,2026-09-26 二轮拍板定去向)** - - GP(中循环资源——商店房消费):**关卡画面常驻总量** + **战斗总结结算(总量+增量)**(呈现 spec:[settlement-summary.md](settlement-summary.md) v1.0,2026-09-30) - - 钥石(大循环永久资源):**战斗总结结算(Boss/精英击杀增量行,迭代 10 起)+ 冒险总结结算(收束明细)+ 营地**(归位口径扩面见 [settlement-summary.md](settlement-summary.md) v1.1) + - **RAP 读数(点阵+数字)**——置于弃图刷新按钮旁(2026-09-26 拍板:RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮) +- **战斗屏不承载(2026-09-26 二轮拍板)** + - GP(中循环资源——商店房消费):**关卡画面常驻总量** + **战斗总结结算(总量+增量)**(呈现 spec:[settlement-summary.md](settlement-summary.md)) + - 钥石(大循环永久资源):**战斗总结结算(Boss/精英击杀增量行)+ 冒险总结结算(收束明细)+ 营地**(呈现 spec:[settlement-summary.md](settlement-summary.md)) ### Layout Zones @@ -119,15 +119,15 @@ | 区 | 位置与几何 | 内容 | |---|---|---| -| **B 战斗画面** | 全宽,高读 `stage_h`(2026-10-06 方案二拍板:演出 ≈1/3 屏) | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决完成):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(挖掘期收起高读 `log_band_h_dig`,结算期展开高读 `log_band_h_settle`);顶部中央轮次·阶段指示 | +| **B 战斗画面** | 全宽,高读 `stage_h`(2026-10-06 方案二拍板:演出 ≈1/3 屏) | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(挖掘期收起高读 `log_band_h_dig`,结算期展开高读 `log_band_h_settle`);顶部中央轮次·阶段指示 | | **C 角色信息** | 左下,宽读 `info_panel_w`,高 = 基准屏高 − B 区高 | 攻击值(含修正显示)、护甲 AC;秘宝槽、奇物列表(现行标题「特性」)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | -| **D 扫雷图** | 中下,宽 = 基准屏宽 − C 区宽 − 列间距,高同 C 区(2026-10-06 方案二:底行压缩全部由面板空档吸收,**棋盘原尺寸不缩、格子不变**;原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(高读 `ap_bar_h`:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格边长见下方「棋盘格尺寸公式」);toast 槽(上缘内侧) | +| **D 扫雷图** | 中下,宽 = 基准屏宽 − C 区宽 − 列间距,高同 C 区(2026-10-06 方案二:底行压缩全部由面板空档吸收,**棋盘原尺寸不缩、格子不变**) | 顶部 AP 条(高读 `ap_bar_h`:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格边长见下方「棋盘格尺寸公式」);toast 槽(上缘内侧) | > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 -> 呈现术语注记(2026-09-25):封印 = 正式动作名(全库统一;登记册术语与术语表 v1.13;印记 = 封印印记,art-bible §3.2)——机制与键名不变;印记贴图已落位(`seal_mark.png`,环+十字法阵,形与定值见 art-bible §3.2/§8.2),缺图时回落封印黑「封」字形(棋盘视图程序化回退);封印特效的施印瞬间一件未实装。封印色史=朱红 → 封印紫 → 封印黑(现行)。 +> 呈现术语注记(2026-09-25):封印 = 正式动作名(全库统一;登记册术语与术语表;印记 = 封印印记,art-bible §3.2)——机制与键名不变;印记贴图已落位(`seal_mark.png`,环+十字法阵,形与定值见 art-bible §3.2/§8.2),缺图时回落封印黑「封」字形(棋盘视图程序化回退);封印特效的施印瞬间一件未实装。封印色 = 封印黑(现行)。 -> 可挖域微光画法定稿(2026-09-25 用户拍板):**接触带·空间侧 + 蓝族**——光画英雄格周界接触面(正交邻墙=整边,斜向邻墙=角点+两半边),详见 art-bible §3.2;现行墙格整框绿相呼吸为待退役占位,实现切换归表现批(探针断言顺带)。 +> 可挖域微光画法定稿(2026-09-25 用户拍板):**接触带·空间侧 + 蓝族**——光画英雄格周界接触面(正交邻墙=整边,斜向邻墙=角点+两半边),详见 art-bible §3.2;现行墙格整框绿相呼吸为待退役占位,切换待表现侧实现(含探针断言)。 **布局决策 1(本 spec 最大决策,用户拍板)**:**常驻双舞台分屏**——战斗画面与扫雷图同屏常驻,挖掘期敌人待机可见,结算期不切场景。 - 备选(已否决):Peglin 式"结算时才切入独立战斗场景"——切换打断推理心流,且资产管线成本翻倍 @@ -151,34 +151,34 @@ | 区 | 组件 | 类型 | 内容 | 交互 | 载体 | |---|---|---|---|---|---| -| B | 主角站桩立绘 | 站桩(无框立绘+落影) | HP 条落底盘(2026-10-06 方案二拍板:站桩排式 = **立绘→血条→状态**,全场血条对齐一线;血条嵌石板位、台缘线留作地面线;原「悬浮头顶」退役——高盒下血条-立绘空洞,用户点名否决)、状态效果小图标一排挂血条正下方(形状+色相双通道、层数角标;空态不占位退化为空行)——**HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板,原 C 区状态槽职责〔悬停 tooltip 来源+语义+剩余结算次数〕并入本组件)**;攻击值等规划数据仍归 C 区数据框(2026-09-20 全站桩拍板,英雄卡退役) | 悬停状态小图标看 tooltip | HUD 视图拆分改造 | -| B | 敌人站桩立绘 ×1–3 | 站桩(无框立绘+落影) | 血条+顺位徽标落底盘(同主角排式,2026-10-06 方案二;**大体档〔显示 >150px 级:drider/duergar_king〕允许向上溢出盒顶 N px(N 由实装批 C0 实算,与背景无关——原临时光柱氛围层已随舞台背景实装批退役〔2026-11-02 迭代 48〕,溢出判定不变),血条仍落底**)、状态小图标挂血条正下方(敌方增益按个体呈现——各立绘只显示它自己名下的状态实例〔蓄力/硬化/削弱/暴走/警觉,2026-11-02 个体化裁〕;伏击层数通道随 2026-09-20 八型批退役——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;2026-09-16 敌人技能池批改型:行为环点拆除〔proposal §2.4〕,意图占位 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,**意图徽标悬浮头顶上方,探顶档压胸**,敌方增益〔蓄力/硬化〕入状态图标行);死亡灰化加碎裂退场直接演在立绘上(2026-09-20 全站桩拍板,敌人卡退役);血条下名字行 = 纯名字 + 护甲类型图标(形状+色相双通道,与状态图标同行共存,状态空时为纯名字;原「底座下」随石板退位改落底排),AC 数值不展示——2026-09-26 终裁(用户口径:HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性——类型可读、数值隐藏) | 只读 | 新建 | +| B | 主角站桩立绘 | 站桩(无框立绘+落影) | HP 条落底盘(2026-10-06 方案二拍板:站桩排式 = **立绘→血条→状态**,全场血条对齐一线;血条嵌石板位、台缘线留作地面线;不悬浮头顶——高盒下血条-立绘空洞,用户点名否决)、状态效果小图标一排挂血条正下方(形状+色相双通道、层数角标;空态不占位退化为空行)——**HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板;悬停 tooltip〔来源+语义+剩余结算次数〕职责在本组件)**;攻击值等规划数据仍归 C 区数据框(2026-09-20 全站桩拍板,英雄卡退役) | 悬停状态小图标看 tooltip | HUD 视图拆分改造 | +| B | 敌人站桩立绘 ×1–3 | 站桩(无框立绘+落影) | 血条+顺位徽标落底盘(同主角排式,2026-10-06 方案二;**大体档〔显示 >150px 级:drider/duergar_king〕允许向上溢出盒顶 N px(N 由实装实算,溢出判定与背景无关),血条仍落底**)、状态小图标挂血条正下方(敌方增益按个体呈现——各立绘只显示它自己名下的状态实例〔蓄力/硬化/削弱/暴走/警觉,2026-11-02 个体化裁〕;数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;无行为环点〔proposal §2.4〕,意图占位 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,**意图徽标悬浮头顶上方,探顶档压胸**,敌方增益〔蓄力/硬化〕入状态图标行);死亡灰化加碎裂退场直接演在立绘上(2026-09-20 全站桩拍板,敌人卡退役);血条下名字行 = 纯名字 + 护甲类型图标(形状+色相双通道,与状态图标同行共存,状态空时为纯名字),AC 数值不展示——2026-09-26 终裁(用户口径:HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性——类型可读、数值隐藏) | 只读 | 新建 | | B | 轮次·阶段指示 | 标签 | "第 N 轮 · 挖掘中/结算中"(终局定格「战斗结束」;Boss 变体附 Boss 名) | 只读 | 新建 | -| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 9 类行协议);挖掘期收起为上轮摘要 1 行 | 点击展开明细回看 overlay(2026-10-04 P-C7 退役——带保留单行摘要,回看归「生涯」) | 改造 | -| B | ~~结算明细回看~~(已退役) | —— | 2026-10-04 P-C7 裁:冒险中回看退役归「生涯」——回看覆盖层为未接线遗留件(待办清单登记) | —— | 未接线 | -| C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;原「HP/攻击/RAP 显示」——HP 与 RAP 随信息归属拍板迁出本组件) | 只读 | HUD 视图拆分 | -| C | 秘宝槽 | 图标槽 ×4 | 四槽壳在役、空槽占位(标题「秘宝」,悬停「秘宝槽(空)」);局内两步使用与关卡域库存随秘宝过渡形态退役——现行秘宝 = 营地同调装配件(秘宝.md),本区展示重接归装配面批次 | 悬停 tooltip | 已实装 | -| C | 奇物列表(现行标题「特性」) | 列表/图标行 | 已实装(迭代 9 卡⑫ 接线、迭代 12 呈现补齐;2026-10-12 呈现修复批整改——逐件行「件名 ×N」,零内部分类字样);锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 已实装 | -| D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(自 C 区迁入 2026-09-26——RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮;RAP 清零可见反馈〔行动经济〕载体随迁)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次——上限 2 次已随行动经济 2026-09-12 修订生效) | 点击提交意图 | HUD 视图拆分 | +| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 9 类行协议);挖掘期收起为上轮摘要 1 行 | 无明细回看——带保留单行摘要,冒险中回看归「生涯」 | 改造 | +| B | 结算明细回看(已退役) | —— | 冒险中回看归「生涯」;回看覆盖层为未接线遗留件(待办清单登记) | —— | 未接线 | +| C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;HP 与状态归 B 区站桩、RAP 归 D 区 AP 条,不在本组件) | 只读 | HUD 视图拆分 | +| C | 秘宝槽 | 图标槽 ×4 | 四槽壳在役、空槽占位(标题「秘宝」,悬停「秘宝槽(空)」);局内两步使用与关卡域库存随秘宝过渡形态退役——现行秘宝 = 营地同调装配件(秘宝.md),本区展示重接归装配面 | 悬停 tooltip | 已实装 | +| C | 奇物列表(现行标题「特性」) | 列表/图标行 | 已实装——逐件行「件名 ×N」呈现、零内部分类字样;锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 已实装 | +| D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮——2026-09-26 拍板;RAP 清零可见反馈〔行动经济〕)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次,上限 2 次为行动经济口径) | 点击提交意图 | HUD 视图拆分 | | D | 棋盘视图 | 网格 | 棋盘全部格态 + 小人 + 封印印记 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>封印印记>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ 已实装 | | D | 悬停预承诺光标 | 光标态 | 移动/挖/封印三语义光标 + 目标格边框高亮 | 自动 | 新建(排雷玩法×6③) | | D | 可挖域指示 | 常驻微高亮 | 小人 8 向相邻可操作格 | 自动 | 新建(排雷玩法×6③) | | D | 移动路径预览 | 路径高亮 | 悬停已开格显示 BFS 路径(合法性指示) | 自动 | 新建(排雷玩法×6⑤,裁决见下) | | D | toast 槽 | 非模态提示 | 拒绝原因(双源)、voided、满层溢出、chord 提示、零合法板告知 | 自动消退 2.5s | 新建 | | D | 图例按钮 + 面板 | 按钮+模态 overlay | 格态/变异语义图例 | 开/关 | 新建 | -| 全屏 | 胜利/失败 overlay | 模态 | 金蜡封/暮蓝收印 + 判定行(明细回看入口已随 P-C7 退役——回看归「生涯」) | 继续/下一节点 | 已实装 | -| 调试 | 调试浮窗 | 调试面板 | 种子/数值调整/批量模拟/两层调试入口(发布态恒隐,无 UI 开启口——写死行已随迭代 38 卡⑦ 删除,调试开关门控口径见「调试变体」行;调参面板已随迭代 15 卡①吸收退役) | 调试 | 调试浮窗 | +| 全屏 | 胜利/失败 overlay | 模态 | 金蜡封/暮蓝收印 + 判定行(无明细回看入口——回看归「生涯」) | 继续/下一节点 | 已实装 | +| 调试 | 调试浮窗 | 调试面板 | 种子/数值调整/批量模拟/两层调试入口(发布态恒隐,无 UI 开启口;调试开关门控口径见「调试变体」行;调参面板已退役入调试浮窗) | 调试 | 调试浮窗 | -**布局决策 2 —(已删除,编号留空)**:原「窗口形态 = 右栏原位激活」决策随可选类道具整体下线(2026-09-15 格面资源批)。编号留空,免布局决策 3/4 的既有交叉引用失锚。 +**布局决策 2 —(已删除,编号留空)**:编号留空,免布局决策 3/4 的既有交叉引用失锚。 **布局决策 3 — 移动路径预览 = 合法性指示**(排雷玩法×6⑤ 悬案裁决):悬停已开格时高亮 BFS 路径(小人蓝细线点迹),移动执行为 ≤150ms 短滑。 -- 备选(登记不采纳):穿行动画轨道——移动免费高频,动画时间税违反 P4 点击摩擦护栏(每轮输入动作:AP ≤2 的观测假设);正式版若 playtest 反馈"移动太瞬"再议(留痕) +- 备选(不采纳):穿行动画轨道——移动免费高频,动画时间税违反 P4 点击摩擦护栏(每轮输入动作:AP ≤2 的观测假设);正式版若 playtest 反馈"移动太瞬"再议 -**布局决策 4 — 弃图刷新 = 挖掘期当场换图(2026-09-12 用户拍板,同日落稿上游)**:按钮置 AP 条右端(雷图右上角)。点击即当轮就地换新图继续挖——AP 不重置、剩余 AP 保留,RAP−8,本轮上限 2 次。 -- **上游修订(2026-09-12 已落稿,OQ11)**:① 行动经济 Active 相位受理刷新意图 + 每轮上限 2 次(Waiting 代理退役)② 排雷玩法装板受理域增 Active·仅刷新路径 ③ 编排 owner = **战斗结算的挖掘期刷新编排**(行动经济扣费 → 排雷玩法退役旧板 → 棋盘生成出新图 → 排雷玩法装板 → 地图战斗资源摇奖励恰一次;无结算段、无轮次结束——战斗结算编排唯一性原则保持)④ 旧板封印印记随旧板**作废**(零兑付、封印 AP 不返还——排雷玩法 EC11 全量重置承载;确认微交互须显式提示)。**经济预警**:当场刷新无结算发生,原「敌方时间税」自惩失效——行动经济 OQ3 弃图率/刷新率预警阈值联动复核。 +**布局决策 4 — 弃图刷新 = 挖掘期当场换图(2026-09-12 用户拍板)**:按钮置 AP 条右端(雷图右上角)。点击即当轮就地换新图继续挖——AP 不重置、剩余 AP 保留,RAP−8,本轮上限 2 次。 +- **上游修订(OQ11)**:① 行动经济 Active 相位受理刷新意图 + 每轮上限 2 次(Waiting 代理退役)② 排雷玩法装板受理域增 Active·仅刷新路径 ③ 编排 owner = **战斗结算的挖掘期刷新编排**(行动经济扣费 → 排雷玩法退役旧板 → 棋盘生成出新图 → 排雷玩法装板 → 地图战斗资源摇奖励恰一次;无结算段、无轮次结束——战斗结算编排唯一性原则保持)④ 旧板封印印记随旧板**作废**(零兑付、封印 AP 不返还——排雷玩法 EC11 全量重置承载;确认微交互须显式提示)。**经济预警**:当场刷新无结算发生,原「敌方时间税」自惩失效——行动经济 OQ3 弃图率/刷新率预警阈值联动复核。 - 备选(已否决):结算期决策提示(Waiting 内联)——结算期不做刷新决策(用户拍板);挖掘期预承诺 stop+reroll 复合——决策即终轮,不符「换图继续挖」语义。 -**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12;2026-09-16 敌人技能池批改型注记:行为环三态〔攻击/蓄力/重击〕预告随行为环退役——现行数据面 = 敌人系统三档可见性规格〔普攻零表示 / 特殊技类型级动画〔攻击系/增益系两型〕/ 暴击掷点层无前置〕,池与权重不公开;下表 grub/ambusher 三态清单留档作废,终稿资产目录随战斗表现样张批重立;**命名双轨完成注记 2026-10-06**:grub/ambusher 两键本身已随敌人系统八型批退役——现行键集 = 八敌登记表〔goblin/bugbear/ogre_chief/giant_spider/drider/duergar/hook_horror/duergar_king〕,本表键名仅为历史留痕、禁止作为现行敌种 id 引用)**: +**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12;现行数据面 = 敌人系统三档可见性规格〔普攻零表示 / 特殊技类型级动画〔攻击系/增益系两型〕/ 暴击掷点层无前置〕,池与权重不公开;下表 grub/ambusher 两键已退役——现行键集 = 八敌登记表〔goblin/bugbear/ogre_chief/giant_spider/drider/duergar/hook_horror/duergar_king〕,本表键名禁止作为现行敌种 id 引用,终稿资产目录归战斗表现)**: | enemy_id | 视觉状态(意图线索) | 强度档位编码 | 环长编码 | |---|---|---|---| @@ -191,10 +191,9 @@ ### ASCII Wireframe -> **2026-09-26 信息归属拍板**:C 区 HP/RAP/状态槽/立绘占位/钱包行退役——HP 与状态唯一展示面 = B 区站桩,RAP 迁 D 区 AP 条贴弃图刷新按钮,GP/钥石迁出战斗屏;C 区改攻击数据框+两预留区。下方线框图已随拍板重绘;旧线框留档于 git 历史。 -> **2026-09-23 停点前移批**:A 区关卡进度条退役,下方线框图为 B/C/D 三区(纵向空间划归 C/D 底行;关卡内节点进度常驻关卡画面,战斗屏零进度承载);旧四区线框留档于 git 历史。 -> **几何标注已撤**:线框只示意结构,各区几何读 `game/data/tables/battle_layout.tres`,图中不标像素值。 -> **2026-09-20 全站桩形态改版**:敌人卡形态裁决完成(卡片式退役、主角与敌人均站桩——无框立绘+底座、状态小图标挂血条下),下方线框图 B 区已随裁决重绘;旧卡片式线框留档于 git 历史。 +> **线框图注记(2026-09-26 信息归属拍板)**:C 区 = 攻击数据框 + 两预留区;HP 与状态唯一展示面 = B 区站桩,RAP 贴 D 区弃图刷新按钮,GP/钥石不在战斗屏。 +> **几何标注**:线框只示意结构,各区几何读 `game/data/tables/battle_layout.tres`,图中不标像素值。 +> **B 区形态注记(2026-09-20 用户拍板)**:主角与敌人均为全站桩——无框立绘+底座、状态小图标挂血条下,非卡片式;下方线框图为站桩形态。 ``` 1280 × 800 ──────────────────────────────────────────────────────────────────── @@ -204,7 +203,7 @@ │ HP▓▓▓▓░ (结算期: 光带→弹道→受击) ①HP▓▓▓░ ②HP▓▓░░ │ │ ⬆2 🛡1 ←血条状态落底排·全场对齐(状态空 = 名字行)〔意图徽标悬浮头顶上方〕 │ │ ├─ 结算明细带 ────────────────────────────────────────────────────────────┤ │ -│ │ ▸上轮: 主角攻击3→蛆虫-3 | 攻击+50%(1结算) | 警觉+1×2 … [展开明细▾] │ │ # 2026-09-17 数值压缩批:UI 示意文本同步(atk 7→3〔地精格数÷3 + L1 锚行;UX 示意按当前地精行值读〕、伏击 +3 → +1/层,幅度参考 data/tables/) +│ │ ▸上轮: 主角攻击3→蛆虫-3 | 攻击+50%(1结算) | 警觉+1×2 … │ │ │ └────────────────────────────────────────────────────────────────────────┘ │ ├─[C] 角色信息 ─────────┬─[D] 扫雷图 ───────────────────────────────────────────┤ │ ┌──────────────────┐ │ ┌─────────────────────────────────────────────────┐ │ @@ -234,13 +233,13 @@ | **封印标中高光** | 封印判定·标中 | 该印记化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | | **敌人死亡呈现** | 敌 hp=0(流水行击杀标记) | 该敌人立绘血条归零 → 立绘灰化 + 碎裂退场(**禁瞬消**——敌人系统资产下限「死亡瞬间须可辨识、禁止直接消失」,同等 blocking);战斗段短路的重击被掐灭不产行动明细行,由行序可推断(战斗结算);动画密度归战斗表现,呈现语义在本 spec | | **胜利终局** | 判定胜利 | 金蜡封落于**扫雷图区中央**(§2.4 字面锚定),全屏暖白金 overlay;判定行 + 「下一节点」;明细回看入口;状态图标行全清可见反馈(增益状态×4④——B 区主角站桩图标逐枚化光收回 + 微文案「状态随战斗结束消散」,防「我的增益哪去了」误读) | -| **失败终局** | 判定失败(主角生命归零,战斗段短路) | 明度不变的暮蓝 #5A6C8C 氛围 overlay(全作唯一暮蓝档);小人坐砖掸灰、落下的封印印记逐枚化光点收回(§2.5);判定行 +「返回」(明细回看已随 P-C7 退役——回看归「生涯」);状态图标行全清可见反馈(增益状态×4④,同胜利) | +| **失败终局** | 判定失败(主角生命归零,战斗段短路) | 明度不变的暮蓝 #5A6C8C 氛围 overlay(全作唯一暮蓝档);小人坐砖掸灰、落下的封印印记逐枚化光点收回(§2.5);判定行 +「返回」(明细回看已退役,回看归「生涯」);状态图标行全清可见反馈(增益状态×4④,同胜利) | | **Boss 遭遇变体** | encounter=boss(遗迹守卫) | 战斗开始一次性演出:紫赤 #8F2F6A 影子爬过棋盘(§2.6);敌人立绘体量最大+锐角剪影;阶段指示附 Boss 名 | -| **空态:无状态效果** | 增益状态 EC12 | 状态小图标行隐藏(B 区主角站桩血条下图标行零图标时不占位;落底排〔2026-10-06 方案二〕后该行退化为名字行——主角无名字行则整行空置);原「C 区状态槽隐藏、HP/攻击/RAP 上移补位」裁决随 C 区槽退役(2026-09-26 信息归属拍板)作废;图例面板载空态说明(增益状态×① 成文项) | -| **调试变体** | 测试模式 | 调试浮窗入口发布态恒隐(调试入口开关为写死行、已删,无 UI 开启口;开发期临时启用=本地改该字段缺省、不提交——调参面板已随迭代 15 卡①退役);Playtest 诊断按钮(卡死转储) | +| **空态:无状态效果** | 增益状态 EC12 | 状态小图标行隐藏(B 区主角站桩血条下图标行零图标时不占位;落底排〔2026-10-06 方案二〕后该行退化为名字行——主角无名字行则整行空置);图例面板载空态说明(增益状态×① 成文项) | +| **调试变体** | 测试模式 | 调试浮窗入口发布态恒隐(无 UI 开启口;开发期临时启用=本地改该字段缺省、不提交——调参面板已退役);Playtest 诊断按钮(卡死转储) | **拒绝/作废子态**(排雷玩法×6⑥、行动经济双源——每次拒绝玩家可感知): -- 棋盘面拒绝(细分原因:非相邻/挖封印格等)→ 目标格 危险红 #A8321F 边框闪 + toast 文案(拒绝语义红族——旗朱已退役归封印色〔现行封印黑〕)(图标+文案冗余,色弱清单 #7) +- 棋盘面拒绝(细分原因:非相邻/挖封印格等)→ 目标格 危险红 #A8321F 边框闪 + toast 文案(拒绝语义红族——现行封印黑)(图标+文案冗余,色弱清单 #7) - 资源面拒绝(AP 不足/RAP 不足)→ AP/RAP 数字脉冲 + toast「AP 不足 · 剩 0 点」 - voided(stop 被作废等)→ toast「本轮已清图,停手未执行 · 剩余 AP 已作废」——防静默改判读感欺骗 @@ -254,18 +253,17 @@ |---|---|---|---|---| | 未开相邻格 | 挖掘 | 左键 | 格碎裂 + 连锁展开(免费)+ 奖励身份揭显 | 意图入当帧批次 → 排雷玩法的意图批次提交 | | 已开格 | 移动 | 左键 | 悬停时路径预览高亮(布局决策 3);执行 ≤150ms 短滑 | 意图入批(BFS 移动,免费) | -| 未开格 | 封印 | 右键 | 封印印记落下(封印黑) | 意图入批(1 AP / 免费;已封印格右键无操作——封印印记无移除手段,封印不可逆批 2026-09-19) | +| 未开格 | 封印 | 右键 | 封印印记落下(封印黑) | 意图入批(1 AP / 免费;已封印格右键无操作——封印印记无移除手段,封印不可逆) | | 停手按钮 | 主动结束轮次 | 左键 | 按钮下压 + AP→RAP 飞行数字 | 停手随当帧意图批次提交(**经排雷玩法批次,不直调行动经济**——单意图帧批次契约) | -| 弃图刷新按钮(雷图右上角) | 当轮就地换图继续挖 | 左键 | 确认微交互(RAP−8 代价显式 + 旧板弃置提示);RAP<8 → 资源面拒绝可见(行动经济 EC13) | 刷新意图提交(**Active 相位当场换图继续挖**——AP 不重置、本轮剩 N 次扣减;**上游已修订受理——见布局决策 4/OQ11**) | +| 弃图刷新按钮(雷图右上角) | 当轮就地换图继续挖 | 左键 | 确认微交互(RAP−8 代价显式 + 旧板弃置提示);RAP<8 → 资源面拒绝可见(行动经济 EC13) | 刷新意图提交(**Active 相位当场换图继续挖**——AP 不重置、本轮剩 N 次扣减;受理口径见布局决策 4/OQ11) | | 图例按钮 | 开图例 | 左键 | 模态 overlay | 恒可开(图例条目恒在) | -| 结算明细带 | ~~展开回看~~(已随 P-C7 退役——带保留单行摘要,回看归「生涯」) | —— | —— | —— | | 状态小图标(B 区站桩) | 悬停 | hover | 状态 tooltip(来源+语义+剩余结算次数) | 只读 | | 胜利 overlay | 下一节点 | 左键 | → 关卡画面(选路枢纽)/ 关卡结算(末节点) | 关卡推进方推进 | | 失败 overlay | 返回 | 左键 | → 存档/营地 | 冒险落幕 | **单意图帧纪律**(排雷玩法×6⑥):一帧内 collected 意图整批提交,stop 点击终结当帧收集;F4 语义序仲裁为防御性兜底。悬停预承诺三态光标:移动(箭头)/挖(镐)/封印(印记形)——左键双义(移动 vs 挖)的消歧完全依赖格态一瞥可辨 + 光标区分(误挖不可逆的感知保险)。 -**复合意图(排雷玩法评估项留痕)**:点击远格 = 自动 move+dig 的两击摩擦消解——**MVP 不做**(留痕 2026-09-12:免费移动高频,两击摩擦符合 P4 ≤2 观测假设;排雷玩法 L298 评估项)。 +**复合意图(排雷玩法评估项)**:点击远格 = 自动 move+dig 的两击摩擦消解——**MVP 不做**(免费移动高频,两击摩擦符合 P4 ≤2 观测假设;排雷玩法 L298 评估项在案)。 **可挖域常驻指示**:小人 8 向相邻未开格呼吸微光(§2.1 唯一在动的元素);不可挖域(非相邻)悬停显示禁止光标 + 首次 toast 提示「需先走近(点击已开格移动,免费)」。 @@ -284,7 +282,7 @@ | 弃图刷新(挖掘期,非轮出口) · 刷新尝试遥测 | 刷新使用(难度曲线与Boss OQ6)与行动经济 OQ3 预警阈值观测;每轮 0–2 次(布局决策 4 cap=2) | {受理结果: 受理 / 拒因 RAP 不足 / 拒因触上限, 本轮第几次刷新: 1..2} | | 拒绝/voided · 拒绝遥测 | 拒绝来源(板面/资源/相位三源)与细分原因 | {拒绝来源: 板面/资源/相位, 细分原因} | | 提示触发/关闭 · 提示展示遥测 | 提示类型 | {提示类型: chord 提示 / 无相邻可挖格} | -| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / 战斗结束 / 关卡完成 | 载荷 schema 成文义务见 §Data Requirements——旧版状态记录 entry 17①(HUD框架硬性要求) | +| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / 战斗结束 / 关卡完成 | 载荷 schema 成文义务见 §Data Requirements(HUD框架硬性要求) | **持久状态写入**全部经组合根唯一路径(意图批次提交 / 刷新意图提交 / 关卡推进)——UI 层禁直调核心写(架构七原则"依赖单向组合根")。 @@ -295,16 +293,15 @@ | 时刻 | 过渡 | 依据 | |---|---|---| | 进入战斗屏 | 棋盘 install 淡入(200ms)+ 初始 3×3 展开涟漪 + Boss 战先播紫赤影子爬棋盘(§2.6) | 棋盘生成 install / §2.6 | -| 挖掘→结算 | 明细带自底展开(150ms)+ 棋盘去饱和 + 金橙色相偏移 + 阶段指示翻转 | §2.2 色彩转金橙主导、饱和拉高、明度不变(状态区分经饱和/色相——art-bible §2 合规化 2026-09-12) | +| 挖掘→结算 | 明细带自底展开(150ms)+ 棋盘去饱和 + 金橙色相偏移 + 阶段指示翻转 | §2.2 色彩转金橙主导、饱和拉高、明度不变(状态区分经饱和/色相——art-bible §2) | | 结算逐行兑现 | 光带自棋盘行起点横扫 → 开格化箭雨/印记化暴击弹道飞向敌人立绘 → 受击闪白 + 血条直角递减 | §2.2 承载元素;因果全程可见可归因(P2) | | 清图换新图 | 金粒喷泉 3–5s → 旧图碎裂淡出 → 新图 install 淡入 | §2.3 短促丰收不拖节奏 | | RAP 清零(战斗结束) | RAP 数字滚动归零(D 区 AP 条)+ 「随战斗结束消散」微文案 | 行动经济可见反馈义务 | | 敌人死亡 | 血条直角递减至零 → 卡体灰化 + 碎裂退场(禁瞬消) | 敌人系统资产下限(同等 blocking);动画密度归战斗表现 | | 状态图标行全清(战斗结束) | 状态逐枚化光收回(B 区站桩图标行)+ 「状态随战斗结束消散」微文案 | 增益状态×4④;RAP 清零同款先例 | -| ~~关卡收束清库~~ | 义务随秘宝过渡形态退役消解——现行形态 = 营地同调装配、整局冒险生效,无关卡域清库面(秘宝.md) | —— | | 胜利 | 蜡封自上落下弹跳定格 → 碎砖拼纹章 → overlay 暖金渐显 | §2.4 克制不狂欢 | | 失败 | 全屏明度不变转暮蓝色相 → 印记化光点 800ms 逐枚收回 → overlay | §2.5 最静一拍 | -| 减动效选项 | 上述全部动画提供时长减半/直接跳终态开关(基线权威 = HUD框架「可访问性基线」节;开关承载 = 设置面(迭代 8 卡④已转正)——2026-09-27 拍板不另立无障碍专项文档) | 动议:结算逐行兑现为信息载体不可整体跳过,可加速 | +| 减动效选项 | 上述全部动画提供时长减半/直接跳终态开关(基线权威 = HUD框架「可访问性基线」节;开关承载 = 设置面——2026-09-27 拍板不另立无障碍专项文档) | 动议:结算逐行兑现为信息载体不可整体跳过,可加速 | --- @@ -312,30 +309,30 @@ | Data | Source System | Read / Write | Notes | |---|---|---|---| -| 棋盘格态/数字/可挖域 | 排雷玩法 只读查询面 | Read | 呈现刷新面 = 排雷玩法 三事件信号(载荷 schema 成文——旧版状态记录 entry 17①) | +| 棋盘格态/数字/可挖域 | 排雷玩法 只读查询面 | Read | 呈现刷新面 = 排雷玩法 三事件信号(载荷 schema 成文——HUD框架硬性要求) | | BFS 移动路径 | 排雷玩法 路径规划只读面 | Read | 布局决策 3 合法性指示消费 | | 拒绝原因 | 排雷玩法 细分原因封闭枚举 + 行动经济 资源面 | Read | 三源(板面/资源/相位)映射文案——呈现层契约成文;资源面原因无上游载荷(行动经济仅回受理与否,细分原因仅调试诊断可见),客户端按动作上下文推断 | | AP / RAP / 本轮刷新计数 | 行动经济 | Read | 常显;刷新入口可用性 = RAP 读数客户端预判(RAP≥8)+ 刷新意图提交的受理回执(行动经济 无刷新可用性预查询——仅受理与否的回执 + 只读观测量;行动经济 EC13 拒绝合法可见) | | 结算流水行(9 类封闭协议) | [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 流水协议 | Read | 逐行来源标注(P2);未生效类行(奖励未生效)聚合计数呈现 | | 判定胜负 | 战斗结算 判定段 | Read | 终局画面数据锚 | -| 敌单位 生命/顺位/摇定动作(技能标识·类型·名称)/敌方增益/敌单位标识/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**销毁前捕获**(旧版状态记录 entry 17③——缺陷②教训) | +| 敌单位 生命/顺位/摇定动作(技能标识·类型·名称)/敌方增益/敌单位标识/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**销毁前捕获**(缺陷②教训) | | 状态效果投影(含空态/极性/溢出) | 增益状态 投影口径 | Read | 极性映射数据源 = 战斗结算效果表语义,非幅度符号(增益状态×③) | | 已开格奖励身份(奖励徽章) | 地图战斗资源 身份解析只读回调(经棋盘视图,组合根注入) | Read | 已开格身份常读——挖掘期 Active 相位内有效;reward_id 全局恒定、禁止重掷;徽章绘制优先级见 §Component Inventory 棋盘视图行 | | 节点图/当前节点/HP 携带 | 关卡节点地图轻量读面 · 关卡推进方 | Read | 关卡画面(独立屏)节点态呈现(战斗屏零进度承载) | | 意图提交 | 排雷玩法 | **Write** | 意图批次提交(stop 亦经此——不直调行动经济) | -| 弃图刷新 | 行动经济 | **Write** | 刷新意图提交(挖掘期 Active 当场受理——布局决策 4 2026-09-12 上游已落稿;战斗结算的挖掘期刷新编排承载) | +| 弃图刷新 | 行动经济 | **Write** | 刷新意图提交(挖掘期 Active 当场受理——布局决策 4;战斗结算的挖掘期刷新编排承载) | | 节点推进 | 关卡推进方 | **Write** | 胜利 overlay「下一节点」 | -| 终局画面数据锚 | 战斗结算 判定行(流水行协议) | Read | 「终局判定行 = 胜负画面的数据锚」(战斗结算 UI Requirements);销毁前状态可见性纪律 = 旧版状态记录 entry 17③(销毁前捕获、**载荷数据自包含**、禁呈现层回读核心生命周期状态);若需独立终局快照信号,须回战斗结算 GDD 修订补登记(战斗结算 现无结算快照契约——2026-09-12 评审修正) | +| 终局画面数据锚 | 战斗结算 判定行(流水行协议) | Read | 「终局判定行 = 胜负画面的数据锚」(战斗结算 UI Requirements);销毁前状态可见性纪律(销毁前捕获、**载荷数据自包含**、禁呈现层回读核心生命周期状态);若需独立终局快照信号,须回战斗结算 GDD 修订补登记(战斗结算 现无结算快照契约——2026-09-12 评审修正) | -**架构注记**:UI 不拥有任何游戏状态——全部读经核心只读面,全部写经组合根。呈现层信号载荷 schema 须在《HUD框架》成文(旧版状态记录 entry 17①,缺项即 blocking);场景级 headless 测试进 AC(entry 17②);覆盖层层级断言(缺陷⑤——任何模态覆盖层必须有"打开时遮挡物隐藏"断言)。 +**架构注记**:UI 不拥有任何游戏状态——全部读经核心只读面,全部写经组合根。呈现层信号载荷 schema 须在《HUD框架》成文(缺项即 blocking);场景级 headless 测试进 AC;覆盖层层级断言(缺陷⑤——任何模态覆盖层必须有"打开时遮挡物隐藏"断言)。 -**更新触发注记(2026-09-12 评审增补——防实现层等待不存在的信号,旧版状态记录 entry 17 教训同类)**:封印与移动成功反馈**零事件外发**(排雷玩法发射面封闭)——经意图调用的返回值命令式驱动;AP/RAP 读数:行动经济无推送信号——组合根每次调用返回后重查;状态效果:增益状态为纯被动状态池、零信号——状态栏刷新绑战斗结算的编排完成时点;奖励徽章:地图战斗资源 身份解析经只读回调(组合根注入棋盘视图),已开格揭显时查询——写路径回执后重查。 +**更新触发注记(防实现层等待不存在的信号)**:封印与移动成功反馈**零事件外发**(排雷玩法发射面封闭)——经意图调用的返回值命令式驱动;AP/RAP 读数:行动经济无推送信号——组合根每次调用返回后重查;状态效果:增益状态为纯被动状态池、零信号——状态栏刷新绑战斗结算的编排完成时点;奖励徽章:地图战斗资源 身份解析经只读回调(组合根注入棋盘视图),已开格揭显时查询——写路径回执后重查。 --- ## Accessibility -无障碍基线权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节;不再另立专项文档(2026-09-27 欠账处置拍板,见 OQ2)。本 spec 内建基线承诺(呈现侧落地): +无障碍基线权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节;不再另立专项文档(2026-09-27 拍板,见 OQ2)。本 spec 内建基线承诺(呈现侧落地): - **对比**:全部格底/面板底对数字墨 ≥4.5:1(WCAG AA)——art-bible §4.1 硬指标已可测(#33261B/#C9AF83 = 6.9:1 实测);UI 数据一律墨族素面 - **色弱冗余**:无任何信息仅靠色相承载——格态靠完整/碎裂形;奖励金 vs 危险红靠剪影+运动;UI 红/金强调对加图标+文案冗余;Boss 靠形状独占(art-bible §4.5 清单逐项成立) @@ -343,7 +340,7 @@ - **非色彩破坏性确认**:弃图刷新(消耗 RAP 8 点)的确认交互与常规确认**不同位**(位置通道,色弱清单 #7) - **字号下限**:棋盘数字 ≥18px、明细带正文 ≥14px、tooltip ≥13px(1280×800 基座) - **运动**:无闪烁 >3次/秒;结算光带为方向性扫动非频闪;提供减动效选项(§Transitions) -- **键盘/Gamepad**:MVP 纯鼠标可完成全部操作(technical-preferences 平台注记);**MVP 决策留痕:纯键盘导航/焦点序不做**(2026-09-12——回合制点击驱动,平台仅承诺纯鼠标);gamepad 导航序延后(Open Questions) +- **键盘/Gamepad**:MVP 纯鼠标可完成全部操作(technical-preferences 平台注记);**MVP 纯键盘导航/焦点序不做**(2026-09-12 拍板——回合制点击驱动,平台仅承诺纯鼠标);gamepad 导航序延后(Open Questions) --- @@ -372,14 +369,14 @@ - [ ] 挖/移/封印/停手/刷新全部操作纯鼠标可完成;stop 意图经意图批次提交(代码走查 + 探针断言) - [ ] 每次拒绝(棋盘面/资源面/相位)玩家可感知且两源可区分;voided(至少 stop 作废)可感知(排雷玩法×6⑥、行动经济双源) -- [ ] 弃图刷新消耗 RAP 8 点、本轮上限 2 次可见(按钮文案实时「剩 N 次」;上限已随行动经济 2026-09-12 修订生效);RAP<8 资源面拒绝可见(行动经济 EC13);确认交互与常规确认不同位;换图后 AP 不重置、剩余次数扣减可见(**上游已修订受理——2026-09-12 布局决策 4 落稿**) -- [ ] 战斗结束时 RAP 清零有可见反馈(行动经济);~~关卡收束清库反馈~~(义务随秘宝过渡形态退役消解——现行 = 营地同调装配整局生效,秘宝.md) +- [ ] 弃图刷新消耗 RAP 8 点、本轮上限 2 次可见(按钮文案实时「剩 N 次」;上限 2 次为行动经济口径);RAP<8 资源面拒绝可见(行动经济 EC13);确认交互与常规确认不同位;换图后 AP 不重置、剩余次数扣减可见(受理口径见布局决策 4) +- [ ] 战斗结束时 RAP 清零有可见反馈(行动经济) - [ ] 战斗结束时状态图标行全清有可见反馈(B 区站桩逐枚化光 + 微文案)(增益状态×④) - [ ] 敌人死亡瞬间可辨识(卡体灰化 + 碎裂退场,禁瞬消);战斗段短路被掐灭的重击由行序可推断(敌人系统资产下限) **信息与归因** -- [ ] 结算逐行明细实时可见(P2 逐行归因;战斗后完整流水回看已随 P-C7 退役——归「生涯」);未生效类行(奖励未生效)聚合计数呈现(战斗结算 现行 9 类行协议) +- [ ] 结算逐行明细实时可见(P2 逐行归因;完整流水回看归「生涯」);未生效类行(奖励未生效)聚合计数呈现(战斗结算 现行 9 类行协议) - [ ] 敌人意图徽标挖掘期全程可见、映射全局恒定、含顺位与环长直觉编码(敌人系统×4①②③) - [ ] 状态效果:极性呈现映射成文且非 magnitude 符号;空态渲染成文(裁决:图标行隐藏——B 区站桩血条下零图标时不占位);满层溢出经明细行可见(增益状态×①③④) - [ ] 图例面板条目恒在可随时回看、非模态提示不劫持输入 @@ -388,7 +385,7 @@ - [ ] 未生效类行(奖励未生效)携带形状冗余(icon/划线),非色相独载 - [ ] 奖励徽章绘制优先级:封印印记之下、变异纹带之上、不进数字区;拾取瞬间 tier 档位可读(地图战斗资源 H1) -**场景级测试**(旧版状态记录 entry 17②③,缺项即 blocking) +**场景级测试**(缺项即 blocking) - [ ] 场景级 headless 测试:真实实例化战斗屏场景 + 驱动完整对局 + 断言零脚本错误(呈现层点击探针模式扩展) - [ ] 任何模态覆盖层(图例/胜利/失败——明细回看已退役)有「打开时遮挡物隐藏/输入锁定」场景级断言(缺陷⑤对照) @@ -400,26 +397,26 @@ ## Open Questions -1. **Player journey map——已完成(2026-09-27 欠账处置拍板:不建)**:实现前补建的前提随战斗屏实装失效;情绪曲线事实源 = art-bible §2 能量档,真人体验观测与结论回流 = [体验验证清单](../../../体验验证清单.md) +1. **Player journey map——已完成(2026-09-27 拍板:不建)**:实现前补建的前提随战斗屏实装失效;情绪曲线事实源 = art-bible §2 能量档,真人体验观测与结论回流 = [体验验证清单](../../../体验验证清单.md) 2. **无障碍专项文档——已完成(2026-09-27 拍板:不另立 design/accessibility-requirements.md)**:基线(对比/色弱/字号/闪烁/减动效/纯鼠标/中文字体)权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节;正式分层(文本缩放/色盲模式/按键重映射)归 [设置与本地化](../systems/表现与支撑/设置与本地化.md) 待设计问题清单 #1(设置项全集裁决时定);本 spec §Accessibility 为呈现侧落地承诺 -3. **interaction-patterns.md——已建成**(2026-09-12 /team-ui 批当日落稿,本条「未建」系过期陈述):本 spec 引入的四 pattern(双源拒绝反馈/逐行兑现明细带/悬停预承诺光标/点阵资源显示)均已入库成文(pattern 1/3/4/5) -4. **战斗表现美术测试**(game-concept 已登记,战斗表现批次前强制):本 spec 的常驻双舞台分屏(布局决策 1)是测试的布局输入——**敌人卡形态已裁决(2026-09-20 用户看对照样张拍板):全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条下,卡片式整体退役**;本 spec 已随裁决改写(原"按卡片式起草"条款作废),站桩式不改变分区结构。对照样张已存档(敌人卡与站桩式对照样张) +3. **interaction-patterns.md——已建成**:本 spec 引入的四 pattern(双源拒绝反馈/逐行兑现明细带/悬停预承诺光标/点阵资源显示)均已入库成文(pattern 1/3/4/5) +4. **战斗表现美术测试**(game-concept 已登记,战斗表现前强制):本 spec 的常驻双舞台分屏(布局决策 1)是测试的布局输入——**敌人卡形态已裁决(2026-09-20 用户看对照样张拍板):全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条下,卡片式整体退役**;站桩式不改变分区结构。对照样张已存档(敌人卡与站桩式对照样张) 5. **移动动画形态**(布局决策 3):≤150ms 短滑为推荐值,playtest 观测「移动太瞬/太拖」反馈后调 6. **明细带挖掘期是否常驻上轮摘要**:常驻(现方案)vs 结算后即收起——playtest 观测回看频率 7. **Gamepad 导航序**:Partial 支持(非 MVP 门禁)——焦点环顺序待 gamepad 批次定 -8. **NodeOverlay / 关卡结算屏——已完成(2026-09-27 欠账处置拍板;节点奖励屏部分被 2026-09-29 迭代 7 取代)**:关卡结算屏 spec 已建 [level-clear.md](level-clear.md)(本 spec 只锁出口锚点不变);节点奖励屏 spec 已出生 [node-reward.md](node-reward.md) v1.0(原「不立独立 spec、随秘宝内容重定批交付」拍板随之取代;节点覆盖层现行:恢复点全量服务、奖励点=三选一构筑点) -9. **调参面板退役计划——已完成(迭代 15 卡①,2026-10-05)**:调参面板类整体吸收退役入调试浮窗(调试开关=1 门控);正式侧归元进度(天赋树)不变(门控表述属当期留痕——调试入口现发布态恒隐,现行口径见元素表「调试浮窗」行与「调试变体」行) +8. **NodeOverlay / 关卡结算屏——已完成(2026-09-27 拍板)**:关卡结算屏 spec 已建 [level-clear.md](level-clear.md)(本 spec 只锁出口锚点不变);节点奖励屏 spec:[node-reward.md](node-reward.md)(节点覆盖层现行:恢复点全量服务、奖励点=三选一构筑点) +9. **调参面板退役——已完成**:调参面板已退役入调试浮窗;正式侧归元进度(天赋树)不变;调试入口现发布态恒隐(现行口径见元素表「调试浮窗」行与「调试变体」行) 10. **提示文案定稿**:chord 提示/空态文案归实现期文案 pass,本 spec 只锁必含要点与形态约束 -11. **弃图刷新上游修订(已落稿 2026-09-12,布局决策 4)**:行动经济(Active 相位受理 + 每轮上限 2 次 + Waiting 代理退役 + 旧旗作废裁决 + 时间税失效预警)、排雷玩法(Active·仅刷新路径装板受理)、战斗结算(停手与 AP 耗尽两出口恒同盘不变 + 挖掘期刷新编排;AC-29 改写/AC-30 恒同盘不变)、系统索引的刷新规则同步、旧版 systems-index 修订块登记。遗留观察项:当场刷新的节奏健康由行动经济 OQ3 弃图率/刷新率预警承载,playtest 复核 -12. **教学引导缺口挂靠(成文时教学引导 GDD 尚未建,留痕)**:挖到雷 = 敌方优势而非死亡(排雷玩法登记「经典扫雷玩家最大预期违背」)、旗挡链(连锁止于旗属正常)、首次蓄力姿态一次性提示(敌人系统)——本屏 toast 体系为落点候选,随教学引导批次定 -13. **敌方 AC 展示——已终裁完成(2026-09-26)**:用户终裁——敌方 AC 数值**全屏不展示**(任何区均不直接写上);护甲类型改**图标方式**展示(形状+色相双通道,终稿图标资产归美术批);敌人站桩底座下名字行退回**纯名字 + 护甲类型图标**。与旧「克制对策可读性义务」(敌人技能池批)的关系 = **义务降级承载**:类型保留(图标可读,对策判断仍可做)、数值退役(不再直接展示);敌人技能池批相关义务措辞由并行代码批同步。我方 AC 仍按 2026-09-26 二轮拍板保留于 C 区攻击数据框(唯一展示面) -14. **GP/钥石迁出战斗屏后的展示面归属——已拍板完成(2026-09-26 二轮)**:GP = 关卡画面常驻总量 + 战斗总结结算(总量+增量);钥石 = 冒险总结结算 + 营地。呈现 spec 已出生:[settlement-summary.md](settlement-summary.md) v1.0(2026-09-30——两面分节轻量 spec,本 OQ 为其命名与分工依据;「战斗结算画面」「结算画面」旧措辞随 spec 命名完成退役) +11. **弃图刷新上游修订(布局决策 4)**:行动经济(Active 相位受理 + 每轮上限 2 次 + Waiting 代理退役 + 旧旗作废裁决 + 时间税失效预警)、排雷玩法(Active·仅刷新路径装板受理)、战斗结算(停手与 AP 耗尽两出口恒同盘不变 + 挖掘期刷新编排;AC-30 恒同盘不变)、系统索引的刷新规则同步。遗留观察项:当场刷新的节奏健康由行动经济 OQ3 弃图率/刷新率预警承载,playtest 复核 +12. **教学引导缺口挂靠**:挖到雷 = 敌方优势而非死亡(排雷玩法登记「经典扫雷玩家最大预期违背」)、旗挡链(连锁止于旗属正常)、首次蓄力姿态一次性提示(敌人系统)——本屏 toast 体系为落点候选,随教学引导实装定 +13. **敌方 AC 展示——已终裁完成(2026-09-26)**:用户终裁——敌方 AC 数值**全屏不展示**(任何区均不直接写上);护甲类型改**图标方式**展示(形状+色相双通道,终稿图标资产归美术批);敌人站桩名字行 = **纯名字 + 护甲类型图标**。克制对策可读性 = 义务降级承载:类型可读(图标,对策判断仍可做)、数值不展示。我方 AC 仍按 2026-09-26 二轮拍板保留于 C 区攻击数据框(唯一展示面) +14. **GP/钥石展示面归属——已拍板(2026-09-26 二轮)**:GP = 关卡画面常驻总量 + 战斗总结结算(总量+增量);钥石 = 冒险总结结算 + 营地。呈现 spec:[settlement-summary.md](settlement-summary.md)(两面分节,本 OQ 为其命名与分工依据) --- ## §13 上游义务对照表(门禁核对用) -> 「系统名×条目号」记法(如「排雷玩法×6⑥」)= 旧版 systems-index 门禁状态记录中该系统的义务条目编号,条目内容均已在本表逐条承载。 +> 「系统名×条目号」记法(如「排雷玩法×6⑥」)= 该系统的义务条目编号,条目内容均已在本表逐条承载。 | 义务源 | 条目 | 本 spec 承载落点 | |---|---|---| @@ -429,11 +426,11 @@ | 排雷玩法×6 | ④ 引爆危险格可通行可读 | §AC | | 排雷玩法×6 | ⑤ 路径预览裁决 | 布局决策 3 | | 排雷玩法×6 | ⑥ 单意图帧+voided+拒绝可感知 | §Interaction Map + §States 拒绝子态 + AC | -| 行动经济 | AP/RAP 常显+刷新入口+清零反馈+双源 | §Layout D 区 AP 条(RAP 自 C 区迁入——2026-09-26 信息归属拍板)+ §Transitions + AC | -| 战斗结算×3 | ①高光行强调呈现(封印标中金框行/清图 H2 金框行)②完美封印呈现形态 ③棋盘生成 EC5 零合法板提示/补偿/回退形态(toast 提示;补偿/回退不提供——三形态选型留痕 2026-09-12) | §States 高光/清图 + §States 拒绝子态 + §AC;注:结算明细屏 = 战斗结算 UX Flag 事项(本 spec 即其 /ux-design 产物),非 战斗结算×3 状态记录 | +| 行动经济 | AP/RAP 常显+刷新入口+清零反馈+双源 | §Layout D 区 AP 条(RAP 贴弃图刷新按钮——2026-09-26 信息归属拍板)+ §Transitions + AC | +| 战斗结算×3 | ①高光行强调呈现(封印标中金框行/清图 H2 金框行)②完美封印呈现形态 ③棋盘生成 EC5 零合法板提示/补偿/回退形态(toast 提示;补偿/回退不提供——2026-09-12 选型) | §States 高光/清图 + §States 拒绝子态 + §AC;注:结算明细屏 = 战斗结算 UX Flag 事项,由本 spec 承载 | | 敌人系统×4 | 意图映射/恒定/顺位/敌方池 | §Component Inventory 敌人站桩立绘 + **意图线索映射目录(敌人系统×4① 成文占位,资产定稿归战斗表现)** + AC | | 增益状态×4 | 常显+空态/来源标注/溢出/去留 | §States 空态 + §AC | -| 地图战斗资源×5 | 身份恒读/明细行/清图强调(旧版状态记录五条中「窗口」「清空反馈」随格面资源批下线——清空反馈义务后载秘宝背包、复随秘宝过渡形态退役消解(现行 = 营地同调装配,秘宝.md)) | §Component Inventory 棋盘视图奖励徽章 + §States 清图/高光 + §Data Requirements 身份解析只读回调 + AC | +| 地图战斗资源×5 | 身份恒读/明细行/清图强调 | §Component Inventory 棋盘视图奖励徽章 + §States 清图/高光 + §Data Requirements 身份解析只读回调 + AC | | 棋盘生成 | EC5 零合法板诚实呈现(数据面经 战斗结算×3③ 上抛) | §States 拒绝子态(toast)+ AC | | 敌人系统资产下限 | 受击反馈/死亡表现/顺位标记 | §Transitions 受击 + §States 敌人死亡呈现(禁瞬消)+ §Component 顺位徽标;呈现语义在本 spec(同等 blocking),动画密度归战斗表现 | diff --git a/design/gdd/ux/camp.md b/design/gdd/ux/camp.md index e001e65c..991baf70 100644 --- a/design/gdd/ux/camp.md +++ b/design/gdd/ux/camp.md @@ -1,6 +1,6 @@ # 营地场景 UX spec(camp) -> 状态:v2.6(现行) +> 状态:v2.7(现行) > 事实源:本 spec(呈现)+ [元进度](../systems/跨局循环/元进度.md)(机制) > 美术画法:[art-bible](../../art/art-bible.md) §6.2/§7.5;素材命名与路径:[asset-path-map](../../art/asset-path-map.md) > 相邻:[level-map.md](level-map.md)(主菜单语境) @@ -38,14 +38,14 @@ ## 顶栏 -钥石余额常驻画面顶部一行小 HUD 栏(高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**)。刷新入口已实装=营地刷新单口(2026-11-01 迭代 47 卡④⑤:进档与营地内写口尾触发,现开界面与顶栏余额同步取现值)。 +钥石余额常驻画面顶部一行小 HUD 栏(高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**)。刷新入口已实装=营地刷新单口(进档与营地内写口尾触发,现开界面与顶栏余额同步取现值)。 ## 叠层与开合 -各界面开合走模态栈单口,层序按模态栈契约登记。**承载形态已定稿**:五个功能界面(锻造工坊/秘宝匣/天赋树/奖励格图鉴/生涯记录)各以**功能窗口**打开——窗口为统一居中定尺寸窗壳(起点 720×640,窗明显小于屏、营地场景大面积可见;终值随样张目检校准,属普通设计决策)——**该窗壳形态已实装**(2026-11-02 迭代 49 卡③落码:窗壳几何单点定值、五窗共用同一石板皮窗板;起点值 720×640 为实装现值,样张目检校准意见回填终值〔登记体验验证清单 ㊽〕),窗之下垫半透明压暗遮罩(交互聚焦用,复用既有模态遮罩件,现值锚黑色 0.6;观感随样张目检校准,属普通设计决策),内容超高时窗内滚动;生涯页与四子界面同壳同形态。**五窗互斥单开**(模态栈深恒 1,不开窗叠窗);各窗自带关闭钮。ESC 优先序:有功能窗口开着 → 先关最上层窗;无窗 → 才进 ESC 浮窗(返回主菜单/设置/退出游戏)。 +各界面开合走模态栈单口,层序按模态栈契约登记。**承载形态已定稿**:五个功能界面(锻造工坊/秘宝匣/天赋树/奖励格图鉴/生涯记录)各以**功能窗口**打开——窗口为统一居中定尺寸窗壳(起点 720×640,窗明显小于屏、营地场景大面积可见;终值随样张目检校准,属普通设计决策)——**该窗壳形态已实装**(窗壳几何单点定值、五窗共用同一石板皮窗板;起点值 720×640 为实装现值,样张目检校准意见回填终值〔登记体验验证清单 ㊽〕),窗之下垫半透明压暗遮罩(交互聚焦用,复用既有模态遮罩件,现值锚黑色 0.6;观感随样张目检校准,属普通设计决策),内容超高时窗内滚动;生涯页与四子界面同壳同形态。**五窗互斥单开**(模态栈深恒 1,不开窗叠窗);各窗自带关闭钮。ESC 优先序:有功能窗口开着 → 先关最上层窗;无窗 → 才进 ESC 浮窗(返回主菜单/设置/退出游戏)。 ## 口径 - 呈现数据源=元进度系统只读投影经组合根喂入;本层不持有系统资源、不算价。 -- 「最近冒险」条带已撤下(卡④ Q4=甲),逐局历史回看归生涯。 +- 「最近冒险」条带已撤下,逐局历史回看归生涯。 - 秘宝匣界面内部呈现(解锁面+同调装配段)保留为附录,待该界面立独立 spec 后迁出。 diff --git a/design/gdd/ux/interaction-patterns.md b/design/gdd/ux/interaction-patterns.md index 420d68b7..df9516fc 100644 --- a/design/gdd/ux/interaction-patterns.md +++ b/design/gdd/ux/interaction-patterns.md @@ -4,7 +4,7 @@ > **Author**: user + ux-designer > **Last Updated**: 2026-10-29 > **Template**: Interaction Pattern Library -> **来源**: `design/gdd/ux/battle.md`(2026-09-12 /ux-review APPROVED)已拍板内容的成文固化——本库不引入新设计决策 +> **来源**: `design/gdd/ux/battle.md` 已拍板内容的成文固化——本库不引入新设计决策 --- @@ -13,7 +13,7 @@ - **用途**:ui-programmer 实现时引用既有 pattern,不重复发明;实现中出现新 pattern 时**必须回写本库**(team-ui Phase 3 义务) - **输入约束**:PC / Keyboard-Mouse 主(全部操作纯鼠标可完成)、Gamepad Partial 非 MVP、Touch None - **视觉依据**:art-bible §3.3(半拟物:容器穿戏服、数据素面;直角=逻辑信息、圆角=可触摸物件)、§4(彩为世,墨为信——逻辑信息一律近黑暖墨族) -- **全局语义红线**:无任何信息仅靠色相承载(art-bible §4.5 色弱安全清单逐对成立);明度分层(§2,2026-09-29 v3.0——状态与情绪区分仍只用色相/饱和/运动/元素四手段;空间纵深与光照可走明度带) +- **全局语义红线**:无任何信息仅靠色相承载(art-bible §4.5 色弱安全清单逐对成立);明度分层(§2——状态与情绪区分仍只用色相/饱和/运动/元素四手段;空间纵深与光照可走明度带) --- @@ -22,7 +22,7 @@ | # | Pattern | 类别 | 状态 | |---|---|---|---| | 1 | 双源拒绝反馈 | Feedback | **成文 ✓** | -| 2 | 原位窗口激活 | Overlay | **已退役**(2026-09-15 下线,留档) | +| 2 | 原位窗口激活 | Overlay | **已退役**(留档) | | 3 | 逐行兑现明细带 | Data Display | **成文 ✓** | | 4 | 悬停预承诺光标 | Input | **成文 ✓** | | 5 | 点阵资源显示 | Data Display | **成文 ✓** | @@ -33,13 +33,13 @@ | 10 | 一次性非模态教学提示 | Feedback | **已实现**(chord 提示——规格全文待补) | | 11 | tooltip 规范 | Feedback | **已实现**(状态/道具悬停——规格全文待补) | | 12 | 单意图帧批次提交 | Input | **已实现**(组合根——规格全文待补) | -| 13 | 状态效果槽 | Data Display | **已实现**(状态图标行呈现件——规格全文待补;载体变更留档:C 区四槽已退役,现役载体=B 区站桩伴随件) | +| 13 | 状态效果槽 | Data Display | **已实现**(状态图标行呈现件——规格全文待补;C 区四槽已退役,现役载体=B 区站桩伴随件) | | 14 | 步进进度条 | Navigation | **已退役留档**(步进进度条呈现件已删,节点态承载进度) | | 15 | 移动路径预览 | Input | **已实现**(棋盘视图 BFS 蓝点——规格全文待补) | | 16 | 清图/换图演出编排 | Feedback | **已实现·占位级**(棋盘演出呈现件 金粒彩纸——规格随战斗表现 美术批补) | | 17 | 胜利/失败终局编排 | Feedback | **已实现·占位级**(战斗终局覆盖层——规格随战斗表现补) | | 18 | Boss 遭遇演出 | Feedback | **已实现·占位级**(紫赤影子——规格随战斗表现补) | -| 19 | 库存常读列表 | Data Display | **占位失效**(所记载体从未入库;库存面已随秘宝过渡形态退役——C 区现行秘宝槽=装配呈现面、重接归装配面批次,见 battle.md 组件清单) | +| 19 | 库存常读列表 | Data Display | **占位失效**(所记载体从未实装;库存面已随秘宝过渡形态退役——C 区现行秘宝槽=装配呈现面、重接归装配面,见 battle.md 组件清单) | | 20 | 标准控件组(button/progress bar/list) | Control | **已实现**(标准控件组 直角细线/凸圆角——规格全文待补) | MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab bar——战斗屏无此需求;TunePanel slider 为调试专用。 @@ -57,7 +57,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Specification**: - 触发:意图回执(受理标志 + 拒绝原因 + 细分原因)**返回值驱动**(拒绝无事件外发——排雷玩法发射面封闭,实现层禁止等待拒绝信号) -- 反馈映射:棋盘面 → 目标格危险红 `#A8321F` 边框闪(拒绝语义红族——旗朱→封印紫→封印黑 #000000,2026-09-28 用户拍板现行) + toast 具体原因(细分原因→文案映射表:非相邻 / 目标已开格 / 目标未开格 / 该格已有封印 / 该格无封印 / 无可达路径 / 坐标越界);资源面 → 对应资源数字脉冲(AP/RAP)+「AP 不足 · 剩 0 点」式文案;相位 → toast(结算中/非挖掘期) +- 反馈映射:棋盘面 → 目标格危险红 `#A8321F` 边框闪(拒绝语义红族——封印黑 #000000,2026-09-28 用户拍板现行) + toast 具体原因(细分原因→文案映射表:非相邻 / 目标已开格 / 目标未开格 / 该格已有封印 / 该格无封印 / 无可达路径 / 坐标越界);资源面 → 对应资源数字脉冲(AP/RAP)+「AP 不足 · 剩 0 点」式文案;相位 → toast(结算中/非挖掘期) - 即时性:拒绝当帧呈现;toast 自动消退 2.5s - **voided 区分**:作废 ≠ 拒绝(零效果零扣费零事件)——须独立文案如「本轮已清图,停手未执行 · 剩余 AP 已作废」,至少 stop 作废可感知 - Accessibility:危险红边框闪为形状+运动通道;文案常驻 @@ -71,7 +71,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ### 2. 原位窗口激活(in-place window activation)——已退役留档 -> **退役注记(2026-09-20 退役术语扫描批补标)**:唯一消费面"轮末道具使用窗口"已随 2026-09-15 可选类道具删除整体下线(地图战斗资源批),本条原 Specification 整段退役不再装载呈现义务;编号留空防后续 pattern 交叉引用失锚(照 battle.md 布局决策 2 先例)。 +> **退役注记**:唯一消费面"轮末道具使用窗口"已下线,本条原 Specification 整段退役不再装载呈现义务;编号留空防后续 pattern 交叉引用失锚(照 battle.md 布局决策 2 先例)。 --- @@ -81,12 +81,12 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Category**: Data Display **Used In**: 战斗画面区底部(结算期第一注视点) -**Description**: 轮末结算逐行流水实时呈现 + 可回看——「扫雷之因逐行兑现为战果」(P2 归因)的承载面。挖掘期收起为 1 行上轮摘要;结算期展开为实时流(带高读 `log_band_h_settle`);点击开完整回看 overlay。 +**Description**: 轮末结算逐行流水实时呈现——「扫雷之因逐行兑现为战果」(P2 归因)的承载面。挖掘期收起为 1 行上轮摘要;结算期展开为实时流(带高读 `log_band_h_settle`)。 **Specification**: - 数据源:[战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行封闭协议(现行);公共字段:来源类别 / 来源格 / 轮次 / 显示名 / 数值 / 可空高光标记);**无来源行 = 断言失败** - 行模板:「{行为} {值} → {目标}(来源)」——来源标注(第 N 轮 · 安全格式);行文案最长 token = 来源标签(4 汉字封闭枚举),模板预留 40% 膨胀宽度 -- 聚合纪律:未生效类行(奖励未生效——现行 9 类行协议唯一未生效型,2026-09-20 收敛)按聚合计数呈现(防逐行惩罚轰炸);衰减行聚合计数;效果行数值 = 单次贡献值、禁与池合成值相加呈现;零值行可见不吞(免伤轮归因不断点) +- 聚合纪律:未生效类行(奖励未生效——现行 9 类行协议唯一未生效型)按聚合计数呈现(防逐行惩罚轰炸);衰减行聚合计数;效果行数值 = 单次贡献值、禁与池合成值相加呈现;零值行可见不吞(免伤轮归因不断点) - 高亮:高亮标记(封印标中、清图奖励、完美破除) → 金框强调;完美封印 = 独立高光行 + 全屏喝彩级反馈。「完美破除」的判据句读作「本板首次标错受检」,不等于完美资格已失——专长「完美保险」可在本场首次标错时豁免,实际资格按有效误标(误标总数 − 豁免数)判定 - 布局:固定槽高 + 裁剪兜底;正文 ≥14px;数值暗底高对比;未生效类行带 icon/划线形状冗余 - 击杀标记呈现(H3 数据源 = 战斗结算流水击杀结果字段) @@ -143,7 +143,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ### 6. 模态 overlay 层级纪律(modal overlay discipline) **Category**: Modal -**Used In**: 图例面板、结算明细回看、胜利/失败终局 overlay +**Used In**: 图例面板、胜利/失败终局 overlay **Description**: 任何模态覆盖层打开时必须**隐藏/锁定其遮挡的交互物**,关闭恢复——防「看不见但可点」的幽灵输入(垂直切片缺陷⑤教训,场景级断言强制)。 @@ -154,9 +154,9 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab - 验收:**场景级断言「打开时遮挡物隐藏/输入锁定」为每个模态 overlay 的强制 AC**(battle.md 场景级测试节) **When to Use**: 全屏打断级信息、只读回看、仪式性终局 -**When NOT to Use**: 与常读面板同域的窗口态(原 pattern 2 原位激活已随道具窗口退役——此类场景当前无消费面);**独立屏**(2026-09-28 起:关卡画面形态升格为独立屏退出本 pattern 族——其屏级语义见 [level-map.md](level-map.md);节点/商店覆盖层在关卡画面激活域内弹出时仍属本 pattern,遮挡/恢复语义复用单一模态栈) +**When NOT to Use**: 与常读面板同域的窗口态(此类场景当前无消费面);**独立屏**(关卡画面为独立屏,不属本 pattern 族——其屏级语义见 [level-map.md](level-map.md);节点/商店覆盖层在关卡画面激活域内弹出时仍属本 pattern,遮挡/恢复语义复用单一模态栈) -**Reference**: battle.md §AC 场景级测试;缺陷①⑤(production/session-state entry 17) +**Reference**: battle.md §AC 场景级测试;缺陷①⑤ --- @@ -182,7 +182,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ### 8. 禁用态即理由(disabled-state with reason) **Category**: Feedback -**Used In**: 商店购买钮余额不足置灰(shop.md)/ 三选一与商店 GP 刷新钮余额不足禁用(node-reward.md、秘宝.md「三选一刷新双源」节)——原道具窗口满血治疗包消费面随可选类道具退役 2026-09-15,本条保留为通用模式 +**Used In**: 商店购买钮余额不足置灰(shop.md)/ 三选一与商店 GP 刷新钮余额不足禁用(node-reward.md、秘宝.md「三选一刷新双源」节)——本条保留为通用模式 **Description**: 禁用不许静默——灰置必须伴随**可见的禁选原因**(tooltip/toast),防「为什么点不动」的困惑。 @@ -200,7 +200,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ## Gaps & Patterns Needed -- **目录 #9–#20 已全部实现**(2026-09-12 战斗屏实现批,冒烟 149/149 + 三探针全绿);规格全文回写 = HUD框架正式化批义务 +- **目录 #9–#20 已全部实现**;规格全文回写归 HUD框架正式化 - 实现期新增技术件(不单独立 pattern,规格归并):去饱和+金橙状态切换 = 逐格共享 ShaderMaterial(明度不变,兼容渲染器下安全);敌人死亡残位 = 卡体灰化+碎裂禁瞬消(归入 #17 终局编排规格) - **MVP 未使用标准控件**:toggle / dropdown / input field / tab bar(无需求不设占位);TunePanel slider 为调试专用不入库 - **实现偏差规则**:pattern 近似但不完全适配时,实现层禁止静默变体——登记偏差交 ux-designer 复核后回写 @@ -210,7 +210,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ## Open Questions 1. 目录占位项的补全时点 = 实现期顺带回写(owner:ui-programmer → ux-designer 复核) -2. Gamepad 批次引入时,需为 pattern 4/12/15 增补手柄映射节(焦点序已在 battle.md OQ8 留位) +2. Gamepad 引入时,需为 pattern 4/12/15 增补手柄映射节(焦点序已在 battle.md OQ8 留位) --- diff --git a/design/gdd/ux/level-clear.md b/design/gdd/ux/level-clear.md index efac1de7..3b865b1b 100644 --- a/design/gdd/ux/level-clear.md +++ b/design/gdd/ux/level-clear.md @@ -1,11 +1,10 @@ # UX Spec: 关卡结算屏(Level Clear)——提升三选一选择面 -> **Status**: v2 义务锁定版 -> **Author**: user + ZCode(UX 文档欠账处置批;迭代 10 重写) +> **Status**: v2.1 义务锁定版 +> **Author**: user + ZCode > **Last Updated**: 2026-10-29 > **Platform Target**: PC (Steam)——Keyboard/Mouse 主,全部操作纯鼠标可完成(同 battle.md) > **Template**: UX Spec -> **来源**: battle.md OQ8 欠账处置(2026-09-27 用户拍板建档)+ 迭代 10 奖励重构批(2026-09-30 用户拍板案丙——三选一/部分回血/钥石挪转,计划书 m3-iter10-loop-plan-2026-09-30.md) --- @@ -15,17 +14,17 @@ 一句话目的:**让「打穿了一关」的收束感落在一笔算得清的账上,并把「这关带我变强」变成玩家自己做的决定。** -- 专长三选一承载局内成长的选择权:候选 = 纯专长(关卡完成渠道只出专长——迭代 15② 渠道分离)、点选一件兑付、另两件丢弃不可反悔 +- 专长三选一承载局内成长的选择权:候选 = 纯专长(关卡完成渠道只出专长)、点选一件兑付、另两件丢弃不可反悔 - 部分回血承载收束反馈:关卡完成不再自动回满,回血量一眼可读(满血回 0 合法) -- 钥石增量**不在本屏**(迭代 10 起):Boss 击杀进账时刻的钥石增量行已迁战斗总结结算([settlement-summary.md](settlement-summary.md) v1.1)——单一展示面原则,本屏不重复 +- 钥石增量**不在本屏**:Boss 击杀进账时刻的钥石增量行归战斗总结结算([settlement-summary.md](settlement-summary.md))——单一展示面原则,本屏不重复 若此屏缺失或难用:奖励选择沦为无声的自动发放(选择权缺失);三选一停点不可中断则续玩丢选择。 ## 现行载体与目标形态(重要边界) -本屏**没有独立新屏**:现行与 MVP 目标载体都是关卡收束时刻的覆盖层反馈([HUD框架](../systems/表现与支撑/HUD框架.md) P1 行「相邻域屏完整屏形态:MVP 以覆盖层反馈承载」)。本 spec 锁义务与数据锚,不锁视觉形态;完整屏形态归 P1 实装批。 +本屏**没有独立新屏**:现行与 MVP 目标载体都是关卡收束时刻的覆盖层反馈([HUD框架](../systems/表现与支撑/HUD框架.md) P1 行「相邻域屏完整屏形态:MVP 以覆盖层反馈承载」)。本 spec 锁义务与数据锚,不锁视觉形态;完整屏形态待 P1 屏实装时定。 -| 时刻 | 载体(目标形态,迭代 10 实装) | 呈现内容 | +| 时刻 | 载体(目标形态) | 呈现内容 | |---|---|---| | Boss 战胜利(非末关) | 战斗总结结算([settlement-summary.md](settlement-summary.md))→ 确认后进**本屏** | 战利品行含钥石增量行 → 本屏:部分回血反馈 + 三选一三卡 | | 非末关完成(本屏默认态) | 三选一覆盖层(与奖励节点共用面) | 部分回血兑付行 + 三张专长选项卡(点选+确认+兑付反馈) | @@ -40,7 +39,7 @@ 失败不经本屏(战斗屏失败分支直达冒险落幕)。 ``` -- 上游屏:战斗总结结算(Boss 胜利确认——settlement-summary.md v1.1) +- 上游屏:战斗总结结算(Boss 胜利确认——settlement-summary.md) - 下游屏:关卡画面(下一关开始,选路枢纽——屏级 spec:[level-map.md](level-map.md));末关时改接冒险结算(相邻域屏) ## Entry & Exit Points @@ -54,21 +53,19 @@ ## Information Hierarchy(义务锁定) -按 2026-09-26 信息归属两铁律(循环口径 + 单一展示面)过闸后的准入清单: +按 2026-09-26 信息归属两铁律(循环口径 + 单一展示面)推导的准入清单: -1. **三张提升选项卡**(第一注视点):件名称 + 一行效果读数(值读冒险表)——选择型奖励的本体;已达次数上限的件不出现(剔牌库在先);候选 = 纯专长(迭代 15② 渠道分离——原六种池抽三与秘宝件直显分别随迭代 12 TP0/迭代 11①退役) +1. **三张提升选项卡**(第一注视点):件名称 + 一行效果读数(值读冒险表)——选择型奖励的本体;已达次数上限的件不出现(剔牌库在先);候选 = 纯专长 2. **部分回血兑付行**:回血量(前后生命读数,如「生命 34 → 42」);满血回 0 时呈「生命已满」反馈而非 0 字样 3. **兑付反馈**(确认后):选中件效果一行(如「攻击 +1」)+ 另两件已丢弃提示 -4. ~~同调位替换子交互~~(已随渠道退役:秘宝件自迭代 11① 起不再入三选一池、关卡完成候选 = 纯专长,本屏无道具件候选——替换子交互不于本屏触发;同调装配归营地) -**禁入清单**(两铁律推导):战斗小循环数据(结算明细、状态效果——留在战斗屏);GP(呈现位已拍板 = 战斗总结结算 + 关卡画面常驻);**钥石增量与累计**(迭代 10 起归战斗总结结算增量行 + 冒险总结结算收束明细——本屏零钥石元素);营地界面全量;冒险摘要五件事(末关时由相邻域冒险结算屏承载);已达上限件(不出现在候选)。 +**禁入清单**(两铁律推导):战斗小循环数据(结算明细、状态效果——留在战斗屏);GP(呈现位已拍板 = 战斗总结结算 + 关卡画面常驻);**钥石增量与累计**(归战斗总结结算增量行 + 冒险总结结算收束明细——本屏零钥石元素);营地界面全量;冒险摘要五件事(末关时由相邻域冒险结算屏承载);已达上限件(不出现在候选)。 ## States & Variants | State | Trigger | What Changes | |---|---|---| | 三选一选择态(默认) | 非末关完成,候选已抽定 | 三卡呈现(零自动推进)→ 点选 → 确认 → 兑付反馈 → 继续 | -| ~~同调位替换子态~~ | ~~点选秘宝件且库存满位~~ | 已随渠道退役(秘宝件出池、关卡完成候选 = 纯专长——本屏无道具件候选) | | 兑付反馈态 | 确认兑付后 | 选中件效果一行 + 丢弃提示 → 继续钮点亮 | | 末关完成 | 关卡完成且末关 | 直通冒险结算——不发三选一与回血(奖励只朝下一战生效);本屏不出现 | | Boss 入口语境 | 击杀 Boss(恒为本屏入口前置) | 入口演出归战斗屏;钥石增量行归战斗总结结算——本屏不另设 | @@ -80,7 +77,6 @@ | 提升选项卡 ×3 | 点选(单选高亮) | 左键 | 选中卡高亮、确认钮点亮 | 选中态暂存(未确认可改选) | | 确认钮 | 兑付选中件 | 左键 | 兑付反馈(效果一行) | 冒险编排兑付恰一件(重复兑付被拒);另两件丢弃不可反悔 | | 继续钮 | 接受结算、推进 | 左键 | 按钮下压 | 下一关开始(推进到下一关——兑付后受理) | -| ~~替换子面板钮~~ | —— | —— | —— | 已随渠道退役(本屏无道具件候选) | 复用既有交互范式,零新增原语:三卡点选 = 奖励节点 选择框 按钮数组同族(由节点覆盖层展示奖励三选一 先例)+ 选路覆盖层点选确认两段式(关卡地图屏 先例);覆盖层容器 = 中场确认覆盖层位置复用。 @@ -88,13 +84,12 @@ | Data | Source System | Read / Write | Notes | |---|---|---|---| -| 三候选(件 id/名称/效果行值) | 冒险结构 奖励三选一拉起信号(令牌池洗牌不放回抽 3〔同 kind 去重——v0.14 令牌池换代口径,原「加权洗牌」退役〕,奖励抽取封闭流) | Read | 载荷自包含、销毁前捕获;同种子同三候选(可复放) | +| 三候选(件 id/名称/效果行值) | 冒险结构 奖励三选一拉起信号(令牌池洗牌不放回抽 3〔同 kind 去重〕,奖励抽取封闭流) | Read | 载荷自包含、销毁前捕获;同种子同三候选(可复放) | | 部分回血读数(回血前后生命) | 冒险结构生命账本(clear_heal_pct 兑付) | Read | 满血回 0 合法态文案化 | | 兑付反馈载荷 | 冒险结构 奖励兑付完成信号 | Read | 选中件 id + 生效值 | -| ~~同调位库存~~ | —— | —— | 替换子态随渠道退役;过渡键 transitional_sync_slots 已退役(迭代 11① T7——同调位现行事实源 = attunement_growth.tres 谓词表实时求值) | | 冒险摘要(五件事) | 冒险结构的冒险收束载荷 | Read | 末关分支数据锚(相邻域冒险结算屏消费) | -| GP 账本 | 冒险结构 GP 冒险账本 | — | 不进本屏(维持 2026-09-27 拍板) | -| 钥石入账 | 元进度 冒险结算入账 | Write(相邻域) | 唯一写档点不变;**本屏零钥石元素**(迭代 10 起,增量行迁战斗总结结算) | +| GP 账本 | 冒险结构 GP 冒险账本 | — | 不进本屏(2026-09-27 拍板) | +| 钥石入账 | 元进度 冒险结算入账 | Write(相邻域) | 唯一写档点不变;**本屏零钥石元素**(增量行归战斗总结结算) | ## Accessibility @@ -105,7 +100,6 @@ - [ ] 非末关完成必经本屏:三选一恰呈现一次(零自动推进)、点选后恰兑付一件(重复兑付被拒)、未选项零生效 - [ ] 三候选读数可见且与奖励三选一拉起载荷一致(件名称 + 效果行值);同种子同三候选 - [ ] 部分回血兑付行可见且封顶上限;满血回 0 呈合法态文案 -- [ ] ~~同调位替换子交互~~(已随渠道退役——本屏无道具件候选,见 Information Hierarchy 第 4 条注) - [ ] 末关完成分支正确直通冒险结算(不发三选一与回血),冒险摘要五件事完整 - [ ] 确认前冒险状态冻结(无后台推进、无战斗事件串扰);选择停点中断 → 续玩已选不丢失(**候选一致性=停点快照承载的实现现状、非验收义务**——2026-10-01 用户裁决) - [ ] 呈现遵循 HUD框架 可访问性基线(对比 ≥4.5:1、字号下限、纯鼠标可完成;减动效 = 静态化) @@ -113,10 +107,10 @@ ## Open Questions -1. **GP 增量展示面归属——已完成(2026-09-27 用户拍板)**:战斗胜利出现战斗总结结算、展示获得的资源(GP 增量+总量;迭代 10 起追加 Boss/精英钥石增量行);战斗失败出现冒险总结结算、确认后回存档首页。本屏不承载 GP 与钥石,无遗留。两面呈现 spec:[settlement-summary.md](settlement-summary.md) v1.1 -2. **末关分支形态**:末关完成时直通冒险结算(现行维持)——随完整屏形态实装批一并定 -3. **钥石呈现三面化——已完成(迭代 10 契约 6 推荐案)**:战斗总结结算(Boss/精英击杀增量行)+ 冒险总结结算(收束明细)+ 营地存量——「进账时刻 / 收束明细 / 存量可用」不同义不构成重复展示;本屏旧「钥石增量+累计」呈现随大奖励重构退役 -4. **视觉终稿**:以表现层样张过审为前置(待办清单登记);本 spec 的 AC 为功能性判据,不含视觉终稿判据。**本批渲染层验证冻结(用户 2026-10-01)**——实装后目检清单顺带交付,实机目检待用户批准后补闸 -5. **替换子交互视觉形态——已随渠道退役**:秘宝件出池后本屏无道具件候选,替换子交互不于本屏触发(原功能性判据留档) +1. **GP 增量展示面归属——已完成(2026-09-27 用户拍板)**:战斗胜利出现战斗总结结算、展示获得的资源(GP 增量+总量;含 Boss/精英钥石增量行);战斗失败出现冒险总结结算、确认后回存档首页。本屏不承载 GP 与钥石,无遗留。两面呈现 spec:[settlement-summary.md](settlement-summary.md) +2. **末关分支形态**:末关完成时直通冒险结算(现行维持)——随完整屏形态实装一并定 +3. **钥石呈现三面化——已完成**:战斗总结结算(Boss/精英击杀增量行)+ 冒险总结结算(收束明细)+ 营地存量——「进账时刻 / 收束明细 / 存量可用」不同义不构成重复展示 +4. **视觉终稿**:以表现层样张过审为前置(待办清单登记);本 spec 的 AC 为功能性判据,不含视觉终稿判据。**渲染层验证冻结(用户 2026-10-01 裁)**——实装后目检清单顺带交付,实机目检待用户批准后补闸 +5. **替换子交互视觉形态——已随渠道退役**:秘宝件出池,本屏无道具件候选,替换子交互不于本屏触发 --- diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index 7e1b2e82..d0e89b0d 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -1,20 +1,20 @@ # UX Spec: 关卡画面(选路枢纽,Level Map) > **Status**: 定稿版(现行——三项设计提案已拍板:底栏状态展示 / 图上点击选路·候选按钮退役 / 放弃二次确认;形态为独立屏;视觉终稿已冻结) -> **Author**: user + ZCode(关卡画面 UX 批) +> **Author**: user + ZCode > **Last Updated**: 2026-10-29 > **Platform Target**: PC (Steam)——Keyboard/Mouse 主,全部操作纯鼠标可完成(同 [battle.md](battle.md)) > **Template**: UX Spec > **覆盖范围**: 独立屏形态(关卡停点全景)· 入口停点 · 岔路停点 · 单链停点 · 放弃冒险入口 > **不覆盖**: 节点覆盖层(NodeOverlay——奖励/恢复兑付反馈,spec:[node-reward.md](node-reward.md))、商店覆盖层(spec:[shop.md](shop.md))、关卡结算屏([level-clear.md](level-clear.md))、战斗屏([battle.md](battle.md)) > **机制权威**: [关卡节点地图](../systems/冒险循环/关卡节点地图.md)(选路、兑付、停点语义);图的来源 = [关卡节点图生成](../systems/冒险循环/关卡节点图生成.md)(参数化长图——只换图的来源与形态,不换本屏的呈现语义;多终点时各终点均带 Boss 标记,标记语义不变、数量随图;图形态随参数变化,布局自适应,形态不进呈现代码);**系统契约**: [HUD框架](../systems/表现与支撑/HUD框架.md)(订阅纪律、模态层级、可访问性基线) -> **生成图随动登记(2026-10-25)**:入口停点候选数=入口个数(1 或多,多入口并列呈现,首跳即选从哪个入口进场);节点数字=图内句柄 id(非节点深度、非数组序);生成图深度域 L3 上探至 0–13,超出画布冻结公式约 10 层的屏预算——等比缩放与滚动视口两案均未设计,归呈现批(见待办清单「超预算图策略升级路径」条),本 spec 冻结值暂不变。 +> **生成图随动登记**:入口停点候选数=入口个数(1 或多,多入口并列呈现,首跳即选从哪个入口进场);节点数字=图内句柄 id(非节点深度、非数组序);生成图深度域 L3 上探至 0–13,超出画布冻结公式约 10 层的屏预算——等比缩放与滚动视口两案均未设计(见待办清单「超预算图策略升级路径」条),本 spec 冻结值暂不变。 --- ## Purpose & Player Need -关卡画面是中循环(关卡内)的枢纽屏。停点前移批(2026-09-23)之后,关卡开始即呈现这张图,此后每次兑付确认都回到它再选路——玩家在这里看图、选路、出发,直到关底 Boss 分出胜负。 +关卡画面是中循环(关卡内)的枢纽屏。关卡开始即呈现这张图,此后每次兑付确认都回到它再选路——玩家在这里看图、选路、出发,直到关底 Boss 分出胜负。 一句话目的:**让「我在图上哪、下一步能去哪、去了会发生什么」一眼可读,选路即出发。** @@ -54,14 +54,14 @@ 1. **节点图本体**(第一注视点):节点方块(五类型字面:战/赏/疗/王/商)、通道连线、当前位置、可选去路;类型可见性=邻近 N 层内显示类型,范围外只见结构(机制见[关卡节点地图](../systems/冒险循环/关卡节点地图.md)) 2. **候选选路口**:亮金候选通道 + 候选节点亮金描边——「下一步能去哪」的图上双冗余(2026-09-27 拍板:候选按钮退役,图上点击为唯一提交通道) -3. **常驻语境**(顶栏):关卡名(第 N 层·名称)、GP 常驻总量(2026-09-26 二轮拍板去向:GP = 关卡画面常驻总量,[battle.md](battle.md) OQ14 口径经 2026-09-27 GP 归属拍板对齐批维持) +3. **常驻语境**(顶栏):关卡名(第 N 层·名称)、GP 常驻总量(2026-09-26 二轮拍板:GP = 关卡画面常驻总量) 4. **状态展示**(底栏,2026-09-27 拍板):生命(当前/上限)、属性(攻击 / 护甲 AC 有效值)、本关已选加成(统一冒险加算区增量)——选路规划原料常读 5. **边缘动作**:放弃冒险入口(破坏性,危险红族,异位呈现) 6. **进度语境**:已过/当前/未来三态节点直接读图呈现——节点态即节点链进度呈现载体,**不另设进度条组件**(关卡节点地图 呈现侧口径 2026-09-17 用户拍板) ### Layout Zones -按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底背景色 + 石纹底噪〔迭代 2 框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。 +按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底背景色 + 石纹底噪〔框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。 | 区 | 位置与尺寸 | 内容 | |---|---|---| @@ -74,13 +74,13 @@ | 组件 | 类型 | 内容 | 交互 | 现有实现锚 | |---|---|---|---|---| | 关卡名标签 | 文本 | 关卡表 `display_name` 行值(关卡表行读数) | 只读 | 新建(现行标题位升级) | -| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(冒险钱包读数;刷新经钱包变动信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) | -| 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——2026-09-26 封印紫批语义:紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ 已实装(视觉终稿已落码——迭代 4 T2/T3) | +| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(冒险钱包读数;刷新经钱包变动信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板承载面) | +| 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ 已实装(视觉终稿已落码) | | 状态数据框组 | 直角细线数据框 ×3 | 生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC 有效值 + 加成角标)、本关加成(加算区增量列表,零加成隐藏) | 只读 | 新建(2026-09-27 拍板:底栏状态展示) | | 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态已拍板(见布局决策 3) | 点击(首击转确认态、二击提交) | ✅ 已实装(可见性归组合根,仅冒险模式开) | | 标题行 | 文本 | 停点语境提示(见布局决策 1 三停点标题) | 只读 | ✅ 已实装(措辞已按布局决策 1 改稿) | -**布局决策 1 —— 停点标题措辞修正(清偿状态记录 143 遗留)**:现行入口停点标题沿用「继续前进(战斗房)」,与「尚未走出第一步」的语境矛盾。三停点标题定稿: +**布局决策 1 —— 三停点标题定稿**:入口停点语境是「尚未走出第一步」,「继续前进(战斗房)」类措辞与之矛盾。三停点标题: | 停点 | 候选数 | 标题 | |---|---|---| @@ -92,7 +92,7 @@ **布局决策 3 —— 放弃冒险二次确认(2026-09-27 拍板)**:放弃 = 整局冒险落幕,不可逆(pattern 7 破坏性确认)。首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。 -**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奇物列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 +**布局决策 4 —— 底部状态栏(2026-09-27 拍板)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奇物列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 ### ASCII Wireframe @@ -111,7 +111,7 @@ └──────────────────────────────────────────────────────────────────────────────┘ ``` -> 图为岔路停点示意(第二关行集):已过节点暗金(GOLD_DONE #68562C)、当前节点金、候选节点亮金描边、Boss 紫赤描边+外缘深墨细环(灰度冗余通道)。终稿 = 节点图标组(♻ kenney 五键已接线,样张 v1 冻结)+ 通道折线 2/3/4px(已落码,迭代 4)。 +> 图为岔路停点示意(第二关行集):已过节点暗金(GOLD_DONE #68562C)、当前节点金、候选节点亮金描边、Boss 紫赤描边+外缘深墨细环(灰度冗余通道)。终稿 = 节点图标组(♻ kenney 五键已接线,样张 v1 冻结)+ 通道折线 2/3/4px(已落码)。 --- @@ -124,8 +124,8 @@ | **岔路停点** | 兑付确认后、≥2 个下一跳 | 标题「选择下一节点」;候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道);亮金通道与候选描边逐一分叉可辨 | | **悬停预承诺** | 悬停候选节点 | 该节点亮金描边加粗 + 所属通道增亮 + 光标切指针态;移出即回落(仅预承诺,点击才提交) | | **放弃确认态** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交放弃请求 | -| **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入;屏底世界侧随层进换挡(**换层色板渐变挂点**——§2.7 切片档:只动色相/饱和、明度带归一,level_index→tint 表候选值 = art-bible §6.3 三关方向,终值归色板样张批;M-2 迭代 4 落挂点) | -| **减动效** | 设置开关(设置面——迭代 8 卡④已转正,TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) | +| **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入;屏底世界侧随层进换挡(**换层色板渐变挂点**——§2.7 切片档:只动色相/饱和、明度带归一,level_index→tint 表候选值 = art-bible §6.3 三关方向,终值随色板样张校准) | +| **减动效** | 设置开关(设置面承载;TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) | **无拒绝子态**:候选提交恒合法(候选集即合法集),本屏无资源面/棋盘面拒绝路径;战斗中放弃由组合根可见性封死(按钮只在选路停点可见——接口契约:战斗中放弃一律拒绝)。 @@ -164,7 +164,7 @@ |---|---|---| | 打开(进图 / 兑付确认后回图) | 独立屏淡入(约 200ms,同装板淡入档;alpha 淡入非明度变化——§2) | 屏级切换;战斗屏整体隐藏 | | 选路提交 | 本屏关闭,直达所选节点兑付流程 | 到达即兑付(关卡节点地图) | -| 放弃确认态(OQ3,拍板落定) | 危险红边框脉冲约 3 秒(单段呼吸,非频闪) | pattern 7;闪烁基线(≤3 次/秒)内 | +| 放弃确认态(拍板落定) | 危险红边框脉冲约 3 秒(单段呼吸,非频闪) | pattern 7;闪烁基线(≤3 次/秒)内 | | 减动效 | 上述全部时长减半或跳终态 | HUD框架 可访问性基线 | --- @@ -173,18 +173,18 @@ 无障碍基线权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节,本屏无新增豁免。呈现侧内建承诺: -- **节点态形状冗余**(全局语义红线「无任何信息仅靠色相承载」的合规项):已过 = 暗金无描边、当前 = 金填充 + 唯一焦点方块、候选 = 亮金粗描边、未来 = 暗底无描边;Boss = 紫赤描边 + 外缘 1px 深墨环(**灰度冗余通道**——紫赤灰度对石纹噪底不可辨,样张 v1 L2 机检逼守)+ 图标冗余。四态在灰度截图下可分类(AC,样张 L2 断言承载) +- **节点态形状冗余**(全局语义红线「无任何信息仅靠色相承载」的合规项):已过 = 暗金无描边、当前 = 金填充 + 唯一焦点方块、候选 = 亮金粗描边、未来 = 暗底无描边;Boss = 紫赤描边 + 外缘 1px 深墨环(**灰度冗余通道**——紫赤灰度对石纹噪底不可辨)+ 图标冗余。四态在灰度截图下可分类(AC,样张 L2 断言承载) - **对比**:节点图标对方块底(双色墨制:暗底态暖白/当前金底深墨,各态 ≥4.5:1)、顶栏数字对底 ≥4.5:1(样张 L3 断言承载);色值取 art-bible §4.1 冻结色板(已过暗金 = GOLD_DONE #68562C 冻结新值) - **字号下限**:节点字形 ≥14px、标题 ≥16px、按钮/徽章 ≥14px(1280×800 基座,像素字体整数倍缩放) - **破坏性异位**:放弃按钮与候选按钮分区放置(位置通道,art-bible §4.5 #7);确认态不依赖色相单独承载(文案 + 脉冲双通道) -- **纯鼠标**:全部操作纯鼠标可完成;MVP 不做键盘焦点序(同 battle.md 留痕) +- **纯鼠标**:全部操作纯鼠标可完成;MVP 不做键盘焦点序(同 battle.md) --- ## Localization Considerations - **中文像素字体随包**(硬前置,同 battle.md) -- **按钮文案 4 汉字上限**:「放弃冒险」「确认放弃」;候选按钮为模板插值(「节点 N · 战斗房」),宽度按最长节点类型名(4 字)+ 编号预留,固定槽高 + clip 兜底 +- **按钮文案 4 汉字上限**:「放弃冒险」「确认放弃」;按钮宽度按最长文案预留,固定槽高 + clip 兜底 - **关卡名**:`display_name` 最长 token「第三层 · 灰矮人矿城」(9 字符)——顶栏标签预留 40% 膨胀宽度 - **数字格式**:全部整数;GP 徽章图标+数字不依赖文本承载语义 @@ -201,9 +201,9 @@ **交互与流程** -- [ ] 三停点标题按布局决策 1 呈现(入口停点不再出现「继续前进(战斗房)」措辞——状态记录 143 遗留清偿) +- [ ] 三停点标题按布局决策 1 呈现,入口停点不出现「继续前进(战斗房)」措辞 - [ ] 候选提交经组合根唯一写路径(选路提交 → 关卡推进方受理),到达即兑付;零自动推进(无任何不选而行的路径) -- [ ] 图上点击为唯一选路提交通道(候选按钮退役,2026-09-27 拍板);悬停预承诺反馈可见;图上选路段随实装批改造后复核通过 +- [ ] 图上点击为唯一选路提交通道(候选按钮退役,2026-09-27 拍板);悬停预承诺反馈可见 - [ ] 底部状态栏三组读数可见且与关卡推进方现值一致(生命当前/上限、攻击/AC 有效值、本关加成增量——零加成隐藏);兑付确认返回后读数刷新 - [ ] 放弃按钮仅冒险模式可见(调试两层不可达);单击不提交、确认态超时回落、二击才终结(已拍板) - [ ] 放弃后走冒险落幕(同失败结算),已获大奖励保留语义可见 @@ -218,9 +218,9 @@ ## Open Questions -**已完成(2026-09-27 用户拍板,正文随拍板改写)**:① 底栏 = 状态展示(生命 + 属性 + 本关已选加成——原提案仅顶栏 HP 读数,用户扩为底栏状态栏);② 图上直接点击选路,候选按钮退役;③ 放弃冒险二次确认。 +**已完成(2026-09-27 用户拍板)**:① 底栏 = 状态展示(生命 + 属性 + 本关已选加成);② 图上直接点击选路,候选按钮退役;③ 放弃冒险二次确认。 -**已完成(2026-09-28 样张 v1 机检全绿,闸形 A——正文随冻结改写)**:④ **视觉终稿**——节点图标形制/通道质感/画布公式/底栏数据框样式/屏底以关卡画面样张 v1 机检 11/11 全绿冻结落码(M-2 迭代 4;冻结值登记见机检报告 git 提交 9a79927,气质终审 = M-2 出口闸真人目检) +**已完成(2026-09-28)**:④ **视觉终稿**——节点图标形制/通道质感/画布公式/底栏数据框样式/屏底以关卡画面样张 v1 冻结落码。 --- diff --git a/design/gdd/ux/node-reward.md b/design/gdd/ux/node-reward.md index 76222231..e43b2b7a 100644 --- a/design/gdd/ux/node-reward.md +++ b/design/gdd/ux/node-reward.md @@ -1,23 +1,20 @@ # 节点奖励屏 UX spec(node-reward) -> 状态:v2.9(现行) +> 状态:v3.0(现行) > 事实源:本 spec(呈现)+ 三选一覆盖层(共用呈现件)+ 头部行文案(旁白条目) -> 相邻:[level-clear](level-clear.md)(关卡完成三选一面——同一覆盖层的另一上下文)/ [level-map](level-map.md)(关卡画面)/ [秘宝](../systems/跨局循环/秘宝.md)(道具件内容权威——本批起为局外同调件,不再入三选一牌库)/ [冒险结构](../systems/冒险循环/冒险结构.md)(共享池令牌库账本) +> 相邻:[level-clear](level-clear.md)(关卡完成三选一面——同一覆盖层的另一上下文)/ [level-map](level-map.md)(关卡画面)/ [秘宝](../systems/跨局循环/秘宝.md)(道具件内容权威——局外同调件,不再入三选一牌库)/ [冒险结构](../systems/冒险循环/冒险结构.md)(共享池令牌库账本) ## 定位 -奖励节点(reward node)到达即开的**提升三选一选择面**:**七种×档位**令牌池(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件 × 普通/优秀/稀有(+传说头奖位留空)——v2.2 起秘宝件随同调批退役出池;v2.4 起=固定配额令牌池;刷新件随迭代15② T6 入池〔优秀档 2,恢复件同批挤占收窄——冒险表的令牌类型闭集第七类〕),与商店货架同库同账(v2.3)、同池耗语义、同奖励抽取封闭流。**关卡完成三选一自迭代 15② 渠道分离起候选 = 纯专长,与本面不再同池**;与关卡完成面的差异另在上下文:无部分回血、无钥石增量行,兑付后「继续」回图选路(不推进关卡)。 +奖励节点(reward node)到达即开的**提升三选一选择面**:**七种×档位**令牌池(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件 × 普通/优秀/稀有(+传说头奖位留空);秘宝件已退役出池;固定配额令牌池,刷新件=优秀档 2、恢复件配额相应收窄〔冒险表的令牌类型闭集第七类〕),与商店货架同库同账、同池耗语义、同奖励抽取封闭流。**关卡完成三选一候选 = 纯专长,与本面不同池**;与关卡完成面的差异另在上下文:无部分回血、无钥石增量行,兑付后「继续」回图选路(不推进关卡)。 ## 布局与交互 - 载体 = 提升三选一覆盖层(与 [level-clear](level-clear.md) 共用组件——零新增交互原语)。 - 头部行:「关卡奖励点 / 从冒险牌库抽三选一(属性值提升与补给;与通关专长三选一同库分流):选择一件带走:」(旁白条目)。 - 三卡点选(✓ 高亮,确认前可改选)→「确认选择」→ 兑付反馈(选中件效果 + 丢弃提示)→「继续」→ 回图选路(零自动推进同款)。 -- ~~秘宝件直显/满位替换~~(v2.1 两面随池种退役——迭代 11 第①批 T7;秘宝改走营地同调装配面,见[秘宝](../systems/跨局循环/秘宝.md))。 -- **三选一刷新**(v2.2 新增——P1 甲 X/Y 双源;机制现行事实源=[秘宝](../systems/跨局循环/秘宝.md)「三选一刷新双源」节,X 源承载件已随新目录批换代〔旧目录「三选一刷新件」退役→新目录「刷新练习」〕):装配「三选一刷新件」给 X 次(每次碰三选一重给、优先消耗、不结转)+ 营地「刷新升级」给 Y 次(每冒险开局注入冒险周期池、用完即无);刷新钮余量 >0 时现形,点按重抽三候选(奖励抽取既有洗牌流,池规则全保留:不放回/达上限剔牌/掷定前置直显/停点可中断)。自动演示默认不刷(钓鱼归玩家)。 +- **三选一刷新**(X/Y 双源;机制现行事实源=[秘宝](../systems/跨局循环/秘宝.md)「三选一刷新双源」节,X 源承载件=现行目录「刷新练习」):装配「三选一刷新件」给 X 次(每次碰三选一重给、优先消耗、不结转)+ 营地「刷新升级」给 Y 次(每冒险开局注入冒险周期池、用完即无);刷新钮余量 >0 时现形,点按重抽三候选(奖励抽取既有洗牌流,池规则全保留:不放回/达上限剔牌/掷定前置直显/停点可中断)。自动演示默认不刷(钓鱼归玩家)。 ## 口径 -- **同库同池耗(v2.4)**:池=固定配额令牌库(档位=四级框架 普通/优秀/稀有/传说,传说=头奖位留空〔稀有档现投放为行动点件〕;各 kind 现行配额读 `game/data/tables/adventure.tres`——「道具件 2」原列稀有档,随 aux_item 池种退役〔迭代 11 第①批 T7,落地晚于追认 b〕收窄——状态记录自决披露项);洗牌不放回抽 3(**同 kind 去重每 kind 至多一枚**——「三种不同选项」体验延续,kind 出现率∝剩余令牌数)、选中踢池未选回池、池耗即枯竭(余库不足出齐剩余,空库=零候选合法态直通);**种类次数上限退役**(池消耗即上限)。数值对:小GP 20/大GP 50、小增伤 +1/大 +2、小护甲 +1/大 +2、小生命 +5/大 +10、恢复 +6 当即回血(封顶生效上限)、AP +1。**MC 策略 316-f**:1 级优先度=最稀有(legendary>rare>excellent>common,头奖位现行留空)、2 级=最左(并列同档取最左)。配额结构锚与档位构成读冒险表(结构校验归实现侧)。**v2.3 第三渠道并账维持**:商店货架=同库付费渠道(令牌级货架,买一件=奖励面少一件),库存=剩余令牌数,账本语义与切边注记归[冒险结构](../systems/冒险循环/冒险结构.md)共享池账本节。 -- ~~道具件入本关库存~~(v2.2 退役——秘宝局内不掉落机制道具,三轴 doctrine 锁死)。 -- ~~「池空直通」合法态~~(v2.4 随令牌池换代退役又回归异形:旧口径=GP 无上限保证牌库恒非空;现口径=固定配额池(现行值读冒险表)真可耗尽,空库=零候选直通合法态——池耗即枯竭既定后果)。 +- **同库同池耗**:池=固定配额令牌库(档位=四级框架 普通/优秀/稀有/传说,传说=头奖位留空〔稀有档现投放为行动点件〕;各 kind 现行配额读 `game/data/tables/adventure.tres`);洗牌不放回抽 3(**同 kind 去重每 kind 至多一枚**——「三种不同选项」体验延续,kind 出现率∝剩余令牌数)、选中踢池未选回池、池耗即枯竭(余库不足出齐剩余,空库=零候选合法态直通);**种类次数上限退役**(池消耗即上限)。数值对:小GP 20/大GP 50、小增伤 +1/大 +2、小护甲 +1/大 +2、小生命 +5/大 +10、恢复 +6 当即回血(封顶生效上限)、AP +1。**MC 策略 316-f**:1 级优先度=最稀有(legendary>rare>excellent>common,头奖位现行留空)、2 级=最左(并列同档取最左)。配额结构锚与档位构成读冒险表(结构校验归实现侧)。商店货架=同库付费渠道(令牌级货架,买一件=奖励面少一件),库存=剩余令牌数,账本语义与切边注记归[冒险结构](../systems/冒险循环/冒险结构.md)共享池账本节。 diff --git a/design/gdd/ux/settlement-summary.md b/design/gdd/ux/settlement-summary.md index a1106a75..db031080 100644 --- a/design/gdd/ux/settlement-summary.md +++ b/design/gdd/ux/settlement-summary.md @@ -1,12 +1,12 @@ # 结算总结 UX spec(settlement-summary) -> 状态:v1.4(现行) +> 状态:v1.5(现行) > 事实源:本 spec(呈现)+ 战斗终局覆盖层(胜利金蜡封 / 失败暮蓝双形态) > 相邻:[battle.md](battle.md)(战斗屏出口锚与信息归属两原则)/ [level-clear.md](level-clear.md)(关卡结算屏——Boss 胜利走大奖励面,非本 spec)/ [level-map.md](level-map.md)(GP 常驻徽章) ## 定位 -本 spec 承载两个**已实装**的结算总结呈现面(2026-09-27 用户拍板定名,接线登记待办清单状态记录): +本 spec 承载两个**已实装**的结算总结呈现面(2026-09-27 用户拍板定名): - **战斗总结结算**——冒险模式普通战斗胜利时的总结覆盖层(战斗小循环的出口呈现); - **冒险总结结算**——冒险落幕(倒下 / 末关完成 / 放弃)时的终局覆盖层(冒险大循环的收束呈现)。 @@ -15,22 +15,22 @@ ## 战斗总结结算(战斗胜利面) -- 触发:冒险模式战斗胜利(判胜)含 Boss 胜利——迭代 10 起 Boss 胜利也经本面(钥石逐杀掉落增量在此呈现,确认后进[关卡结算屏](level-clear.md)三选一面;原「Boss 胜利走大奖励面不经本面」口径随大奖励重构退役)。非 Boss 接线 2026-09-29 迭代 8 卡⑥。 +- 触发:冒险模式战斗胜利(判胜)含 Boss 胜利——钥石逐杀掉落增量在此呈现,确认后进[关卡结算屏](level-clear.md)三选一面。 - 载体:战斗结束覆盖层胜利形态(金蜡封)。 -- 呈现内容(2026-09-27 拍板面 + 迭代 10 扩):金蜡封 + 判定行 + 战利品行(GP 增量 + 总量;Boss/精英击杀追加**钥石增量行**——首杀/复杀档位读 meta.tres boss_keystone)+「下一节点」钮(明细回看入口已随 2026-10-04 P-C7 退役——冒险中回看归「生涯」)。 -- 数据锚:增量 = 战斗结束信号的掉落载荷;总量 = 关卡推进方 GP 现值(关卡推进方入账先于呈现连接——次序依赖在案,M-1 迭代 2 T5 接线)。 +- 呈现内容(2026-09-27 拍板):金蜡封 + 判定行 + 战利品行(GP 增量 + 总量;Boss/精英击杀追加**钥石增量行**——首杀/复杀档位读 meta.tres boss_keystone)+「下一节点」钮(无明细回看入口——冒险中回看归「生涯」)。 +- 数据锚:增量 = 战斗结束信号的掉落载荷;总量 = 关卡推进方 GP 现值(关卡推进方入账先于呈现连接——次序依赖在案)。 - 出口:「下一节点」→ 关卡画面选路(零自动推进)。 ## 冒险总结结算(冒险落幕面) - 触发:主角倒下(判负)/ 末关完成 / 玩家放弃——三结局同面(由冒险收束信号统一触发)。 -- 载体:与战斗面同一个战斗结束覆盖层(2026-09-29 迭代 6 T7 接线)——末关通关走胜利态开屏(金蜡封 +「本局 GP 入账 · 合计 N」行,GP 收束清零前的呈现侧影子账);倒下 / 放弃走失败态开屏(暮蓝)。无独立「冒险终局面板」实体,待办清单状态记录旧称随本条完成。 -- 呈现内容:冒险摘要五件事(定义归[冒险结构](../systems/冒险循环/冒险结构.md))+ 钥石写入明细(= 本局逐杀 Boss 掉落合计;消费归[元进度](../systems/跨局循环/元进度.md) 的冒险结算入账——迭代 10 起大奖励面不再产钥石)+ GP 合计行。 +- 载体:与战斗面同一个战斗结束覆盖层——末关通关走胜利态开屏(金蜡封 +「本局 GP 入账 · 合计 N」行,GP 收束清零前的呈现侧影子账);倒下 / 放弃走失败态开屏(暮蓝)。无独立「冒险终局面板」实体。 +- 呈现内容:冒险摘要五件事(定义归[冒险结构](../systems/冒险循环/冒险结构.md))+ 钥石写入明细(= 本局逐杀 Boss 掉落合计;消费归[元进度](../systems/跨局循环/元进度.md) 的冒险结算入账——大奖励面不产钥石)+ GP 合计行。 - 出口:确认 → 回存档首页。 ## 口径 -- **命名(2026-09-27 拍板文本口径)**:战斗总结结算 / 冒险总结结算。历史变体退役清单(正文一律改用正名):①「战斗结算画面」——battle.md 旧口径(待办清单归属行已判登记偏差);②「结算画面」单用——两义词(level-clear 语境=冒险面、battle 旧语境=战斗面),禁用;③「战斗胜利总结结算」——level-clear 与待办清单状态记录旧用四字变体;④「摘要结算画面」——冒险结构 旧称(冒险总结结算的摘要呈现位);⑤「冒险终局面板」——待办清单状态记录对同一 overlay 冒险面打开形态的俗称,无独立实体。待办清单现状段按其「措辞不改」体例保留历史原文,以本清单为命名准绳。 -- **GP / 钥石呈现分工**(battle.md OQ14 完成口径 + 迭代 10 扩):GP = 本 spec 战斗面(增量+总量)+ 关卡画面常驻总量;钥石 = 本 spec 战斗面(Boss/精英击杀增量行,迭代 10 起)+ 冒险面(收束明细)+ 营地存量。钥石多处并存系「进账时刻 / 收束明细 / 存量可用」不同义,不构成重复展示(level-clear.md OQ3 完成维持)。 +- **命名(2026-09-27 拍板文本口径)**:战斗总结结算 / 冒险总结结算。禁用变体:「结算画面」单用(两义词——level-clear 语境=冒险面、battle 语境=战斗面);「冒险终局面板」(无独立实体);「战斗结算画面」「战斗胜利总结结算」「摘要结算画面」。 +- **GP / 钥石呈现分工**:GP = 本 spec 战斗面(增量+总量)+ 关卡画面常驻总量;钥石 = 本 spec 战斗面(Boss/精英击杀增量行)+ 冒险面(收束明细)+ 营地存量。钥石多处并存系「进账时刻 / 收束明细 / 存量可用」不同义,不构成重复展示。 - **失败面不呈战利品**:冒险总结结算不呈现 GP 增量(倒下即终语义,失败侧恒不呈现)。 -- **禁重复展示**:本面不呈状态效果、不呈结算明细正文(明细回看 overlay 已随 P-C7 退役——冒险中明细回看归「生涯」)——[battle.md](battle.md) 信息归属两原则(循环限定 + 单一展示面)对面级呈现同样适用。 +- **禁重复展示**:本面不呈状态效果、不呈结算明细正文(冒险中明细回看归「生涯」)——[battle.md](battle.md) 信息归属两原则(循环限定 + 单一展示面)对面级呈现同样适用。 diff --git a/design/gdd/ux/shop.md b/design/gdd/ux/shop.md index 4e3853ed..dc984807 100644 --- a/design/gdd/ux/shop.md +++ b/design/gdd/ux/shop.md @@ -1,6 +1,6 @@ # 商店覆盖层 UX spec(shop) -> 状态:v1.1(现行) +> 状态:v1.2(现行) > 事实源:本 spec(呈现)+ 商店覆盖层(呈现件) > 机制权威:[关卡节点地图](../systems/冒险循环/关卡节点地图.md)(商店房编排:每关恰 1/Boss 前一位必经/兑付触发);定价数值归[难度曲线与Boss](../systems/冒险循环/难度曲线与Boss.md)(shop.tres,provisional) @@ -13,7 +13,7 @@ - 模态覆盖层(dim + 居中):标题「商店」/ GP 余额读数/ 令牌级货架卡(进店自共享池抽 3 张:显示名·效果·现价——六行池面含回复与专长凭证;买一件 = 池少一件、货架随即全架重抽)/ 购买按钮(余额不足禁用置灰——pattern 8 禁用态即理由)/ 刷新按钮(GP 付费刷新,价 = ceil(20×1.8^本次进店已付费刷) provisional,余额不足禁用)/ 离开按钮。 - 购买意图经组合根转发(pool 模式载荷 = kind_id);成功后货架整架重建(买 1 全重抽反馈)。刷新意图经组合根转交商店呈现件受理。 - 离开 → 关卡画面兑付确认回选路(零自动推进)。 -- 刷新与货架口径(2026-10-04 P-C2+Q2 裁决,SR-1 落码):基础免费 0 次 + GP 付费刷新 + 池源同源(与三选一同一令牌库本)——原「无独立刷新、全陈列」裁决随该批被推翻;天赋侧「刷新次数」增益预留 free_count 位(待办清单登记条在册)。 +- 刷新与货架口径(2026-10-04 裁决):基础免费 0 次 + GP 付费刷新 + 池源同源(与三选一同一令牌库本);天赋侧「刷新次数」增益预留 free_count 位(待办清单登记条在册)。 ## 口径 diff --git a/design/gdd/术语表.md b/design/gdd/术语表.md index db2967b5..fb63daa8 100644 --- a/design/gdd/术语表.md +++ b/design/gdd/术语表.md @@ -51,7 +51,7 @@ | 秘宝匣 | 营地功能界面之一(场景图里点**宝箱**进入):秘宝的解锁(钥石购买/条件解锁)与同调装配面 | | 主动件 / 被动件 | 需要花充能主动使用的秘宝 / 装配后整局持续生效的秘宝 | | 自动兑付 | 无使用动作的秘宝效果兑付形态:满足条件(如试炼镐每开 8 个安全格)自动生效,无玩家发起入口(2026-10-12 用户裁——原「积点兑换钮」手动形态退役) | -| 真视使用计数 | 真视类工具累计使用次数的生涯终身计数(存档域 `vision_used`)——信标网络的解锁行为条件(2026-10-12 迭代 22 新增) | +| 真视使用计数 | 真视类工具累计使用次数的生涯终身计数(存档域 `vision_used`)——信标网络的解锁行为条件 | | 充能 | 主动件的使用次数账:每冒险开局满额(或按使用代价形态重置),用完即不可用 | | 操作包络 | 玩家可执行的操作的范围与效率——视野/行动点/刷新/挖掘距离/转存率等(秘宝只加强它,不出战斗属性值) | | 效果格 / 代价格 | 秘宝设计骨架的两个轴:件改变玩家什么(信息/行动资源/操作能力)× 件怎么限制(获取/使用/装配代价)(见[秘宝](systems/跨局循环/秘宝.md)设计骨架) | @@ -67,7 +67,7 @@ | 魔法护甲 | 三型甲之一(= 现役甲域 ward,基础 AC 最低、被普通攻击克);「魔法甲」系笔误、非别名,不单独登记 | | 并联双通道 | 待解锁路线的解锁结构:练满前一档 **OR** 一次性解锁价,两通道互不影响、玩家自选其一、不设串联门槛 | | 出场选择 | 一次冒险 = 一个武器类型 + 一个甲型;营地内免费切换、冒险开始后锁死 | -| 路线 id / 存档域键名 | 锻造工坊实现层词汇(非玩家可见,2026-10-13 迭代 23 反哺落文登记):六路线 id = sword/spear/staff/light/heavy/ward(甲路线 id = 甲型值本身);存档域 `forge_routes = {levels〔六路线等级〕, unlocked〔直购解锁清单〕, weapon/armor〔当前选中〕}`——初始持有与练满前一档为派生解锁不落档(派生单点 = 解锁判定) | +| 路线 id / 存档域键名 | 锻造工坊实现层词汇(非玩家可见):六路线 id = sword/spear/staff/light/heavy/ward(甲路线 id = 甲型值本身);存档域 `forge_routes = {levels〔六路线等级〕, unlocked〔直购解锁清单〕, weapon/armor〔当前选中〕}`——初始持有与练满前一档为派生解锁不落档(派生单点 = 解锁判定) | ## 道具体系 @@ -96,8 +96,8 @@ |---|---| | 效果端口件 | 战斗业务类(伤害管线/行动经济)唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批——业务类零引擎直连(机制归属见架构文档「战斗编排域拆件定稿」节轴戊;实现类 EffectPort) | | 掷格件 | 装配期格面资源摇号的承载件:池行装配、区间行 roll、权重合成(偏运硬币/board_skew 两路投影);受理账面留守地图战斗资源件(机制归属同上;实现类 RewardRoller) | -| `seal_missed` | 封印落空事件(旧名已换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定(迭代 31 卡② 落地) | -| `forgive_seal_miss` | 本场首次封印落空豁免——专长「完美保险」的效果类型,`domain=battle` 首例;有效误标=误标总数 − 豁免数,豁免不改写误标账(迭代 31 卡② 落地) | +| `seal_missed` | 封印落空事件(旧名已换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定 | +| `forgive_seal_miss` | 本场首次封印落空豁免——专长「完美保险」的效果类型,`domain=battle` 首例;有效误标=误标总数 − 豁免数,豁免不改写误标账 | ## 美术表现 @@ -151,7 +151,7 @@ 1. **历史文本**:git 提交说明、裁决记录中引用用户原话的句子——保留原用词,不按 A 表追改。 2. **对照性文本**:「退役词对照」表本身、「原 ××」式更名记载、禁令引举句——旧词在这些位置是内容本身,不是残留。 3. **玩家可见专名与机制词**:按「对外命名纪律」节与各系统文档现行用语使用(标中/踩雷等机制词在文档内部照常用)。 -4. **被检查的禁字不算使用**:守卫里作为检查对象的禁字字面量——核心层检字断言所检查的禁字本身、呈现层字形集负探针、`game/data/tables/feats.tres` 头注的「desc 禁『雷/旗』字面」、用语审计闸的退役词表定义行——不属换代范围:被检查的字不是对该字的使用,改写等于自毁守卫。术语清扫的复扫口径按 **game/ 全部文件类型、不排除任何扩展名**执行(迭代 31 卡① 实测:金币/插旗/雷格/惩罚格/`flag` 均 0 命中,残留仅为上述保留面)。 +4. **被检查的禁字不算使用**:守卫里作为检查对象的禁字字面量——核心层检字断言所检查的禁字本身、呈现层字形集负探针、`game/data/tables/feats.tres` 头注的「desc 禁『雷/旗』字面」、用语审计闸的退役词表定义行——不属换代范围:被检查的字不是对该字的使用,改写等于自毁守卫。术语清扫的复扫口径按 **game/ 全部文件类型、不排除任何扩展名**执行(复扫实测:金币/插旗/雷格/惩罚格/`flag` 均 0 命中,残留仅为上述保留面)。 存量口径:A 表生效前已入库的正文不做强制清扫;文件后续被批次触碰时,顺带按 A 表换代。 @@ -170,7 +170,7 @@ | 金币 | GP(2026-10-18 用户裁:GP 是唯一正式命名,「金币」系 AI 噪音全库禁用) | | 插旗 | 封印(2026-10-18 用户裁:封印=正式动作名,全库统一,非比喻非「对外表达」别名) | | 旗(游戏概念语境) | 封印印记(2026-10-18 用户裁:「旗」概念不存在——封印动作落下的印记称封印印记) | -| flag_*(代码契约键/标识符) | seal_*(2026-10-18 用户裁全族换代;迭代 31 卡① 已清零) | +| flag_*(代码契约键/标识符) | seal_*(2026-10-18 用户裁全族换代,已清零) | | 系统级断言套件 / 冒烟全量 | 系统测试(2026-10-22 用户裁——标准四级测试层之一:启动真实工程走真实玩法路径的断言面;依据=提案正文 §二)(《提案-测试术语与层级重构方案》已退役,考古=git 历史——删除批与删除前全稿均可在其中查得) | | 单元套件 | 单元测试(2026-10-22 用户裁——标准四级测试层之一,「套件」单独成词非必要) | | 启动探针 / 秒级冒烟探针 / L0–L3 | 冒烟测试(2026-10-22 用户裁——极小启动场景:能否启动、能否加载表、能否进主屏,零逻辑判定) | diff --git a/game/README.md b/game/README.md index 4ce89c8d..1bba0bf8 100644 --- a/game/README.md +++ b/game/README.md @@ -4,18 +4,17 @@ > // Validation Question(v2,2026-09-11):线性第一关(战×2→道具→战×2→恢复→Boss)能否承载 > // "数值提升→冒险成功期望改善"的 Roguelike 元进度验证——基线属性应该难到打不过、天赋数值提升把 > // 冒险成功期望拉回可玩带,且这条曲线能用数值调整板 + 批量模拟**测量出来** -> // (冒险成功攻击期望 / 败北血量数学期望);v1 的单战斗循环问题(逐行归因 P2 / Core headless 可跑) -> // 已于 2026-09-10 验证并保持回归(初版断言面 46 项,后并迁系统测试宿主,沿革查 git log)。 -> // Date: 2026-09-10(v1)· 2026-09-11(v2 关卡扩展)· 引擎 Godot 4.7.2 · 本目录仅作设计验证参考,禁止 import 进生产代码 +> // (冒险成功攻击期望 / 败北血量数学期望);v1 的单战斗循环问题(逐行归因 P2 / Core headless 可跑)。 +> // Date: 2026-09-11(v2 关卡扩展)· 引擎 Godot 4.7.2 · 本目录仅作设计验证参考,禁止 import 进生产代码 ## 运行 1. 用 Godot 4.7.2 打开本目录(含 `project.godot` 的文件夹) 2. 按 F5 运行(主场景 `presentation/main.tscn`) -3. **主入口:`▶ 开始冒险(三关连探:地精洞窟 → 幽暗地域 → 灰矮人矿城)`**——一条命走完三关(冒险结构实现批 2026-09-21:生命/GP/加算区跨关同账、非末关的关卡完成发大奖励〔上限提升+血回满+钥石〕、任意战斗倒下冒险终、结算屏出冒险摘要五件事;选路停点可「放弃冒险」(同失败结算,2026-09-21 用户拍板补入口));首关节点链:战→战→赏→战→战→疗→王。唯一试玩入口 = 完整冒险——单关测试直入口(L2/L3)已退役(2026-09-23 用户拍板) -4. 调试浮窗(功能面:攻击/生命百分比加成〔模拟天赋树解锁〕+ 批量模拟〔输出关卡完成率/承伤期望/败北节点分布〕+ 两层调试入口;2026-10-04 迭代 14.5 调试整合批三散件收一)——发布态入口恒隐(2026-10-25 删写死行批:调试角标不显示、浮窗无 UI 开启口;开发期临时启用改 `_debug_entry` 缺省本地不提交),浮窗体系整体退役属发布工程批 +3. **主入口:`▶ 开始冒险(三关连探:地精洞窟 → 幽暗地域 → 灰矮人矿城)`**——一条命走完三关(生命/GP/加算区跨关同账、非末关的关卡完成发大奖励〔上限提升+血回满+钥石〕、任意战斗倒下冒险终、结算屏出冒险摘要五件事;选路停点可「放弃冒险」(同失败结算));首关节点链:战→战→赏→战→战→疗→王。唯一试玩入口 = 完整冒险——单关测试直入口(L2/L3)已退役(2026-09-23 用户拍板) +4. 调试浮窗(功能面:攻击/生命百分比加成〔模拟天赋树解锁〕+ 批量模拟〔输出关卡完成率/承伤期望/败北节点分布〕+ 两层调试入口)——发布态入口恒隐(调试角标不显示、浮窗无 UI 开启口;开发期临时启用改 `_debug_entry` 缺省本地不提交),浮窗体系整体退役属发布工程批 -headless 冒烟(752 项断言〔计数随批增长,现值以最新批末闸读数为准〕,含关卡线性推进/满配冒险成功/裸装败北/回放确定性;2026-10-02 性能报告实测 60.55 秒,报告在 `性能实测报告(已退役,git 历史可查)`): +headless 冒烟(断言计数随断言面增减浮动,以当次跑测打印为准,含关卡线性推进/满配冒险成功/裸装败北/回放确定性): ``` Godot_v4.7.2-stable_win64_console.exe --headless --path . --script res://probe/smoke_all.gd @@ -27,7 +26,7 @@ Godot_v4.7.2-stable_win64_console.exe --headless --path . --script res://probe/s Godot_v4.7.2-stable_win64_console.exe --headless --path . res://probe/ui_probe.tscn ``` -调试浮窗场景探针(缺陷⑤回归载体沿袭——2026-10-04 迭代 14.5 随批改接浮窗形态:打开可见性〔浮于菜单之上,开始层不隐藏〕/滑条联动/应用写表/重置/批量模拟全链路): +调试浮窗场景探针(打开可见性〔浮于菜单之上,开始层不隐藏〕/滑条联动/应用写表/重置/批量模拟全链路): ``` Godot_v4.7.2-stable_win64_console.exe --headless --path . res://probe/ui_tune_probe.tscn @@ -41,21 +40,17 @@ Godot_v4.7.2-stable_win64_console.exe --headless --path . res://probe/ui_tune_pr Godot_v4.7.2-stable_win64_console.exe --headless --path . --script res://sim/adventure_monte_carlo.gd -- [N] [seed0] ``` -(原关卡期望扫描 level_monte_carlo.gd 走单关直入口口径——满血零上下文进关与真实冒险脱节,随口径退役删除,2026-09-23 用户拍板。) - -(原可选类供给跨种子扫描 supply_scan.gd 随可选类道具/库存/供给控制器整体删除而退役——2026-09-15 格面资源批,扫描对象已不存在。) - **日志合规(2026-09-12 用户要求)**:任何模拟运行与真人试玩均落全量 JSONL(user://logs/)——逐操作(op/cell/accepted/round)、逐结算明细行、轮次状态快照、battle_end、level_end。模拟(verifier/adventure_monte_carlo / 调试浮窗批量模拟)一文件多局,run 行携带种子/档位切分局次。 -**试玩画像口径(2026-09-19 用户拍板固化——全项目试玩/扫描/面板模拟一律只用以下两档,随机策略口径退役)**:`policy="normal"` = **普通画像·基础定式**(单数字满足规则——满足即标/满足即开,无处可推盲挖边界格、不刷新;教学后正常玩家的下限近似);`policy="perfect"` = **完美画像**(single+subset 全推理零盲挖/卡死刷新——技能上界仪)。实现单一出口 = `sim/auto_player.gd`(novice_action / perfect_action)经 `sim/level_autoplay.gd`,调试浮窗批量模拟与各扫描工具自动同口径;战斗层冒烟夹具与调试转储的 `choose_dig` 直调是机制测试夹具、不承载画像语义。分级依据与新旧读数(乱点 0%/5% → 基础定式 65%/90%)见 auto_player.gd 普通策略档节与台账 77。 +**试玩画像口径(2026-09-19 用户拍板固化——全项目试玩/扫描/面板模拟一律只用以下两档,随机策略口径退役)**:`policy="normal"` = **普通画像·基础定式**(单数字满足规则——满足即标/满足即开,无处可推盲挖边界格、不刷新;教学后正常玩家的下限近似);`policy="perfect"` = **完美画像**(single+subset 全推理零盲挖/卡死刷新——技能上界仪)。实现单一出口 = `sim/auto_player.gd`(novice_action / perfect_action)经 `sim/level_autoplay.gd`,调试浮窗批量模拟与各扫描工具自动同口径;战斗层冒烟夹具与调试转储的 `choose_dig` 直调是机制测试夹具、不承载画像语义。分级依据见 auto_player.gd 普通策略档节。 -单关诊断工具(level_debug.gd)随单关直入口口径退役(2026-09-23)——败退归因走 balance_verifier 冒险段(层/节点/敌人人读归因)。 +败退归因走 balance_verifier 冒险段(层/节点/敌人人读归因)。 战斗级工具(v1 遗产):`dump_battle.gd`(结算流水)/ `monte_carlo.gd`(战斗期望)。 ## 范围(v1 范围 + v2 追加,用户 2026-09-10/11 确认) - **v1 在范围内**:D2(10 表 + ConfigDB + RngService)· A1(single_subset 求解器 + 双判据验收)· A2 · A3(AP8/RAP)· A4(迷雾,L2)· B1(七段结算 + 13 类行协议 + 高光双落)· B2(grub/ambusher/伏击池 cap4)· B3(四行状态容器)· B4(install 预分配/F5 保底/道具窗口)· D1-lite 程序化呈现 -- **v2 追加**:LevelTable(线性节点链数据表)· C1-lite 关卡推进器 `level_runner.gd`(原 c1_level_runner,2026-09-11 领域命名批更名)(关卡域生命周期:共享 B4 关内延续 + HP 跨战斗携带 + 奖励/恢复节点兑付 + 关卡末清库)· Boss 遭遇行(Dmax=4)· 节点奖励 API(B4 `grant_node_active`)· **测试用角色数值调整板**(atk%/hp% 覆盖 + 批量模拟,模拟天赋树——正式侧归 C4) -- **裁剪不变**:A5 / C1 路径分支选择(用户拍板线性)· C2–C4 / B5 战斗动画 / D3–D6 / A1 黄金向量与 F4 批量工具 / gdUnit · 注:标错惩罚(原 A2 OQ1)已于 2026-09-12 批上线(标空封印三选一确定性反噬:暴走 / 伏击 +2 层 / 失衡,坐标×板序号派生、不走随机流),本批(2026-09-15)已收编进现行文档,不再属裁剪项 +- **v2 追加**:LevelTable(线性节点链数据表)· C1-lite 关卡推进器 `level_runner.gd`(关卡域生命周期:共享 B4 关内延续 + HP 跨战斗携带 + 奖励/恢复节点兑付 + 关卡末清库)· Boss 遭遇行(Dmax=4)· 节点奖励 API(B4 `grant_node_active`)· **测试用角色数值调整板**(atk%/hp% 覆盖 + 批量模拟,模拟天赋树——正式侧归 C4) +- **裁剪不变**:A5 / C1 路径分支选择(用户拍板线性)· C2–C4 / B5 战斗动画 / D3–D6 / A1 黄金向量与 F4 批量工具 / gdUnit · 注:标错惩罚(原 A2 OQ1)已实装(标空封印三选一确定性反噬:暴走 / 伏击 +2 层 / 失衡,坐标×板序号派生、不走随机流),不再属裁剪项 > 历次批次的改动明细与决策过程见 git 提交史(`git log -- game/README.md` 及各批提交信息),本文只保留运行说明与范围。 diff --git a/game/assets/theme/README.md b/game/assets/theme/README.md index ba05f684..154ee7e4 100644 --- a/game/assets/theme/README.md +++ b/game/assets/theme/README.md @@ -1,11 +1,11 @@ -# game/assets/theme/ —— UI 全局主题资源(迭代 25 · UI 全局主题批) +# game/assets/theme/ —— UI 全局主题资源 - 主文件:`main_theme.tres`(Godot 4 Theme 资源,挂 `project.godot` 的 `gui/theme/custom`) - 生成脚本:`tools/gen_theme_icons.py`(可重跑,幂等)→ 小位图落 `../art/ui/gen/` -- 依据:UI全局主题批(迭代 25)v1.2(2026-10-13;卡片已按「吸收即死」退役,git 历史可考) +- 依据:UI 全局主题 v1.2(git 历史可考) 本目录不含内联注释(.tres 注释语法不赌),全部溯源信息以本表为准。**色值一律取自 -`game/presentation/views/ui_kit.gd` 既有常量,零新增色值**(迭代 25 契约:不新增美术素材)。 +`game/presentation/views/ui_kit.gd` 既有常量,零新增色值**(现行契约:不新增美术素材)。 ## 色值溯源表(字面量 ↔ ui_kit 常量) @@ -41,7 +41,7 @@ | LineEdit | normal / font_color / font_placeholder_color | StyleBoxFlat + 色词条(**占位色词条名 = `font_placeholder_color`**,4.7.2 实证;`font_color_placeholder` 不存在) | | SpinBox | updown / up·down_background_hovered·pressed | **Godot 4 SpinBox 走 `updown` 合并图标槽**(定义了它就不再画 up/down 分件,引擎源码实证);hover/pressed 箭头底默认主题可见,按白名单#5 覆盖 | | HSeparator / VSeparator | separator | StyleBoxLine(PANEL_BORDER α0.6 单线,1px) | -| CheckBox / CheckButton | unchecked / checked / unchecked_disabled / checked_disabled | **两类共用同一套图标名**(checked/unchecked,4.7.2 源码实证——卡片 v1.2 注③「CheckButton 用 on/off」不成立,已按引擎事实落位并呈报追认) | +| CheckBox / CheckButton | unchecked / checked / unchecked_disabled / checked_disabled | **两类共用同一套图标名**(checked/unchecked,4.7.2 源码实证) | | OptionButton | normal / hover / pressed / disabled / font_* / arrow | button_stone 九宫格(8px 边距,同 _apply_button_skin 观感)+ INK 字 + 生成箭头 | | PopupMenu | panel / hover / font_color / font_hover_color / font_size | StyleBoxFlat(预盖件,含弹层) | @@ -53,7 +53,7 @@ Godot 4.7.2 导入参数已无逐贴图 filter 标志(现存 art/ui/*.import 实证),小位图均为原生尺寸消费,无滤波伪影。 - default_font_size **未设**(全站字号走 UiKit.FS_* 逐实例 override)。 -## 专项观察点(v1.2 增补,归用户目检) +## 专项观察点(归用户目检) 1. 滑轨柄 CANDLE 色是否比「关闭」按钮抢眼(违反焦点预算嫌疑)——若是走 L2 微调(候选 STONE 灰石系)。 2. 滚动条槽 BG_OVERLAY α0.35 叠 BG_ROOT 上是否可见——若否走 L2 微调(候选提不透明度或 SLOT_BACKDROP #3E362C)。 diff --git a/game/tests/README.md b/game/tests/README.md index 557261e5..5721225e 100644 --- a/game/tests/README.md +++ b/game/tests/README.md @@ -3,7 +3,7 @@ **Engine**: Godot 4.7.2-stable(GDScript 单语言) **Test Framework**: 标准四级测试层(冒烟/单元/集成/系统)+ headless 场景探针与渲染 golden;gdUnit4 **deferred**(D2 OQ1 关闭形态——本仓库不引第三方测试框架,需求见下「门禁」节) **门禁**: 本地闸——`tools/run_all_gates.sh`(收口唯一验收入口,按改动域选档 `--code`/`--docs`,跨两域或改闸件本身不带参数=全量;代码域 02 按关联档选套件,算法与套件族映射表只在脚本内定义)。本仓库**无远端、无 CI**(`.github/workflows/` 已删除,不建不留不参考);闸清单与域划分只在本脚本定义,文档不另列 -**Setup date**: 2026-09-12(2026-09-27 `7f24b640` 三层收敛:根 tests/ 并入 `game/tests/`、docs 并入 `design/engineering/`、production 解散) +**Setup date**: 2026-09-12 **参考实现**: `game/probe/`(场景探针族)· `game/sim/`(测量/诊断/模拟驱动件)(场景探针族——正式工程的活样板;系统测试断言面过渡宿主 `smoke_all.gd` 亦在此,迁移归断言迁移批) 本手册是测试面每件工具的介绍处:**它是什么、判什么、怎么单独跑、结果由谁判、什么时候会用它**。 @@ -35,16 +35,16 @@ tests/ | **系统测试** | 启动真实工程走真实玩法路径 | 过渡期 `game/probe/smoke_all.gd`(断言迁移批后=`tests/system_test.gd`) | `run_system_test.py`(闸 01) | | **UI 探针+渲染 golden** | 跑起来之后 UI 与场景切换对不对;画面基线 | `game/probe/*.tscn` 探针 | `probe_gate.sh`(闸 03)、`render_gate.sh`(闸 05) | -> **integration/ 已建承载**(迭代 29 T3——此前只有章程句无实体,空壳曾于迭代 19 卡① T4 删过一次)。 +> **integration/ 已建承载**。 > 首个集成用例 = `save_rng_roundtrip_test.gd`(存档⇄RNG 快照往返)。章程登记的四类集成用例里, > Core-Core 与 A1×A2 端到端仍随属主批增量登记;各 GDD 登记的 deferral 集成用例以对侧登记为生效条件。 > > **分层判据**:能不能在 `--script` 模式下不加载 autoload 就验完?能 = 单元测试; > 需要两个以上真实系统协同并走落盘/落库 = 集成测试;需要完整项目引导与场景树 = 冒烟/系统/UI 探针。 -**能力清单**(2026-10-28 立,2026-10-29 改版定稿——验证与清单体系整改的能力义务清单:一行=一个玩家或系统可观测的能力,只宣布「要验证什么」,不记「是否已验证/是否跑过」;定位=实现指导+阅读导航+义务声明,代表用例只给指针、不复制断言细节;原「集成旅程清单」五条跨系统旅程已并入本表。七段=核心四域+排雷循环+表现与支撑+数据配置与跨系统契约,行数随清单生长不在此记账;系统文档逐篇对照见下方「覆盖域表」): +**能力清单**(能力义务清单:一行=一个玩家或系统可观测的能力,只宣布「要验证什么」,不记「是否已验证/是否跑过」;定位=实现指导+阅读导航+义务声明,代表用例只给指针、不复制断言细节。七段=核心四域+排雷循环+表现与支撑+数据配置与跨系统契约,行数随清单生长不在此记账;系统文档逐篇对照见下方「覆盖域表」): -> **与验证集清单的关系**:`tests/验证集清单.md` 已于「存量断言精简」阶段完成后删除(对账基准与结果留 git 历史)。本表是该清单退役后的唯一能力义务清单(维护锚=test-conventions §8.3 清单归属+§8.9 三层模型)。本表不是闸,不替代改动—验收对照表、体验验证清单与静态纪律;已落地行的唯一事实源是 `game/tests/` 下的测试代码,计划中的行由需求卡片锚定(见维护规则)。 +> **本表地位**:本表是唯一能力义务清单(维护锚=test-conventions §8.3 清单归属+§8.9 三层模型)。本表不是闸,不替代改动—验收对照表、体验验证清单与静态纪律;已落地行的唯一事实源是 `game/tests/` 下的测试代码,计划中的行由需求卡片锚定(见维护规则)。 > > **代表用例口径**:写 `文件:函数`,每行 1–3 个;函数内可含 `Kit.check_quiet` 静默通道(逐断言提取器口径外,test-conventions §5.2 已备案)——本表以函数为锚,不受该工具局限影响。计划中的用例=卡内定死的测试名,实现落地后转为代码实锚(机检双通道:代码在或卡在,test-conventions §8.9)。 > @@ -74,7 +74,7 @@ tests/ | 专长(奇物)授予与凭证保底 | 奇物 | `AdventureRunner.present_node_curio()`/`feats_held()` × 效果引擎兑付 | `adventure_feats_test.gd:_smoke_feats`;`feat_vouchers_test.gd:_init` | | 节点图生成合法性与同种子复现 | 关卡节点图生成 | `NodeMapGenerator.generate()`/`validate_output()` | `node_map_generator_test.gd:_test_output_ok`;`node_map_generator_test.gd:_test_reproducible`;`node_map_generator_test.gd:_test_exit_structure` | | 节点图生长递增与无解 fail-fast | 关卡节点图生成 | `NodeMapGenerator.generate()`/`is_fatal()` | `node_map_growth_test.gd:_test_growth`;`node_map_growth_test.gd:_test_fatal_subprocess` | -| 节点图参数读表与域单点(三参数驱动产物/生成器侧可行性保留) | 关卡节点图生成 | `NodeMapGenerator.generate()`/`LevelGenParams.validate()` | `node_map_generator_test.gd:_test_gen_params_table_driven`〔架构整改 V6〕;`table_structure_guard_test.gd:_test_level_gen_new_fields`〔架构整改 V7〕 | +| 节点图参数读表与域单点(三参数驱动产物/生成器侧可行性保留) | 关卡节点图生成 | `NodeMapGenerator.generate()`/`LevelGenParams.validate()` | `node_map_generator_test.gd:_test_gen_params_table_driven`;`table_structure_guard_test.gd:_test_level_gen_new_fields` | | 起关/选路/断点重生成同图(集成) | 关卡节点地图×关卡节点图生成×冒险结构 | `LevelRunner.start_level()`/`start_level_external()`/`pick_next_node()`;`AdventureRunner.resume_adventure()` | `node_map_determinism_test.gd:_smoke_generated_map_determinism` | | 信息迷雾类型可见性 | 关卡节点地图 | `LevelRunner.type_visible_ids()` | `level_map_type_vis_test.gd:_test_layer_distance`;`level_map_type_vis_test.gd:_test_boss_exempt`;`level_map_type_vis_test.gd:_test_resume_rebuild` | | 关卡表消费侧校验与关卡推进 | 关卡节点地图×数据配置 | `LevelTable.validate_graph()`;`LevelRunner.start_level()` | `level_table_validate_test.gd:_test_positive`;`level_table_validate_test.gd:_test_negative`;`level_shop_economy_test.gd:_smoke_level` | @@ -85,12 +85,12 @@ tests/ |---|---|---|---| | 伤害公式与掷点乘区 | 战斗结算 | `DamageMath.pool_damage()`/`roll_discount_percent()`/`rolled_component()` | `damage_math_test.gd:_test_pool_damage`;`damage_math_test.gd:_test_roll_discount_percent`;`roll_multiplier_test.gd:_smoke_armor_roll` | | 伤害单据编排与回放 | 战斗结算 | `DamageController.submit()`/`open_ticket()`/`flush()` | `damage_controller_test.gd:_run_recipe_sequence`;`damage_controller_test.gd:_test_five_recipes_and_replay` | -| 效果发射端口单点 | 战斗结算 | `BattleOrchestrator.begin_battle()`(真实装配链端口接线+合成行闭面守卫经 `DamageController.flush_submit()` 承伤路径) | `effect_port_test.gd:_smoke_effect_port_wiring`;`effect_port_test.gd:_test_business_classes_engine_free`;`effect_port_test.gd:_test_biz_fact_face_closed`〔效果端口与掷格分件批 V1/V2/V3〕 | +| 效果发射端口单点 | 战斗结算 | `BattleOrchestrator.begin_battle()`(真实装配链端口接线+合成行闭面守卫经 `DamageController.flush_submit()` 承伤路径) | `effect_port_test.gd:_smoke_effect_port_wiring`;`effect_port_test.gd:_test_business_classes_engine_free`;`effect_port_test.gd:_test_biz_fact_face_closed` | | 轮内流与结算五段全序 | 战斗结算 | `BattleOrchestrator.begin_battle()` | `round_flow_skill_pool_test.gd:_smoke_full_battle`;`round_flow_skill_pool_test.gd:_smoke_settlement_segments` | | 技能池数据面与回放独立 | 敌人系统 | `BattleOrchestrator.begin_battle()`(技能池抽号/校验) | `round_flow_skill_pool_test.gd:_smoke_skill_pool_data`;`round_flow_skill_pool_test.gd:_smoke_skill_pool_replay_independence` | | Boss 半血解锁技门控 | 敌人系统 | `BattleOrchestrator.begin_battle()`(Boss 行) | `skill_unlock_test.gd:_test_gate_predicate`;`skill_unlock_test.gd:_test_latch_irreversible` | | 封印与极性路由/不可逆 | 地图战斗资源×战斗结算 | 效果引擎 × `BattleOrchestrator.begin_battle()` | `seal_polarity_test.gd:_smoke_seal_ap_exhausted`;`seal_polarity_test.gd:_smoke_seal_irreversible_quadrants`;`seal_polarity_test.gd:_smoke_polarity_routing` | -| 变异布置门控 | 地形变异 | `BattleOrchestrator.begin_battle()`(变异布置段) | `variant_placement_test.gd:_smoke_variant_placement`;`variant_placement_test.gd:_smoke_global_variant`;`variant_placement_test.gd:_test_pack_min_from_table`〔架构整改 V10〕 | +| 变异布置门控 | 地形变异 | `BattleOrchestrator.begin_battle()`(变异布置段) | `variant_placement_test.gd:_smoke_variant_placement`;`variant_placement_test.gd:_smoke_global_variant`;`variant_placement_test.gd:_test_pack_min_from_table` | **旅程段四:奖励、经济与局外成长** @@ -98,26 +98,26 @@ tests/ |---|---|---|---| | 清图奖励双份与零路径 | 地图战斗资源 | `BattleOrchestrator.begin_battle()` → 步骤流行(`source_class=clear_reward`) | `seal_polarity_test.gd:_smoke_clear_reward_chain`;`seal_polarity_test.gd:_smoke_clear_reward_zero_paths` | | 奖励三选一候选/刷新付费/呈现 | 奇物×节点奖励屏 | `AdventureRunner.present_node_curio()`(数据面);奖励节点覆盖层场景(呈现面) | `curio_refresh_paid_test.gd:_init`;`reward_overlay_test.gd:_run` | -| GP 钱包/escrow/商店收口/共享池 | 地图战斗资源×商店 | `LevelRunner.shop.buy_product()`/`shop.player_request_refresh()`/`LevelRunner.close_wallet()`/`shop.set_shop_pool()` | `level_shop_economy_test.gd:_smoke_gp_wallet`;`level_shop_economy_test.gd:_smoke_shop_room`;`level_shop_economy_test.gd:_smoke_shop_pool`;`level_shop_economy_test.gd:_test_spend_discount_from_rule_key`〔架构整改 V2〕 | -| 货架位数读表(进店与重抽同源) | 商店 | `ShopSession.shop_shelf()`(货架构建与重抽同源面) | `level_shop_economy_test.gd:_test_shelf_size_from_table`〔架构整改 V9〕 | +| GP 钱包/escrow/商店收口/共享池 | 地图战斗资源×商店 | `LevelRunner.shop.buy_product()`/`shop.player_request_refresh()`/`LevelRunner.close_wallet()`/`shop.set_shop_pool()` | `level_shop_economy_test.gd:_smoke_gp_wallet`;`level_shop_economy_test.gd:_smoke_shop_room`;`level_shop_economy_test.gd:_smoke_shop_pool`;`level_shop_economy_test.gd:_test_spend_discount_from_rule_key` | +| 货架位数读表(进店与重抽同源) | 商店 | `ShopSession.shop_shelf()`(货架构建与重抽同源面) | `level_shop_economy_test.gd:_test_shelf_size_from_table` | | 元进度入账与锻造两轴 | 元进度×锻造工坊 | `MetaStateStore.apply_adventure_summary()`/`MetaStateStore.spend_keystone()`/`MetaStateStore.set_forge_route_level()` | `meta_progression_forge_test.gd:_meta_pricing_and_buy`;`meta_progression_forge_test.gd:_smoke_forge_axes` | | 锻造定价与购买闭环(全路线价格梯/多级购买扣款/拒购零副作用) | 锻造工坊 | `ForgeTable.level_price()`/`MetaProgression.forge_buy_level()` | `forge_table_test.gd:_test_price_ladder`;`meta_progression_forge_test.gd:_meta_pricing_and_buy`;`meta_progression_forge_test.gd:_test_forge_buy_reject` | | 锻造与相邻通道隔离(祝福件购买锻造零变化/默认轴与钥匙解耦/甲型切换双轴可感) | 锻造工坊×元进度 | `MetaProgression.forge_select()`/`hero_type_axes()`/商店购买口 | `meta_progression_forge_test.gd:_test_blessing_no_forge_leak`;`meta_progression_forge_test.gd:_test_default_axes_pre_key`;`meta_progression_forge_test.gd:_test_armor_switch_dual_axes` | | 天赋树购买与六键合成 | 天赋树 | `MetaProgression.tree_buy()`/`MetaStateStore.tree_state()`/`MetaStateStore.set_tree_level()` | `meta_progression_forge_test.gd:_smoke_tree`;`meta_progression_forge_test.gd:_smoke_tree_rules`;`tree_rules_v11_test.gd:_init` | -| 规则键参数读表(六键参数字典校验与激活侧透传) | 天赋树 | `MetaTreeTable.validate()`/`EffectEngine.rebuild()`/`MetaProgression.tree_rules()` | `tree_rules_v11_test.gd:_test_rule_key_params`〔架构整改 V1〕 | +| 规则键参数读表(六键参数字典校验与激活侧透传) | 天赋树 | `MetaTreeTable.validate()`/`EffectEngine.rebuild()`/`MetaProgression.tree_rules()` | `tree_rules_v11_test.gd:_test_rule_key_params` | | 秘宝结构冻结与 12 件效果 | 秘宝 | `TreasureItems.add_item()`/`query_inventory()`/`validate_use()` | `treasure_items_test.gd:_init`;`treasure_effects_test.gd:_init` | **旅程段五:排雷循环** | 能力 | 系统 | 真实入口 | 代表用例(文件:函数) | |---|---|---|---| -| 棋盘按参数行出图、数字恒真 | 棋盘生成 | `BoardGenerator.generate()` | `board_generator_test.gd:_test_generate_shape_and_mines`;`board_generator_test.gd:_test_digits_equal_neighbor_mine_count`;`board_generator_test.gd:_test_spawn_edge_from_table`〔架构整改 V8〕 | -| 出生区边长表单点(布雷域基/R₀ 下限/剃雷域半径全由 spawn_edge 导出) | 棋盘生成 | `BoardGenerator.generate()`/`BoardGenTable.validate()` | `board_generator_test.gd:_test_spawn_edge_from_table`〔架构整改 V8〕 | +| 棋盘按参数行出图、数字恒真 | 棋盘生成 | `BoardGenerator.generate()` | `board_generator_test.gd:_test_generate_shape_and_mines`;`board_generator_test.gd:_test_digits_equal_neighbor_mine_count`;`board_generator_test.gd:_test_spawn_edge_from_table` | +| 出生区边长表单点(布雷域基/R₀ 下限/剃雷域半径全由 spawn_edge 导出) | 棋盘生成 | `BoardGenerator.generate()`/`BoardGenTable.validate()` | `board_generator_test.gd:_test_spawn_edge_from_table` | | 同参数同种子逐位复现、异种子不退化 | 棋盘生成 | `BoardGenerator.generate()` | `board_generator_test.gd:_test_same_seed_bit_identical`;`board_gen_reward_test.gd:_smoke_board_generator` | | 可推理率与清图可达(合法性先于质量分)、重试有界、降级诚实 | 棋盘生成 | `BoardGenerator.measure_inferability()`/`BoardGenerator.is_clearable()` | `board_generator_test.gd:_test_clearable_and_inferability_selfconsistent`;`board_generator_test.gd:_test_target_mine_count_single_source`;`board_gen_reward_test.gd:_smoke_board_generator` | | 装板与开局免费展开(封锁格无资源、计入清图) | 排雷玩法 | `MinesweeperRules.install_board()` | `minesweeper_rules_test.gd:_test_install_invariants`;`seal_polarity_test.gd:_smoke_resource_surface` | | 挖/封印合法性与可辨拒绝(拒绝零副作用) | 排雷玩法 | `MinesweeperRules.settle_batch()` | `minesweeper_rules_test.gd:_test_dig_face_rules`;`minesweeper_rules_test.gd:_test_seal_place`;`minesweeper_rules_test.gd:_test_reject_out_of_catalog` | -| 棋盘揭示预览只读口(零状态写入/与实挖揭示集同口径) | 排雷玩法 | `MinesweeperRules.preview_reveal()` | `minesweeper_rules_test.gd:_test_preview_reveal_readonly`〔架构整改 V14〕 | +| 棋盘揭示预览只读口(零状态写入/与实挖揭示集同口径) | 排雷玩法 | `MinesweeperRules.preview_reveal()` | `minesweeper_rules_test.gd:_test_preview_reveal_readonly` | | 封印不可逆与挖开封印格放行(兑付改判四情况) | 排雷玩法 | `MinesweeperRules.settle_batch()` | `seal_polarity_test.gd:_smoke_seal_irreversible_quadrants`;`minesweeper_rules_test.gd:_test_seal_place` | | 棋盘封印印记呈现 | 排雷玩法 | `BoardCellUnit.edge` → `SealMarkLayer.setup()` | `seal_mark_params_test.gd:_test_param_values`;`seal_mark_params_test.gd:_test_fog_gate` | | AP 扣费、末点耗尽即收轮与战斗收束清零 | 行动经济 | `MinesweeperRules.settle_batch()`(→`ActionEconomy.try_spend()`/`ActionEconomy.notify_combat_end()`) | `seal_polarity_test.gd:_smoke_seal_ap_exhausted`;`round_flow_skill_pool_test.gd:_smoke_full_battle`;`round_flow_skill_pool_test.gd:_smoke_active_refresh` | @@ -136,7 +136,7 @@ tests/ | 拒绝反馈分面可辨与未知兜底文案 | HUD框架 | `HudPresenter.outcome_text()` | `hud_presenter_test.gd:_test_reject_text_by_reason`;`hud_presenter_test.gd:_test_unknown_reason_fallback`;`hud_presenter_test.gd:_test_accepted_text` | | 结算明细带逐行呈现与排播节奏 | HUD框架 | `BattleLogView.append_row()`/`RowPacer.pace_delay_for()` | `theme_projection_test.gd:_smoke_battle_log_view`;`player_copy_sweep_test.gd:_sweep_source_names`;`pacing_queue_test.gd:_init` | | 模态覆盖层编排与输入锁 | HUD框架 | `ModalFlow.locks_input()`/`ModalFlow.open_after_playback()` | `modal_flow_test.gd:_init`;`reward_overlay_test.gd:_run` | -| 模态句柄分域寻址面 | HUD框架 | 局内/菜单/营地三子容器句柄经注册面合同寻址(`UiRegistry.node()` 逐键取层)+模态编排口开合(`ModalFlow.open()`/`ModalFlow.close()`) | `ui_struct_probe.gd:_modal_registry_contract`(registry 合同序段+分域句柄段)〔句柄分域批 V1〕 | +| 模态句柄分域寻址面 | HUD框架 | 局内/菜单/营地三子容器句柄经注册面合同寻址(`UiRegistry.node()` 逐键取层)+模态编排口开合(`ModalFlow.open()`/`ModalFlow.close()`) | `ui_struct_probe.gd:_modal_registry_contract`(registry 合同序段+分域句柄段) | | 未开格类型微光(8 邻作用集/五组色相/零玩法写入) | HUD框架 | `BoardView.type_glow_probe()`/`UiKit.glow_group_for_cell_type()` | `theme_projection_test.gd:_smoke_type_glow`;`type_glow_test.gd:_test_grouping_closed`;`type_glow_test.gd:_test_frozen_hue_face` | | 棋盘悬停反馈(三语义光标/目标格边框/路径预览点迹) | HUD框架 | `ui_input_probe` 合成鼠标事件→`BoardView._gui_input()`;读面 `BoardView.hover_probe()` | `ui_input_probe.gd:_ready`(case①到达②禁入③路径预览三语义) | | UI 全局主题与按钮五态(含对比度锚) | HUD框架 | `UiKit.button()`/`UiKit.primary_button()` | `theme_projection_test.gd:_smoke_global_theme`;`theme_projection_test.gd:_smoke_button_five_states`;`theme_projection_test.gd:_smoke_contrast_inks` | @@ -147,24 +147,24 @@ tests/ | 站桩显示档与素材分辨率绑定 | 战斗表现 | `StandeeBody.portrait_probe()`/`StandeeMotion.PORTRAIT_DISPLAY_H` | `standee_present_values_test.gd:_check_display_tier` | | B 区舞台背景三关变体与连续地面层(按 board_type 选图/地面层高度读布局表/四柱光柱退役) | HUD框架 | `BattleStageView.set_board_type()` | `stage_background_test.gd:_test_background_selection`;`stage_background_test.gd:_test_ground_layer_geometry`;`stage_background_test.gd:_test_beams_retired` | | 战斗屏三区几何与棋盘格边长(分辨率两档×四档板型) | HUD框架 | `BoardView.set_cell_area()`(D 区可用面积 → 格边长);读面 `BoardView.cell_size` | `layout_probe.gd:_ready`;`board_gen_reward_test.gd:_smoke_layout_cell_formula` | -| 调参测速批量模拟(逐帧步进与统计读数) | 调参测量 | `TuneSimController.run()`(调试浮窗批量模拟入口) | `tune_sim_batch_parity_test.gd:_init`(配对对拍套件,随测速循环批建) | -| sim 驱动循环单点(缺省零变化与策略/日志回调形态) | 调参测量 | `BattleDriver.drive_round()`(两参缺省与五参回调两形态) | `battle_driver_drive_test.gd:_smoke_drive_round_contract`〔架构整改 V13〕 | -| 模拟玩家 0 格连锁算子(经真实闭包,零盲挖语义保持) | 调参测量×排雷玩法 | `AutoPlayer._deduce()`(经 `perfect_action()` 装配链) | `auto_player_deduce_test.gd:_smoke_zero_chain_rule`〔架构整改 V15〕 | -| 刷新提示文案读表拼接(RAP 不足/轮上限两 toast 零字面量) | HUD框架 | `Main._on_refresh_confirmed()`(两 toast 装配面)+`player_copy_sweep` 源扫描 | `player_copy_sweep_test.gd:_sweep_refresh_toast_no_literals`〔架构整改 V4〕 | -| 试玩日志器 ap_per_round 必填注入守卫(未注入拒绝开会话) | 表现与支撑 | `PlaytestLogger.start_session()` | `playtest_logger_guard_test.gd:_smoke_required_injection`〔架构整改 V5〕 | +| 调参测速批量模拟(逐帧步进与统计读数) | 调参测量 | `TuneSimController.run()`(调试浮窗批量模拟入口) | `tune_sim_batch_parity_test.gd:_init`(配对对拍套件) | +| sim 驱动循环单点(缺省零变化与策略/日志回调形态) | 调参测量 | `BattleDriver.drive_round()`(两参缺省与五参回调两形态) | `battle_driver_drive_test.gd:_smoke_drive_round_contract` | +| 模拟玩家 0 格连锁算子(经真实闭包,零盲挖语义保持) | 调参测量×排雷玩法 | `AutoPlayer._deduce()`(经 `perfect_action()` 装配链) | `auto_player_deduce_test.gd:_smoke_zero_chain_rule` | +| 刷新提示文案读表拼接(RAP 不足/轮上限两 toast 零字面量) | HUD框架 | `Main._on_refresh_confirmed()`(两 toast 装配面)+`player_copy_sweep` 源扫描 | `player_copy_sweep_test.gd:_sweep_refresh_toast_no_literals` | +| 试玩日志器 ap_per_round 必填注入守卫(未注入拒绝开会话) | 表现与支撑 | `PlaytestLogger.start_session()` | `playtest_logger_guard_test.gd:_smoke_required_injection` | | 战斗叙述与终局文案(数值带入/胜负互异) | HUD框架 | `BattleNarrator.battle_end_text()`/`BattleNarrator.boss_name()` | `battle_narrator_test.gd:_test_numeric_lines_carry_values`;`battle_narrator_test.gd:_test_end_text_differs_by_result`;`battle_narrator_test.gd:_test_boss_name_uses_boss_rowset` | | 玩家面文案与危险格格面字形 | HUD框架 | `BoardView.rebuild()`/`StatusSlotRow.set_effects()` | `player_copy_sweep_test.gd:_sweep_board_glyph`;`player_copy_sweep_test.gd:_sweep_legend`;`player_copy_sweep_test.gd:_sweep_hero_panel` | -| 营地场景图十层铺底与门洞留空呈现 | 营地场景视图 | 进入存档→选档→进档→营地场景屏(`CampSceneView.setup_layers()` 驱动);单元测试载入 `camp_scene_layout.tres` | `shot_probe.gd:_ready`(camp 截图段)〔营地图批 V1〕;`camp_scene_layout_test.gd:_test_layout_hotspot_geometry`〔营地图批 V14〕 | -| 营地七物件命中区点选与分界面可达 | 营地场景视图 | 七物件命中区 → `CampSceneView._gui_input()`(命中发 `object_pressed` 信号) → 组合根开界面 | `ui_click_probe.gd:_ready`(七物件合成点击段)〔营地图批 V2〕 | -| 营地大门两分支确认与断点续玩接线 | 营地交互流 | 大门命中区 → ConfirmDialog(三出口)→ `main._on_confirm_accepted()`(新冒险确认)/`main._resume_from_menu()`(断点续玩) | `ui_click_probe.gd:_ready`(大门两分支段/断点确认段 :500-528)〔营地图批 V3〕 | -| 四柜台拆解后五界面入口改挂与写口零回归 | 营地五界面 | 五界面意图信号 → `CampShopPresenter` → `MetaProgression.tree_buy()` 写口 | `forge_workbench_test.gd:_run`(承载类同迁断言十二项)〔营地图批 V4〕;`ui_click_probe.gd:_ready`(写口链段) | -| 营地篝火回主菜单与笔记本改挂动线 | 营地交互流 | 笔记本命中区 → `CareerOverlay.open()`;篝火命中区 → ConfirmDialog 二次确认 → 主菜单 | `ui_struct_probe.gd:_ready`(career 段)〔营地图批 V5〕;`screen_flow_probe.gd:_ready`(篝火/开合段)〔营地图批 V7〕 | -| 营地图鉴占位挂起态与反参照结构纪律 | 营地场景视图 | 布告板命中区 → `CampSceneView._gui_input()`(object_pressed 信号) → 图鉴占位视图;营地根态场景树审计 | `ui_struct_probe.gd:_ready`(占位禁词/禁行段)〔营地图批 V6〕;`ui_struct_probe.gd:_ready`(结构禁词段)〔营地图批 V9〕 | -| 营地刷新单口与场景根 HUD 同步 | 营地刷新总线 | 写口尾 → `CampRefreshBus.refresh()` → 现开界面刷新+场景根 HUD 刷新 | `ui_struct_probe.gd:_ready`(顶栏位段)〔营地图批 V8〕;`ui_click_probe.gd:_ready`(写口尾刷新段) | -| Esc 浮窗唤起与三出口动线 | 营地 Esc 流 | 营地场景根态合成 Esc 键事件→ `main_esc_flow.on_esc_input()` → `ui.flow.open/close`;浮窗三钮 `pressed` → 三出口 | `screen_flow_probe.gd:_ready`(Esc 唤起/子界面开态不唤起/再按关窗/非营地不唤起段)〔ESC批 V1〕;`screen_flow_probe.gd:_ready`(返回动线/设置双路径段)〔ESC批 V3/V4〕 | +| 营地场景图十层铺底与门洞留空呈现 | 营地场景视图 | 进入存档→选档→进档→营地场景屏(`CampSceneView.setup_layers()` 驱动);单元测试载入 `camp_scene_layout.tres` | `shot_probe.gd:_ready`(camp 截图段);`camp_scene_layout_test.gd:_test_layout_hotspot_geometry` | +| 营地七物件命中区点选与分界面可达 | 营地场景视图 | 七物件命中区 → `CampSceneView._gui_input()`(命中发 `object_pressed` 信号) → 组合根开界面 | `ui_click_probe.gd:_ready`(七物件合成点击段) | +| 营地大门两分支确认与断点续玩接线 | 营地交互流 | 大门命中区 → ConfirmDialog(三出口)→ `main._on_confirm_accepted()`(新冒险确认)/`main._resume_from_menu()`(断点续玩) | `ui_click_probe.gd:_ready`(大门两分支段/断点确认段 :500-528) | +| 四柜台拆解后五界面入口改挂与写口零回归 | 营地五界面 | 五界面意图信号 → `CampShopPresenter` → `MetaProgression.tree_buy()` 写口 | `forge_workbench_test.gd:_run`(承载类同迁断言十二项);`ui_click_probe.gd:_ready`(写口链段) | +| 营地篝火回主菜单与笔记本改挂动线 | 营地交互流 | 笔记本命中区 → `CareerOverlay.open()`;篝火命中区 → ConfirmDialog 二次确认 → 主菜单 | `ui_struct_probe.gd:_ready`(career 段);`screen_flow_probe.gd:_ready`(篝火/开合段) | +| 营地图鉴占位挂起态与反参照结构纪律 | 营地场景视图 | 布告板命中区 → `CampSceneView._gui_input()`(object_pressed 信号) → 图鉴占位视图;营地根态场景树审计 | `ui_struct_probe.gd:_ready`(占位禁词/禁行段);`ui_struct_probe.gd:_ready`(结构禁词段) | +| 营地刷新单口与场景根 HUD 同步 | 营地刷新总线 | 写口尾 → `CampRefreshBus.refresh()` → 现开界面刷新+场景根 HUD 刷新 | `ui_struct_probe.gd:_ready`(顶栏位段);`ui_click_probe.gd:_ready`(写口尾刷新段) | +| Esc 浮窗唤起与三出口动线 | 营地 Esc 流 | 营地场景根态合成 Esc 键事件→ `main_esc_flow.on_esc_input()` → `ui.flow.open/close`;浮窗三钮 `pressed` → 三出口 | `screen_flow_probe.gd:_ready`(Esc 唤起/子界面开态不唤起/再按关窗/非营地不唤起段);`screen_flow_probe.gd:_ready`(返回动线/设置双路径段) | | 减动效开关存储契约(持久化回读/缺省值/引擎动效档应用) | 设置与本地化 | `SettingsStore.load_settings()`/`save_settings()`/`apply()` | `settings_store_test.gd:_test_settings_roundtrip`;`settings_store_test.gd:_test_settings_default`;`settings_store_test.gd:_test_settings_apply_chain` | -| 营地顶栏 HUD 钥石读数与刷新单口同步 | 营地 HUD 栏 | 隔离存档实例 `meta_state._add_keystone()`→ 显式触发 `CampRefreshBus.refresh(camp_data)` → `camp_hud_band.refresh()` → `keystone_badge` 读数 | `screen_flow_probe.gd:_ready`(HUD 余额读数/刷新段)〔ESC批 V6〕;`ui_struct_probe.gd:_ready`(顶栏位结构段) | -| 营地五窗统一窗壳形态 | 营地五界面 | 七物件命中区/笔记本 → `CampSceneView._gui_input()`(`object_pressed` 信号)→ 组合根分派开窗;窗板几何(居中定尺寸 720×640 起点)/遮罩/窗内滚动面为呈现提交面 | `screen_flow_probe.gd:_step_camp_window_shell`(窗壳形态段)〔窗口化批 V1–V8〕 | +| 营地顶栏 HUD 钥石读数与刷新单口同步 | 营地 HUD 栏 | 隔离存档实例 `meta_state._add_keystone()`→ 显式触发 `CampRefreshBus.refresh(camp_data)` → `camp_hud_band.refresh()` → `keystone_badge` 读数 | `screen_flow_probe.gd:_ready`(HUD 余额读数/刷新段);`ui_struct_probe.gd:_ready`(顶栏位结构段) | +| 营地五窗统一窗壳形态 | 营地五界面 | 七物件命中区/笔记本 → `CampSceneView._gui_input()`(`object_pressed` 信号)→ 组合根分派开窗;窗板几何(居中定尺寸 720×640 起点)/遮罩/窗内滚动面为呈现提交面 | `screen_flow_probe.gd:_step_camp_window_shell`(窗壳形态段) | **旅程段七:数据配置与跨系统契约** @@ -174,9 +174,9 @@ tests/ | 进度坐标查行:精确命中/向上取整/封顶/警告去重 | 数据配置 | `BoardGenTable.resolve_row()`/`ConfigDbResolver.resolve_enemy_rowset()` | `config_db_test.gd:_test_progress_resolution`;`config_db_resolver_test.gd:_test_band_hit`;`config_db_resolver_test.gd:_test_top_band_clamp` | | 行集寻址、行序保序与难度乘数 clamp | 数据配置×难度曲线与Boss | `ConfigDbResolver.resolve_enemy_rowset()`/`ConfigDbResolver.resolve_difficulty_modifiers()` | `config_db_resolver_test.gd:_test_rowset_order_preserved`;`config_db_resolver_test.gd:_test_row_kind_routing`;`config_db_resolver_test.gd:_test_difficulty_clamp` | | 运行期越域致命与进程非 0 退出 | 数据配置 | `BoardGenTable.resolve_row()`/`ConfigDbResolver.resolve_enemy_rowset()` | `config_db_fatal_oob_test.gd:_trigger_oob`;`config_db_resolver_test.gd:_test_request_oob` | -| 加载期违规表拒绝:跨表悬空/计数器前缀/真视窄域/效果类型出域 | 数据配置×秘宝×奇物 | `ConfigDB.load_tables()` | `reward_dangling_treasure_test.gd:_init`;`counter_prefix_fatal_test.gd:_assert_rejected`;`treasure_target_violation_test.gd:_init`;`effect_kind_retired_test.gd:_assert_rejected`〔架构整改 V3〕 | -| 表结构守卫:域校验/行序键/跨字段互锁/配额锚 | 数据配置×敌人系统×地形变异×冒险结构 | `EnemyTable.validate()`/`VariationTable.variant_pool()`/`AdventureTable.validate()` | `table_structure_guard_test.gd:_smoke_enemy_bands`;`table_structure_guard_test.gd:_smoke_variation_framework`;`table_structure_guard_test.gd:_smoke_adventure_table`;`table_structure_guard_test.gd:_test_feat_cap_required`〔架构整改 V12〕 | -| 变异表头域校验(地形变异) | 地形变异 | `VariationTable.validate()` | `table_structure_guard_test.gd:_test_variation_header_domains`〔架构整改 V11〕 | +| 加载期违规表拒绝:跨表悬空/计数器前缀/真视窄域/效果类型出域 | 数据配置×秘宝×奇物 | `ConfigDB.load_tables()` | `reward_dangling_treasure_test.gd:_init`;`counter_prefix_fatal_test.gd:_assert_rejected`;`treasure_target_violation_test.gd:_init`;`effect_kind_retired_test.gd:_assert_rejected` | +| 表结构守卫:域校验/行序键/跨字段互锁/配额锚 | 数据配置×敌人系统×地形变异×冒险结构 | `EnemyTable.validate()`/`VariationTable.variant_pool()`/`AdventureTable.validate()` | `table_structure_guard_test.gd:_smoke_enemy_bands`;`table_structure_guard_test.gd:_smoke_variation_framework`;`table_structure_guard_test.gd:_smoke_adventure_table`;`table_structure_guard_test.gd:_test_feat_cap_required` | +| 变异表头域校验(地形变异) | 地形变异 | `VariationTable.validate()` | `table_structure_guard_test.gd:_test_variation_header_domains` | | 难度修饰套乘:空表零行为/套乘生效/越域 clamp | 难度曲线与Boss | `UnitContainer.spawn()`/`ConfigDbResolver.resolve_difficulty_modifiers()` | `table_structure_guard_test.gd:_smoke_difficulty_table`;`config_db_resolver_test.gd:_test_difficulty_clamp` | | Boss 出场门控(每区域恰一 Boss 终点/Boss 节点开战必选 Boss 行集) | 难度曲线与Boss | `NodeMapGenerator.generate()`/`BattleOrchestrator.begin_battle()` | `node_map_generator_test.gd:_test_boss_exit_per_region`;`boss_gate_test.gd:_test_boss_node_spawns_boss_rowset` | | 锻造表 schema 正反与几何价格梯 | 锻造工坊 | `ForgeTable.level_price()`/`ForgeTable.route_rows()` | `forge_table_test.gd:_test_production_rows`;`forge_table_test.gd:_test_price_ladder`;`forge_table_test.gd:_test_negative_cases` | @@ -209,7 +209,7 @@ tests/ | 表现与支撑 | 存档序列化.md | 存档写盘⇄读回往返保真;三槽位隔离与激活失败回滚;槽位摘要窥视与坏槽三态;启动态无激活不写盘;旧档迁移链与断点续玩零跳号(集成);存档⇄RNG 快照往返保真(集成) | 已覆盖 | — | | 表现与支撑 | 教学引导.md | — | 未覆盖 | 教学形态与首遇时机待设计;见待办清单「教学形态未定」条 | | 表现与支撑 | 数据配置.md | 全表装载、就绪态与表清单目录对账;进度坐标查行:精确命中/向上取整/封顶/警告去重;运行期越域致命与进程非 0 退出;加载期违规表拒绝:跨表悬空/计数器前缀/真视窄域;表结构守卫:域校验/行序键/跨字段互锁/配额锚 | 已覆盖 | — | -| 表现与支撑 | 设置与本地化.md | 减动效开关存储契约(持久化回读/缺省值/引擎动效档应用) | 已覆盖 | 存储契约三断言已落地(迭代 50 断言补齐批);多语言切换面未建(P1,归设置与本地化待设计问题清单) | +| 表现与支撑 | 设置与本地化.md | 减动效开关存储契约(持久化回读/缺省值/引擎动效档应用) | 已覆盖 | 存储契约三断言已落地;多语言切换面未建(P1,归设置与本地化待设计问题清单) | | 表现与支撑 | 音频.md | — | 未覆盖 | MVP 无音频(P1 后置,无断言面);见待办清单「能力清单覆盖缺口补齐」条 | | 跨局循环 | 元进度.md | 元进度入账与锻造两轴 | 已覆盖 | — | | 跨局循环 | 天赋树.md | 天赋树购买与六键合成 | 已覆盖 | — | @@ -217,9 +217,9 @@ tests/ | 跨局循环 | 秘宝.md | 秘宝结构冻结与 12 件效果;加载期违规表拒绝:跨表悬空/计数器前缀/真视窄域 | 已覆盖 | — | | 跨局循环 | 锻造工坊.md | 锻造表 schema 正反与几何价格梯;元进度入账与锻造两轴;锻造定价与购买闭环(全路线价格梯/多级购买扣款/拒购零副作用);锻造与相邻通道隔离(祝福件购买锻造零变化/默认轴与钥匙解耦/甲型切换双轴可感) | 部分覆盖 | 六缺口(全路线价格梯/多级购买扣款/拒购零副作用/祝福件零泄漏/默认值解耦/甲型双轴)由「断言补齐批」承接;见待办清单「能力清单覆盖缺口补齐」条 | -## 断言计数双口径(2026-10-08 迭代 19 卡① T4 订正) +## 断言计数双口径 -历史 README 写死「752+ 断言/十五套件」必然漂移,改为两种口径并注明语义: +断言计数不写死总数(写死必然漂移),取两种口径并注明语义: - **运行时口径**:系统测试运行器(`tools/run_system_test.py`)打印的通过项数——循环内断言按执行次数计,随断言面增减浮动,以当次跑测打印为准。 - **静态口径**:断言面源码 `check(` 调用点计数——按源码位置计,一处在循环内即多次执行。 @@ -264,7 +264,7 @@ godot --headless --path . res://probe/.tscn # 不连续的超时照旧逐个回收;阈值是 run_all.gd 内可调常量 ``` -> 套件 manifest 现况:`_suites()` 登记 **65 条**(62 单元+3 集成,2026-10-29 实数;口径=manifest 条目数, +> 套件 manifest 现况:`_suites()` 登记 **65 条**(62 单元+3 集成;口径=manifest 条目数, > 随套件增减浮动)——data_config(ConfigDB 加载/进度坐标 ceil 解析/fatal 退出码/统一随机流)、core(秘宝结构冻结/断点续玩/存档槽位/结算五段等)、battle_settlement(DamageMath 纯函数/DamageController 伤害单据五配方)、contracts(系统间接口契约断言)、presentation(节奏队列/奖励浮层/字体资产/地形瓦片集/模态编排等);集成 3 条存 `tests/integration/`。致命类独立进程 `expect=1`;负面套件 `negative=true` 只豁免错误扫描一闸。期望值一律由表读值推导(零玩法数值字面量)、随机只经 RngService 统一流。 **协议要点**(D2 冒烟协议): @@ -286,12 +286,12 @@ godot --headless --path . res://probe/.tscn | Story Type | Required Evidence | Location | |---|---|---| | Logic | Automated unit test — must pass | `tests/unit/[system]/` | -| Integration | Integration test OR playtest doc | 落地时随批建 `tests/integration/[system]/`(目录已删空壳,章程见上) | +| Integration | Integration test OR playtest doc | 落地批当场建 `tests/integration/[system]/`(章程见上) | | Visual/Feel | Screenshot + lead sign-off | `tests/evidence/` | | UI | Manual walkthrough OR interaction test(场景探针为首选) | `tests/evidence/` | | Config/Data | Smoke test pass | 跑批回执 `game/tests/.gates/receipt.json`(不入库)+结论随批记 `reports/` | -## game/probe/ 游离脚本台账(迭代 29 T7 逐个定性) +## game/probe/ 游离脚本台账 `game/probe/` 里的脚本两分:**在闸件**(探针有 `.tscn` 宿主、被 `probe_gate.sh`/`render_gate.sh` 调用; `smoke_all.gd` 被系统测试运行器调用——过渡期宿主)与**不入闸的手动测量/诊断件**(下表)。 @@ -323,7 +323,7 @@ godot --headless --path . res://probe/.tscn `tests/static_scan.sh` 实现静态扫描域 S1–S12 的可执行子集;S1–S10 的规则全集与动机见 `design/engineering/architecture/architecture.md`「测试与质量域」节,**S11/S12 两段的规则说明自持于本文件与 -`tests/static_scan.sh` 头注**——迭代 32 两卡是代码实现批,按流水线红线禁写 `design/`,故这两段未进架构文档。 +`tests/static_scan.sh` 头注**,这两段不另进架构文档。 新违规案例必须**先补扫描规则再修码**。 S11 代码注释禁用词:扫描 game/ 全域 .gd/.tres/.md/.json/.sh 的注释面;禁词全部由 `design/gdd/术语表.md`「退役词对照」第一列解析供给(脚本内不内联任何词面——单一事实源);解析结果再按「巢穴」「旗」「flag_*」三条整行排除,另设同形异义豁免「去重闸」(封印重判去重的机制判别器,与某闸档退役词后二字同形——行内含「去重闸」整行跳过);三层豁免(闸门自指/显式留档 20 处〔契约原名引述与带日期历史读数注释,清单见 `tests/static_scan.sh` 头注〕/非注释面天然不取);两道自检(扫描面文件数非空+词表解析非空)。 diff --git a/game/tests/golden/README.md b/game/tests/golden/README.md index 51cb1287..4dac9021 100644 --- a/game/tests/golden/README.md +++ b/game/tests/golden/README.md @@ -10,36 +10,16 @@ 比对判据与工具见 `tools/golden_compare.py` (逐像素灰度差 >16 的像素占比 ≤2%)。 -**未建锚面备案(2026-10-29 迭代 41 收尾登记)**:营地/设置/战斗三屏与战末结算/三选一/图例/调试浮窗四浮层无改前 golden 锚——迭代 41 测试特许移交(2026-10-28 用户裁,码先行动)致改前帧无法补建;这些呈现面的等价证据承载=现役探针/单元测试断言面+实机目检(体验验证清单 ㊵ 节)。 +**未建锚面备案**:营地/设置/战斗三屏与战末结算/三选一/图例/调试浮窗四浮层无改前 golden 锚;这些呈现面的等价证据承载=现役探针/单元测试断言面+实机目检(体验验证清单 ㊵ 节)。 -## 时效判定纪律(迭代 29 T7 立) +## 时效判定纪律 -基线冻结于 2026-09-30(v3.5 视觉落码后)。**判定先于动作**:每代换代面(视觉/素材/布局改动) +基线冻结于 2026-09-30。**判定先于动作**:每代换代面(视觉/素材/布局改动) 跑批时先跑一次渲染闸看差异落不落在裁剪区与容差内—— -- **判有效**(changed 远低于 2% 阈值):基线**留在位并在此加注一次判定记录**,不得顺手重制; -- **判失效**(changed 超阈值或换代面落在裁剪区外):按迭代 26 T6 先例**显式重制 + 呈报 + 复闸**, +- **判有效**(changed 远低于 2% 阈值):基线**留在位**,不得顺手重制; +- **判失效**(changed 超阈值或换代面落在裁剪区外):**显式重制 + 呈报 + 复闸**, 禁止先动后判、禁止用「重制一下就绿了」掩盖真实视觉回归。 - **加严口径(棋盘三图)**:棋盘图 changed>0 且差异像素落在棋盘裁剪区内(900×760)一律按**判失效** 处理——占比远低于 2% 阈值也不判有效,显式呈报后由用户定是否重制。该口径只收紧棋盘三图的判读, 不改写 2% 容差本身的语义(`golden_compare.py` 判据不动);启动态菜单不适用本口径。 - -## 判定记录 - -- 2026-10-16(迭代 29 T7):**判有效**。三代换代面(棋盘三图 + 启动态菜单)实测 - changed = 0.00% / 0.00% / 0.00% / 0.15%,均远低于 2% 阈值 ⇒ 基线留在位,不重制。 - (本批零视觉改动,判定属常规复核。) -- 2026-10-25(迭代 37 卡① T3):**判失效 → 显式重制 + 复闸**。实测棋盘三图 - changed = 0.13% / 0.11% / 0.10%,差异像素全落 900×760 棋盘裁剪区内、裁剪区外 0, - 按加严口径不判有效;成因定位为 `2f3a87e9`(秘宝 HUD)注入 `REWARD_BADGE` 预读格 - 字形——晚于 2026-10-08 建基提交,与本批零因果。呈报后用户裁「重制三张基线」, - 经 `tools/golden_baseline_refresh.sh` 换代;复闸 changed = 0.00% / 0.00% / 0.00%, - 启动态菜单 0.00%(未重制)。 -- 2026-10-26(迭代 38 卡① l4):**新增基线 `level_map`**(改前建基——时点铁序)。 - 来源 = shot_probe `_snap("level")` 帧(入口停点出图后第 4 帧,淡入完成态), - 跨跑次逐像素一致性实测 changed=0.00% 后落盘。承载迭代 38 卡① l1–l3 结构重构的 - 逐像素对拍(改后对拍 changed=0.00% 为验收主锚);对拍经 `tools/golden_compare.py` - 直跑(render_gate 现行只对拍棋盘三图+menu_boot,闸件不在本批改动面)。 -- 2026-10-26(迭代 38 卡⑦ c8):**menu_boot 显式重制**(预期面视觉变化——调试角标 - 发布态恒隐,基线右下角幽灵角标像素消失)。改后实测 changed=0.15%(≈卡面预估 0.14%, - 容差内但按 render_gate「预期面视觉变化=显式重制基线」口径重制);复闸 changed=0.00%。 diff --git a/game/tests/smoke/critical-paths.md b/game/tests/smoke/critical-paths.md index fcca9db1..b9c919fd 100644 --- a/game/tests/smoke/critical-paths.md +++ b/game/tests/smoke/critical-paths.md @@ -3,7 +3,7 @@ **Purpose**: QA 交接前 15 分钟内人工跑完的关键路径清单。 **Run via**: `/smoke-check`(读本文件)。 **Update**: 新核心系统落地后增补条目。 -**分工注记**:自动化冒烟(全量断言,现行口径 718/0——2026-10-04 迭代 13 T6 随批换代,随批末闸走)覆盖规则正确性;本清单面向**表现与手感**(自动化探针不可 G-W-T 的部分)。 +**分工注记**:自动化冒烟(全量断言)覆盖规则正确性;本清单面向**表现与手感**(自动化探针不可 G-W-T 的部分)。 ## Core Stability(恒跑) diff --git a/roadmap.md b/roadmap.md index f5da689f..29f171a6 100644 --- a/roadmap.md +++ b/roadmap.md @@ -5,7 +5,7 @@ ## 当前位(只回答「现在该做什么」;三行内随批次换代,禁止在此扩写成状态快照) - **阶段**:M3——Alpha 版本的完整实现(2026-10-09 立规:未明令宣布完成前停留 M3,迭代只排 M3 需求,M4 不排期;根目录 stage.txt 为旧阶段开关仅存档)。 -- **迭代位**:迭代 1–51 全部已完成——迭代 51(四卡:EffectPort 蓄力层删键/架构审查 5.1 封装修复/P2 NODE_TYPES 词表单点化/L1 深度 3 混编)2026-11-04 合回(合并提交 fb27dc2f,独立验收审计终判通过),批后收尾闭合(2026-11-04):反哺点十条落文 architecture.md(第十一条落点不存在跳过、呈报在案)+S13 无凭证基线键经用户裁撤销(--refresh 重生成入口同批删除、基线改人工修订,gdstyle 红在案由还债 P0 追绿)+还债与死函数清退两条 P0 登记+presentation 卡未编迭代迁出承接条目+产出物退役三件+待办三条目删除。迭代 50 收尾记录见 git 提交 47c752ea,迭代 49 见 aa396eb9。远端 CI 现查:master run 62 绿(commit 131c63e7,跑闸步真跑过)。 +- **迭代位**:迭代 1–51 全部已完成;各迭代收口与批后收尾沿革查 git 提交信息与 `reports/`。 - **下一步**:迭代 52 已编入待开工(四卡 ≈9.275 个工作日——P0 还债+P0 孤儿清退+presentation 封装修复+封印印记法阵化,`/iter 52` 发令;gdstyle S13 活红归还债卡落批追绿)。待编池:config_db 旧校验件(待写卡、处置方向待裁)、改写族孤儿(待处置方向裁决)、二三关棋盘观感(待设计+待美术)、EC8 热重载实装(待用户另立条目)。 ## 里程碑时间线 @@ -87,10 +87,6 @@ | 迭代 51 | 已完成(2026-11-04) | 已退役(git 历史可考) | 2026-11-04 | ≈6.625 个工作日 | 已退役(git 历史可考) | | 迭代 52 | 待开工 | reports/需求卡片-minesweeper_rules公开面还债批-2026-11-04.md
reports/需求卡片-孤儿函数清退批-2026-11-04.md
reports/需求卡片-架构审查presentation层封装修复批-2026-11-04.md
reports/需求卡片-封印印记法阵化批-2026-11-04.md | 2026-11-04 | ≈9.275 个工作日 | — | -- 迭代 38 收口为带红合并〔用户特批 2026-10-26〕:09 静态扫描 S13 gdstyle 恶化 2 条经批准记入基线存量红(git 提交 c4c69701),卡② 停卡退上游,处方已于 2026-10-26 修订定稿 v1.3(git 提交 b3ea7532),随「gdstyle 存量债全量清偿」条目波 7 待编排。 -- 迭代 39 收口为带红合并〔用户特批 2026-10-27〕:02 EV 锚 goblin 0.9148∉[1.00,1.20](触发器批有意行为改动,fp f74b9a48ef4a)已随 EV 锚重锚批换带归绿(git 提交 ba5105aa);08d 生涯.md:55 行号漂移已随 2026-10-28 批后收尾反哺落文修复归绿。三卡拆分后终局 gdstyle 恶化 2 条(battle_orchestrator max-file-length、level_map_screen max-class-variables)归迭代 40 卡①还债与迭代 41 存量债序列。 -- 迭代 40 收口为用户特许免闸直合〔2026-10-28〕:全量域验收回执未取得(回执环节断于用户特许,验收审计报告如实记档不作绿报;独立审计结论=通过,F1 一行修 iter40 8a319369 先行入库)。卡① 契约 2 宿主行数残余债(实测 1036 行,合并适配带入 36 行)经用户裁登记归后续批清偿(待办清单「战斗域结构深拆批」条目承载);09 存量红剩 level_map_screen 类变量一条归迭代 41 卡③。 -- 迭代 41 收口为测试特许移交+用户裁直接合回〔2026-10-28/2026-10-29〕:全部套件与闸停跑(gdstyle 结构闸除外——开发期读数反馈在跑),验收断言、golden 对拍与独立验收审计一并移交用户执行,2026-10-29 用户裁直接合回(合并提交 eb9bb537);golden 改前锚未建让步与四项实机目检已迁体验验证清单 ㊵;gdstyle 基线 152 死键 refresh 已执行(2026-10-29 人工重锚 168→16 键,git 提交 fafb4fee)。 - 历史行的「—」= 该列事实不可考:迭代 1~8 早于需求卡片制;编排时点与预计周期不再回溯,细节查 git 提交史。 - 「已退役(git 历史可考)」= 需求卡片或实现报告曾存在,已按「证据只留最新」退役;已完成迭代的实现报告列只填 reports/ 现存路径或本保留字,不填「—」。 - 新迭代行的编排与各列判据见 doc-conventions §12.2 与 iter-plan 技能,由流水线闸(`tools/pipeline_gate.py`)机检。 diff --git a/sim-data/README.md b/sim-data/README.md index 526b0db5..4569f08b 100644 --- a/sim-data/README.md +++ b/sim-data/README.md @@ -6,16 +6,16 @@ - 锚:`runsum_m3iter9exit_81000_n400_20261003.jsonl`(N=400/档=普通 v3.4+perfect;种子 81000 起逐局独立;route=min;taken=hero_dmg+mine_dmg,口径对齐真人分析端) - 读数:`读数_m3iter9exit81000_20261003.md`(k=0.60、完美战役全通 59.0%、结构位移存档) -- 换代义务:M-4 数值批投值时本锚随批作废,批内自取改前/改后锚(77000/78000 先例) -- 代表性注记(2026-11-03,迭代 50 合并提交 8d3a12ec):0 格连锁算子补齐改变模拟玩家行为(推理面增强),perfect/adv 档通关率预期上调——本锚读数对现行代码代表性下降,带值结论须注明「旧行为基线」口径;重跑归一档(用户发起),发起时批内自取改前/改后锚 +- 换代义务:M-4 数值批投值时本锚随批作废,批内自取改前/改后锚 +- 代表性注记:0 格连锁算子补齐改变模拟玩家行为(推理面增强),perfect/adv 档通关率预期上调——本锚读数对现行代码代表性下降,带值结论须注明「旧行为基线」口径;重跑归一档(用户发起),发起时批内自取改前/改后锚 ## 历史锚(只读不判) -其余 23 份 `runsum_*.jsonl`,文件名=批+锚名+日期可辨(迭代 8/9/10、numfix 各代 + M-4 迭代 11a/11b/12/14 各批)。出度≤2 重建后旧锚结构已失义,仅留换代对照;处置挂中间产物死亡清单随批处理。 +其余 23 份 `runsum_*.jsonl`,文件名=批+锚名+日期可辨。出度≤2 重建后旧锚结构已失义,仅留换代对照;处置挂中间产物死亡清单随批处理。 ## MC 采集档位表(2026-10-03 用户四档立规——按用途定局数上限,禁惯例继承禁计划书自拟) -依据:单比例样本量 n=z²p(1−p)/E² / 两比例功效公式 / 零事件规则三(外部统计基准原载 2026-10-03 调研件,该件已出盘,沿革查 git 提交史);单局费率 normal 1.21s / perfect 8.47s(2026-10-02 性能报告实测;on 态同量级按 1.5× 预留)。 +依据:单比例样本量 n=z²p(1−p)/E² / 两比例功效公式 / 零事件规则三(沿革查 git 提交史);单局费率 normal 1.21s / perfect 8.47s(on 态同量级按 1.5× 预留)。 | 档 | 用途(唯一触发面) | 局数上限 | 单次耗时 | 判读力(能下什么结论) | |---|---|---|---|---| @@ -26,9 +26,7 @@ **一档触发权(2026-10-03 补充裁定)**:一档只能由**用户发起**——任务书/计划书/agent 均无权发起,非用户发起的采集一律不构成一档授权;时长随用户发起时确认。 -配套纪律:①档位上限=硬闸,超档停机呈报;窗口不足如实挂起(禁在二/三/四档下带值结论);②改前/改后锚**同 seed0 配对**、改前锚留盘即用禁补跑;③对拍断言=0 新跑(同种子复放,出口闸复验用锚内子集 ≤20);④读数缺陷≠轨迹失效——零 gameplay/RNG 触碰的修复走事件流重构补算,禁整套重跑;⑤同批同码态锚只取一次,「调整一下就重跑」禁止;⑥会话累计:二/三/四档合计 ≤20 分钟(一档时长随用户发起确认);⑦零数值改动=零 MC(现行铁规重申);⑧锚文件自本规起新锚统一=去前缀纯 JSONL、按种子升序(81000 旧形态带 RUNSUM 前缀+进度行,analyze.py 直读会炸),批耗时随锚记 active.md 台账。 - -**批次例外登记(2026-10-21,依迭代 32 卡②反哺条 2026-10-20 用户裁)**:迭代 32 卡②(效果引擎无状态化)对纪律③⑦开一次批次例外——V12 同批内重采 formed/rules/off 三组各 40 局基线+批后同种子复放 40 局(合计在二档 ≤40 局上限口径内,依据=现行锚 24 字段面与本批 33 字段面不同构、不可作复放基线,卡片 §12 裁①);现行锚与读数文件一律未动、不改名、不替换,采集文件留盘供报告与后续核对。 +配套纪律:①档位上限=硬闸,超档停机呈报;窗口不足如实挂起(禁在二/三/四档下带值结论);②改前/改后锚**同 seed0 配对**、改前锚留盘即用禁补跑;③对拍断言=0 新跑(同种子复放,出口闸复验用锚内子集 ≤20);④读数缺陷≠轨迹失效——零 gameplay/RNG 触碰的修复走事件流重构补算,禁整套重跑;⑤同批同码态锚只取一次,「调整一下就重跑」禁止;⑥会话累计:二/三/四档合计 ≤20 分钟(一档时长随用户发起确认);⑦零数值改动=零 MC(现行铁规重申);⑧锚文件自本规起新锚统一=去前缀纯 JSONL、按种子升序(81000 旧形态带 RUNSUM 前缀+进度行,analyze.py 直读会炸)。 四档仅承接 MC 触发细则的数值验证场景,两入口铁规不变。 @@ -37,4 +35,4 @@ - 采集:`game/sim/adventure_monte_carlo.gd`(git)——参数 n/seed0/policy,seed 逐局独立 - 锚格式:stdout 捕获,每局一行 `RUNSUM` JSON(81000 锚=800 行=400×2 档);自 2026-10-03 档位规起新锚统一=去前缀纯 JSONL 按种子升序(旧形态 analyze.py 直读会炸,见上「MC 采集档位表」配套纪律⑧) - 分析:`analyze.py`+`growth_model.py`(git)。⚠ analyze.py 默认输入名系首批遗留(runsum_600.jsonl 已不存在),跑现行锚须 `RUNSUM=<锚文件>` 指定,其完成度%段对现行锚未验证 -- fulllog 全量日志不留盘(.gitignore 排除);`iteration_log.md` 系 Package B 时代批日志留盘不入库;新模拟批的读数与结论写在该批的 git 提交信息与 `reports/` 报告里(2026-10-18 用户裁:根目录会话状态文件已废除) +- fulllog 全量日志不留盘(.gitignore 排除);`iteration_log.md` 系 Package B 时代批日志留盘不入库;新模拟批的读数与结论写在该批的 git 提交信息与 `reports/` 报告里 diff --git a/体验验证清单.md b/体验验证清单.md index 782a0223..16a5be0d 100644 --- a/体验验证清单.md +++ b/体验验证清单.md @@ -2,40 +2,16 @@ 本文登记**需要真人体验/观测才能下结论**的验证项,与 [待办清单](待办清单.md) 分工:待办清单登记"要拍板的事",本文登记"要玩过才知道的事"。每条注明**结论回流**路径——体验感受不满不等于当场改数:数值终值归其登记的归属批,体验反馈是该批的输入。**登记不阻塞(2026-10-12 用户立规)**:真人检测项登记进本清单后,实现批照常合并进 master、后续迭代照常开工,验收时间由用户自行安排,结论按各条回流路径回流。 -状态词汇设计权威=增益状态 状态词表节(原提案 v1.0 已按生命周期条款退役,git 提交 7f24b64 可考) - -## 行为变化速览(体验前先读) - -### 专长实装批追加(2026-10-11 迭代 20——实机目检项,登记面) - -> **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)——下五项同批核销。 - -- **Boss 专长三选一呈现**:非末关完成停点候选=全专长新 29 件(按档配比加权——普通打底/稀有稀缺);旧「提升三选一」属性件不再出现于关卡完成渠道;回血读数照旧随载荷。 -- **曝光槽三卡观感**:奖励节点/商店三选一=2 格全池+1 格优秀档以上子池(子池空回退全池);新凭证四件(储备金袋/同调电池/时沙/完美保险)稀有档投放观感〔**其中两件已于 2026-10-18 用户裁退出本池**:同调电池删除、完美保险改归专长——该项投放观感对这两件不再适用,余储备金袋/时沙仍有效〕。 -- **卡面文案与稀有度档位显示**:新 29 件专长 display_name/desc 直读行字段(封印/陷阱风味系命名);四级档位(普通/优秀/稀有/传说)在卡面档位显示位是否正确渲染。 -- **同调电池选件面**〔**2026-10-18 整条注销**——观测对象同调电池经用户裁删除,不复存在;注销前状态=核心面 choose_battery_target 已落但呈现层选件窗从未接线,该项「若呈现缺窗则登记缺陷」的使命随件删终止〕:拾取同调电池后的充能分配交互(choose_battery_target 核心面已落,呈现层选件窗=本批登记观测——若呈现缺窗,登记缺陷回反哺点)。 -- **HUD 特性段逐件行**〔2026-10-12 呈现修复批换代——僵尸呈现已修:聚合行退役改逐件行「件名 ×N」、卡面摘族名〕:验修复后 C 区/关卡页逐件行可读、卡面=件名+效果摘要无任何分类字样(原「前对照取证」使命已完成,git 史 33d65ce 留痕)。 - - -| 改动 | 旧行为 | 新行为 | 直接体感 | -|---|---|---|---| -| 硬化(敌方技) | 主角打硬化目标**翻倍**(符号 bug) | 主角攻击**折半** | Boss 战显著变长变难(预期内) | -| 削弱(封印标中) | 叠层 ×2 可把敌方输出压到归零(免伤轮) | 持续 2 次结算、重复标中只续时不叠层,输出恒 ≥35% | 每轮必有承伤,封印从"阶段性安全"变"持续减伤" | -| 增伤(安全格) | 只加成普攻段,充能段不吃 | 加成全部输出(乘区接线批;2026-09-19 充能退役后 = 单分量全吃) | 边挖边拿增伤时伤害明显变高 | -| 乏力(踩雷负向) | 无感(乘区没接线,死效果) | 输出合计 −25% | 踩雷后攻击真的变弱了 | -| 失衡(标错封印) | 承伤加深 +25% | 护甲等级 −1(现行表值 magnitude −1 ac,更易被命中) | 惩罚变隐性——挨打概率上升而非每刀固定加深 | -| 卓尔 Boss 新招(新效应词汇批 09-19) | 毒爆 = 纯倍率伤害;Boss 无妨害手段 | 毒爆追加**必中毒分量** 1–3 点(不吃护甲骰不出暴击);新妨害技**蛛网束缚**:施放 → 挂失衡(护甲等级 −1)持续 1 个有效结算 | Boss 战更难更花——堆护甲被毒绕开、被网住后每刀都更容易吃全额 | -| 封印不可逆(09-19 真人试玩反馈批) | 挖旗格被拒("须先拔旗");旗可右键拔除重插 | 封印格**左键直接挖开**=封印印记消失:安全格零奖励、危险格只吃挖雷惩罚;右键移除已退役、封印=一次性承诺 | 误封不能零成本反悔——标中/标空照常、直挖按四情况改判,封印前想清楚 | -| 数值修复批(10-01,用户已验收难度) | 血池 20 / 直伤雷 4-5-5 / L1 杂兵 atk 2 | 血池 26 / 直伤雷 6-8-8 / L1 杂兵 atk 1 | 踩雷明显肉疼;前期杂兵不再磨血;容错略升——整体难度经用户验收 | +状态词汇设计权威=增益状态 状态词表节。 ## 试玩观测项(按优先级) ### ① Boss 战节奏(最高优先) -- **观测什么**:第二关 Boss(蛛化卓尔精灵)战的轮数、承伤、"打不打得动"的体感。硬化此前只挂 Boss 池,旧读数全部泡在翻倍行为里。 +- **观测什么**:第二关 Boss(蛛化卓尔精灵)战的轮数、承伤、"打不打得动"的体感。 - **预期**:明显比以前难——硬化期主角输出减半是纠正后的正确语义,不是 bug。 - **红灯信号**:硬化覆盖期间完全打不动、战斗拖过约 10 轮、或恢复点耗尽仍过不去。 -- **结论回流**:体感数据 → T19 真人标定局(读数与 k 系数,验收读数重测批已于 2026-09-19 履行);难度杠杆归数值批(Beta 阶段,未排期)(计划书草案待 U0,成文后在此挂路径)——**不在试玩现场改数**。 +- **结论回流**:体感数据 → T19 真人标定局(读数与 k 系数);难度杠杆归数值批(Beta 阶段,未排期)(计划书草案待 U0,成文后在此挂路径)——**不在试玩现场改数**。 ### ② 削弱续时后的承伤压力 @@ -46,7 +22,7 @@ ### ③ 增伤全段覆盖的数值手感 -- **观测什么**:持有增伤时边挖边打,伤害是否"明显变高但不爆炸"(乘区作用于全部输出;2026-09-19 充能退役后主角输出 = 单分量)。 +- **观测什么**:持有增伤时边挖边打,伤害是否"明显变高但不爆炸"(乘区作用于全部输出;充能退役后主角输出 = 单分量)。 - **预期**:挖得越顺伤害滚得越快(正反馈增强)。 - **红灯信号**:普通敌一拍秒杀常态化、增益格子变成"无脑必抢"没有决策。 - **结论回流**:增伤幅度为 percent 族冻结轴现行值(+50%)——调整须显式解冻,归数值批(Beta 阶段,未排期)计划书(待 U0)。 @@ -56,36 +32,35 @@ - **观测什么**:踩雷吃乏力后,接下来一轮的输出下降是否感觉得到。 - **预期**:可感知但不致命(−25% 输出)。 - **红灯信号**:完全无感(等于白踩)或过痛(一轮输出报废后必然崩线)。 -- **结论回流**:乏力幅度为 percent 族冻结轴现行值(−25%)——调整归数值批(Beta 阶段,未排期)计划书(待 U0);"乏力死效果"期的格面资源调研读数已随接线作废留档。 +- **结论回流**:乏力幅度为 percent 族冻结轴现行值(−25%)——调整归数值批(Beta 阶段,未排期)计划书(待 U0)。 ### ⑤ 失衡换轴的归因可读性(P2 关注) - **观测什么**:标错封印吃失衡后,玩家能否读懂"为什么这几刀特别容易挨打"(护甲等级 −1 → 命中更难被闪开)。 - **预期**:惩罚变隐性是换轴的已知代价——承伤加深是"每刀固定变疼",AC 降低是"挨打概率与档位变差",后者更难直觉归因。 - **红灯信号**:试玩者完全无法把"挨打变疼"与标错封印关联起来。 -- **结论回流**:归因呈现面已随迭代 6/8 落地(状态图标九枚+明细行文案);失衡幅度现行 AC −1,调整归数值批(Beta 阶段,未排期)计划书(待 U0)。 +- **结论回流**:归因呈现面已落地(状态图标九枚+明细行文案);失衡幅度现行 AC −1,调整归数值批(Beta 阶段,未排期)计划书(待 U0)。 -### ⑥ 速杀退化预警(监控口径,2026-09-18 定案) +### ⑥ 速杀退化预警(监控口径) -纯日志侧预警、不影响玩家体验:读数 = "战斗结束未开资格格占比"(战斗结束时玩家尚未开过的奖励资格格 ÷ 全部资格格)——占比过高说明玩家在跳过棋盘互动直接速杀。预警阈值 provisional = **>40% 报警**(基线已随 2026-09-19 判读报告采集;重校准归 T19 标定局或数值批(Beta 阶段,未排期)计划书。高加成档速杀低难度行本身是合法形态,预警只进日志不做玩法修复)。 +纯日志侧预警、不影响玩家体验:读数 = "战斗结束未开资格格占比"(战斗结束时玩家尚未开过的奖励资格格 ÷ 全部资格格)——占比过高说明玩家在跳过棋盘互动直接速杀。预警阈值 provisional = **>40% 报警**(重校准归 T19 标定局或数值批(Beta 阶段,未排期)计划书。高加成档速杀低难度行本身是合法形态,预警只进日志不做玩法修复)。 ### ⑦ 刷新经济监控(日志先行,阈值等基线) -弃图率 / 每轮刷新率随试玩日志采集;预警阈值须有基线读数才能定(2026-09-18 拍板:现在定是拍脑袋)——基线已采(见下条),阈值数字归后续调参(数值批(Beta 阶段,未排期)计划书备选面)联动复核。挖掘期当场刷新无结算发生,两读数均不影响对账。 +弃图率 / 每轮刷新率随试玩日志采集;预警阈值须有基线读数才能定——基线已采(见下条),阈值数字归后续调参(数值批(Beta 阶段,未排期)计划书备选面)联动复核。挖掘期当场刷新无结算发生,两读数均不影响对账。 -**基线已采(2026-09-19 验收重测批——读数已内联本节)**:MC 完美档弃图 ~0.1 次/局量级(L1 基线格 0.23 / L2 0.03)、normal 档零弃图(模拟画像不主动刷新);每轮刷新率 ≤0.6%。阈值数字归后续调参(数值批(Beta 阶段,未排期)计划书备选面,待 U0)。两读数已固化进 `log_analysis.py` 关卡级统计列(分析器顺带升级)。 +**基线读数**:MC 完美档弃图 ~0.1 次/局量级(L1 基线格 0.23 / L2 0.03)、normal 档零弃图(模拟画像不主动刷新);每轮刷新率 ≤0.6%。阈值数字归后续调参(数值批(Beta 阶段,未排期)计划书备选面,待 U0)。两读数已固化进 `log_analysis.py` 关卡级统计列。 -### ⑧ 封印行为基线监控(封印不可逆批 2026-09-19 落地后的行为监控;原「提案评估前置采集」使命随提案转正终结) -2026-09-19 上午拍板):本项为封印不可逆提案的 Alpha 评估前置采集——同日用户在真人试玩中确认"不能挖旗格"违背设定,**提案全套提前落地**(禁移除 + 挖封印格兑付改判,战斗结算 v0.18 四情况表;登记原文见 2026-09-18 状态记录 72 与 git 历史待办清单清单条目)。评估使命终结,本项转为一律机制的真人行为监控(与 ⑥⑦ 同形状,纯日志侧采集零新增埋点)。 +### ⑧ 封印行为基线监控(封印不可逆机制的行为监控,与 ⑥⑦ 同形状——纯日志侧采集零新增埋点) -- **观测什么**(读数全部可由现役 JSONL 日志推导——动作行含 flag_place/被拒 dig、结算步流含 flag_hit/flag_miss 判定行〔带格坐标〕与 reward_ineffective 作废行;flag_pull 动作行与同轮插撤、移除次数两读数随移除动作退役作废删除):① 误封率 = flag_miss 判定行 ÷ flag_place 动作行(判定时点口径细节随首批读数钉死);② 挖封印格直挖率 = 封印格直接挖开数 ÷ flag_place 动作行(原「被拒后路径分布」三路径随挖封印格放行消失);③ 四情况触发分布(①标中留判 / ②危险格直挖 / ③标空留判 / ④安全格直挖零奖励——④占比是核心读数)。 -- **语义锚(2026-09-19 落地实测锁定,断言现居 `game/tests/unit/battle_settlement/seal_polarity_test.gd`,套名 `_smoke_seal_irreversible_quadrants`)**:封印安全格直挖 = 零惩罚零奖励(正向兑付作废、作废归因行恰一次、标空不判);封印危险格直挖 = 只受挖雷一层惩罚(mine_hit 照常)、标中不发;不挖留判 = 标中/标空照常;flag_pull 出目录拒绝、重复封印 flag_present 拒绝。 +- **观测什么**(读数全部可由现役 JSONL 日志推导——动作行含 flag_place/被拒 dig、结算步流含 flag_hit/flag_miss 判定行〔带格坐标〕与 reward_ineffective 作废行):① 误封率 = flag_miss 判定行 ÷ flag_place 动作行(判定时点口径细节随首批读数钉死);② 挖封印格直挖率 = 封印格直接挖开数 ÷ flag_place 动作行;③ 四情况触发分布(①标中留判 / ②危险格直挖 / ③标空留判 / ④安全格直挖零奖励——④占比是核心读数)。 +- **语义锚(断言现居 `game/tests/unit/battle_settlement/seal_polarity_test.gd`,套名 `_smoke_seal_irreversible_quadrants`)**:封印安全格直挖 = 零惩罚零奖励(正向兑付作废、作废归因行恰一次、标空不判);封印危险格直挖 = 只受挖雷一层惩罚(mine_hit 照常)、标中不发;不挖留判 = 标中/标空照常;flag_pull 出目录拒绝、重复封印 flag_present 拒绝。 - **预期**:无基线,首跑即基线——随真人试玩批次 2 起采(模拟画像不移除,此面只有真人数据有效)。 - **红灯信号**:误封后放弃纠错占比异常高(直挖免费但④零奖励仍可能劝退纠错——玩家改绕路不挖)或④触发后局部推进明显迟滞(零奖励力度过狠的体验证据)——红灯仅作曲线调参批输入,**不在试玩现场改机制**。 -- **结论回流**:读数 → 曲线调参批复核情况④零奖励力度与封印价目;提案已转正,无后续评估义务。 +- **结论回流**:读数 → 曲线调参批复核情况④零奖励力度与封印价目;无后续评估义务。 -### ⑨ 真人批试玩指引(验收重测批修正锚,2026-09-19 立项——照此单试玩即可) +### ⑨ 真人批试玩指引(照此单试玩即可) **怎么玩**:开始界面前把天赋加成清零(基线档 = atk+0%/hp+0%,即"零永久天赋"原始状态),然后正常打 3–5 局。种子不用记——日志按局自动落盘,事后由分析工具取数。打第一关还是两关都行,成功与否都有效。 @@ -100,172 +75,88 @@ **局后随手记**(一句话即可,事后对日志):每局大概掉了多少血 / 有没有整轮一点血没掉的轮次 / 成功与否 / 有没有"这局特别顺/特别倒霉"的体感(种子体感核对用)。 -**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位;**正常预期 k>0.5、预警线 k<0.3**——2026-10-03 用户裁)并入 T19 标定报告(落 design/qa/,换代 2026-09-19 判读报告为现行锚);①–⑤ 体感按各条目的回流位分流。 +**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位;**正常预期 k>0.5、预警线 k<0.3**——2026-10-03 用户裁)并入 T19 标定报告;①–⑤ 体感按各条目的回流位分流。 -**2026-10-01 数值修复批后试玩注记**(master 4b4a011 起的正式标定局):本批已落 hero 血池 20→26 / 直伤雷三行 4/5/5→6/8/8 / L1 系敌 atk 2→1(轨迹与读数见 numfix 报告(已退役,git 历史可查))。试玩时对号新增两点: -1. **踩雷疼痛感**(本批主刀):「踩很多雷还是轻松活」应是过去式——单雷 6-8 直伤、两三连雷应明显肉疼;若仍无痛感=回调信号,记一句话即可; -2. **整体难度印象**:用户 2026-10-01 已阶段性验收「令人稍微满意」——本批试玩读数作正式标定(真人关卡完成率+k 系数),若体感偏难/偏易也照实记,不因单局顺逆回调。 -模拟侧对照读数(普通档画像 L1 13%/战役 0%;完美档 78.5%)见同报告 §四。 +**试玩对照数值(现行)**:hero 血池 26 / 直伤雷三行 6/8/8 / L1 系敌 atk 1。试玩时对号注意两点: +1. **踩雷疼痛感**:「踩很多雷还是轻松活」应是过去式——单雷 6-8 直伤、两三连雷应明显肉疼;若仍无痛感=回调信号,记一句话即可; +2. **整体难度印象**:试玩读数作正式标定(真人关卡完成率+k 系数),若体感偏难/偏易也照实记,不因单局顺逆回调。 -### ⑩ 迭代 10 奖励重构体验项(2026-10-01 顺带登记——实机目检一轮已过 1/3/4/5/6/9/14,余项人工参与) +### ⑩ 奖励重构体验项(余项人工参与) -- **逐行结算演出复验**:完全退出游戏后重启(减动效开关在启动时加载——首轮目检「零动画」系该开关遗留开启,已翻回),战斗停手看轮末结算是否一行一行滚出(弹道/受击闪白/伤害数字逐行)。机制系迭代 8 已落地(排播队列 0.3/0.22s),非迭代 10 事项;若重启后仍无演出再报 bug 批。 +- **逐行结算演出复验**:完全退出游戏后重启(减动效开关在启动时加载),战斗停手看轮末结算是否一行一行滚出(弹道/受击闪白/伤害数字逐行)。机制已落地(排播队列 0.3/0.22s);若重启后仍无演出再报 bug 批。 - **道具件卡片直显复验**:三选一抽到秘宝件时,卡片应直显「秘宝 / 探巢摆钟 · 真视 3×3」式具体道具(掷定前置已实装,node-reward.md v2.1)——不再是「随机获得一件」盲选。 - **关卡完成节奏体感**:血回满→20% 部分回血 + 三选一选件后,L2/L3 的紧张度与「这局能走多远」驱动是否成立(读数带内:普通 L1 41.8%/L2 10.2%——体感不满不当场改数,归曲线调参批)。 - **钥石节奏体感**:Boss 逐杀掉落(首杀 3/复杀 2/2/3)后营地积累速度明显变慢——元进度产出重标(均值 1.38/3.01)归元进度设计批,体感反馈是其输入。 -### ⑪ Boss 图整图变异(贫矿脉)目检项(2026-10-04 全局作用域变异首发批顺带登记——**目检改排:随 UI 优化批之后统一验证**,用户 2026-10-04 裁「先做完 UI 优化再一起验证」) - -> **✅ 转记(2026-10-16 用户令屏蔽——前提失效,无需验)**:贫矿脉行已从 `variation.tres` 删除(用户裁「地形变异特异关卡后续重新做设计,先屏蔽」;Boss/精英图全局池空→region 布置兜底,玩家面零横幅零角标零资源偏斜)。下列六项判据全部失效,不验;重建设计立项时随新需求卡重立目检项。改动面=shielddebug-20261016 批(variation.tres 删行+冒烟断言换代)。 - -> **改排状态注记(2026-10-05 ui-struct-probe 批)**:UI 优化批(UI 落码 11 卡+SR-1)已全入库;期间实机目检抓到标题屏双列叠放缺陷,已随 ui-struct-probe 批修复,并新增全 UI 屏结构探针入探针闸默认段(tools/probe_gate.sh,按钮互压/等宽/出屏/零尺寸——机械可判项自此探针代管,见 §⑯)。本条统一验证窗口仍开,等用户实机目检时点;下列六项均为体感/呈现面,保留人闸。 - -**怎么玩**:打一局正常打到第 2 关的 Boss 图(想快可以在开始界面开调试入口直接进第 2 关);顺手的话再看一眼第 1 关 Boss 和任意普通战斗图,前后共约十分钟。本条目在 UI 优化批落地后执行——届时以改完后的最终界面为准,下述文案若随 UI 批调整以当批登记为准。 - -**看什么**(六项,逐项是/否即可,感受写一句话): -1. **开战横幅**:进第 2 关 Boss 战第一轮,轮次数横幅下方应叠一行「地形变异 · 贫矿脉 · 回复与护甲资源减少 · 攻击资源增多」,几秒后自己消掉; -2. **角标常驻**:整场 Boss 战期间,右侧角色信息面板「地形变异」段应一直在(三行:贫矿脉/回复与护甲资源减少/攻击资源增多);用行动点刷新换图后新板仍应显示(Boss 图每张都带); -3. **资源体感**:挖格时回血格、护甲格应明显比普通图少,四种攻击格(增伤/爆裂/穿刺/奥术)明显多——「进攻续命」的感觉成不成立; -4. **手册行**:玩法帮助文案末行有一句整图变异说明(回复与护甲资源减少、攻击资源增多); -5. **第 1 关 Boss 应无变异**:没有横幅、没有角标(第一关是教学保护,设计上免疫); -6. **普通图应无变异预告**:普通战斗图没有横幅没有角标,原有的地形变异格(荆棘丛/藤蔓缠绕等长在格子上的)照旧。 - -**顺带**(开着减动效玩的话):开战横幅应静态出现、停留后直接消失,无淡入淡出。 - -**局后随手记**(一句话):Boss 图这层"攻击多、回血少"的体感成不成立;有没有觉得 Boss 图突然变难/变容易。读数核对归模拟批(off/on 双档,只测不判),你的体感只做方向参考——不会当场改数值。 - -### ⑫ 封印溢价兑付与封印激励(2026-10-05 挖掘风险不等式判式换代批顺带登记——迭代14②号卡) +### ⑫ 封印溢价兑付与封印激励 - **机制一句**:封印标中的正向兑付现在按同型正向 ×1.25 兑付(`settlement.tres` flag_hit_premium=125 provisional——条款3 条件二封印溢价形态 a),标空与挖格兑付不变;危险格与安全格同池结构零触碰。 - **看什么(实机目检,约 5 分钟)**:①封印标中一处危险格,结算明细的兑付数值应比改前同类行略大(增伤 50→63 / 削弱 65→81 / 急救 2→3 / GP 袋 3→4;盾牌加护与行动点 1 点量纲不变=整数粒度地板);②挖安全格与标空惩罚行数值应与改前逐位相同;③战斗结算帮助文案如有封印相关行,无自造词。 -- **行为读数(改前改后 MC 锚已采,判读随出口报告顺带交付)**:η=封印标中÷封印 与 封印率 位移 ≥5pp 判「有感」;行为无效 δ 仍保留+登记「行为无感」(判式诚实性不依赖行为弹性——2026-10-04 grill Q4 裁)。 +- **行为读数**:η=封印标中÷封印 与 封印率 位移 ≥5pp 判「有感」;行为无效 δ 仍保留+登记「行为无感」(判式诚实性不依赖行为弹性——2026-10-04 grill Q4 裁)。 - **红灯信号**:封印 rush 复发(首轮全封印不挖——δ 与完美封印 ×2 叠加通胀是既有联动面:封印溢价三件套 δ↔p_perfect↔ap_per_round 同窗检算,难度曲线与Boss 调参联动表在册)。 -- **结论回流**:体感 → 本条目记录;数值终值(δ 值与 ×1.5 档留后手)归调参批,不在试玩现场改数。**判式换代文本(行动经济 F1 条款3/战斗结算 验收标准/难度曲线与Boss 联动表三处修订稿)顺带呈用户人闸**——追认单随出口报告。 +- **结论回流**:体感 → 本条目记录;数值终值(δ 值与 ×1.5 档留后手)归调参批,不在试玩现场改数。 -### ⑬ 初始展开收窄体感(2026-10-05 初始展开收窄批顺带登记——迭代14①号卡;需求卡片 §T8 四信号组) +### ⑬ 初始展开收窄体感 -- **机制一句**:开局免费展开(R₀)从「一口气开掉约 2/3 板」收窄——剃雷域从全域 flood 缩到出生 5×5(shave_ring_radius=1),另加生成期 R₀≤cap 重掷闸封顶(10×10≤45 / 12×12≤43 / 13×13≤51 / 14×14≤59)。实测开局免费展开均值:10×10 68.6→39.7 格、12×12 83.2→37.9 格。 +- **机制一句**:开局免费展开(R₀)= 剃雷域出生 5×5(shave_ring_radius=1),另加生成期 R₀≤cap 重掷闸封顶(10×10≤45 / 12×12≤43 / 13×13≤51 / 14×14≤59)。 - **对症信号(「开一大片」体感)**:开局第一挖还会不会「唰一下开掉大半张图」?预期=开场仍是出生区连锁、但明显比以前克制;「开了片面积」的失控感是否消退。 - **节奏信号(单板停留时长)**:单块雷图的挖掘轮数/停留时长变化(免费信息变少 → 每板要多挖几格才有全图视野)——是变紧凑了还是变拖沓。 - **策略信号(连锁与微光预读)**:玩家是否更依赖读数字推雷/类型微光预读(免费视野少了,推理工具的使用率应上升)。 -- **迷雾联动信号(记忆态使用率)**:视野外扩道具(魔法提灯 +2——已裁退役 2026-10-09,拆线批入库后本信号面失效)与记忆态(暗淡已见格)的使用频率变化。 +- **迷雾联动信号(记忆态使用率)**:视野外扩道具(魔法提灯 +2 已退役,本信号面失效)与记忆态(暗淡已见格)的使用频率变化。 - **红灯信号**:开局连续多板几乎无免费展开(R₀ 常年 ≈9-15,体感「开局一片黑」);或可推理率体感骤降(数字不够推)。前者=剃雷半径 r 回调面(P1 旋钮 [0,2]),后者归 S1 相变警戒复测。 - **结论回流**:体感 → 本条目记录;参数终值(r 0/1/2、cap 收紧路径 45→40 等)归 P1-P3 拍板面(读数后置,MC 四带复算挂体验验证清单现行义务),不在试玩现场改数。 -### ⑭ Boss 半血解锁呈现目检(2026-10-05 技能池执行批顺带登记——迭代14④号卡;D8 呈现面) +### ⑭ Boss 半血解锁呈现目检(D8 呈现面) - **机制一句**:三 Boss(食人魔酋长/蛛化卓尔精灵/灰矮人石君王)血量降至一半时,各解锁一行新独占伤害技(震地怒击 ×2.5/CD4 · 遏毒 ×2.0/CD3 · 岩崩 ×2.5/CD4——provisional 归调参)入池参与摇号;解锁瞬间出一次归因明细行「XX 解锁了 YY」(金框行)+ 技能名 toast 一次性提示。 - **看什么(实机目检约 5 分钟)**:①把任一 Boss 打到半血以下,下一轮开始应看到「XX 解锁了 YY」金框明细行 + 右上技能名 toast(只报名不报数值);②同一场战斗继续打,解锁行与 toast 不复弹(单向闩);③解锁后 Boss 会实际使出该技(伤害明显更重);④普通小怪全程无解锁行。 - **红灯信号**:解锁行反复弹(闩失效);toast 带数值/权重(池不公开纪律破);满血即解锁(门谓词错)。 - **结论回流**:体感 → 本条目记录;技能强度体感归 T7 节奏重测读数(跑批待用户批准,过涝越带 S2 回调呈报禁自动调)。 -### ⑮ 秘宝词族换词全 UI 面目检 + 渲染像素闸补跑(2026-10-05 秘宝代码词族对齐批顺带登记——迭代15③号卡) +### ⑯ UI 结构复验(标题屏双列+按钮宽度纪律,约 2 分钟) -- **实机目检(「秘宝」字样全 UI 面,约 3 分钟)**:①C 区槽位标题应显示「秘宝」(原「魔法道具」,hero_info_panel_view 槽位组);②空槽悬停提示应显示「秘宝槽(空)」;③战斗总结三选一叙述行应显示「秘宝 / …」或「秘宝 / 随机获得一件」(原「魔法道具」开头);④换关 toast 应显示「上关剩余 N 件秘宝已随关卡结束清空」。**红灯信号**:任何界面残留「魔法道具」字样。〔**✅ 真人目检半已核销(2026-10-14)**:用户实机目检回报完成,未呈报残留(qa 收尾批)〕 -- **渲染像素类闸补跑挂账**:本批屏蔽五件(golden_compare / shot_probe / fx_probe / ui_layout_probe / board_shot——组 A 文案变更使像素断言合法失效,按 goal 令弃断);**补跑时点=迭代 14 全入库后的表现批周期闸一次性补跑**,与本批无独立补跑义务;届时若 golden 基线因文案换代失效,按换代流程重锚而非当缺陷修。**分工注记(2026-10-05 ui-struct-probe 批)**:结构类断言(互压/等宽/出屏)已由 `ui_struct_probe` 入探针闸默认必跑段(tools/probe_gate.sh),与像素五闸互补不替代——五闸补跑义务不变。**核销注记(2026-10-08 迭代 19 卡①自动化验收补齐批——机器补跑半顺带核销)**:五件机器半全部归宿已入库并实测绿——shot_probe(扩屏七屏+shot_checker A-D 断言)/board_shot(L1-L3 取证+golden 逐像素 0.00%×3)/golden_compare 三件入 render_gate(窗口化自动闸),fx_probe 入 probe_gate --full(headless 逻辑层断言),ui_layout_probe 补 1280/1920 两档最小断言(首跑 PASS);五闸归宿对账见需求卡片-自动化验收补齐批 §一。**真人目检半(上方「秘宝」字样全 UI 面 3 分钟)仍归用户,不注销**。 - -### ⑯ UI 结构批复验(2026-10-05 ui-struct-probe mini-loop 顺带登记——标题屏双列修复+按钮宽度纪律,约 2 分钟) - -- **背景**:实机目检抓到标题屏立绘/帮助牌叠压操作行牌(M2 双列接线缺陷,ui_assembler.gd 右列误挂 MarginContainer)+全站按钮宽度无纪律(UiKit 工厂无宽度约束)。已修复:右列挂回 HBox 第二列;UiKit.button 全站最小宽度基准 216+SIZE_FILL(行板/角标/图标钮 9 处豁免);全 UI 屏结构探针入探针闸默认段。 -- **看什么(实机目检约 2 分钟)**:①标题屏应为左右双列——左操作列(进入存档/设置/退出游戏三钮——迭代 33 卡② 主菜单三入口化后形态,目检按新钮组验)与右立绘看台+玩法速览牌并排,互不遮挡,「退出游戏」按钮完整可见;②同组按钮等宽(菜单列/确认弹窗),按钮不再宽窄参差;③营地屏三柜台+底栏不出屏、不重叠。 +- **现行结构契约**:标题屏左右双列——右列挂 HBox 第二列;UiKit.button 全站最小宽度基准 216+SIZE_FILL(行板/角标/图标钮 9 处豁免);全 UI 屏结构探针入探针闸默认段。 +- **看什么(实机目检约 2 分钟)**:①标题屏应为左右双列——左操作列(进入存档/设置/退出游戏三钮,目检按现行钮组验)与右立绘看台+玩法速览牌并排,互不遮挡,「退出游戏」按钮完整可见;②同组按钮等宽(菜单列/确认弹窗),按钮不再宽窄参差;③营地屏三柜台+底栏不出屏、不重叠。 - **红灯信号**:任何屏出现控件叠压/按钮宽窄不一回潮/内容超出屏幕——结构探针已拦机检面,红灯=探针盲区,报批补断言。 -### ⑰ 奇物渠道分离与凭证目检(2026-10-05 奇物词族对齐与渠道分离批顺带登记——迭代15②号卡) +### ⑰ 奇物渠道分离与凭证目检 - **专长兑付时点(单列检查项——契约①核心)**:关底 Boss 被击败那一刻应弹出关卡完成三选一(候选应全为专长件=卡面只写单件名与效果);**战斗结算面不应出现任何奇物授予**;普通战斗节点打完不给任何奇物。 - **凭证目检**:奖励节点/商店偶见「奇物凭证」卡(价与其他商品相当);选中/买下同一时刻应**直接开出一次奇物三选一**(不进持有集、无库存残留);同局第二次买到应正常(限购 1——第三次起不再出现)。 -- **商店货架目检**:货架应偶见「应急回复」行(T6 补回复);原吞噬流件「零特性挤卡保底」已随渠道分离退役——货架不再出现替卡行为。 +- **商店货架目检**:货架应偶见「应急回复」行(T6 补回复);货架不再出现替卡行为(吞噬流件已退役)。 - **红灯信号**:战斗结算后弹奇物;凭证进持有集;货架出现专长单件(非凭证形态);refresh 件写进角色加成区。 - **结论回流**:呈现面违规改法+档位呈现三路=C1 待裁(呈现批);强度体感归 Beta 阶段(未排期)带判读(本批 MC 只测不判)。 -### ⑱ 混编遭遇目检与读数义务(迭代 18 卡⑤投放顺带登记;2026-11-04 补登第二行 (1,3)) +### ⑱ 混编遭遇目检与读数义务 -- **投放内容**:(2,5) 双行行集 = 熊地精重击手(既有行零变更)+ 巨蜘蛛巢群(新行,行值整行复制 (2,6) 巢群行——零数值新增);行序 = 重击手在前(默认目标)·巢群在后(R6 行序契约:文件序 = 声明序 = 生成序)。第二行 = **(1,3) 双行行集 = 熊地精 + 地精**(2026-11-04 用户裁,随大地精数据行退役):行值整行复用 (1,2) 熊地精(1 只 / hp22 / ac2)与 (1,0) 地精(1–2 只 / hp8 / ac0),零数值新增;静态最坏骰和 1+2=3 ≤4;行序 = 熊地精在前(默认目标与开战叙述取首行)。 +- **投放内容**:(2,5) 双行行集 = 熊地精重击手 + 巨蜘蛛巢群;行序 = 重击手在前(默认目标)·巢群在后(R6 行序契约:文件序 = 声明序 = 生成序)。第二行 = **(1,3) 双行行集 = 熊地精 + 地精**:行值 = (1,2) 熊地精(1 只 / hp22 / ac2)与 (1,0) 地精(1–2 只 / hp8 / ac0);静态最坏骰和 1+2=3 ≤4;行序 = 熊地精在前(默认目标与开战叙述取首行)。 - **实机目检三项**(混编遭遇至少触发一次——L1 节点 3 与 L2 节点 5):同场两敌种呈现(L1 熊地精与地精同屏 / L2 重击手与蜘蛛同屏);行序与表一致(L1 默认目标 = 熊地精、地精随后;L2 默认目标 = 重击手、蜘蛛随后);实例总数 ≤4 目视(L1 2-3 只 = 熊地精 1 + 地精 1-2;L2 3-4 只 = 重击手 1 + 蜘蛛 2-3)。 - **难度带读数义务**:L1 / L2 含混编后的难度带位移——统一后移到数值统一修正批(2026-11-04 用户裁:Alpha 阶段零读数、零 MC 取证,本批与后续投放批同此口径)。 -- **首遇教学位与断言面复核(本批已履行)**:巨蜘蛛首遇位 (2,4)「固定 2 不加骰」零触碰、钩爪恐魔 (3,0)/(3,1) 固定数量零触碰;expect_pools 三元键池模板 + (2,5) 行集构成/行序/静态最坏骰和 ≤4 断言顺带入冒烟全绿。 +- **首遇教学位与断言面**:巨蜘蛛首遇位 (2,4)「固定 2 不加骰」、钩爪恐魔 (3,0)/(3,1) 固定数量;expect_pools 三元键池模板 + (2,5) 行集构成/行序/静态最坏骰和 ≤4 断言在冒烟。 - **红灯信号**:(2,5) 只出一种敌种;敌人数 5 只以上(越 spawn 守卫应不可能——出现即报缺陷);首遇位 (2,4) 数量出现掷骰波动(应恒 2)。 -- **Boss 多行(第二批投放)六面读数清单维持**:Boss 名取首行显示 / Boss 遭遇骰逐行区间骰(每行各掷自己区间——卡① Q8 逐行骰换代口径)/ 半血解锁 / 独占技 / 难度带 / 首遇教学位复核——逐项过,随第二批需求卡片执行。 +- **Boss 多行(第二批投放)六面读数清单**:Boss 名取首行显示 / Boss 遭遇骰逐行区间骰(每行各掷自己区间)/ 半血解锁 / 独占技 / 难度带 / 首遇教学位复核——逐项过,随第二批需求卡片执行。 -### ⑲ 生涯页目检(迭代 18 卡④生涯界面实装批·期一顺带登记——主菜单新增一级只读页+存档 v6) +### ⑲ 生涯页目检(一级只读页+存档 v6) -- **入口与开合**:〔入口已换代——迭代 33 卡② 撤主菜单生涯钮后无玩家可见入口,待迭代 34 卡④ 营地笔记本接入;接入前本项验到页内容即可〕点开全屏页、点「返回」回上层(开始层钮可见性随开合正确恢复)。 -- **页呈现两类六项**:组一·冒险战绩(冒险总局数 / 冒险成功局数〔括注「三关全通」〕 / 各关完成次数〔一行三关,关名带层号〕 / Boss 首杀〔X/3 关〕 / Boss 总击杀);组二·资源(钥石余额徽)——数值与存档实况一致(对照:玩几局后总局数含放弃与失败、三关全通才计冒险成功)。〔原「属性锻造已购合计」「天赋树已购概览」两观测项随生涯页三投影删除摘除——2026-10-12 用户裁⑧,天赋树实装批顺带〕 +- **入口与开合**:〔现行入口状态——主菜单生涯钮已撤、暂无玩家可见入口,待营地笔记本接入;接入前本项验到页内容即可〕点开全屏页、点「返回」回上层(开始层钮可见性随开合正确恢复)。 +- **页呈现两类六项**:组一·冒险战绩(冒险总局数 / 冒险成功局数〔括注「三关全通」〕 / 各关完成次数〔一行三关,关名带层号〕 / Boss 首杀〔X/3 关〕 / Boss 总击杀);组二·资源(钥石余额徽)——数值与存档实况一致(对照:玩几局后总局数含放弃与失败、三关全通才计冒险成功)。 - **旧档载入**:v5 现役档(升级前存档)载入后生涯页正常显示,总局数/冒险成功局数从 0 起计(终身计数域 v6 新增,缺省补零),钥石等既有进度原样。 - **零跳转与局内零入口**:页内除「返回」外无任何前往他处的按钮;冒险进行中(战斗屏/关卡地图屏/状态面板)无生涯入口。 - **对比度与零动效**:页文字亮墨族在深棕底上可读(机检 3 对已入 ui_contrast 闸);开页/关页无过渡动画。 - **红灯信号**:计数与实玩局数对不上(收束入账重复或漏计);旧档载入返回错误或计数域显示异常;页内出现购买/跳转入口;入口在局内可点。 -- **结论回流**:呈现问题归生涯批后续修正(本批需求卡片 v1.2 在案);「冒险成功局数」口径如与体感冲突=P1 甲裁决复核(三关全通才计 1,用户已裁);期二内容(历史回看/图鉴)缺位属分期计划非缺陷。 +- **结论回流**:呈现问题归生涯批后续修正;「冒险成功局数」口径如与体感冲突=P1 甲裁决复核(三关全通才计 1,用户已裁);期二内容(历史回看/图鉴)缺位属分期计划非缺陷。 -### ⑳ 营地统一四柜台目检(迭代 21 天赋树实装批顺带登记——V22 人闸;2026-10-12) +## 验收读数重测义务 -- **四柜台并排**:树淬炼柜台=主界面(脊柱两行一线一节点行板+Fork 三行双态切换钮+脉分组头);锻造工坊柜台未点亮=锁定态、点亮=展开零交互占位面板;秘宝匣柜台未点亮=锁定态、点亮=展开(工坊六行+同调装配段+Y 升级行);图鉴常开独立位;宽度不足横向滚动。 -- **树购买交互**:余额不足购买钮态、行门槛/前置拦截 toast、购买后行板即时刷新(Lv/钮禁用态)。 -- **刷新双入口**:树上「刷新升级」行与秘宝匣装配段 Y 升级行都能买、同账累计(树上 Lv 读数随买走)。 -- **连带面**:状态面板属性锻造段已消失(当时换成钥石+工坊+天赋树概览,该跨关概览后随迭代 36 状态面板瘦身退役,现只留本局信息五件);生涯页两类六项(三柜台概览行已删);局内六键体感(先手首战首轮 +1AP/锋踩雷减半/守标错下轮 +AP/聚结算框 GP 即实得/散货架八折标价)。 -- 验证方式:用户实机目检(本批自动闸外唯一人闸)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 +**现行义务**:**T7 技能池节奏重测**——≥50 distinct seeds 节奏重测(过涝判读带=Boss 半血后特殊技密度上探;跑批须用户批准;S2 过涝越带→解锁技权重/倍率回调呈报禁自动调;**2026-10-06 联审批注:判读带立单于案C 行为换代前,执行前须按案C 新行为复核「半血后」窗口与密度分母是否仍有效,失权即停机呈报重立带**)→ 真人侧读数换 81000 锚补算 k 终值。工具面:`analyze_playtest.py` / `balance_verifier.py` 冒险段 / JSONL 日志现役。 -### ㉑ 秘宝解锁-装配正常流程体验(迭代 22 秘宝体系实现重构落地批顺带登记——2026-10-12) +**后续内容批义务**:混编遭遇行与 Boss 多行投放——投时 MC 取证先报批(数值验证场景二档起;Alpha 阶段按 2026-11-04 用户裁统一后移到数值统一修正批)、难度带读数义务随投登记、首遇教学位纪律与 expect_pools 断言面逐项复核(巨蜘蛛首遇位「固定 2 不加骰」等表注释为准)、Boss 多行投放时 Boss 名取首行显示/Boss 遭遇骰逐行区间骰〔每行各掷自己区间〕/半血解锁/独占技/难度带六面读数逐项过——目检与读数义务细目见 ⑱。 -- **解锁面**:攒钥石→秘宝匣柜台钥石购买(余额不足钮禁用、购买后行板即时刷新为已解锁);条件件进度呈现(远程镐=冒险成功 1 次/刷新执照=Boss 击杀 3 次/天眼=冒险成功 3 且 Boss 4/信标网络=真视使用 10——达标未解锁时开营地/冒险收束即自动入账)。 -- **装配面**:槽位=树同调位点亮数(未点亮树=0 槽不能装配);件档≤格档(普通/优秀/稀有递增向下兼容——稀有件装普通格被拒);未解锁件装配钮禁用;满位禁选。 -- **生效面抽查**:晨操令/双管装填首轮 AP、阔视野带视野 8→12、巢穴预告开局报雷数 toast、线香单格真视(战斗级一次)、天眼 3×3 安全格直开(关卡级一次)、试炼镐每开 8 安全格自动 AP+1(自动兑付——C 区秘宝槽悬停浮窗看进度 N/8;AP 恰归零时兑付优先、轮不结束)、储备罐停手转存变厚、远程镐距 2 可挖、信标网络任意格封印、刷新练习/刷新执照加仓。(原「HUD 兑换钮积点滑耗」观测点随 2026-10-12 反哺批⑤自动兑付裁决换代) -- **装配不可变**:冒险中无任何换装入口(三选一/奖励节点/战斗内零替换交互——旧替换子交互已拆)。 -- 验证方式:用户实机目检(本批自动闸外唯一人闸;能力验证半已由自动化闸覆盖=V1-V19)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 - -### ㉒ 锻造工坊工作间形态与购买交互(迭代 23 锻造工坊实装批顺带登记——2026-10-12) - -- **门与形态**:树上「锻造工坊」钥匙未点亮=锁定态(纯文案、无任何可交互购买路径);点亮后工作间展开=武器锻造区/护甲锻造区两区并列,六路线行板(行名=件名+锻造:长剑锻造/长枪锻造/法杖锻造/轻甲锻造/重甲锻造/魔法护甲锻造;每行件名+Lv+解锁态+钮组)。 -- **购买面**:已解锁路线「锻造 N 钥石」钮(几何价 20/30/45/67/101 逐级涨);余额不足钮禁用;买后等级+1、行板即时刷新、钥石余额扣减。 -- **解锁面**:待解锁路线双通道呈现——「练满长剑锻造 或 200 钥石直购」:长剑练满→长枪/法杖解锁钮消失可直接锻造(零收费);或 200 钥石直购开;两通道互不影响(未练满可直购、直购后练满不重复收)。 -- **选中面**:已解锁路线「选中」钮免费切换(当前路线=「当前」禁用态);一次冒险只带一个武器类型+一个甲型;冒险开始后无切换入口(锁死)。 -- **注入抽查**:营地选长枪→开局攻击类型=穿刺(对敌护甲查克制矩阵生效);选重甲→入战 AC=12+路线加值;旧路线练度保留(换回即生效)。 -- 验证方式:用户实机目检(本批自动闸外唯一人闸;能力验证半已由自动化闸覆盖=V1-V14)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 - -### ㉓ 敌人表内容修批三观测(迭代 24 敌人表内容修批顺带登记——2026-10-13) - -- **新招可见性**:第二关与第三关的普通战斗(非 Boss)是否真的见到「第一关没见过」的招式——巨蜘蛛族毒吐((2,5) 起投,首遇位 (2,4) 不投)、灰矮人族盾击((3,0)/(3,5)/(3,7));不是只有 Boss 变花。 -- **甲型体感**:营地选重甲进战斗,挨打是否比选轻甲**可感知地**轻一点(敌方攻击查矩阵 −1);选魔法护甲是否更疼(+1)。 -- **第一关节奏**:第一关第三个节点(熊地精 22 血)不再是「打不动的一堵墙」,推进节奏顺畅。 -- 验证方式:用户实机目检(登记不阻塞——2026-10-12 真人检测立规;能力验证半已由自动化闸覆盖=V1-V7)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 - -### ㉔ UI 全局主题批全屏巡检(迭代 25 UI 全局主题批顺带登记——2026-10-13) - -- **引擎默认灰清零巡检**:营地三处滚动容器(含右侧竖滚条)、战斗日志/结算回看的自动滚动条、设置面音量滑轨、各屏悬停气泡(含标题屏深底气泡承旧观感)、调试浮窗种子输入框/批量模拟数/输出区、全屏 15 处分隔线——逐屏看过,应无引擎默认灰色圆角现代风残留。 -- **音量滑轨两段可辨**:把主音量拖到中点,已填充段(深棕)与未填充段(暖石)是否一眼可辨(本批注销待办清单第三层①的实机判据)。 -- **专项观察点 1·滑轨柄是否抢焦点**:设置屏上滑轨柄(烛光黄方柄)是否比「关闭」按钮还抢眼——若是,走 L2 微调(候选降档 STONE 灰石系;色值已冻结,目检前不改)。 -- **专项观察点 2·滚动条槽是否看得见**:滚得动的内容里,能否一眼看出滚动条在哪(槽=BG_OVERLAY α0.35)——若否,走 L2 微调(候选提不透明度或改取 SLOT_BACKDROP)。 -- **预盖件无实役(登记注记)**:CheckBox / CheckButton / OptionButton 及其弹层 PopupMenu 游戏零使用,本批仅预盖(冒烟 V3 已有运行时证词)——无需目检,备案待未来批次启用时复查。 -- 验证方式:用户实机目检(登记不阻塞——2026-10-12 真人检测立规;能力验证半已由自动化闸覆盖=冒烟 V1-V6)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 - -### ㉕ UI 交互与观感批逐屏巡检(迭代 26 UI 交互与观感批顺带登记——2026-10-14) - -- **按钮五态反馈**:标题屏/营地/商店/设置/三选一逐屏——鼠标悬停(石纹钮应有可感提亮;主钮/危险钮承现行提亮档)、按下(本族下沉:石纹按压图/烛光黄深档/深红深档)、禁用(余额不足的商店购买钮=本族底幽灵化,非旧「灰头灰脑按不下去」观感)三种反馈均应可感。 -- **键盘焦点环**:Tab 遍历各屏按钮,焦点环(INK 2px 内缩 1px)应可见不糊、不遮钮底字;三类钮底(石纹/烛光黄/深红)上环的可辨性实比。 -- **全局 Nearest 巡检**:立绘/瓦片/格面/图标/九宫格 UI 皮无新增糊感(应更 crisp);暗角与地图渐变无像素块(LINEAR 白名单生效判据);标题屏斜光带无硬边梯形、有横向过渡与上亮下暗衰减。 -- **布局均衡**:商店卡片区不堆上半(垂直居中);营地四栏视觉等高(含锻造/秘宝匣锁定态与图鉴栏)。 -- **诊断钮清零**:玩家画面(主菜单及各屏左下角)无「诊断转储」钮;转储入口仅在调试浮窗内可达。 -- 验证方式:用户实机目检(登记不阻塞——2026-10-12 真人检测立规;能力验证半已由自动化闸覆盖=冒烟 V1-V6+T4 结构断言)。 -- **✅ 已核销(2026-10-14)**:用户实机目检回报完成,未呈报问题(qa 收尾批)。 - -## 验收读数重测义务(履行留痕 + 现行义务) - -**已履行**(按序换代,旧读数各随其批作废留痕不入本单):①验收读数重测批(2026-09-19——Boss 单独出列/承伤带/通关率基线全量重测,硬化翻倍期·乏力死效果期·充能期旧读数作废);②迭代 5 基线重测(统一随机流后 MC+verifier 双窗);③**数值修复批新尺重测(2026-10-01)**——模拟档位重构后全量重测,新锚 `sim-data/runsum_numfix_final_n200_20261001.jsonl`,全旧带作废只测不判(numfix 报告(已退役,git 历史可查));④**迭代 10 奖励重构批重锚(2026-10-01)**——四代锚 77000/78000/79000/80000(改前/重构后/共享池后/掷定前置后,各 400 局),普通 L1 41.8%/L2 10.2% 带内(迭代10通关率读数(已退役,git 历史可查));⑤**T19 真人标定局完成(2026-10-03 用户裁)**——有效局 2(1 通关 1 死于 L3 首战,T19真人试玩读数(已退役,git 历史可查)),用户裁定**佐证级完成不再补局**;k 预期带同日立(**正常 >0.5、预警 <0.3**),字段随 81000 重锚入库后补算终值。 - -**现行义务**:**T7 技能池节奏重测(2026-10-05 技能池执行批挂单)**——≥50 distinct seeds 节奏重测(过涝判读带=Boss 半血后特殊技密度上探;跑批须用户批准;S2 过涝越带→解锁技权重/倍率回调呈报禁自动调;**2026-10-06 联审批注:判读带立单于案C 行为换代前,执行前须按案C 新行为复核「半血后」窗口与密度分母是否仍有效,失权即停机呈报重立带**)→ ~~T19 真人标定局~~(⑤已完成)→ 真人侧读数换 81000 锚补算 k 终值(随迭代 9 出口重锚批出,模拟锚 2026-09-19 判读报告的现行锚地位由 81000 锚+真人两局承接)。工具面:`analyze_playtest.py` / `balance_verifier.py` 冒险段 / JSONL 日志现役。 - -**后续内容批义务(2026-10-06 敌人表行集多行批 P3 丙二裁挂单)**:首个混编遭遇行投放(连同 Boss 多行内容,敌种候选与坐标由内容批裁)——投时 MC 取证先报批(数值验证场景二档起;Alpha 阶段按 2026-11-04 用户裁统一后移到数值统一修正批)、难度带读数义务随投登记、首遇教学位纪律与 expect_pools 断言面逐项复核(巨蜘蛛首遇位「固定 2 不加骰」等表注释为准)、Boss 多行投放时 Boss 名取首行显示/Boss 遭遇骰逐行区间骰〔每行各掷自己区间——2026-10-07 卡① Q8 逐行骰换代,旧「读首行区间」口径消解〕/半血解锁/独占技/难度带六面读数逐项过。——**已编入 roadmap 迭代 18 卡⑤混编遭遇首批投放批(2026-10-06 用户令;读数义务维持顺带登记,MC 取证跑批顺延数值统一修正批统一执行〔未排期,届时另令——数值统一调整殿后〕)。进展:首批已于 2026-10-07 落表((2,5) 双行);第二行已于 2026-11-04 落设计((1,3) 地精+熊地精,随大地精数据行退役,目检与读数义务见 ⑱);剩余面 = Boss 多行第二批(六面读数随投逐项过)** - -## ㉖ 代码架构技术债修复批——全流程走查(迭代 27 卡①顺带登记;能力验证半=冒烟 V1-V9+parity 三变体逐位一致、与基线数据逐项比对五跑全同) +## ㉖ 代码架构技术债修复批——全流程走查 > 场景拆分+会话物化+战斗域重构+账本完成+模态协议内聚后,玩家可见面唯一验收=观感零变化。登记不阻塞(2026-10-12 真人检测立规)。 > -> **机检承接注记(2026-10-17 用户裁,迭代 29 反哺点③)**:屏壳切换正确性半(六步主流程+两条回退+屏级互斥)已转机检 `screen_flow_probe` 入探针闸必跑段;第 1 项保留——其承载的是机检抓不到的观感半(逐屏演出时序/文案/布局零漂移)。 +> **机检承接注记(2026-10-17 用户裁)**:屏壳切换正确性半(六步主流程+两条回退+屏级互斥)已转机检 `screen_flow_probe` 入探针闸必跑段;第 1 项保留——其承载的是机检抓不到的观感半(逐屏演出时序/文案/布局零漂移)。 | # | 目检项 | 判据 | |---|---|---| @@ -277,9 +168,9 @@ --- -## ㉗ 启动装配与生命周期验收补全批——启动态菜单目检(迭代 28 卡①顺带登记;能力验证半=冒烟 V1a-d/V2a-f/V3a-i+启动态菜单 golden 逐像素) +## ㉗ 启动装配与生命周期验收补全批——启动态菜单目检 -> 装配顺序修复(冒险屏先挂、菜单屏后挂)后,**启动即见的那一屏**是本批唯一玩家可见行为变更。自动化闸只能证明「顶层是谁」与「逐像素未变」,真机上「看着对不对、点不点得动」仍需人眼。登记不阻塞(2026-10-12 真人检测立规)。 +> **启动即见的那一屏**是本节唯一玩家可见行为观测点。自动化闸只能证明「顶层是谁」与「逐像素未变」,真机上「看着对不对、点不点得动」仍需人眼。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -291,9 +182,9 @@ --- -## ㉘ 未开格类型徽章批——类型微光实机目检(迭代 30 卡①顺带登记;能力验证半=双帧 glow 作用集取证 2/4/4·outside=0+golden off 帧 0.10–0.14%+探针 case⑰+单测五段 51 检查) +## ㉘ 未开格类型徽章批——类型微光实机目检 -> 类型微光实装(默认开、组合根布尔可切)后,玩家可见面=棋盘格内五组类型微光。机检只能证明「作用集正确/开帧一致/关帧逐位一致」,真机上「五组分不分得清、看着脏不脏」仍需人眼。**群伤组明度档为 provisional 值**(art-bible v3.15 登记,明细见其 git 提交史),观感复核归战斗一屏样张批(该批 2026-10-30 已合回——迭代 43,方向稿目检登记 ㊶、复核随其一并执行)——本节第 5 项读数作该复核的输入。登记不阻塞(2026-10-12 真人检测立规)。 +> 类型微光实装(默认开、组合根布尔可切)后,玩家可见面=棋盘格内五组类型微光。机检只能证明「作用集正确/开帧一致/关帧逐位一致」,真机上「五组分不分得清、看着脏不脏」仍需人眼。**群伤组明度档为 provisional 值**(art-bible v3.15 登记,明细见其 git 提交史)。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -301,13 +192,12 @@ | 2 | 微光不遮数字 | 微光环只住本格内缘(带宽 cell÷8),不外溢遮邻格已开格数字;与接触带微光同屏时两层可辨 | | 3 | 出圈灭、入圈复亮 | 角色走远出 8 格圈→微光灭;走回→复亮;换图随旧图全重置 | | 4 | 整屏不脏 | 满圈微光同屏时棋盘不显脏、不抢焦点(焦点预算观感的人眼侧) | -| 5 | 群伤暗档观感 | 绯红暗档 #A61D37(V=0.65 provisional)与其余四组同屏时的区分度、以及与危险红不误读的观感——读数归样张批复核 | --- -## ㉙ 代码术语刷新与凭证件裁削批——玩家面目检(迭代 31 卡①/卡②;能力验证半=冒烟 1151 项 0 失败+单元 34 套全绿+对拍 120 局真差异 0 行+`feat_vouchers` 39 项全绿) +## ㉙ 代码术语刷新与凭证件裁削批——玩家面目检 -> 卡① 是纯重命名批(行为零变化),卡② 删两件凭证、把完美保险改为专长订阅式。机检能证明词面清零、数值零漂移与验收组全绿,但玩家面「旧词是否真的不见了、贴图是否还在、豁免的实际观感」仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 +> 词面换代与凭证件裁削(删两件凭证、完美保险改专长订阅式)后,机检能证明词面清零与数值零漂移,但玩家面「旧词是否真的不见了、贴图是否还在、豁免的实际观感」仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -321,115 +211,115 @@ --- -## ㉚ 迭代 32 卡①/卡②——玩家可见文案与限次观面目检(2026-10-21 随反哺写入登记) +## ㉚ 玩家可见文案与限次观面目检 -> 卡① 换代对外文案(「完美排雷」→「完美封印」)并修正归因锚判据(N7——豁免累加时点与有效误标判据);卡② 把天赋树锋/守限次从每战 2 次改为每关 2 次(玩家可感知削弱)。机检能证明词面换代与两态判定同真值一致(冒烟 A10–A12 与单元断言),行序呈现与实际手感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 +> 对外文案现行口径=「完美封印」系(归因锚判据 N7——豁免累加时点与有效误标判据);天赋树锋/守限次现行=每关 2 次(玩家可感知削弱)。机检能证明词面换代与两态判定同真值一致(冒烟 A10–A12 与单元断言),行序呈现与实际手感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| | 1 | 结算明细两行先后 | 「完美保险·标错豁免」行先于「封印未中」行呈现(豁免在前、未中不带金框) | | 2 | 未豁免态文案 | 无保险首次标错的「封印未中」行带金框,文案「本图完美封印已破——清图奖励不再加倍」可读 | | 3 | 高光行与横幅 | 对外高光行「完美封印!清图奖励 ×2」与全屏横幅「完美封印 ×2」显示正确、零「雷」字 | -| 4 | 天赋树锋/守限次 | 同一关内第 3 次起踩危险格不再伤害减半、第 3 次标错不再返还行动点(每战限 2 → 每关限 2 的实际手感) | +| 4 | 天赋树锋/守限次 | 同一关内第 3 次起踩危险格不再伤害减半、第 3 次标错不再返还行动点(每关限 2 的实际手感) | | 5 | 旧档续玩 | 含改名前 counter 键的旧断点存档正常进入不崩(崩溃面已由 V13 自动化覆盖,此处目检手感) | --- -## ㉛ 迭代 33——主菜单三入口、选档界面与旧档迁移实机目检(2026-10-22 随反哺写入登记) +## ㉛ 主菜单三入口、选档界面与旧档迁移实机目检 -> 三卡换代玩家入口拓扑(主菜单 6 钮→3 钮、新增选档界面、隐式单档→3 存档位+旧档迁槽 1)。机检已覆盖钮集/读回/写盘拒绝与链路面(〔mn〕〔sl〕〔sv〕断言族),左列观感失衡、删档确认文案观感与迁移实际行为仍要人眼看。登记不阻塞(2026-10-12 真人检测立规);总收口时点=迭代 33 实现报告(已退役,git 可考)。 +> 玩家入口拓扑现行形态:主菜单三钮、选档界面三槽、3 存档位+旧档迁槽。机检已覆盖钮集/读回/写盘拒绝与链路面(〔mn〕〔sl〕〔sv〕断言族),左列观感失衡、删档确认文案观感与迁移实际行为仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 主菜单三钮观感 | 左列只剩「进入存档/设置/退出游戏」三钮,布局不失衡、无旧钮残留(卡② 目检项) | -| 2 | 选档界面三槽观感 | 从「进入存档」进入:三槽逐行呈现、槽卡只显示摘要三项(钥石/冒险成功局数/冒险总局数),无断点/种子等第四项(卡③ 目检项) | -| 3 | 删档确认文案 | 点「删档」先出二次确认窗,文案读顺、取消不删、确认才删且槽就地回空(卡③ 目检项) | -| 4 | 旧档首次启动迁移(可选——开发者向) | 盘上留有旧 `save.json` 时首次启动:旧档内容出现在槽 1(摘要三项=旧档进度),源改名 `.migrated.bak` 留盘,其余两槽呈白板(卡① 附带观察项,push_warning 留痕非玩家面) | +| 1 | 主菜单三钮观感 | 左列只剩「进入存档/设置/退出游戏」三钮,布局不失衡、无旧钮残留 | +| 2 | 选档界面三槽观感 | 从「进入存档」进入:三槽逐行呈现、槽卡只显示摘要三项(钥石/冒险成功局数/冒险总局数),无断点/种子等第四项 | +| 3 | 删档确认文案 | 点「删档」先出二次确认窗,文案读顺、取消不删、确认才删且槽就地回空 | +| 4 | 旧档首次启动迁移(可选——开发者向) | 盘上留有旧 `save.json` 时首次启动:旧档内容出现在槽 1(摘要三项=旧档进度),源改名 `.migrated.bak` 留盘,其余两槽呈白板(push_warning 留痕非玩家面) | | 5 | 空槽新档链 | 空槽点「新档」→进入营地,槽卡就地翻为有档形态(进档+删档钮) | - **红灯信号**:主菜单出现旧六钮任何一枚;选档层摘要读出别槽值;删档一击直删;旧档迁移后槽 1 白板(迁移没跑)。 -- **结论回流**:观感问题归迭代 34 卡④(营地场景图重立卡顺带复核入口观感);数据层缺陷归待办清单营地交互重做条。 +- **结论回流**:观感问题归营地场景面复核入口观感;数据层缺陷归待办清单营地交互重做条。 --- -## ㉜ 迭代 34——遭遇行集换代与信息迷雾实机目检(2026-10-24 随反哺写入登记) +## ㉜ 遭遇行集换代与信息迷雾实机目检 -> 卡③ 把遭遇寻址换成(关卡序号, 行类, 深度带)三参,卡④ 给关卡节点图加信息迷雾(邻近 N 层内显示类型)。机检已覆盖行集解析、校验负向判据与可见性/绘制记录断言,遭遇观感与雾下图面仍要人眼看。登记不阻塞(2026-10-12 真人检测立规);总收口时点=迭代 34 实现报告(已退役,git 可考)。 +> 遭遇寻址现行=(关卡序号, 行类, 深度带)三参;关卡节点图带信息迷雾(邻近 N 层内显示类型)。机检已覆盖行集解析、校验负向判据与可见性/绘制记录断言,遭遇观感与雾下图面仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 三关实机开战遭遇观感不回归(卡③) | 第一关地精/熊地精、第二关巨蜘蛛与重击手混编、三关 Boss 战的敌人数量与外观与改动前一致 | -| 2 | 雾下可读性观感(卡④) | 未知类型房间一眼可辨为「未知」而非「漏画」——编号仍在,类型图标与文字不出现 | -| 3 | 多终点 Boss 标记观感(卡④) | 双 Boss 图上两个终点的紫赤描边都清楚可辨 | -| 4 | 大图完整可见观感(卡④) | 大图(11 层×6 槽)整幅落在画布内,无节点被裁切或挤在一角 | +| 1 | 三关实机开战遭遇观感不回归 | 第一关地精/熊地精、第二关巨蜘蛛与重击手混编、三关 Boss 战的敌人数量与外观与改动前一致 | +| 2 | 雾下可读性观感 | 未知类型房间一眼可辨为「未知」而非「漏画」——编号仍在,类型图标与文字不出现 | +| 3 | 多终点 Boss 标记观感 | 双 Boss 图上两个终点的紫赤描边都清楚可辨 | +| 4 | 大图完整可见观感 | 大图(11 层×6 槽)整幅落在画布内,无节点被裁切或挤在一角 | - **红灯信号**:改动前后遭遇敌人数量/外观不一致;雾下房间读作漏画或类型文字漏出;双 Boss 只有一侧带描边;大图有节点出界。 - **结论回流**:实现缺陷归待办清单登记新条目;观感问题归关卡节点图呈现面后续批。 --- -## ㉝ 迭代 35——生成图换代实机目检(2026-10-25 随收尾写入登记) +## ㉝ 生成图换代实机目检 -> 两卡把图的来源从模板池换成「参数档×种子」生成图:卡① 落生成器与产出规格,卡② 切消费侧并清出 15 张模板。机检已覆盖生成图确定性、深度带覆盖、商店三性质、断点代差拒绝等;选路观感、首局教学图与画幅观感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规);总收口时点=迭代 35 实现报告(已退役,git 可考)。 +> 关卡图来源现行=「参数档×种子」生成图。机检已覆盖生成图确定性、深度带覆盖、商店三性质、断点代差拒绝等;选路观感、首局教学图与画幅观感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 三关选路观感不回归(卡②) | 第二/三关开局即出现两个可选入口且都能进入;岔口候选互异且分属不同支路;走 A 支只遇 A 支终点 Boss;每个终点前恰一家店 | -| 2 | 首局教学图体验(卡②,种子 42 固定图) | 新档开局(`is_first_adventure_done==false`)每次都是同一张图;入口战→岔口→商店→Boss 的顺序可读,含至少一个奖励位与一个恢复位 | -| 3 | 三关生成图选路观感(卡①) | 图规模与分支形态逐关变大;岔口有实际取舍,不是「只有一条路能走」 | -| 4 | 大图完整可见观感(卡①+画布缺口) | L2/L3 生成图整幅落在 1280 屏内、节点不被裁切且都可点到——已知冻结画布公式在 L3 深度域 0–13 下可能超宽,本项同时验证该缺口是否已在实机显形 | +| 1 | 三关选路观感不回归 | 第二/三关开局即出现两个可选入口且都能进入;岔口候选互异且分属不同支路;走 A 支只遇 A 支终点 Boss;每个终点前恰一家店 | +| 2 | 首局教学图体验(种子 42 固定图) | 新档开局(`is_first_adventure_done==false`)每次都是同一张图;入口战→岔口→商店→Boss 的顺序可读,含至少一个奖励位与一个恢复位 | +| 3 | 三关生成图选路观感 | 图规模与分支形态逐关变大;岔口有实际取舍,不是「只有一条路能走」 | +| 4 | 大图完整可见观感(含画布缺口) | L2/L3 生成图整幅落在 1280 屏内、节点不被裁切且都可点到——已知冻结画布公式在 L3 深度域 0–13 下可能超宽,本项同时验证该缺口是否已在实机显形 | - **红灯信号**:第二/三关只有一个入口或第二入口不可进入;岔口候选同类型或同支路;走 A 支遇到 B 支 Boss;教学图每次开局不同;节点出屏或点不到;三关图规模不递增。 - **结论回流**:实现缺陷归待办清单登记新条目;观感与画幅问题归呈现批(待办清单「超预算图策略升级路径」条)。 --- -## ㉞ 迭代 36——开场后缀/营地灰字/危险格字形/图例新句/状态面板实机目检(2026-10-25 随收尾写入登记) +## ㉞ 开场后缀/营地灰字/危险格字形/图例新句/状态面板实机目检 -> 卡C 给开场行加条件后缀、营地六处灰字深档并扩迷雾三关对比行;卡A 把玩家面禁字清零(危险格单字字形「雷」→「危」、图例换新句);卡③ 把状态面板瘦成只留本局信息。机检已覆盖后缀条件求值、取色断言与字形/文案字面;观感与人眼读感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规);总收口时点=迭代 36 实现报告(已退役,git 可考)。 +> 现行面:开场行带条件后缀、营地六处灰字深档+迷雾三关对比行、危险格单字字形「危」、图例新句、状态面板只留本局信息。机检已覆盖后缀条件求值、取色断言与字形/文案字面;观感与人眼读感仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 开场行后缀观感(卡C) | 「(含面板加成)」只在有局外加成时出现;出现时机的直觉合理,不误读为永久加成 | -| 2 | 营地灰字观感(卡C) | 六处深化后灰字与牌底层次可读、不糊成一片 | -| 3 | 危险格「危」字观感(卡A) | 字形密度与可读性对旧「雷」字不下降,三关棋盘同屏不误读 | -| 4 | 图例新句通顺(卡A) | 「标空可左键直接挖开(安全格零奖励、危险格受挖掘惩罚)」读顺,零旧词残留 | -| 5 | 状态面板观感(卡③) | 面板只留本局信息五件(带的秘宝/已获专长/当前属性/现有 GP/钥石总量),层级与文案通顺、空态句得体,零跨关解锁段 | +| 1 | 开场行后缀观感 | 「(含面板加成)」只在有局外加成时出现;出现时机的直觉合理,不误读为永久加成 | +| 2 | 营地灰字观感 | 六处深化后灰字与牌底层次可读、不糊成一片 | +| 3 | 危险格「危」字观感 | 字形密度与可读性不下降,三关棋盘同屏不误读 | +| 4 | 图例新句通顺 | 「标空可左键直接挖开(安全格零奖励、危险格受挖掘惩罚)」读顺,零旧词残留 | +| 5 | 状态面板观感 | 面板只留本局信息五件(带的秘宝/已获专长/当前属性/现有 GP/钥石总量),层级与文案通顺、空态句得体,零跨关解锁段 | - **红灯信号**:后缀在不该出现时出现或该出现时缺失;营地灰字糊到难读;「危」字糊或与旧字形误读;图例仍见旧词;面板仍出现秘宝匣/天赋树跨关概览段或五件缺失。 - **结论回流**:实现缺陷归待办清单登记新条目;观感问题归呈现面后续批。 --- -## ㉟ 迭代 37——缺陷定点修+结构重构四卡实机目检总清单(2026-10-25 随批后收尾登记) +## ㉟ 缺陷定点修+结构重构实机目检总清单 -> 四卡=卡① 行为缺陷定点修+卡②③④ main 判离/boardview 拆件/runner 拆件与断点 schema 单点(等价重构),玩法语义零变化,但动了呈现装配与商店/三选一接线。机检已覆盖撤销证明、断点 27 键逐键比对与双树原始面逐字节比对;真机上「看着是否与改前一致」仍要人眼看。登记不阻塞(2026-10-12 真人检测立规);总收口时点=迭代 37 实现报告(已退役,git 可考)。 +> 行为缺陷定点修+等价重构(main 判离/boardview 拆件/runner 拆件与断点 schema 单点),玩法语义零变化,但动了呈现装配与商店/三选一接线。机检已覆盖撤销证明、断点 27 键逐键比对与双树原始面逐字节比对;真机上「看着是否与改前一致」仍要人眼看。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 棋盘观感逐像素(卡③) | 普通/优秀/稀有档瓦片、封印纹、数字墨族、英雄待机/行走/撞击/挖掘四态与朝向、缩格重排与缺位回退——拆件后同链,与改前零漂移 | -| 2 | 商店(卡④) | 进店货架绘制、刷新(免费额度/付费价)、购买扣款与文案、离店再进店(货架入断点)与改前一致 | -| 3 | 三选一停点(卡④) | 关底关卡完成三选一呈现、刷新钮、空池跳过、专长凭证替换、确认后回血与加算区读数与改前一致 | -| 4 | 断点续玩(卡④) | 中途关退出→「继续上局」→停在原节点,GP/生命/道具库存/特性/凭证限购读数一致 | -| 5 | 卡① 指定两项 | 蓄力敌(heavy 技能敌)意图三档观感;同名敌受击闪白与弹道落点落对个体 | -| 6 | 卡① 其余行为面 | 蓄力三档观感分档、战斗结束庆祝浮动不叠加、批量模拟与调试浮窗互斥(连点不并发) | -| 7 | 模态层(卡①) | 模态层重复 open 不再吞旧账——多层叠加时关闭顺序正确 | -- **红灯信号**:本批为等价重构+定点修,任何屏观感或交互读数与改前不一致即报缺陷(第 1–4 项对「改前」、第 5–7 项对卡片设计的修复预期)。 +| 1 | 棋盘观感逐像素 | 普通/优秀/稀有档瓦片、封印纹、数字墨族、英雄待机/行走/撞击/挖掘四态与朝向、缩格重排与缺位回退——拆件后同链,与改前零漂移 | +| 2 | 商店 | 进店货架绘制、刷新(免费额度/付费价)、购买扣款与文案、离店再进店(货架入断点)与改前一致 | +| 3 | 三选一停点 | 关底关卡完成三选一呈现、刷新钮、空池跳过、专长凭证替换、确认后回血与加算区读数与改前一致 | +| 4 | 断点续玩 | 中途关退出→「继续上局」→停在原节点,GP/生命/道具库存/特性/凭证限购读数一致 | +| 5 | 定点修指定两项 | 蓄力敌(heavy 技能敌)意图三档观感;同名敌受击闪白与弹道落点落对个体 | +| 6 | 定点修其余行为面 | 蓄力三档观感分档、战斗结束庆祝浮动不叠加、批量模拟与调试浮窗互斥(连点不并发) | +| 7 | 模态层 | 模态层重复 open 不再吞旧账——多层叠加时关闭顺序正确 | +- **红灯信号**:本节为等价重构+定点修判读,任何屏观感或交互读数与改前不一致即报缺陷(第 1–4 项对「改前」、第 5–7 项对修复预期)。 - **结论回流**:实现缺陷归待办清单登记新条目;不在试玩现场改数。 -## ㊱ 迭代 38——六卡实机目检总清单(2026-10-26 随批后收尾登记) +## ㊱ 实机目检总清单 -> 七卡编入、六卡合回(2026-10-26,git 提交 8ea7cfba;卡② 结构小件定点修批停卡退上游,无改动不登记目检项)。合回六卡=卡① 选路屏装配迁移+BFS 缓存、卡③ 校验文案计数动态化、卡④ 结算明细扩展行型收敛为单一型+效果载荷、卡⑤ 奖励节点注释与战报文案清扫、卡⑥ 结算明细行缓冲类型修复、卡⑦ 调试入口写死行删除。卡①③④⑥ 按等价重构/内部收敛口径收口(卡① 以改前 golden 基线对拍 0.00%、卡④ 以 parity 三变体逐位一致佐证),卡⑤⑦ 有玩家可见变化;机检已覆盖各卡撤销证明,真机观感仍要人眼。登记不阻塞(2026-10-12 真人检测立规);读数与论证详见实现报告(git 提交 6c37cf01)。 +> 判读口径:选路屏装配迁移+BFS 缓存、校验文案计数动态化、结算明细行型收敛+效果载荷、结算明细行缓冲修复均按等价重构/内部收敛口径判「与改前一致」;战报文案清扫与调试入口写死行删除两项有玩家可见变化,按修复/删除预期判。真机观感仍要人眼。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 选路屏状态栏与悬停高亮(卡①) | 状态栏文案(关卡名/GP/生命与血条/属性/加成行)与悬停格高亮、雾区信息面板——装配迁移+缓存后与改前一致,无错位、无缺项、无换格不刷新 | -| 2 | 奖励节点战报文案(卡⑤) | 奖励节点停点战报行为新句「关卡奖励点(三选一——选毕推进)」,不再出现「内容待定」类旧表述 | -| 3 | 结算明细带轮摘要(卡⑥) | 多轮结算的明细里「上轮摘要」正常显示(修复前该行被类型错误吞掉),逐轮分隔与明细行序可读 | -| 4 | 结算明细效果行与示警烟火来源(卡④) | 四类专长效果行(揭示/预览区/保险/排雷)文案与呈现同改前;示警烟火行新增来源标注 `fx_warning_beacon` 裸键渲染——可接受性与人眼可读性由本项定 | -| 5 | 调试角标发布态恒隐(卡⑦) | 菜单/设置面/对局中三处调试浮窗入口与角标恒不出现(写死行已删);浮窗仍可经开发工具宿主直调打开 | +| 1 | 选路屏状态栏与悬停高亮 | 状态栏文案(关卡名/GP/生命与血条/属性/加成行)与悬停格高亮、雾区信息面板——装配迁移+缓存后与改前一致,无错位、无缺项、无换格不刷新 | +| 2 | 奖励节点战报文案 | 奖励节点停点战报行为新句「关卡奖励点(三选一——选毕推进)」,不再出现「内容待定」类旧表述 | +| 3 | 结算明细带轮摘要 | 多轮结算的明细里「上轮摘要」正常显示,逐轮分隔与明细行序可读 | +| 4 | 结算明细效果行与示警烟火来源 | 四类专长效果行(揭示/预览区/保险/排雷)文案与呈现同改前;示警烟火行来源标注 `fx_warning_beacon` 裸键渲染——可接受性与人眼可读性由本项定 | +| 5 | 调试角标发布态恒隐 | 菜单/设置面/对局中三处调试浮窗入口与角标恒不出现;浮窗仍可经开发工具宿主直调打开 | - **红灯信号**:第 1、4 项与改前呈现不一致即报缺陷;第 2、3、5 项按修复/删除预期判——旧文案仍在、摘要仍缺、角标仍可见即报缺陷。 - **结论回流**:实现缺陷归待办清单登记新条目;`fx_warning_beacon` 裸键的可读性判「不可接受」时,归呈现面后续批补来源中文名映射(`settlement.tres` 的 source_label_map 补键)。 -## ㊲ 迭代 39——拆件批情境触发技实机目检(2026-10-28 随批后收尾登记) +## ㊲ 情境触发技实机目检 -> 三卡合回(2026-10-27,git 提交 ffb0ac15):主卡冒险域拆件与账本实体化、副卡同调配装充能域封装、触发器卡技能池情境条件触发器+领域拆分 v1.3。拆件面以断点对拍 292 dumps 逐位零漂移与逐卡撤销证明机检收口,玩家可见行为零变化;触发器卡两示范投放是新出招行为——机检覆盖机制判定,真实战斗里「出得对不对、看得懂不懂」要人眼。登记不阻塞(2026-10-12 真人检测立规);读数与论证详见实现报告(git 提交 ffb0ac15 一线可考)。 +> 拆件面玩家可见行为零变化;情境触发技两示范投放是新出招行为——机检覆盖机制判定,真实战斗里「出得对不对、看得懂不懂」要人眼。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -438,9 +328,9 @@ - **红灯信号**:两技不出现(机制未触发)或触发时机明显不合理(如满血触发、低血不触发)即报缺陷。 - **结论回流**:实现缺陷归待办清单登记新条目;触发观感类判读(频率/时机手感)归难度曲线调参批数值面,不在目检现场改数。 -## ㊳ 口径换代批——玩家可见字串换代实机目检(2026-10-28 随批后收尾登记) +## ㊳ 玩家可见字串换代实机目检 -> 提前实施卡批合回(2026-10-26,git 提交 ed49a7a5):12 条玩家可见字串按「关卡完成/冒险成功/冒险落幕」新口径换代+断言随动 60 处+注释清扫 61 条。字串内容已由 V1–V7+wr1–3 十七条断言钉死并实跑绿、验收审计逐字核对;渲染观感(字体、换行、截断)要人眼。登记不阻塞(2026-10-12 真人检测立规);读数与论证详见实现报告(git 提交 ed49a7a5)。 +> 玩家可见字串现行口径=「关卡完成/冒险成功/冒险落幕」;字串内容已由 V1–V7+wr1–3 十七条断言钉死,渲染观感(字体、换行、截断)要人眼。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -456,9 +346,9 @@ - **红灯信号**:上述任一位置仍出现退役旧词「通关」即报缺陷(静态扫描 20 行豁免为已登记例外,不含玩家可见面)。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊴ 迭代 40——拆件批弹窗与会话更替实机目检(2026-10-28 随批后收尾登记) +## ㊴ 弹窗与会话更替实机目检 -> 两卡合回(2026-10-28,git 提交 514457d1):卡① B1 战斗域拆件批(battle_fx_host/reward_grant 两新件+settlement 拆段三列形)+卡② 结构小件定点修批(六件定点修+RngService 双违约通道+负面套件)。拆件面以同种子 dump 六组逐位全等与真实入口断言收口,玩家可见行为零变化;下两项是弹窗收口与会话清队的观感核。登记不阻塞(2026-10-12 真人检测立规);读数与论证详见实现报告(git 提交 514457d1 一线可考)。 +> 拆件面玩家可见行为零变化;下两项是弹窗收口与会话清队的观感核。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -467,9 +357,9 @@ - **红灯信号**:弹窗关闭后底层未恢复或残留残影、新战斗开始后旧状态行未清即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊵ 迭代 41——结构收敛两卡实机目检(2026-10-29 随批后收尾登记) +## ㊵ 结构收敛实机目检 -> 两卡合回(2026-10-29,git 提交 eb9bb537):卡① 核心数据面结构收敛批(config_db 三域容器+存档拆件 SlotStore/MetaStateStore+adventure_table 拆段三段件+meta_progression 瘦身+spawn 束化)+卡② 呈现层结构收敛批(视图拆私有族+六状态件+ui_kit 收敛+print 删)。行为零变化批,判读口径全部=「与改前一致」;本批测试经用户特许(2026-10-28)全数移交未跑,呈现等价的其余证据承载=现役探针/单元测试断言面。登记不阻塞(2026-10-12 真人检测立规)。 +> 数据面与呈现层结构收敛,行为零变化,判读口径全部=「与改前一致」;呈现等价的证据承载=现役探针/单元测试断言面。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -480,63 +370,48 @@ - **红灯信号**:任一屏/浮层布局错位、交互无响应或读数与改前不一致即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊶ 迭代 43——战斗一屏样张批方向稿目检(2026-10-30 随批后收尾登记) +## ㊷ 组合根注册面+战斗编排归约+测速循环实机目检 -> **✅ 已核销(2026-11-04)**:用户会话裁定三项按通过处理(未逐项呈报读数)——样张整体过闸成立,本批无缺陷呈报;连带 ㉘ 第 5 项群伤暗档 provisional 观感复核一并了结。回流落点见 art-bible §1.4 样张登记句与 08-Alpha版本标准「五 · 表现」两行。 - -> 单卡合回(2026-10-30,git 提交 3b66d1a6):战斗一屏样张批——五项实装定值(血条危险红/条底收常量/顺位徽标提档/护甲三枚 24×24 PNG/名字行素底牌不压地台+地台件九宫格接装)+样张脚本扩展(两版画布出口、整屏四项与战斗表现五项机检 30/30 全绿、单元套件 18 checks 全绿)。**方向稿目检先行**(art-bible §1.4 闸形)——机检已全绿,气质终审通过才算样张整体过闸;通过前终稿资产与动画设计不启动。登记不阻塞(2026-10-12 真人检测立规);读数与论证详见实现报告(git 提交 3b66d1a6 一线可考)。 - -| # | 目检项 | 判据 | 材料 | -|---|---|---|---| -| 1 | 方向稿气质与构图 | 气质=明亮地窟看台、立绘最抢眼、无压抑;构图/分区/明度三档带/首焦落点与设计意图一致 | `artwork/mockups/sample_battle_screen_1280x800.png`、`sample_battle_screen_1920x1080.png`(归档位 `artwork/archive/战斗一屏样张批-2026-10-29/`) | -| 2 | 改前/改后五项定值对照 | 血条色/素底牌/徽标/护甲图标/地台件五项前后差异可辨 | `sample_battle_screen_before_after.png` | -| 3 | 类型微光 provisional 明度档观感复核(原归本批承接,见 ㉘ 节) | 五组微光在样张渲染下分得清、看着不脏;复核结论回流 art-bible §4.2 微光色带行 | 同 1(样张含五组微光渲染) | - -- **红灯信号**:气质否决(压抑/抢焦/看台感不成立)、任一定值前后不可辨或微光混读即报缺陷回炉。 -- **结论回流**:呈现缺陷归待办清单登记新条目;目检通过=样张整体过闸,art-bible §1.4 与战斗表现.md 的过闸状态随之换代。 - -## ㊷ 迭代 44——组合根注册面+战斗编排归约+测速循环三卡实机目检(2026-10-31 随批后收尾登记) - -> 三卡合回(2026-10-30,git 提交 bee73db5):卡① 组合根注册面批(ui_registry+三域容器建件,main.gd 类变量 49→15,全消费面改址 main.ui.*)+卡② 战斗编排归约批(RoundCycle/BattleFacts 两新件,宿主 38→15)+卡③ 测速循环批 v1.1(信号步进状态机消循环内 await)。三卡均为行为零变化批,独立验收审计通过(可合并);判读口径全部=「与改前一致」。登记不阻塞(2026-10-12 真人检测立规);机检读数与论证详见实现报告(git 提交 bee73db5 一线可考)。 +> 组合根注册面(ui_registry+三域容器,全消费面改址 main.ui.*)+战斗编排归约(RoundCycle/BattleFacts 两件)+测速循环 v1.1,均为行为零变化,判读口径全部=「与改前一致」。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 三屏切换与模态开合实机过一遍(卡① 验收闭合义务——冒烟/探针/golden 已机检承载,真人观感复核) | 主菜单/营地/战斗三屏切换与各模态开合正常、遮挡关系正确,与改前一致 | -| 2 | 战斗一局全流程观感(卡② 结构迁移零行为变化的一般性目检) | 一整局战斗各段(挖掘/战斗/结算/三选一/奖励)演出与读数与改前一致 | +| 1 | 三屏切换与模态开合实机过一遍(冒烟/探针/golden 已机检承载,真人观感复核) | 主菜单/营地/战斗三屏切换与各模态开合正常、遮挡关系正确,与改前一致 | +| 2 | 战斗一局全流程观感(结构迁移零行为变化的一般性目检) | 一整局战斗各段(挖掘/战斗/结算/三选一/奖励)演出与读数与改前一致 | - **红灯信号**:任一屏/浮层错位、交互无响应或演出读数与改前不一致即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊸ 迭代 45——呈现层状态件+gdstyle 尾波补件两卡实机目检(2026-10-31 随批后收尾登记) +## ㊸ 呈现层状态件+gdstyle 尾波补件实机目检 -> 两卡合回(2026-10-31,git 提交 f817ab2d):卡① 呈现层状态件批(单格两绘制域件 cell_base_layer/cell_mark_overlay+站桩两状态件 standee_vitals/standee_motion 建件,宿主 30→10 与 19→10 清偿,探针 u.face 改址,golden 三张 0.00%)+卡② gdstyle 尾波补件批(board_hover 悬停域件+breakpoint_store 断点域件,R2 整族归件,27 键冻结)。两卡均为行为零变化批,独立验收审计通过零缺漏;判读口径全部=「与改前一致」。登记不阻塞(2026-10-12 真人检测立规);机检读数与论证详见实现报告(git 提交 f817ab2d 一线可考)。 +> 呈现层状态件(单格两绘制域件+站桩两状态件)与 gdstyle 尾波补件(悬停域件+断点域件),均为行为零变化,判读口径全部=「与改前一致」。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 棋盘悬停三语义实机抽验(光标/目标格边框/路径预览点迹——悬停域拆件后) | 三语义呈现与改前一致;探针十八断言已绿,本项为观感复核 | -| 2 | 站桩意图三档动画与主角三态切换实机观感 | 演出与改前一致;fx_probe 断言已绿,本项为观感复核 | -| 3 | 单格六步时序重排后整帧观感(零预期差异确认项) | golden 三张 0.00% 已证逐位一致,实机整帧无可见差异即确认 | +| 1 | 棋盘悬停三语义实机抽验(光标/目标格边框/路径预览点迹——悬停域拆件后) | 三语义呈现与改前一致;探针面已机检承载,本项为观感复核 | +| 2 | 站桩意图三档动画与主角三态切换实机观感 | 演出与改前一致;探针面已机检承载,本项为观感复核 | +| 3 | 单格六步时序重排后整帧观感(零预期差异确认项) | 实机整帧无可见差异即确认 | - **红灯信号**:悬停三语义缺失或错位、站桩演出异常、整帧出现可见差异即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊹ 迭代 46——三卡实机目检(2026-11-01 随批后收尾登记) +## ㊹ 换图系基座+站桩名字行+格边长口径实机目检 -> 三卡分两段合回:卡A 换图系双基座七件批+卡B 站桩名字行提档与地台色合并批(2026-10-31,合并提交 34bb62a5)、卡C 棋盘格边长口径收口批 v2.0(2026-11-01,合并提交 ab5a45af)。三卡独立验收审计均通过;行为面读数全部机检承载(探针/单元/渲染闸),本节为观感复核面。登记不阻塞(2026-10-12 真人检测立规);机检读数与论证详见实现报告(git 提交 34bb62a5/ab5a45af 一线可考)。卡C 登记项「第三关 14×14 板格面数字可辨读性」已随 2026-11-01 锚点裁定由用户实际背书现行画面,不再单列观测项。 +> 换图系双基座、站桩名字行提档与地台色合并、棋盘格边长口径收口三面:行为面读数全部机检承载(探针/单元/渲染闸),本节为观感复核面。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | 持换图系基座与收益件后,玩家是否主动规划刷新而非只在坏图刷新(卡A 行为观感) | 刷新从「坏图逃生」扩为「主动构筑」的动机可感知;观感复核,异常报缺陷不当场改数 | -| 2 | 站桩名字行 14px 清晰可读且长名不截字(卡B 验收底线句) | 名字行清晰可读,长名不截字 | -| 3 | 墙格口沿亮线换值后观感无异(卡B——`#C4AC84`→`#C9AF83`,golden 0.00% 已证逐位一致) | 实机口沿高光观感与改前无异 | -| 4 | 贴图缺位回退描边与顶缘线观感无异(卡B——`PLAZA_EDGE`/`BRICK` 程序化回退) | 回退描边与顶缘线观感与改前无异 | +| 1 | 持换图系基座与收益件后,玩家是否主动规划刷新而非只在坏图刷新(行为观感) | 刷新从「坏图逃生」扩为「主动构筑」的动机可感知;观感复核,异常报缺陷不当场改数 | +| 2 | 站桩名字行 14px 清晰可读且长名不截字(验收底线) | 名字行清晰可读,长名不截字 | +| 3 | 墙格口沿亮线(`#C9AF83`)观感无异 | 实机口沿高光观感与改前无异 | +| 4 | 贴图缺位回退描边与顶缘线观感无异(`PLAZA_EDGE`/`BRICK` 程序化回退) | 回退描边与顶缘线观感与改前无异 | - **红灯信号**:名字行截字或不可读、口沿高光或回退描边观感异常、刷新动机体验异常即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊺ 迭代 47——营地三卡实机目检(2026-11-02 随批后收尾登记) +## ㊺ 营地场景图+Esc 浮窗实机目检 -> 三卡合回(2026-11-01,合并提交 3443890d):卡⑥ 营地模态句柄子容器批+卡④ 营地场景图新建批(十层场景图+五功能窗口化,四柜台覆盖层退役)+卡⑤ Esc 浮窗与营地顶栏批。独立验收审计处置后通过;机检读数与论证详见实现报告(git 提交 3443890d 一线可考)。营地场景十件素材的用户游戏内终审(2026-10-31 裁定预留)随第 1 项一并观测——终稿置换归独立美术批。登记不阻塞(2026-10-12 真人检测立规)。 +> 营地场景图/Esc 浮窗与营地顶栏/模态句柄的观感复核面。营地场景十件素材的用户游戏内终审随第 1 项一并观测——终稿置换归独立美术批。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -549,9 +424,9 @@ - **红灯信号**:场景图层错位、物件不可点或误路由、动线死路、窗口遮挡关系错误即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目。 -## ㊻ 迭代 48——三卡实机目检(2026-11-02 随批后收尾登记) +## ㊻ 立绘显示档+战斗区背景实机目检 -> 三卡合回(2026-11-02,合并提交 4c94eee3):卡① 状态合并累加制批+卡② 立绘显示档批+卡③ 战斗区背景替换批。独立验收审计处置后通过;机检读数与论证详见实现报告(git 提交 4c94eee3 一线可考)。登记不阻塞(2026-10-12 真人检测立规)。 +> 立绘显示档与战斗区背景替换的观感核。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -569,9 +444,9 @@ - **红灯信号**:立绘清晰度不可接受(灰矮人列为头号回退候选)、体量顺序错乱、背景读作贴墙、层序错位即报缺陷。 - **结论回流**:呈现缺陷归待办清单登记新条目;清晰度回退评估重启归待办清单原条目。 -## ㊼ 迭代 41 测试债批——回归修复实机目检(2026-11-02 补登记) +## ㊼ 回归修复实机目检 -> 测试债批合回(2026-10-29,合并提交 43906cdd):02 九套件归绿+S9/S10/S11 归零+四处迭代 41 特许合回遗留产品回归修复(数字色牌守卫/open_victory 改型/站桩补间目标/调参模拟运行态收尾)。原实现报告(已退役,git 提交 d9e5c019 一线可考)第四节登记的实机目检三项当时漏登本清单,2026-11-02 随迭代 48 批后收尾补登记。登记不阻塞(2026-10-12 真人检测立规)。 +> 四处遗留产品回归修复(数字色牌守卫/open_victory 改型/站桩补间目标/调参模拟运行态收尾)的实机目检三项。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -581,9 +456,9 @@ - **红灯信号**:数字垫牌错族、胜利总结面开不出、置灰态失灵即报缺陷。 -## ㊽ 迭代 49——营地五窗真窗口化目检(2026-11-02 随批后收尾登记) +## ㊽ 营地五窗真窗口化目检 -> 三卡合回(2026-11-02,合并提交 549683a5):卡③ 营地五界面真窗口化批交付真窗口化形态(统一居中定尺寸窗壳,起点 720×640;遮罩压暗锚 0.6);卡①② 行为零变化、零新增目检项。独立验收审计通过(缺漏 0、例外 1 在案);机检读数与论证详见实现报告(git 提交 549683a5 一线可考)。登记不阻塞(2026-10-12 真人检测立规)。 +> 营地五界面现行=真窗口化形态(统一居中定尺寸窗壳,起点 720×640;遮罩压暗锚 0.6)。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| @@ -593,23 +468,23 @@ - **红灯信号**:窗壳挤压屏面、场景几乎不可见、滚动卡滞或内容溢出窗板即报缺陷。 - **结论回流**:观感校准意见回填 camp.md 终值(普通设计决策);呈现缺陷归待办清单登记新条目。 -## ㊾ CI 迁远端工程批——Mac 端渲染基线目检(2026-11-03 随工程批登记) +## ㊾ CI 迁远端工程批——Mac 端渲染基线目检 -> CI 迁移远端(Mac 本机 host 模式)工程批:渲染基线按平台各存(windows/ 已有,mac/ 待 Mac 端重制入库)。 -> 基线重制与目检在批次端到端验收时执行(Mac 端跑 tools/golden_baseline_refresh.sh 生成后人工判定)。 +> CI 迁移远端(Mac 本机 host 模式)工程批:渲染基线按平台各存(windows/ 已有,mac/ 待 Mac 端重制)。 +> 基线重制与目检:Mac 端跑 tools/golden_baseline_refresh.sh 生成后人工判定。 > 登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| -| 1 | Mac 端 golden 基线正确性 | mac/ 子目录四张基线(棋盘三图+menu_boot)重制生成后人工判定:布局骨架与现网一致、无素材缺位字形回退、无渲染异常(错位/透明块/花屏);判定通过后经下一批提交入库,此后渲染闸在 Mac 上以该套基线逐像素比对 | +| 1 | Mac 端 golden 基线正确性 | mac/ 子目录四张基线(棋盘三图+menu_boot)重制生成后人工判定:布局骨架与现网一致、无素材缺位字形回退、无渲染异常(错位/透明块/花屏);判定通过后渲染闸在 Mac 上以该套基线逐像素比对 | | 2 | Mac 端渲染闸全链目检 | 远端游戏码批跑渲染闸时 Mac 桌面短暂弹 Godot 窗口属预期(窗口化截图取证);七屏截图与三段取证文件齐全、shot_checker A–D 无红 | - **红灯信号**:基线帧出现素材缺位字形、明显错位或花屏;渲染闸报「取证缺失/零字节」。 - **结论回流**:基线异常=登记待办清单(或当场重制复核);渲染缺陷归待办清单登记新条目。 -## ㊿ 迭代 50——敌方状态个体化与文案读表目检(2026-11-03 随批后收尾登记) +## ㊿ 敌方状态个体化与文案读表目检 -> 三卡合回(2026-11-03,合并提交 8d3a12ec):卡① 敌方状态个体化、卡② 断言补齐、卡③ 架构审查 3.1+3.2 整改。独立验收审计两轮终判通过(首轮缺漏三条→整改笔 6cb1cf5e→复验通过);机检读数与论证详见迭代 50 实现批提交(合并提交 8d3a12ec 一线可考)。目检清单原编㊾-A~E 与在册㊾〔CI 迁远端批〕撞号,登记改用㊿。登记不阻塞(2026-10-12 真人检测立规)。 +> 敌方状态个体化与文案读表的观感核。登记不阻塞(2026-10-12 真人检测立规)。 | # | 目检项 | 判据 | |---|---|---| diff --git a/待办清单.md b/待办清单.md index 2e49e749..6f4129f0 100644 --- a/待办清单.md +++ b/待办清单.md @@ -12,7 +12,7 @@ #### 数值标定窗口总挂账——原九条数值类条目合并(2026-10-28 登记,来源=会话提及) -**实况**:2026-10-28 用户令把九条数值类挂账(削弱档位终值/迭代 10 奖励重构联动/调参点评登记/三方向解锁清单与定价/GP 经济换算失衡/天赋树欠账余两件/商店刷新两参数/基线通关率越带杠杆扫描/成长系数节奏)合并为一条,内容全量迁汇总文档 reports/汇总-数值标定窗口挂账-2026-10-28.md(逐条明细+统一执行形态:窗口内一次 MC 批量覆盖全冒险期望+奖励期望)。共同裁定(2026-10-18):各条留待办、未设计不启动、重启条件=用户发令开数值标定窗口。MC 档位硬闸见 sim-data/README.md「MC 采集档位表」。 +**实况**:九条数值类挂账合并一条(削弱档位终值/迭代 10 奖励重构联动/调参点评登记/三方向解锁清单与定价/GP 经济换算失衡/天赋树欠账余两件/商店刷新两参数/基线通关率越带杠杆扫描/成长系数节奏),逐条明细与统一执行形态(窗口内一次 MC 批量覆盖全冒险期望+奖励期望)全载 reports/汇总-数值标定窗口挂账-2026-10-28.md。共同裁定:未设计不启动,重启条件=用户发令开数值标定窗口。MC 档位硬闸见 sim-data/README.md「MC 采集档位表」。 **缺口**:数值标定窗口未重开(用户发令触发);窗口设计段逐条裁决写入文档后方可写卡;其中原「基线通关率越带」条另等真人批 k 系数到账。 @@ -22,7 +22,7 @@ #### 超预算图策略升级路径——等比缩放与滚动视口两案待裁(2026-10-24 登记,来源=批次移交) -**实况**:迭代 34 卡④(信息迷雾可见性批,已合回 master,提交 16a7ec80)按「参数限图」交付,图包络约 10 层×8 槽即当前冻结画布的屏预算上限。若后续定值批需要更大的完整可见图,两条升级路径都要动冻结件,均未设计:①等比缩放——动「节点图标 20px 烘焙 1:1」与「通道折线冻结 2/3/4px」两条冻结值;②滚动视口——新增视口交互范式。迭代 35 生成图实测深度域 L3 达 0–13,已超出该上限(level-map 已登记随动缺口,本批不裁方案)。 +**实况**:图源按「参数限图」交付,图包络约 10 层×8 槽即当前冻结画布的屏预算上限。若后续定值批需要更大的完整可见图,两条升级路径都要动冻结件,均未设计:①等比缩放——动「节点图标 20px 烘焙 1:1」与「通道折线冻结 2/3/4px」两条冻结值;②滚动视口——新增视口交互范式。生成图实测深度域 L3 达 0–13,已超出该上限(level-map 已登记随动缺口,未裁方案前禁改画布冻结件)。 - 相关文档 design/gdd/systems/冒险循环/关卡节点图生成.md v1.3(调参表「图包络」行) - 相关文档 design/gdd/ux/level-map.md(画布冻结公式) @@ -34,7 +34,7 @@ #### UI 贴图重构批——元进度件仍是程序化占位(2026-10-13 登记,来源=审计发现) -**实况**:营地的柜台场景贴图与元进度图标目前都是程序化画出来的临时形态,没有上贴图。这条债原先只写在美术侧的资产清单里([美术资产清单](design/art/art-assets-checklist.md) 第 134 行与第 175 行,原文注明"营地现为程序化占位,状态记录 121⑧ 口径,排期归 UI 贴图重构批"),2026-10-13 由 UI 美化三层诊断转立本清单专条。规格其实已经定了——烛光黄 `#F6C667` 配木色 `#8A5A34`(见 [美术圣经](design/art/art-bible.md) §4.4),素材来源允许走"通用图标改色复用"这条低成本渠道。2026-10-21 用户裁营地交互重做五卡整体列入 Alpha:营地柜台贴图随之转入卡④营地场景图新建批(新场景取代现四柜台覆盖层),本条只余元进度件贴图终稿,排 Beta。**2026-11-01 迭代 47 卡④ 落地注记**:四柜台覆盖层已退役(场景图五功能窗口形态,camp.md v2.4),卡④ 侧义务终结;本条余元进度件贴图终稿与九宫格切片核对,排 Beta。 +**实况**:元进度图标目前仍是程序化画出来的占位形态,没有上贴图(原登记见 [美术资产清单](design/art/art-assets-checklist.md))。规格已定——烛光黄 `#F6C667` 配木色 `#8A5A34`(见 [美术圣经](design/art/art-bible.md) §4.4),素材来源允许走"通用图标改色复用"低成本渠道。营地柜台贴图义务已随营地场景图形态终结(见 [camp](design/gdd/ux/camp.md));九宫格切片错位归「UI 氛围层与九宫格切片观感修」条。本条余元进度件贴图终稿,排 Beta。 **缺口**:还差一次「自己画 vs 找 CC0 素材改色」的美术裁决(见 [美术资产清单](design/art/art-assets-checklist.md) §0 的复用渠道闸),裁决后才能定素材工单写卡。 @@ -44,7 +44,7 @@ #### UI 氛围层与九宫格切片观感修——光柱硬边与面板切片错位(2026-10-13 登记,来源=审计发现) -**实况**:原两处,一处已修一处存续。①光柱硬边**已修**(2026-10-14 迭代 26 T4:`ui_kit.gd` 第 263 行起的光柱贴片改带内 alpha 0→0.05→0 三角过渡+纵向衰减上亮下暗,grilling Q7 裁连续 alpha 方案;LINEAR 白名单已随反哺入册 art-bible v3.14 §8.2)。②九宫格切片错位**存续**——结算屏与图例屏的面板边缘可见错位小方块,成因是九宫格切片参数与素材尺寸不匹配(仪式石框 258 字节小图按 12 像素切片、石板亮面板 314 字节按 16 像素切片,铺到四百多像素宽面板中段拉出错位),须先核素材尺寸能否撑住新切片值(border_stone/panel_stone 均 48×48),可能要重出素材,归「UI 贴图重构批」后续贴图批次。 +**实况**:原两处,一处已修一处存续。①光柱硬边**已修**(`ui_kit.gd` 光柱贴片改带内 alpha 0→0.05→0 三角过渡+纵向衰减上亮下暗的连续渐变方案)。②九宫格切片错位**存续**——结算屏与图例屏的面板边缘可见错位小方块,成因是九宫格切片参数与素材尺寸不匹配(仪式石框 258 字节小图按 12 像素切片、石板亮面板 314 字节按 16 像素切片,铺到四百多像素宽面板中段拉出错位),须先核素材尺寸能否撑住新切片值(border_stone/panel_stone 均 48×48),可能要重出素材,归「UI 贴图重构批」后续贴图批次。 **缺口**:还差「UI 贴图重构批」里的素材尺寸核对与「是否重出素材」裁决,才能定切片修法。 @@ -54,7 +54,7 @@ #### 扩展节点类型——危险/精英节点与特殊地形节点(2026-10-21 登记,来源=会话提及) -**实况**:用户 2026-10-21 会话定方向:Alpha 版只留现行四类(战斗/奖励/恢复/商店),以下两类留到以后再做——①危险/精英节点(怪物与普通战斗不同、奖励肥);②特殊地形节点(效果修饰:地图战斗资源、敌我伤害、金币比例等)。内容未设计。 +**实况**:用户定方向:Alpha 版只留现行四类(战斗/奖励/恢复/商店),以下两类留到以后再做——①危险/精英节点(怪物与普通战斗不同、奖励肥);②特殊地形节点(效果修饰:地图战斗资源、敌我伤害、金币比例等)。内容未设计。 关联文档清单: - 相关文档 design/gdd/systems/冒险循环/关卡节点图生成.md v1.1(2026-10-21,扩展节点类型位概念) @@ -67,7 +67,7 @@ #### 棋盘战斗键盘/手柄输入(2026-10-04 登记,来源=会话提及) -**实况**:战斗棋盘现行唯一输入=鼠标;键盘/手柄作第二输入前端可做(可行性已核 2026-10-04)——分发接缝现成,board_view `action_requested(cell, kind)` 唯一出口,规则引擎合法性校验零改动,Godot InputMap 原生支持与鼠标并存。用户期望形态:十字方向逐格移动、挖掘/封印各一独立键、8 向选定挖掘或封印目标;排期 Beta(立项时按 roadmap 开卡)。 +**实况**:战斗棋盘现行唯一输入=鼠标;键盘/手柄作第二输入前端可做(可行性已核)——分发接缝现成,board_view `action_requested(cell, kind)` 唯一出口,规则引擎合法性校验零改动,Godot InputMap 原生支持与鼠标并存。用户期望形态:十字方向逐格移动、挖掘/封印各一独立键、8 向选定挖掘或封印目标;排期 Beta(立项时按 roadmap 开卡)。 **缺口**:还差 Beta 立项时的输入方案设计讨论——四个连带裁决点先裁再开卡:①键盘模式屏上光标格承载悬停反馈;②键盘与手柄键位映射(暂停层 Esc 快捷通道并入本条);③弹层焦点导航是否同批;④键位自定义是否进设置面。 - 相关文档:[排雷玩法](design/gdd/systems/排雷循环/排雷玩法.md)(动作语义与 8 向目标规则主责)+ [HUD 框架](design/gdd/systems/表现与支撑/HUD框架.md)(键盘光标与合法性反馈呈现)+ [设置与本地化](design/gdd/systems/表现与支撑/设置与本地化.md)(键位自定义,可选面) @@ -78,7 +78,7 @@ #### 个体化变体池(2026-10-18 登记,来源=会话提及) -**实况**:A 型好斗/ B 型守势、精英专属池(技能池共识点 A 的 A2 案);现行同敌种同池模板,实例分歧只来自摇号涌现。(原条目无登记日期,按本批格式整改补登 2026-10-18。) +**实况**:A 型好斗/ B 型守势、精英专属池(技能池共识点 A 的 A2 案);现行同敌种同池模板,实例分歧只来自摇号涌现。 **缺口**:还差敌人系统的变体池设计讨论——A2 案的池构成方案与精英专属池边界。 - 相关文档:[敌人系统](design/gdd/systems/战斗循环/敌人系统.md)(P1) @@ -89,7 +89,7 @@ #### 全局特殊间隔旋钮(2026-10-18 登记,来源=会话提及) -**实况**:异名特殊技背靠背现行概率低(是变化不是失控);若实测仍嫌,备用闸=全局「特殊技后至少隔 N 拍」——登记备用,未实测不启用。(原条目无登记日期,按本批格式整改补登 2026-10-18。) +**实况**:异名特殊技背靠背现行概率低(是变化不是失控);若实测仍嫌,备用闸=全局「特殊技后至少隔 N 拍」——登记备用,未实测不启用。 **缺口**:还差备用闸的条款设计(N 值与作用域)——仅当实测读数支持时才启动讨论。 - 相关文档:[敌人系统](design/gdd/systems/战斗循环/敌人系统.md) 与[难度曲线与Boss](design/gdd/systems/冒险循环/难度曲线与Boss.md)(P1) @@ -100,7 +100,7 @@ #### 敌方技能图鉴 / 学习呈现(2026-10-18 登记,来源=会话提及) -**实况**:池与权重不公开(D4/D5)口径下的进阶信息面——玩家侧技能知识系统(见过 → 认得 → 记谱);首发三池学习成本低,后置(P2)。(原条目无登记日期,按本批格式整改补登 2026-10-18。)**2026-11-01 迭代 47 卡④ 落地注记**:营地侧入口已落=场景图布告板命中(codex 占位壳挂起态——占位锁文锚定、零激活禁行);本条呈现设计义务不变。 +**实况**:池与权重不公开(D4/D5)口径下的进阶信息面——玩家侧技能知识系统(见过 → 认得 → 记谱);首发三池学习成本低,后置(P2)。营地侧入口已落=场景图布告板命中(codex 占位壳挂起态——占位锁文锚定、零激活禁行);本条呈现设计义务不变。 **缺口**:还差玩家侧技能知识系统的呈现设计讨论(HUD 承载形态与记谱口径),P2 后置面。 - 相关文档:[HUD 框架](design/gdd/systems/表现与支撑/HUD框架.md) 与[敌人系统](design/gdd/systems/战斗循环/敌人系统.md)(P2) @@ -111,7 +111,7 @@ #### 冒险前资源配比预设(构筑提案)(2026-09-18 登记,来源=会话提及) -**实况**:设计闭合机制=[元进度](design/gdd/systems/跨局循环/元进度.md)「冒险开始参数面与覆盖值通道」(零新机制);八项裁决 2026-10-04 全裁,2026-10-05 起挂起(移出 roadmap 迭代 14),重启须用户另行发令。关联文档:[元进度](design/gdd/systems/跨局循环/元进度.md) v1.0(闭合凭据;现行 v1.25 已复核在役);立项提案与需求卡片已退役(2026-11-04 用户令删除,八项裁决与全案依据随件入 git 历史可考)。 +**实况**:设计闭合机制=[元进度](design/gdd/systems/跨局循环/元进度.md)「冒险开始参数面与覆盖值通道」(零新机制);八项裁决 2026-10-04 全裁,2026-10-05 起挂起,重启须用户另行发令。关联文档:[元进度](design/gdd/systems/跨局循环/元进度.md) v1.0(闭合凭据;现行 v1.25 已复核在役);立项提案与需求卡片已退役(2026-11-04 用户令删除,八项裁决与全案依据随件入 git 历史可考)。 - 相关文档:[地图战斗资源](design/gdd/systems/战斗循环/地图战斗资源.md)修订批(基础配比的权重覆盖语义 + GDD 修订)与[元进度](design/gdd/systems/跨局循环/元进度.md)(解锁容量与注入生产者)共裁;呈现面归[HUD 框架](design/gdd/systems/表现与支撑/HUD框架.md)与[教学引导](design/gdd/systems/表现与支撑/教学引导.md)顺带。 **改动面**:文档 @@ -120,7 +120,7 @@ #### 袋装摇号(格面资源池结构备选——保底型增多后的重构方向)(2026-10-07 登记,来源=会话提及) -**实况**:地图战斗资源池保底结构(四档概率 + 按型保底 + 档位保底上限,现行事实源=[地图战斗资源](design/gdd/systems/战斗循环/地图战斗资源.md)候选集合节)以「摇完整板校验补签」的补丁式实现起步——简单够用。备选正规形态=**袋装摇号**:装板时按各档配额数好牌再洗开发放,保底天然成立、分布精确;代价=摇号结构重写 + 偏运硬币/board_skew 两路权重投影须改为袋面投影。启用条件=保底登记型增多、补签逻辑复杂化时。来源=2026-10-07 地图层题四讨论,用户裁「先挂在待办清单」。 +**实况**:地图战斗资源池保底结构(四档概率 + 按型保底 + 档位保底上限,现行事实源=[地图战斗资源](design/gdd/systems/战斗循环/地图战斗资源.md)候选集合节)以「摇完整板校验补签」的补丁式实现起步——简单够用。备选正规形态=**袋装摇号**:装板时按各档配额数好牌再洗开发放,保底天然成立、分布精确;代价=摇号结构重写 + 偏运硬币/board_skew 两路权重投影须改为袋面投影。启用条件=保底登记型增多、补签逻辑复杂化时。来源=地图层讨论,用户裁「先挂在待办清单」。 **缺口**:还差启用条件触发后的摇号结构重写设计讨论(含两路权重投影改袋面投影的方案)。 @@ -130,7 +130,7 @@ #### 战斗节点地图类型差异化——更多地图主题(2026-10-13 登记,来源=playnote) -**实况**:来源=playnote 用户试玩记录「修改地图的奖励类型:战斗节点增加不同的地图类型,比如有些图踩雷受到更多的伤害,有些图标雷可以造成更多的伤害,有些图伤害会减半需要凑更多清图奖励(这些都是暂时的设定)」。**已实装的部分**:首发形态整图变异「贫矿脉」已于 2026-10-16 用户令屏蔽删行(Boss 图回落 region 变异,原体验验证清单⑪ 目检项随之转记失效)——本条剩余面不变:在此之上再做**更多地图主题**(踩雷伤害更高/标雷伤害更高/伤害减半需凑更多清图奖励)。**2026-10-13 用户裁定:排 Beta 版本,Alpha 不做**——已移入 [08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)「六 · Alpha 不含」节。 +**实况**:来源=playnote 用户试玩记录「修改地图的奖励类型:战斗节点增加不同的地图类型,比如有些图踩雷受到更多的伤害,有些图标雷可以造成更多的伤害,有些图伤害会减半需要凑更多清图奖励(这些都是暂时的设定)」。**已实装的部分**:首发形态整图变异「贫矿脉」(现行屏蔽状态,Boss 图回落 region 变异)——本条剩余面不变:在此之上再做**更多地图主题**(踩雷伤害更高/标雷伤害更高/伤害减半需凑更多清图奖励)。**排 Beta 版本,Alpha 不做**——已移入 [08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)「六 · Alpha 不含」节。 **缺口**:还差 Beta 立项时的地图主题设计讨论——按本条原始想法重新评估(用户标注「这些都是暂时的设定」,到时需重订而非照抄)。 - 相关文档:[棋盘生成](design/gdd/systems/排雷循环/棋盘生成.md)(board_biome 图主题词表)+ [地图战斗资源](design/gdd/systems/战斗循环/地图战斗资源.md)(图主题差异化插槽)+ [地形变异](design/gdd/systems/排雷循环/地形变异.md)(整图变异承载面) @@ -141,7 +141,7 @@ #### 第二 / 三关棋盘观感——亮度与对比度(2026-10-13 登记,来源=playnote) -**实况**:来源=playnote 试玩记录「第二第三关棋盘看着费劲」;用户裁定要做,[08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)「五 · 表现」已立行标待做。2026-10-16 曾编入迭代 30 卡③后剔除回待设计;v1.4 旧卡 reports/需求卡片-二三关棋盘观感批-2026-10-16.md 在册但非已写卡状态。分工:本条管棋盘区域整体观感(亮度/对比度/费劲感,体感问题),与已注销的「呈现层残余 <4.5:1 文字位」条(机检硬指标)不同面不互代。Alpha 出口=用户实机目检不再判「看着费劲」。 +**实况**:来源=playnote 试玩记录「第二第三关棋盘看着费劲」;用户裁定要做,[08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)「五 · 表现」已立行标待做。旧卡 reports/需求卡片-二三关棋盘观感批-2026-10-16.md(v1.4)在册但非已写卡状态,重启须重新立卡。分工:本条管棋盘区域整体观感(亮度/对比度/费劲感,体感问题),与已注销的「呈现层残余 <4.5:1 文字位」条(机检硬指标)不同面不互代。Alpha 出口=用户实机目检不再判「看着费劲」。 **缺口**:还差「素材轴 / UI 轴」定性设计讨论与甲(recolor 现瓦片)/乙(远程生图重产)素材裁点裁决——定性是既有条款的开工前置;素材轴若走重产,依赖战斗一屏样张批目标规格清单(已随 art-bible v3.22 落定)。 - 相关文档:[HUD框架](design/gdd/systems/表现与支撑/HUD框架.md)(UI 轴:舞台底与叠加层)+ [美术圣经](design/art/art-bible.md)(素材轴:瓦片与格面图标的明度色相)——定性前两方共裁 @@ -152,7 +152,7 @@ #### 站桩帧动画——Alpha 定版闸前完成(2026-10-06 登记,来源=审计发现) -**实况**:审计报告 P0-3——定稿立绘零帧动画;现行动画全部程序化(死亡碎裂/受击闪白/意图徽标弹入=程序 tween,非帧资产)。用户裁定**动画是较往后的优化,Alpha 版本定版时间点之前完成即可**——当前 Alpha 开发期达成「看上去可游玩」即可。路线未拍板,审计报告三路线供重启时裁决:①**拆件驱动**(报告推荐:定稿立绘切部件〔头/躯干/臂/腿/武器〕+ 节点层级 tween 驱动——零身份漂移、帧数无限、内存小;项目已有先例=shovel_swing 三帧 + 程序化死亡碎裂)②AI 关键姿势 + 人工修 + 程序补帧 ③全 AI 逐帧(不推荐:身份漂移/像素抖动)。前置依赖=「立绘→派生形态」管线(原稿像素化后入包、禁再降采样 + 降色 ≤32 + 脚底基线对齐 + 命名合规;显示缩放走 art-bible §8.2 乙类口径=档高÷源高、NEAREST、允许非整数倍)。**2026-11-04 用户裁改排 Beta**:本条移出 Alpha 定版前置清单,Alpha 定版不再以它为闸,路线三案与上述前置管线依赖原样留到 Beta 立项再裁(取代 2026-10-06 登记与 2026-10-13 补裁的「定版前完成最小版/未完成则顺延 Beta」口径;标题「Alpha 定版闸前完成」系登记时点原文,按登记元数据禁改条款保留)。 +**实况**:定稿立绘零帧动画;现行动画全部程序化(死亡碎裂/受击闪白/意图徽标弹入=程序 tween,非帧资产)。用户裁定改排 Beta:Alpha 定版不再以本条为闸,路线三案与前置管线依赖原样留到 Beta 立项再裁(标题「Alpha 定版闸前完成」系登记元数据原文,禁改)。三路线备选:①**拆件驱动**(推荐:定稿立绘切部件〔头/躯干/臂/腿/武器〕+ 节点层级 tween 驱动——零身份漂移、帧数无限、内存小;项目已有先例=shovel_swing 三帧 + 程序化死亡碎裂)②AI 关键姿势 + 人工修 + 程序补帧 ③全 AI 逐帧(不推荐:身份漂移/像素抖动)。前置依赖=「立绘→派生形态」管线(原稿像素化后入包、禁再降采样 + 降色 ≤32 + 脚底基线对齐 + 命名合规;显示缩放走 art-bible §8.2 乙类口径=档高÷源高、NEAREST、允许非整数倍)。 **缺口**:还差 Beta 立项批的路线正式拍板(预选拆件驱动)——拍板后立帧数规格与资产工单。 - 相关文档:[art-bible](design/art/art-bible.md) §8.4 帧数规格 · 战斗表现批 @@ -235,7 +235,7 @@ #### 「生涯」界面——冒险中数据回看的唯一承接处(2026-10-04 登记,来源=会话提及) -**实况**:2026-10-04 用户裁决(UI 落码计划 P-C7)——冒险中不给数据回看,历史战报/结算明细查看去向=新「生涯」界面;settlement_review_overlay 与「明细回看」钮在冒险中退役,战报带只留单行「上轮」。设计提纲已成文并全裁:[systems/跨局循环/生涯.md](design/gdd/systems/跨局循环/生涯.md) v0.1(P0–P5 六裁点已写入文档)。期一已落地(2026-10-07 迭代 18 卡④:六类九项+主菜单入口+终身计数域存档 v6)。遗留件:settlement_review_overlay.gd 未接线全仓零引用(迭代 19 卡②登记),处置两途=①随期二按 P5 甲复活承接/②确认不需要则退役删除,归生涯实装批/用户裁。 +**实况**:用户裁决(UI 落码计划 P-C7)——冒险中不给数据回看,历史战报/结算明细查看去向=新「生涯」界面;settlement_review_overlay 与「明细回看」钮在冒险中退役,战报带只留单行「上轮」。设计提纲已成文并全裁:[systems/跨局循环/生涯.md](design/gdd/systems/跨局循环/生涯.md) v0.1(P0–P5 六裁点已写入文档)。期一已落地(六类九项+主菜单入口+终身计数域存档 v6)。遗留件:settlement_review_overlay.gd 未接线全仓零引用,处置两途=①随期二按 P5 甲复活承接/②确认不需要则退役删除,归生涯实装批/用户裁。 **缺口**:还差提纲用户评审收尾与 P6 营地最近冒险条带去留裁决——裁完才能立期二/期三实装卡(期一已交付);本条排 Beta,Alpha 只保留期一。 @@ -247,7 +247,7 @@ #### damage_controller 按序改写族——内容孤儿机制与退役名注释层(2026-11-04 登记,来源=会话提及) -**实况**:damage_controller.gd 按序改写族通用机制(trade_hit/trade_atk 交换、armor_rewrite 免掷、spike 满层必中与倍乘、discount_shift 轻甲改善——注释叙事 :266-273、改写执行 :283-309、spike 倍乘 :350-353)现役内容面仅淬毒刃纹一行 modify_ticket(mode=clamp_bonus,feats.tres:854):其余子分支零表行注册(全仓 grep 证,含天赋树 tree_rules 面零 spike)——「框架先行、内容未接」同族债,与 charge_layers 同形态但不持数据键。五拍注释全部以旧 27 专长名叙事(矿工重锤/专注/厚积薄发/猎弱本能,道具退役素材库.md:43-47 退役在案);其中 charge_layers 关联四处已归 EffectPort 蓄力层删键批卡处理,其余退役名注释不在该卡范围。证据:reports/需求卡片-EffectPort蓄力层删键批-2026-11-04.md 范围边界节(2026-11-04 grilling 复核发现)。 +**实况**:damage_controller.gd 按序改写族通用机制(trade_hit/trade_atk 交换、armor_rewrite 免掷、spike 满层必中与倍乘、discount_shift 轻甲改善——注释叙事 :266-273、改写执行 :283-309、spike 倍乘 :350-353)现役内容面仅淬毒刃纹一行 modify_ticket(mode=clamp_bonus,feats.tres:854):其余子分支零表行注册(全仓 grep 证,含天赋树 tree_rules 面零 spike)——「框架先行、内容未接」同族债,与 charge_layers 同形态但不持数据键。五拍注释全部以旧 27 专长名叙事(矿工重锤/专注/厚积薄发/猎弱本能,道具退役素材库.md:43-47 退役在案);其中 charge_layers 关联四处已归 EffectPort 蓄力层删键批卡处理,其余退役名注释不在该卡范围。证据:reports/需求卡片-EffectPort蓄力层删键批-2026-11-04.md 范围边界节。 **缺口**:还差处置方向裁决——删孤儿分支(零内容面顺带清退)vs 留机制待内容(专长池扩充时接),裁后写卡;注释叙事层是否与处置批一并改机制语言同裁。 @@ -257,7 +257,7 @@ #### minesweeper_rules 公开面还债——S13 超标键撤销后的清偿(2026-11-04 登记,来源=批次移交,优先级=P0) -**实况**:证据=tools/gdstyle_baseline.txt(本批撤销无凭证键后,gdstyle 闸红单键:game/core/minesweeper_rules.gd 公开方法 21>上限 20);+2 搬家方法 harmful_variants/harmful_adjacent 为迭代51卡② R2「五方法归位」裁决的直接后果(git 提交 7f512aa8),基点漂移考证:写卡基点 6261b36e 实数 18,iter50-卡3 a2886a53 +1 → 实现基点 19,+2=21。还债方向经 21 公开方法全量盘点收窄=safe_remaining 私有化(其余 20 个有生产调用方;preview_reveal=架构在册 sim 出口;settle_batch/fx_reveal 受架构在册边界与职责轴保护)——需求卡片 reports/需求卡片-minesweeper_rules公开面还债批-2026-11-04.md(实现批输入合同,0.5 工作日)。 +**实况**:证据=tools/gdstyle_baseline.txt(本批撤销无凭证键后,gdstyle 闸红单键:game/core/minesweeper_rules.gd 公开方法 21>上限 20);+2 搬家方法 harmful_variants/harmful_adjacent 为 R2「五方法归位」裁决的直接后果,还债方向经 21 公开方法全量盘点收窄=safe_remaining 私有化(其余 20 个有生产调用方;preview_reveal=架构在册 sim 出口;settle_batch/fx_reveal 受架构在册边界与职责轴保护)——需求卡片 reports/需求卡片-minesweeper_rules公开面还债批-2026-11-04.md(实现批输入合同,0.5 工作日)。 **改动面**:游戏代码 @@ -265,7 +265,7 @@ #### EffectEngine 死函数与全仓孤儿函数清退(2026-11-04 登记,来源=会话提及,优先级=P0) -**实况**:证据=game/core/effect_engine.gd:204 has_effect_on 全仓零调用方(迭代51卡①删唯一调用方后成死码,grep 仅定义命中;卡① 备案见 git 提交 7f512aa8;2026-11-04 用户裁=删并全仓排查)。排查已于写卡段完成:判死六件(has_effect_on/bp_read_int/find_token/has_open/set_feedback_state/stop_resolved,级联零牵连),B 段 69 件生产零调用仅测量面按登记口径保留——需求卡片 reports/需求卡片-孤儿函数清退批-2026-11-04.md(实现批输入合同,0.9 工作日)。 +**实况**:证据=game/core/effect_engine.gd:204 has_effect_on 全仓零调用方(唯一调用方已删后成死码,grep 仅定义命中;2026-11-04 用户裁=删并全仓排查)。排查已于写卡段完成:判死六件(has_effect_on/bp_read_int/find_token/has_open/set_feedback_state/stop_resolved,级联零牵连),B 段 69 件生产零调用仅测量面按登记口径保留——需求卡片 reports/需求卡片-孤儿函数清退批-2026-11-04.md(实现批输入合同,0.9 工作日)。 **改动面**:游戏代码