diff --git a/.claude/settings.json b/.claude/settings.json index 1e8687b2..0967ef42 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,16 +1 @@ -{ - "hooks": { - "PostToolUse": [ - { - "matcher": "Write|Edit", - "hooks": [ - { - "type": "command", - "command": "python tools/hook_gdd_lint.py", - "timeout": 60 - } - ] - } - ] - } -} +{} diff --git a/CLAUDE.md b/CLAUDE.md index a77614f4..833391a0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,7 @@ # Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike) 扫雷推理层 + 自动战斗结算的两段式回合 Roguelike。个人开发,MVP 优先管线。 -设计入口(独立版 GDD):`design/gdd/gdd.md` · 概念:`design/gdd/game-concept.md` · 支柱:`design/gdd/game-pillars.md` · 系统索引:`design/gdd/systems-index.md` +设计入口:`design/gdd/02-系统清单.md`(循环式新骨架根索引)· 概念:`design/gdd/00-游戏概念.md` · 旧版 GDD 归档(只读参考):`design/archive/gdd-2026-09-14/` ## Technology Stack @@ -34,6 +34,7 @@ - **文档形态纪律(2026-09-13 评审确立,勿违反)**:GDD 及一切设计文档遵循 lean 格式——模板 `.claude/docs/templates/game-design-document.md`,门禁 `tools/gdd_lint.py`(新文档与每次修订后必须 PASS)。六条硬规则:① 散文段 ≤240 字,全文表格占比 ≥60%;② 枚举、数值边界、边界情况、依赖一律表格;流程一律字符画(代码块)或出口分发表,禁止散文描述步骤;③ 体验锚点用关键词(支柱 | 关键词 | 机制承诺 表),禁长篇情绪描述;④ 公式**结论先行**——先一行加粗结论,再"推导"小标题放公式代码块、Variables 表与验算表,公式本体必须保留(推理证明不可省);⑤ 修订历史只写文末「版本历史」表——正文禁止 ~~删除线~~、"(作废)"、"(日期+评审/修订/拍板)"式注记;义务台账、拍板记录、registry 回执等审计元数据入 `design/registry` 或附录,不入正文。评审发现写 review log,正文只收干净的现行规则;⑥ **规则两段式:人话先行、举证在后(可读性承重条款)**:核心规则/玩法/系统按两段写——**人话阶段**:作用于哪个系统、在什么情况下、谁触发、触发后发生什么;效果与情况用枚举表列出;**举证阶段**:逐效果给出计算方法/公式(就地给出或指向公式节);纯流程规则明写"无计算"。读者测试:没读过本文档的人能否回答"管的是谁?什么时候?会发生什么?"——答不出就重写。规则名禁止纯名词短语(反例:"获取路由""编排被动性");编号引用(AC-x / F-x / EC-x / 义务×)不进人话,只进举证与依据。**(2026-09-14 用户拍板增补)**:R2 表格占比阈值已由 60% 放宽至 30%(防铺开职责由 R1/R9 承担)——既有 13 份 GDD 按旧口径继续成立,不回改。 - **两件套纪律(2026-09-14 用户拍板,新系统 GDD 即日生效)**:新系统设计文档写一对——`design/gdd/[system].md` 只装**结论**(设计目的/系统范围[负责·不负责]/核心循环/领域章节×2–6/依赖与输出/P0 最小闭环/P1·P2 后置表/调参表/验收标准/版本历史),**设计推演**(候选取舍、机理、为什么)装 `design/gdd/analysis/[system].md`(每个问题四段:广度分析→深度分析→综合判断;不入 lint 门禁,钩子豁免)。判据:正文出现超过一行的"为什么"即违规——挪 analysis。优先级诚实条款:**后置 ≠ 删除**,复活后置行 = 修订 GDD,禁止静默加回。数值默认后置:正文定规则/域/单位,平衡值进数据表(provisional 必须标注)。既有 13 份 GDD 维持 lean v1 形态不回改;模板 v2 与 analysis 骨架见 `.claude/docs/templates/game-design-document.md`。 ⑦ **树形文档体系与一页纸节点(导航承重条款)**:全部设计文档构成一棵树——根索引 `systems-index` 承载整棵树的形状与每个节点的一句话概要,读者靠索引决定进入哪个节点,索引必须随文档增删同步维护。树内每个节点(GDD 内的每一节、每条规则、每张公式)内容控制在一页纸内(直接内容 ≤80 行,`tools/gdd_lint.py` R9 强制):装不下就拆成子节点,禁止铺开;节点内顺序 = 人话 → 表格枚举 → 字符流程图 → 举证公式。**session-state 条目纪律**:`production/session-state/active.md` 每条进度 ≤3 行(粗体键 + 短句),详情一律外链到对应 GDD/报告/日志,禁止把定稿摘要、义务清单、回写清单整段塞进条目。 +- **新骨架过渡口径(2026-09-14 用户拍板)**:`design/gdd/` 现行循环式新骨架**不适用**上方 lean 形态纪律(`gdd_lint` 门禁)、两件套纪律与"根索引 = systems-index"条款——那几条仅约束归档体系(`design/archive/gdd-2026-09-14/`,只读)的解读与引用。新骨架纪律三条:① **可读性优先**——人话先行、节点一页纸以内,不过 lint;② **文档增删必须同步根索引 `02-系统清单.md`**;③ 每个子系统一份文档,**不建 analysis 推演件**。`gdd_lint` 的 PostToolUse 钩子同批停用(工具本体留在 `tools/` 备查)。已锁数值事实源不变:`design/registry/entities.yaml` 与 `data/tables/`;registry 中 owner 指向旧 GDD 的条目改指归档路径,待对应新 systems 文档定稿后再逐条改指新文档。 ## 代码规范(写代码前必读,2026-09-11 用户拍板成文) diff --git a/design/gdd/00-游戏概念.md b/design/gdd/00-游戏概念.md index c0e8c00b..0d2a64a3 100644 --- a/design/gdd/00-游戏概念.md +++ b/design/gdd/00-游戏概念.md @@ -1,3 +1,63 @@ # 游戏概念 +## 一句话概念 + +**扫雷的推理 × 自动战斗的兑现——你在战斗前做的每一次排雷决策,决定战斗的胜负。** + +30 秒版本:你是一名地牢探险者,逐层下探被怪物巢穴侵染的地牢。每一层就是一张雷图:挖开安全格给自己拿增益,控制巢穴削弱敌人,惊动巢穴则喂强敌人。行动点用尽,轮末自动结算——扫雷攒下的因,逐行兑现成战斗的果。清了图换新图继续,杀穿 Boss 下探更深;死了,整个冒险从头再来。结构上像《Peglin》的"小游戏 → 战斗结算"两段式回合循环,但把弹珠的运气换成了扫雷的推理。 + +## 目标受众 + +| 层 | 画像 | +|---|---| +| 核心受众 | 策略推理玩家 × Roguelike 构建玩家的交集——喜欢杀戮尖塔/小丑牌的构筑决策,也喜欢扫雷/数独的纯逻辑掌控感 | +| 次级受众 | Peglin 玩家中觉得"弹珠太看脸"的群体;怀旧扫雷玩家中寻找进化的群体 | + +平台与节奏:PC(Steam)先行,单机单人;回合逻辑玩法,对配置无要求。一场冒险约 20–40 分钟、单关约 5–10 分钟(旧版概念文档定稿口径),碎片时间可完成一场战斗。 + +不讨好谁:不做多人与在线要素;不伺候重叙事玩家——世界观只做碎片点缀,卖点在玩法不在文本;也不迎合追求即时操作快感的玩家,全部决策都在回合内慢慢想。 + +## 世界观命名 + +**产品名:Dungeon Sweeper。** 取 minesweeper → dungeon sweeper 的双关:玩家不只是"扫雷者",更是"清扫地牢的人"——逐层肃清巢穴侵染、夺回地牢的清巢者。"扫雷 × 自动战斗 闯关 Roguelike"保留为品类描述,用作各文档副标题。 + +**背景一句话**:玩家操纵一名地牢探险者,逐层下探一座被怪物巢穴侵染的古代地牢;每一层就是一张雷图——惩罚格密布的古老地砖阵,探险者凭数字提示感知惩罚格方位,控制巢穴、搜刮前人遗落物,才能安全下探更深的层。 + +**巢穴隐喻轴**(表现层/命名层定稿,不改变任何机制语义;左列为对内文档与协议称呼,保持不变): + +| 机制元素(对内称呼) | 玩家可见叙事 | +|---|---| +| 扫雷图 | 被巢穴侵染的地牢厅室;清图 = 肃清本间厅室,下探更深 | +| 雷 / 雷格 | **惩罚格**(对外属名),下辖类型;首发类型 = 怪物巢穴——惊动则怪物倾巢而出占得先机,巢已空、残址可通行 | +| 旗 / 插旗 | **控制**(玩家可见动词,类型无关)——标中 = 巢穴废置、巢主失庇护(怪物被削弱);"封印/镇/反制"降级为类型风味词 | +| 连锁展开 | **坍塌显形**——挖穿薄壳,整片松动地面塌陷露出 | +| 标错 | **控制失败的失控反噬**——机制上的随机读作"失控",反噬流向不可控 | +| 道具 / 奖励 | 前人探险者的遗落物(氛围背景句,登记不锁;宝箱呈现只绑定可使用道具类奖励) | + +**存疑项**(未拍板,此处只登记不展开):惩罚格未来类型(陷阱/岩浆/冰冻等)只登记了名字,机制分化未定;标错反噬的具体机制落点(流向谁、一次还是每轮)未定,本文只承诺叙事壳;两类增伤分量的叙事称呼("地利/暴露")仍是候选措辞,未拍板。 + +## 术语层级 + +本项目用语分两层,纪律如下: + +1. **玩家可见专属名词**——道具名、界面用语、敌种名、层名。允许起专名,以 `design/registry/entities.yaml` 登记为准。界面用语"惩罚格 / 控制 / 坍塌显形"同属本层,见上节。 +2. **文档内部机制概念**——一律直白描述,禁止造词(比喻性生造词、只有作者懂的缩略语均在禁列)。确需命名时,首次出现处附一句白话定义并登记 registry 术语条目。 + +当前已登记的玩家可见专名(名称值均为 provisional,出处为 registry 对应条目): + +| 专名 | 是什么 | 出处条目 | +|---|---|---| +| 显影尘 | 信息类辅助道具 | a5_aux_items | +| 工兵令 | 加行动点的辅助道具 | a5_aux_items | +| 探宝罗盘 | 预读奖励身份的辅助道具 | a5_aux_items | +| 探巢摆钟 | 探知巢穴位置的辅助道具 | a5_aux_items | +| 地穴全图卷 | 全图级稀有辅助道具 | a5_aux_items | +| 爆破工兵包 | 行动点 + 探巢的稀有辅助道具 | a5_aux_items | +| 地精 / 熊地精 / 食人魔酋长 | 首发三敌种(末者为 Boss) | enemy | +| 第一层 · 苔藓回廊 | 首关层名 | level_table | + +注意:部分辅助道具的现行效果定义绑定已被移除的地形变异类型,其效果定位待后续内容批重定;名称暂按登记保留,重定时随批修订。 + +另:元进度资源定名**钥石**——每一层关底 Boss 看守他那块区域的钥石,击杀即取走,用于在存档内解锁永久提升(属性 / 怪物遭遇 / 道具池)。2026-09-14 用户拍板,registry 术语登记随元进度设计批补登。 + > 旧版参考:../archive/gdd-2026-09-14/game-concept.md diff --git a/design/gdd/01-核心循环.md b/design/gdd/01-核心循环.md index e1e1254b..4d8434a3 100644 --- a/design/gdd/01-核心循环.md +++ b/design/gdd/01-核心循环.md @@ -1,3 +1,41 @@ # 核心循环 +一句话:下洞 → 扫雷攒筹码 → 自动战斗兑现 → 变强再下洞;死了,从头再来。 + +## 一场战斗:扫雷的因,战斗的果 + +每场战斗都在一张雷图上打。战斗本身不用手操——你能做的全部决策,都在它的"准备期"里: + +1. 开局一张新雷图,每轮发给你若干行动点。 +2. 用行动点做排雷决策:挖开安全格,拿增益和道具;控制(插旗)巢穴,削弱里面的怪物;点错惊动巢穴,怪物反而变强。 +3. 行动点用尽——或者你主动停手——这一轮结束,轮末自动结算:你这一轮扫雷攒下的因,逐行兑现成战斗的果。你拿的增益打了出去,你控制的巢穴变成怪物的虚弱,你惊动的巢穴变成怪物的先手。 +4. 敌人没死光、你还活着,就进下一轮,同一张图接着挖;图开完了,发清图奖励,换一张新图接着打。 + +所以自动战斗不是过场,是阅卷:每一行结算都能指回你刚才的哪一步棋。 + +## 一场冒险:关卡串起来的下探 + +战斗串成关卡,关卡串成冒险: + +``` +开始冒险(一条命) + → 关卡:节点链逐节点推进(战斗 / 奖励 / 恢复 → 关底 Boss) + → Boss 倒下 → 关卡大奖励(血回满、上限提升)→ 下一关 + → 打穿全部关卡 → 冒险完成 + → 任意一场战斗倒下 → 冒险结束 +``` + +一条血走完整场冒险:战后剩多少血就带多少进下一场,恢复点回一部分,通关一关血回满还加上限。所以越往后,你越在意"这局已经走到第几层"。 + +## 死了之后:为什么想再开一局 + +两条理由拧在一起: + +- **推理的确定性**。扫雷这一层不靠赌:棋盘生成保证可推理,输掉的每一步都能复盘出"我哪步算错了"。"下次我能算对"的掌控感,是重开的第一驱动力。 +- **每局都不同**。新一局 = 新种子、新雷图、新奖励落点。重开不是同一关的复读,而是带着"这局能走得更远"的期待重新开局。 + +还有一条埋在冒险之外:**存档在变厚**。每一层的关底 Boss 都看守着他那块区域的**钥石**——杀了它就取走一枚,攒进存档;就算你之后倒下,已取走的钥石也不会丢。冒险与冒险之间,你用钥石解锁永久提升——角色属性更强、怪物遭遇更丰富、道具池更厚。所以下一次冒险不只是换了个种子:你的存档比上一次更有料,能遇到的东西更多。第一局开局时存档是一块白板,只有最基本的内容;每多取一枚钥石,白板上的东西就多一些。 + +循环到此闭合:进入一局 → 在棋盘上推理 → 看推理兑现成胜负 → 带着变强(或更痛)的记忆和一个更厚的存档,想进下一个节点、下一张图、下一层、下一局。 + > 旧版参考:../archive/gdd-2026-09-14/gdd.md diff --git a/design/gdd/03-内容规模.md b/design/gdd/03-内容规模.md index da301bad..37684af7 100644 --- a/design/gdd/03-内容规模.md +++ b/design/gdd/03-内容规模.md @@ -1,3 +1,85 @@ # 内容规模 +一句话体量:**一关、三种敌人、两档棋盘、八种战斗道具、六种辅助道具、六种状态**——刚好撑起一次完整的"扫雷决策 → 战斗兑现"循环,除此之外一律不做。以下数字以 `data/tables/` 实际行数与 `design/registry/entities.yaml` 登记为准。 + +## 关卡 + +现有 **1 关**(level.tres 一行),节点链 7 节、5 场战斗: + +| 关卡 | 层名 | 节点链 | 状态 | +|---|---|---|---| +| 第一层 | 苔藓回廊 | 战(D0) → 战(D1) → 随机道具 → 战(D2) → 战(D3) → 恢复点 → Boss 战(D4) | 已落地 | +| 第二层 | 未定 | 同一条链模板复用,只换数值 | 仅有 D0 锚行,D1–D4 行值待填 | + +MVP 做到两关:第二层不新造结构,与第一层共用节点链模板,靠数值台阶区分。第二层的生效前提是把敌人表与棋盘表的 D1–D4 行值填齐;填齐之前冒险按一关运行——这是合法态,不是残缺。 + +## 敌人 + +**三种**,含一个 Boss(enemy.tres 六行 = 第一关五场遭遇 + 第二层锚行): + +| 敌人 | 定位 | 行为环 | +|---|---|---| +| 地精 | 教学杂鱼,可成群(1–3 个) | 只会攻击 | +| 熊地精 | 主力,可成群 | 攻击 → 蓄力 → 重击三拍循环 | +| 食人魔酋长 | 第一关 Boss,单个 | 攻击 → 攻击 → 蓄力 → 重击四拍循环 | + +每种敌人配一档护甲(无甲 / 甲A / 甲B),正好构成"无甲 → 甲A → 甲B"的教学梯度。MVP 不加新敌种,也不做同深度多敌种混搭。 + +## 棋盘 + +**两档规格**(board_gen.tres),密度全程一档: + +| 档位 | 尺寸 | 雷密度 | 用于 | +|---|---|---|---| +| 小板 | 10×10 | 25% | 第一关前两战 | +| 大板 | 12×12 | 25% | 第一关后三战(含 Boss) | + +不做密度爬坡——Boss 战的台阶靠换大板制造,可推理率目标全程恒 0.88。地形变异暂无内容:雾格已从设计中移除,岩浆/冰冻等只登记了名字。 + +## 战斗道具 + +**八种**(reward.tres 八行),按交付方式分三类: + +| 类别 | 道具 | 用法 | +|---|---|---| +| 格子开出、当场生效 | 增伤术、石肤术、爆裂粉尘、急救敷料 | 挖到就兑付,不进背包 | +| 入背包、结算窗口选用 | 小刀、精工短刀、治疗包 | 每场战斗至多选用一件 | +| 清图奖励 | 清障炸药 | 清完整张雷图当场兑付 | + +MVP 就这么多:两个增益、两件小救急、两把刀、一个清图大奖。不做道具之间的组合协同。 + +## 扫雷辅助道具 + +registry 登记 **六种**(数据表未建,属待落地内容):显影尘、工兵令、探宝罗盘、探巢摆钟、地穴全图卷、爆破工兵包——四个常规单功能加两个稀有组合。MVP 不新增第七种。 + +待定一句:显影尘与地穴全图卷的现行效果定义绑定雾格,雾格移除后这两件的效果定位待重定;其余四件不依赖雾格,定义有效。 + +## 增益与状态 + +**六种**(status_effects.tres),全部一轮有效、可叠层、战斗结束清空: + +| 状态 | 作用方 | 效果 | +|---|---|---| +| 增伤 | 主角 | 攻击 +50% | +| 减伤 | 主角 | 承伤 −30% | +| 失衡 | 主角 | 承伤 +25% | +| 伏击 | 敌方 | 每次攻击附加固定伤害 | +| 削弱 | 敌方 | 输出 −65%(标中巢穴的兑付) | +| 暴走 | 敌方 | 输出 +25% | + +MVP 不加新状态。 + +## 暂不做 / 后续再说 + +垂直切片阶段明确砍掉或推迟的内容,写在这里防止回潮: + +- 更多关卡(N>2)与关内分支路线——第二层先按线性模板跑通 +- 精英节点与词缀系统——只预留了字段位,不定义语义 +- 地形变异内容——雾格已移除,其余变异只有名字 +- 道具/增益之间的组合协同(遗物式联动) +- 战后自动回复——回复只有道具与恢复点两个来源 +- 元进度与跨局成长 +- 新敌种、新棋盘档位、更高密度、同深度多敌种混搭 +- 第七种辅助道具、第七种状态 + > 旧版参考:../archive/gdd-2026-09-14/gdd.md diff --git a/design/gdd/04-美术音频方向.md b/design/gdd/04-美术音频方向.md index f6700408..5c207529 100644 --- a/design/gdd/04-美术音频方向.md +++ b/design/gdd/04-美术音频方向.md @@ -1,3 +1,17 @@ # 美术音频方向 +**风格一句话:明快的地牢,轻快的扫荡,仔细的推理——轻快明亮的像素幻想冒险风,全年龄,非暗黑,角色 2~3 头身。** + +三条关键词: + +- **数字可读性第一**:一切视觉让位给雷图数字的辨识——氛围色与数字冲突时,改氛围色,不改数字。 +- **明亮为皮,对比为骨**:全局高亮度、暖倾向、无压抑,但格底色要收、要素,把对比预算留给数字。 +- **格子即地牢地砖**:未开是覆尘完整砖,已开是碎裂裸露,惩罚格是被惊动的怪物巢穴;新关卡环境优先换色板,不加新资产。 + +参考游戏三者相融(参考截图存于 `design/art/references/`):**Into the Breach** 取网格信息分层与"预告画在目标格上";**Moonlighter** 取明亮像素地牢的暖砖质感;**Peglin** 取明快全年龄的地牢色彩。 + +**音频方向未定稿**:MVP 阶段用占位音效即可,正式音乐与音效等核心循环验证后再定。 + +美术细则(色板、形状语言、图标契约、验收标准)见 `design/art/art-bible.md`。 + > 旧版参考:../archive/gdd-2026-09-14/game-concept.md diff --git a/design/gdd/05-不做清单.md b/design/gdd/05-不做清单.md index 80833807..c1f8936a 100644 --- a/design/gdd/05-不做清单.md +++ b/design/gdd/05-不做清单.md @@ -1,3 +1,28 @@ # 不做清单 +这页纸用来防范围蔓延:想到什么新点子,先来对一下这里。真想推翻某条,走对应系统的修订流程,不许静默加回来。 + +## 确定不做(与定位冲突,永久排除) + +- **雾格 / 迷雾类战争迷雾机制**:曾在旧设计中承担地形变异,2026-09-14 已从设计中移除。它给推理信息源的代价大于收益,地形变异的未来只走非雾变异(岩浆/冰冻等,待定)。 +- **多人 / 在线要素**:游戏前提就是单机单人。合作、对战、排行榜这类在线功能会把开发成本翻倍,还不服务核心受众。 +- **重叙事**:不写前人日志、剧情演出这类长篇文本。世界观只做碎片点缀,卖点在玩法不在文本。 +- **即时操作玩法**:所有决策都在回合内慢慢想,不考反应、不考手速。任何"限时点击""走位闪避"都免谈。 +- **chord(经典扫雷的双击快开)**:本作每一格的兑现都要花行动点,chord 一键开一片会让行动点预算失去意义。 +- **抽象货币 / 中间资源折算**:扫雷收益全部直接兑成战斗效果,中间隔一层货币会稀释"排雷的因 = 战斗的果"这条因果可见的底线。 +- **旗做成背包道具或限量**:旗只是棋盘上的标记,想用多少用多少;它的稀缺性由行动点价目承载,不做第二重限制。 +- **未开格显示奖励身份**:推雷是本作的本征玩法,预读会拆掉推理。允许"恢复推理原料"类道具(显影/预读窄域),不允许替代推理。 +- **第二套随机惩罚**:所有风险都从雷和未知格派生,不再引入平行的随机惩罚源——惩罚多了,玩家就没法归因了。 + +## 现阶段不做(裁下来的,以后再说) + +- **多波战斗**:Peglin 对比报告(2026-09-12)裁下的后置项。单场多波是战斗编排级的改动,波间状态保留规则也要重新定义,排 Alpha 期评估。 +- **遗物 / 构筑协同**:同批裁下。先做协同设计再谈加密度,没有协同的纯堆量只会稀释每件道具的存在感。 +- **战后回复**:同批裁下。要做得绑定敌方攻击力下调,单独加回复会直接破坏现有数值预期。 +- **元进度(钥石解锁 / 跨局成长)**:排 Alpha。先把单局循环做扎实,跨局成长是之后的事。 +- **路径分支地图**:已拍板后置,关卡内先用线性节点链。分支选择是 Roguelike 的加分项,但当前体量撑不起有意义的岔路。 +- **反雪球机制**:MVP 不做。等 Alpha 拿到真实测试数据,再决定要不要治滚雪球、怎么治。 +- **正式音频、教学引导、战斗动画演出、设置与本地化**:MVP 内的打磨项,一律排后。先验证核心循环,再谈好听好看。 +- **连刷 / 换图资金跨战斗携带**:现行规则是每场战斗清零,防滚雪球。是否解禁连刷策略,等实测数据说话。 + > 旧版参考:../archive/gdd-2026-09-14/gdd.md diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index f2f63478..21fb702c 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -6,7 +6,7 @@ entities: - name: config_db type: service - owner: design/gdd/d2-data-config.md + owner: design/archive/gdd-2026-09-14/d2-data-config.md attributes: kind: autoload role: 数值表单点访问入口(类型化属性) @@ -16,7 +16,7 @@ entities: - name: rng_service type: service - owner: design/gdd/d2-data-config.md + owner: design/archive/gdd-2026-09-14/d2-data-config.md attributes: kind: autoload streams: [board_gen, reward_roll, encounter] @@ -29,7 +29,7 @@ entities: - name: stream_seed_derivation type: formula - owner: design/gdd/d2-data-config.md + owner: design/archive/gdd-2026-09-14/d2-data-config.md attributes: variables: [SALT_s, master_seed, scope] output_range: "[0, 2^63)" @@ -46,7 +46,7 @@ entities: - name: difficulty_row_resolution type: formula - owner: design/gdd/d2-data-config.md + owner: design/archive/gdd-2026-09-14/d2-data-config.md attributes: rule: (level_index, node_depth) 双维 floor 解析 + base_ceil 命名(请求低于表首向上解析);无 default 行兜底、无外推;越域请求(level<1/depth<0)致命 warning_dedup_key: (table_id, missing_type, L*, D*) 四元组;missing_type ∈ {level_floor, depth_floor, both, base_ceil} @@ -56,7 +56,7 @@ entities: - name: schema_version type: constant - owner: design/gdd/d2-data-config.md + owner: design/archive/gdd-2026-09-14/d2-data-config.md attributes: value: 实现期定(MVP=1);全部占位 schema 均携带版本字段 high_version_policy: 拒读(比较逻辑 owner=D3) @@ -64,7 +64,7 @@ entities: - name: action_economy type: constant_set - owner: design/gdd/a3-action-economy.md + owner: design/archive/gdd-2026-09-14/a3-action-economy.md attributes: table: ActionEconomyTable(D2 承载,单行全局;A3 为回填 owner;2026-09-07 三次回填(RAP 结构修订)——四字段删除 + rap_refresh_cost 新增,见 A3 Schema 定稿节) ap_per_round: 8(原型 v2 定稿,12 点已否决;双重身份:节奏 knob 兼停手 RAP 转存规模) @@ -84,7 +84,7 @@ entities: - name: variation_table type: schema_data - owner: design/gdd/a4-terrain-variation.md + owner: design/archive/gdd-2026-09-14/a4-terrain-variation.md attributes: table: VariationTable(D2 承载,键 = variant_id;A4 回填 owner,2026-09-08 定稿回填) fields: variant_id(String 主键唯一)/ display_name / unlock_level(int [1,999],knob)/ scope(enum region|global,global 预留 C3)/ info_mask(enum none|hide_numbers)/ cell_constraint(enum any|safe_nonzero)/ biome_tag(StringList,∅=通配,knob)/ counter_item_ids(StringList,A5 预留,非 knob——2026-09-08 re-review 修正 ✓ 误标) @@ -100,7 +100,7 @@ entities: - name: variant_pool_gate type: formula - owner: design/gdd/a4-terrain-variation.md + owner: design/archive/gdd-2026-09-14/a4-terrain-variation.md attributes: variables: [unlock_level, level_index, biome_tag, board_biome] rule: pool = {v ∈ VariationTable | unlock_level ≤ level_index ∧ (biome_tag=∅ ∨ biome_tag ∩ board_biome ≠ ∅)};直接整数比较(无 D2 R1 floor);∅ = 通配语义 @@ -111,7 +111,7 @@ entities: - name: status_effect type: schema_data - owner: design/gdd/b3-status-effect.md + owner: design/archive/gdd-2026-09-14/b3-status-effect.md attributes: table: StatusEffectTable(D2 承载,键 = effect_id;B3 回填 owner,2026-09-08 定稿回填) fields: @@ -143,7 +143,7 @@ entities: - name: board_gen_table type: schema_data - owner: design/gdd/a1-board-generation.md + owner: design/archive/gdd-2026-09-14/a1-board-generation.md attributes: table: BoardGenTable(D2 承载,键 (level_index, node_depth) + depth-0 锚行——首个进度键表;A1 回填 owner,2026-09-09 定稿回填;第三轴登记约定〔B7 修订〕——Boss 图 = 各 level Dmax 行、elite_/boss_ 字段命名空间预留、C1/C3 定稿强制重审 OQ6,改键退路 = D2 Rule 4 接口漂移通道) fields: board_width/board_height(int [8,64],knob)/ mine_density(float (0,0.5],knob——雷量参数形态=密度浮点,尺寸解耦;布雷数下限 round(d×(W×H−9)) ≥ 1,R3 修订)/ inferability_target(float **[0.85,1]**,knob——P1 门槛承重参数+绝对锚,B1 修订收窄)/ solver_rules(enum single|single_subset,**冻结 single_subset**——推理定义域非调参)/ min_safe_count(int [1,999],knob——A3 EC5 退化板对冲)/ max_gen_attempts(int [1,32],knob)/ fog_region_count(int [0,32],knob)/ fog_target_ratio(float [0,1),knob——**≤ min(8d, 0.25) 绝对上限,B1 修订**)/ board_biome(StringSet **非空**,域校验致命——A4⑮;词表 owner 未定稿前只校验非空)+ elite_/boss_ 前缀字段命名空间预留(非 knob,B7——语义归 C1/C3) @@ -160,7 +160,7 @@ entities: - name: a2_event_surface type: schema_data - owner: design/gdd/a2-minesweeper-rules.md + owner: design/archive/gdd-2026-09-14/a2-minesweeper-rules.md attributes: kind: 三事件回边契约(发射面封闭——TD-SYSTEM-BOUNDARY 回边裁决的 A2 侧定稿;增删事件 = 接口漂移修订) cell_revealed: "{cell, kind ∈ {safe, mine}, digit【仅 kind=safe 携带、恒真透传含雾格——呈现隐藏归 D1,判定源 = variant_ids,A2×4③】, variant_ids, channel ∈ {initial, chain, dig}, reward_eligible【initial 恒 false / chain·dig ∧ safe 恒 true(含链开雾格)/ mine 恒 false】}" @@ -173,7 +173,7 @@ entities: - name: a2_initial_expansion type: formula - owner: design/gdd/a2-minesweeper-rules.md + owner: design/archive/gdd-2026-09-14/a2-minesweeper-rules.md attributes: rule: O₀ = R₀ = 出生 3×3 ∪ 0 格 flood 闭包(与 A1 F1 求解器初始态同算子同值——运行期镜像,显式不含外扩 1 环);执行时点 = install_board 事务内一次(板级一次跨轮不重放) properties: 免费(零 try_spend)· 计入清图进度 · 无奖励(channel=initial、reward_eligible=false——game-concept 定稿;B1×3 强制项:不入奖励库)· 永不触雷(R₀ ∩ M = ∅ 为 A2 侧定理)触雾(A1 排除域 + install 不变式②) @@ -185,7 +185,7 @@ entities: - name: terminology type: glossary - owner: design/gdd/a2-minesweeper-rules.md(各词条以首次定义 GDD 为 owner) + owner: design/archive/gdd-2026-09-14/a2-minesweeper-rules.md(各词条以首次定义 GDD 为 owner) attributes: purpose: CLAUDE.md 用语纪律(2026-09-09)的登记通道——项目内生术语的白话定义集中地,GDD 首次出现处须附同款定义 terms: @@ -235,7 +235,7 @@ entities: - name: enemy type: schema_data - owner: design/gdd/b2-enemy-system.md + owner: design/archive/gdd-2026-09-14/b2-enemy-system.md attributes: table: EnemyTable(D2 承载,键 (level_index, node_depth, enemy_id);B2 回填 owner,2026-09-09 定稿回填——进度键 floor(D2 R1)+ 实体键精确匹配) fields: @@ -260,7 +260,7 @@ entities: - name: hero type: schema_data - owner: design/gdd/b2-enemy-system.md + owner: design/archive/gdd-2026-09-14/b2-enemy-system.md attributes: table: HeroTable(D2 新增 schema 行〔接口漂移回写,2026-09-09 B2〕,单行全局;B2 回填 owner) fields: @@ -272,7 +272,7 @@ entities: - name: reward_table type: schema_data - owner: design/gdd/b4-reward-item-economy.md + owner: design/archive/gdd-2026-09-14/b4-reward-item-economy.md attributes: table: RewardTable(D2 承载,键 = reward_id;B4 回填 owner,2026-09-09 定稿回填、同日 full 评审增补 display_name——含 use_timing 字段〔game-concept"使用时机"预留的兑现,MVP 单值 pre_settlement 承重,扩枚举走修订〕) fields: @@ -299,7 +299,7 @@ entities: - name: reward_config type: schema_data - owner: design/gdd/b4-reward-item-economy.md + owner: design/archive/gdd-2026-09-14/b4-reward-item-economy.md attributes: table: RewardConfigTable(D2 承载,**单行全局**——2026-09-09 B4 full 评审接口漂移新增:B4 三个标量 knob 的 Rule 1 单一事实源载体,R3 override key 空间随之存在) fields: @@ -314,7 +314,7 @@ entities: - name: settlement_table type: schema_data - owner: design/gdd/b1-settlement.md + owner: design/archive/gdd-2026-09-14/b1-settlement.md attributes: table: SettlementTable(D2 承载,单行全局;B1 回填 owner,2026-09-10 定稿回填;Rule 4 豁免——单行全局常量/结构表,HeroTable/ActionEconomyTable 先例) fields: @@ -337,7 +337,7 @@ entities: - name: clause3_supply type: formula - owner: design/gdd/b2-enemy-system.md + owner: design/archive/gdd-2026-09-14/b2-enemy-system.md attributes: rule: B2→B1 挖掘风险不等式(A3 F1 条款 3)供给口径——每结算敌方伏击暴露精确式 = k × L × m_amb(k = 本结算存活敌中攻击/重击拍单位数,确定性可算);每结算结构上界 = unit_count × min(AP 上界, cap) × m_amb(cap > AP 界时 cap 腿松弛——2026-09-09 B2 full 评审收紧);跨结算累计 = 轨迹量非表值 boundary: **单结算自然边界(用户 2026-09-09 定稿)**——"不设(每战)上界:踩雷 debuff 只在一次结算中有效,之后没有 debuff"(dur=1 每结算清零无存量) @@ -349,7 +349,7 @@ entities: - name: clause5_dominance type: formula - owner: design/gdd/b1-settlement.md + owner: design/archive/gdd-2026-09-14/b1-settlement.md attributes: rule: A3 F1 条款⑤清图 vs 弃图支配性闭合(B1 单一闭合 owner,B1 GDD F5;**2026-09-10 评审批模型修订:挖穿残余池计价**——E[踩雷] = |M|×n_s/(n_s+1) 均匀交错模型、Δr = ⌈(n_s+E[踩雷])÷AP_r⌉;旧模型按每格独立赌 P(雷) 漏计全池挖掘量、系统性偏乐观)——主判式 Δ_clear = [R_res + C_eff] − [X_res + Δr × s_ref] ≥ 0;E_dig = 默认根加权 7.2 HP(刀 40%/治疗 25%/defense_up 35%);C_eff = C ×(perfect ? P_perfect÷100 : 1)(×2 = 真实双份交付);s_ref = D_ref;**停手侧 RAP 机会收益按零计价(显式假设登记——零价假设下 verdict 已为负,为 RAP 计价只会更负)**;域守卫 n_s < 1 ⇒ 主判式不评估、信息端平凡腿接管 first_pass: **条款⑤未闭合(2026-09-10 模型修订重推——旧"两态通过"读数作废)**:L1 −5.3 / L2 −10.1(完美双份 +2.7/−2.1);满配语境 unit_count=3 深度为负(−49.6/−97.5,与 clause3_supply 破线同向联动);实现率折减口径(E_dig×0.6)更差(−18.5/−39.5);保守地板需求 L1 ≥ 46.1 / L2 ≥ 91.8(vs C=8/完美 16——缺口 −38.1/−75.8)。**C3/B4 约束包**:① C 量级上调整向(护栏 B 口径联动复核)② 或裁"清图非严格支配"为设计态(与 A4 定价硬约束②同向;如裁设计态须同步声明 A3 条款⑤ P1 对冲弱化 + B4 预警⑤加权监控)——①②二选一归 C3 裁;③ 多敌放行判据 = 条款③⑤在全部登记行组合下同时成立。判据函数角色 = 调参约束生成器(AC-40 断言输出与约束包一致) @@ -377,7 +377,7 @@ entities: # 2026-09-08 A4 full 评审修订(owner=a4-terrain-variation.md,NEEDS REVISION 8 阻塞同日核销): # variation_table.load_bearing_rule 增结构推论(厚度≤2/f≤8d)· fog_ap_note 改写(全价→链不可达两态; # 条款 5"消解"→三腿入账两态验算)· variant_pool_gate 增 board_biome 域校验归属与 15 项验收门禁登记—— -# 详见 design/gdd/reviews/a4-terrain-variation-review-log.md 阻塞→修复对照表。 +# 详见 design/archive/gdd-2026-09-14/reviews/a4-terrain-variation-review-log.md 阻塞→修复对照表。 # 2026-09-08 A4 re-review 修订(owner=a4-terrain-variation.md,NEEDS REVISION #2 6 阻塞同日核销): # variation_table 增 cross_field_validation(hide_numbers⇒safe_nonzero 致命)与 pricing_constraints(B4 三 # 硬约束)· counter_item_ids 修正为非 knob · mvp_content 的 knob 活值标注 · referenced_by 补 B1/B4 · @@ -397,7 +397,7 @@ entities: # 2026-09-09 A2 full 评审修订(owner=a2-minesweeper-rules.md,NEEDS REVISION 6 blocking 同日核销): # a2_event_surface.api_surface 增 ActionOutcome.sub_reason 封闭枚举(UX-1,批前免费窗口)· D1×1→D1×6; # a2_initial_expansion 增诊断类别封闭枚举 + 链不越旗红线(GD-1——连锁传播集 ∖ G,G=∅ 域与 A1 算子①同构不变); -# 新增 terminology 术语条目(用语纪律登记通道)。详见 design/gdd/reviews/a2-minesweeper-rules-review-log.md。 +# 新增 terminology 术语条目(用语纪律登记通道)。详见 design/archive/gdd-2026-09-14/reviews/a2-minesweeper-rules-review-log.md。 # 2026-09-09 B2 定稿回填(owner=b2-enemy-system.md):新增 enemy / hero / clause3_supply 三条目(EnemyTable 八字段 + # 双敌种行 + 每行集恰一敌种校验;HeroTable 单行全局两字段 + atk=0 机制开关〔该口径 2026-09-11 作废,见下〕;条款 3 单结算自然边界供给口径〔用户定稿〕)· # status_effect.single_enemy_assumption 回验改写(定多敌,side-wide 兼容 + target_ref 扩展位)· @@ -418,7 +418,7 @@ entities: # enemy.b1_obligations ① 增调用序成文(query_attack→apply_damage→advance)与敌单位专属口径 · d1_obligations # ① 增预告时序/强度档位、② 改全局恒定 · rowset_rule 增精英/Boss 编码位预登记(B2 OQ7)· clause3_supply # 结构上界改 min(AP, cap) 形(cap 腿松弛收紧)· direction_precheck 裕度 4.7×→2.3× 更正(最低档锚口径)· -# account_input 增胜利路径声明注记。详见 design/gdd/reviews/b2-enemy-system-review-log.md。 +# account_input 增胜利路径声明注记。详见 design/archive/gdd-2026-09-14/reviews/b2-enemy-system-review-log.md。 # 2026-09-09 B4 定稿回填(owner=b4-reward-item-economy.md):新增 reward_table 条目(schema 八字段 + 跨字段 # 校验族 + 机制/API 面 + B1×6/D1×3 义务清单 + A4 三约束承接 + 高光节点条目化);接口漂移改写三处—— # rng_service.scope_event_binding 的 reward_roll 语义(每次奖励结算 → 每次 board install 批)、 @@ -428,7 +428,7 @@ entities: - name: d1_presentation_surface type: convention - owner: design/gdd/d1-hud-framework.md + owner: design/archive/gdd-2026-09-14/d1-hud-framework.md attributes: kind: 呈现面契约(读图接口清单 + 订阅纪律 + 命令式刷新面 + 载荷 schema 索引——封装收口批〔session-state entry 39/40〕切片事实的 GDD 转正) read_map: A2 current_board()/reveal_record()/compute_move_path() · A3 getter-only phase/ap/rap/last_round_end · B1 presentation_snapshot()/is_battle_live()/stock_count()/query_reward_identity() + 步骤流信号 · B2 hero_unit()/all_enemies() · **B3/B4 零直读**(经 B1 呈现面与流水投影)· runner(节点链/当前节点/HP 携带) @@ -443,7 +443,7 @@ entities: - name: a5_aux_items type: schema_data - owner: design/gdd/a5-minesweeper-aux-items.md + owner: design/archive/gdd-2026-09-14/a5-minesweeper-aux-items.md attributes: table: AuxItemTable(D2 承载【D2×① 修订批登记】,键 = item_id;A5 回填 owner,2026-09-14 定稿登记;定义表非进度成长表——Rule 4 豁免;生效前提 = B4×①…⑤/D2×①② 修订批兑现) fields: @@ -468,7 +468,7 @@ entities: - name: difficulty_table type: table - owner: design/gdd/c3-difficulty-curve.md + owner: design/archive/gdd-2026-09-14/c3-difficulty-curve.md attributes: kind: 全局修饰结构位(MVP 空表——零行为) key: (level_index, node_depth) @@ -479,7 +479,7 @@ entities: - name: difficulty_expectation_table type: formula_set - owner: design/gdd/c3-difficulty-curve.md + owner: design/archive/gdd-2026-09-14/c3-difficulty-curve.md attributes: kind: 调参目标带(F5)+ 承伤估算(F4)+ 供给平衡式(F6)——设计期工具式,运行时零新增公式(C3 定位声明) clear_rate_target: L1 基线 **30-50%**(2026-09-14 带锚定稿——旧 40-60% 由本条替代;现扫描 60% 越上界,加难杠杆批内执行 OQ7)/ L2 20-40% / L3+ 10-25%(中高天赋带见 GDD F5 表——区间位移机制承载:atk 翻倍 ≈ K 减半 → 绿档) @@ -490,7 +490,7 @@ entities: - name: boss_dmax_convention type: convention - owner: design/gdd/c3-difficulty-curve.md + owner: design/archive/gdd-2026-09-14/c3-difficulty-curve.md attributes: rule: Boss = 各关最大深度 Dmax 行(A1 第三轴登记约定的 GDD 侧兑现)+ LevelTable 末节点必须 Boss(schema 校验)+ 专属行为环含 charge 拍 boss_hp_anchor: F3 = Σ普通战斗hp期望 × r_boss ∈ [0.5, 1.1](现行带——旧带 [0.35,0.55] 与"切片 0.81 越上界"读数由本条替代,OQ2 采信用户"可上调"裁决后修订)· L1 v3 记录值 150/153.5 ≈ **0.98** 带内 ✓(期望口径含 unit_count 区间骰 Σ=153.5——2026-09-14 C3 修订批口径统一,旧固定口径 Σ=142 读数替代)· **加难走廊 [1.1, 1.35] 预登记**(Boss 180–207 候选,OQ7 扫描终裁) @@ -499,7 +499,7 @@ entities: - name: level_table type: schema_data - owner: design/gdd/c2-adventure-structure.md + owner: design/archive/gdd-2026-09-14/c2-adventure-structure.md attributes: table: LevelTable(D2 承载,键 = level_index 行、行内 nodes 节点链数组——切片建表,C2 定稿转正为行集内容 owner) fields: @@ -514,7 +514,7 @@ entities: - name: adventure_table type: schema_data - owner: design/gdd/c2-adventure-structure.md + owner: design/archive/gdd-2026-09-14/c2-adventure-structure.md attributes: table: AdventureTable(D2 承载,单行全局;C2 回填 owner;Rule 4 豁免——单行全局常量表,HeroTable/SettlementTable 先例;建表走 D2 接口漂移规则) fields: @@ -526,7 +526,7 @@ entities: - name: hero_override_parameter_passing type: convention - owner: design/gdd/b1-settlement.md + owner: design/archive/gdd-2026-09-14/b1-settlement.md attributes: kind: 主角战斗入参覆盖值通道(begin_battle 显式参数传递——切片 E4 封装收口批实现,registry 登记缺口由 C2 定稿批补登) contract: begin_battle 增 hero_hp / hero_atk / hero_max_hp 显式入参 → B2.spawn 增 atk_override / max_hp_override 参数;-1 = 表值兜底(不覆盖);hero 表运行期不可变(D2 单一事实源机制化——表写通道全删) @@ -540,7 +540,7 @@ entities: # + 重复受理幂等语义 + B1×6/D1×3→D1×5 义务清单同步;锚参照迁移传播三处(本条 anchor_warning 迁移注记 / # clause3_supply.direction_precheck 迁移注记 / systems-index A3 OQ5 注记——attack_up 口径历史值与 defense_up # 数值巧合全等、迁移后预检未重跑事实同批登记);terminology 增 B4 六词条(刀/批尾/死行/档位序检查/预推进/烧刀烧包)。 -# 详见 design/gdd/reviews/b4-reward-item-economy-review-log.md。 +# 详见 design/archive/gdd-2026-09-14/reviews/b4-reward-item-economy-review-log.md。 # 2026-09-10 B1 定稿回填(owner=b1-settlement.md):新增 settlement_table / clause5_dominance 两条件目 # (SettlementTable 七字段 + 三行致命 manifest + 段序骨架/可回放/高光双落载体;条款⑤主判式 + 保守地板缺口 + # 两护栏 + 三腿入账)· 接口漂移回写四处——status_effect.mvp_content.weaken magnitude −25→−65(F0 裁决, @@ -554,7 +554,7 @@ entities: # D2 GDD 行按收编先例以本条为准)、source_label_map 键集补 enemy_action/flag_miss、mechanics 补行协议字段分层; # clause5_dominance——模型修订重登(挖穿残余池计价、条款⑤未闭合 + C3/B4 约束包 + 护栏 B 双读数 + RAP 零价假设); # clause3_supply——闭合回执双口径更正(锚行 ≈2.0×/2.6× / 期望 ≈1.2×/1.5×、破线约束两轴)。 -# 详见 design/gdd/reviews/b1-settlement-review-log.md。 +# 详见 design/archive/gdd-2026-09-14/reviews/b1-settlement-review-log.md。 # 2026-09-13 D1 定稿回填(owner=d1-hud-framework.md):新增 d1_presentation_surface 条目(呈现面契约—— # 读图接口清单/订阅纪律/命令式刷新面/载荷 schema 索引/生命周期可见性规则/命名统一/接口漂移登记 ×3); # terminology 增两词条(命令式回执驱动/程序化占位)+ referenced_by 增 D1。solo 模式出稿待人工复核。 diff --git a/docs/code-conventions.md b/docs/code-conventions.md index 90a89400..765cc050 100644 --- a/docs/code-conventions.md +++ b/docs/code-conventions.md @@ -34,7 +34,7 @@ ### 1.4 命名 = 领域命名,禁止系统 ID 前缀 文件名与类名禁止 `a1_`/`b1_`/`c1_` 等系统 ID 前缀(`a1_board_generator.gd` → `board_generator.gd`)。 设计追溯不靠前缀:每个核心实现文件头注必须带一行 -`# 实现 GDD:design/gdd/-.md(系统 ID Xn)`;系统 ID 只作为文档与 registry 的追溯锚。 +`# 实现 GDD:design/archive/gdd-2026-09-14/-.md(系统 ID Xn)`(2026-09-14 起旧 GDD 体系封存于归档,头注指归档路径;对应新 systems 文档定稿后再改指 `design/gdd/systems/` 新文档);系统 ID 只作为文档与 registry 的追溯锚。 豁免:D2 schema 类与 autoload(本就领域命名);文档/夹具登记名(如 b4_golden)属文档层。 > **反面案例(2026-09-11,用户:"是没有代码规范吗")**:ID 前缀是跟随 GDD 文档名的事实约定, diff --git a/production/session-state/active.md b/production/session-state/active.md index a045bc38..72a3d0ff 100644 --- a/production/session-state/active.md +++ b/production/session-state/active.md @@ -1,9 +1,8 @@ # 会话状态:Dungeon Sweeper(扫雷 × 自动战斗,唯一状态源,每里程碑同步一次) - **阶段**:Systems Design(`production/stage.txt` = Systems Design,2026-09-07 写入) -- **系统索引**:`design/gdd/systems-index.md`(20 系统,含门禁修正 + 2026-09-07 增补记录) -- **概念文档**:`design/gdd/game-concept.md`(含目标受众 + Visual Identity Anchor + 创意风险登记) -- **游戏支柱**:`design/gdd/game-pillars.md`(4 条,GDD 评审尺度) +- **系统索引**:`design/gdd/02-系统清单.md`(2026-09-14 循环式新骨架根索引;旧 `systems-index.md` 已封存于 `design/archive/gdd-2026-09-14/`,只读参考) +- **概念文档**:`design/gdd/00-游戏概念.md`(新骨架顶层文档;旧版 game-concept/game-pillars 已随归档封存) - **原型**:概念原型 demo 已删除(2026-09-12,垂直切片承接);验证报告留档 `docs/prototype-report-minesweeper-battle-concept.md`(v3,verdict PROCEED) - **引擎**:Godot 4.7.2 + GDScript(2026-09-07 锁定;`.claude/docs/technical-preferences.md` + `docs/engine-reference/godot/`;**MEDIUM RISK**——2026-09-12 `/setup-engine refresh` 逐条核实 4.5–4.7 官方迁移指南,无破坏架构契约项,current-best-practices.md 已建) - **架构**:`docs/architecture/architecture.md` v1.0(2026-09-12 /create-architecture 产出,TD 自评 APPROVED WITH CONDITIONS;review-mode.txt = solo) @@ -126,3 +125,5 @@ D2 数据配置 → A3 行动经济 → A4 地形变异 → B3 增益状态 → 45. **伤害量值区间批(2026-09-14,用户拍板②——验收口径改完美策略档 0 加成 ≤40%;两步全落地 + 无效性实测)**:第一步奖励侧五行 power 区间化(heal_minor[2,6]/knife_t1[5,11]/heal_pack[6,18]/knife_adv[10,22]/clear_blast[25,55]——身份批追加取号,E14 快照口径不变,B1/呈现零改动)+ 第二步敌方 atk 区间(六行 ±3,遭遇骰同流 spawn 期整战持久——每拍抖动否决〔数字可读性锚〕,B2 零随机保持,spawn +1 参数接口漂移登记);中点恒等现值 = A3 条款①锚不漂移;schema 双批校验(成对/中点锚/buff 禁止)+ smoke `_smoke_power_interval` 4 断言;冒烟 **154/154**。**实测(N=30)**:完美档 0 加成仍 **100%**(承伤 3.5→3.9——方差真实流动被 47/50 血缓冲全吞);基线档 17% 不变——**数值区间杠杆族对 ≤40% 线无效已坐实**(完美玩家结构性优势 = 零踩雷直伤 + weaken 顶格 + 快杀)。**待用户三选裁决(C3 OQ7 主项)**:①承伤硬地板(B1/B2)②weaken 饱和语义(B3/B1——拆全标旗基石)③极端宽度(建议否决——毁基线与可读性);区间机制保留(普通玩家方差体验有效)。registry reward_table/enemy 条目 + clause5 义务 + C3 行值总表/F5/OQ7 同批登记。 46. **GDD 体系重构(2026-09-14,用户拍板批)**:旧 GDD 体系整体封存为 `design/archive/gdd-2026-09-14/`(只读参考、不作事实引用,两个 legacy 子目录不保留);`design/gdd/` 原位重建循环式新骨架——6 份顶层文档 + `systems/` 四循环(排雷/战斗/冒险/表现与支撑)20 份子系统占位文档,根索引 = `02-系统清单.md`(文档增删必须同步)。雾格已从设计中移除,地形变异未来范围只覆盖非雾变异(待定)。 + +47. **新骨架 00–05 成文 + 全仓旧路径清偿(2026-09-14,用户逐份审阅批)**:00 游戏概念 / 01 核心循环 / 03 内容规模 / 04 美术音频方向 / 05 不做清单 成文(子 agent 起草、用户审阅定稿,02 索引已随骨架建立);元进度外层循环补入 01——元进度资源定名**钥石**(关底 Boss 看守的区域核心,击杀取走、局外解锁永久提升,用户拍板;registry 登记随元进度设计批补)。**旧路径清偿**:CLAUDE.md 头部导航与 Project Layout 改指新骨架 + 新增「新骨架过渡口径」条款(lean/lint/两件套纪律仅约束归档,新骨架纪律 = 可读性优先 + 索引同步 + 不建 analysis);registry owner ×33 与切片代码头注 ×17 改指归档路径;gdd_lint PostToolUse 钩子停用(工具留 `tools/` 备查)。**已知待办**:registry/数据表雾残留清理批(variation.tres fog 行 / board_gen L2 锚行雾参数 / 显影尘·地穴全图卷 fog_reveal / L2 层名"雾漫巢径");registry status_effect.mvp_content 缺暴走/失衡两行登记。 diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/action_economy.gd b/prototypes/dungeon-sweeper-vertical-slice/core/action_economy.gd index c7c02aea..ac7020b9 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/action_economy.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/action_economy.gd @@ -3,7 +3,7 @@ # Date: 2026-09-10 # A3 行动经济:被动账本(AP 硬重置 / 统一价目 / 三路径结束仲裁 cleared > stopped > ap_exhausted / # RAP 池战斗域 / 双发射源之 stopped 直发)。相位域 = {Idle, Active, Waiting}。 -# 实现 GDD:design/gdd/a3-action-economy.md(系统 ID A3——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/a3-action-economy.md(系统 ID A3——registry 追溯锚,命名规范见 CLAUDE.md) class_name ActionEconomy extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/battle_orchestrator.gd b/prototypes/dungeon-sweeper-vertical-slice/core/battle_orchestrator.gd index 7df196b0..5343df5c 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/battle_orchestrator.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/battle_orchestrator.gd @@ -6,7 +6,7 @@ # Waiting 相位结算触发(不依赖事件到达序)。 # 切片登记:① 事件总线载体 = 直连信号(实现期 ADR 项,provisional)② 多次刷新 EC15 简化为每 Waiting 至多 # 一次(UI 禁二次发起;多刷契约义务不触)③ 效果行协议 = 授予段逐 grant 行 + 增益/减益段续存实例组合行。 -# 实现 GDD:design/gdd/b1-settlement.md(系统 ID B1——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b1-settlement.md(系统 ID B1——registry 追溯锚,命名规范见 CLAUDE.md) class_name BattleOrchestrator extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/board_data.gd b/prototypes/dungeon-sweeper-vertical-slice/core/board_data.gd index 2e81d71a..24aa9c3d 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/board_data.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/board_data.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # A1 棋盘产物数据契约(A2 消费;生成后不可变——A2 持快照即持活引用,生成器不再触碰)。 -# 实现 GDD:design/gdd/a1-board-generation.md(系统 ID A1——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/a1-board-generation.md(系统 ID A1——registry 追溯锚,命名规范见 CLAUDE.md) class_name BoardData extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/board_generator.gd b/prototypes/dungeon-sweeper-vertical-slice/core/board_generator.gd index 6a6a21bd..aa2172b0 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/board_generator.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/board_generator.gd @@ -4,7 +4,7 @@ # A1 确定性棋盘生成器:五阶段管线(参数→布雷→变异→验证循环→产出)+ F1 可推理率度量 # (single_subset 求解器)+ F3 雾预算 + F5 验收算子(达标即出/接受最优/接受最不坏)。 # 切片裁剪登记:黄金向量回归套件与 F4 批量工具不做(C3 调参期工具域)。 -# 实现 GDD:design/gdd/a1-board-generation.md(系统 ID A1——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/a1-board-generation.md(系统 ID A1——registry 追溯锚,命名规范见 CLAUDE.md) class_name BoardGenerator extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/config_db.gd b/prototypes/dungeon-sweeper-vertical-slice/core/config_db.gd index ef486665..311a73b3 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/config_db.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/config_db.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 ConfigDB autoload——数值表单点访问入口(Rule 2)+ 校验双通道(Rule 6)+ R1 行解析。 -# 实现 GDD:design/gdd/d2-data-config.md(系统 ID D2——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/d2-data-config.md(系统 ID D2——registry 追溯锚,命名规范见 CLAUDE.md) # 切片注:headless --script 模式下由冒烟脚本显式实例化(D2 AC 前言);玩法代码禁止绕过本单点自建 load()。 extends Node diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/damage_math.gd b/prototypes/dungeon-sweeper-vertical-slice/core/damage_math.gd index c77e6f7b..fef9381d 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/damage_math.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/damage_math.gd @@ -1,6 +1,6 @@ # VERTICAL SLICE - NOT FOR PRODUCTION # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) -# 实现 GDD:design/gdd/b1-settlement.md(系统 ID B1——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b1-settlement.md(系统 ID B1——registry 追溯锚,命名规范见 CLAUDE.md) # B1 战斗段伤害公式族(零状态纯算术宿主——规范 1.2「工具性纯函数挂明确宿主类」; # 自 battle_orchestrator 拆出 2026-09-13,封装审查 O3)。池读取与表值读取仍归 B1,本类只做算术。 class_name DamageMath diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/minesweeper_rules.gd b/prototypes/dungeon-sweeper-vertical-slice/core/minesweeper_rules.gd index 848c8f93..48989e79 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/minesweeper_rules.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/minesweeper_rules.gd @@ -3,7 +3,7 @@ # Date: 2026-09-10 # A2 排雷玩法规则引擎:零随机/零表读取/零 UI——输入 = A1 产物 + 意图序列,输出 = 三事件流。 # 核心契约:install 四不变式 · 初始展开 = R₀ 恰等 · 连锁不越旗 · 批次语义序仲裁(cleared > stop > 其余)。 -# 实现 GDD:design/gdd/a2-minesweeper-rules.md(系统 ID A2——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/a2-minesweeper-rules.md(系统 ID A2——registry 追溯锚,命名规范见 CLAUDE.md) class_name MinesweeperRules extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/reward_economy.gd b/prototypes/dungeon-sweeper-vertical-slice/core/reward_economy.gd index f1728493..0fb30317 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/reward_economy.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/reward_economy.gd @@ -8,7 +8,7 @@ # 2026-09-14 伤害量值区间批(用户拍板②):区间行(power_min/max 可选配对)在身份预分配批内追加取号 # (④ 步,既有取号序零扰动);快照 E14 口径不变——快照 power = roll 值,B1/呈现零改动;授予期零随机不变。 # 切片登记:取号约定 = randi_range(0, W-1)(实现期 ADR 事实,切片内恒定)。 -# 实现 GDD:design/gdd/b4-reward-item-economy.md(系统 ID B4——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b4-reward-item-economy.md(系统 ID B4——registry 追溯锚,命名规范见 CLAUDE.md) class_name RewardEconomy extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/reward_supply_controller.gd b/prototypes/dungeon-sweeper-vertical-slice/core/reward_supply_controller.gd index a99a2e56..0d41ebec 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/reward_supply_controller.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/reward_supply_controller.gd @@ -6,7 +6,7 @@ # 战斗内尚未获取首件 → 本板必注入(首件保证);已获取 j 件 → 概率 p0×decay^(j-1)(指数下降、永不绝育)。 # 行值快照(p0/decay 构造期快照——抗热重载,B2 同款);零自有随机数(判定取号经 B4 传入的 reward_roll # 封闭流实例——Rule 5);"获取"以实际发放入库为准(预分配未挖到不计数——授予侧经 B4.grant 挂钩上报)。 -# 实现 GDD:design/gdd/b4-reward-item-economy.md(系统 ID B4——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b4-reward-item-economy.md(系统 ID B4——registry 追溯锚,命名规范见 CLAUDE.md) class_name RewardSupplyController extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/rng_service.gd b/prototypes/dungeon-sweeper-vertical-slice/core/rng_service.gd index f2b7091d..e07be0de 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/rng_service.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/rng_service.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 RngService autoload——封闭命名流单点(Rule 5)。玩法代码禁止 randomize()/自建 RandomNumberGenerator。 -# 实现 GDD:design/gdd/d2-data-config.md(系统 ID D2——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/d2-data-config.md(系统 ID D2——registry 追溯锚,命名规范见 CLAUDE.md) # R2 派生公式(黄金向量已预验证):derive = (SALT XOR wrap64(master + scope×GOLDEN)) AND 0x7FFF… # 取号语义:全新实例首个 open_stream = scope 0(B4 预推进术语的登记口径)。 extends Node diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/status_container.gd b/prototypes/dungeon-sweeper-vertical-slice/core/status_container.gd index df3213d4..3865b0b4 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/status_container.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/status_container.gd @@ -4,7 +4,7 @@ # B3 统一状态容器:三向效果同构实例 · 单一时限量纲 remaining_settlements(先兑付后衰减)· # 按行叠层(stack 授予不触碰 R)· 授予时数值快照抗热重载 · 零随机零信号。 # 注:MVP 单敌假设经 B2 回验不成立(定多敌)——enemy 侧 side-wide 语义按 registry 改写执行。 -# 实现 GDD:design/gdd/b3-status-effect.md(系统 ID B3——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b3-status-effect.md(系统 ID B3——registry 追溯锚,命名规范见 CLAUDE.md) class_name StatusContainer extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/core/unit_container.gd b/prototypes/dungeon-sweeper-vertical-slice/core/unit_container.gd index 0d171b05..14dd1eb7 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/core/unit_container.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/core/unit_container.gd @@ -5,7 +5,7 @@ # 行值快照抗热重载 · side-wide 伏击池读值由调用方注入(B2 无池写面)· 编排被动零事件。 # 切片登记接口漂移:heal() 为切片新增(B1 治疗 clamp 需要写入口;B2 API 封闭枚举原本无治疗面—— # 正式侧应走 B2 GDD 修订,切片以头注登记)。 -# 实现 GDD:design/gdd/b2-enemy-system.md(系统 ID B2——registry 追溯锚,命名规范见 CLAUDE.md) +# 实现 GDD:design/archive/gdd-2026-09-14/b2-enemy-system.md(系统 ID B2——registry 追溯锚,命名规范见 CLAUDE.md) class_name UnitContainer extends RefCounted diff --git a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/action_economy_table.gd b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/action_economy_table.gd index 1f423fcb..c2923202 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/action_economy_table.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/action_economy_table.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 ActionEconomyTable schema(A3 回填值,单行全局;Rule 4 豁免)。 -# 数值域与跨字段校验依据 design/gdd/a3-action-economy.md "ActionEconomyTable Schema 定稿"。 +# 数值域与跨字段校验依据 design/archive/gdd-2026-09-14/a3-action-economy.md "ActionEconomyTable Schema 定稿"。 class_name ActionEconomyTable extends Resource diff --git a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/board_gen_table.gd b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/board_gen_table.gd index 76d22f50..8de93d94 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/board_gen_table.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/board_gen_table.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 BoardGenTable schema(A1 回填值;键 (level_index, node_depth)——首个进度键表)。 -# 依据 design/gdd/a1-board-generation.md "BoardGenTable Schema 定稿" + F2/F2b/F2c 谓词。 +# 依据 design/archive/gdd-2026-09-14/a1-board-generation.md "BoardGenTable Schema 定稿" + F2/F2b/F2c 谓词。 class_name BoardGenTable extends Resource diff --git a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/enemy_table.gd b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/enemy_table.gd index 1fe7bc0e..94b788e0 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/enemy_table.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/enemy_table.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 EnemyTable / HeroTable schema(B2 回填值)。EnemyTable 键 (L,D,enemy_id),每行集恰一敌种; -# HeroTable 单行全局(Rule 4 豁免)。依据 design/gdd/b2-enemy-system.md Schema 节。 +# HeroTable 单行全局(Rule 4 豁免)。依据 design/archive/gdd-2026-09-14/b2-enemy-system.md Schema 节。 class_name EnemyTable extends Resource diff --git a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/status_effect_table.gd b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/status_effect_table.gd index 09a5451b..aa1f9c7e 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/status_effect_table.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/status_effect_table.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 StatusEffectTable schema(B3 回填值;行 = Dictionary,键 effect_id;Rule 4 豁免)。 -# 依据 design/gdd/b3-status-effect.md "StatusEffectTable Schema 定稿"。 +# 依据 design/archive/gdd-2026-09-14/b3-status-effect.md "StatusEffectTable Schema 定稿"。 class_name StatusEffectTable extends Resource diff --git a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/variation_table.gd b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/variation_table.gd index 4ed8be5b..0600ce70 100644 --- a/prototypes/dungeon-sweeper-vertical-slice/data/schemas/variation_table.gd +++ b/prototypes/dungeon-sweeper-vertical-slice/data/schemas/variation_table.gd @@ -2,7 +2,7 @@ # Validation Question: 玩家能否无指导在一场完整战斗中经历「开战→挖掘规划→轮末结算逐行兑现→胜/负」并逐行归因(P2) # Date: 2026-09-10 # D2 VariationTable schema(A4 回填值;行 = Dictionary,键 variant_id)。 -# 依据 design/gdd/a4-terrain-variation.md "VariationTable Schema 定稿"。 +# 依据 design/archive/gdd-2026-09-14/a4-terrain-variation.md "VariationTable Schema 定稿"。 class_name VariationTable extends Resource