8.5 KiB
Cross-GDD Review Report
Date: 2026/04/29 GDDs Reviewed: 2 Systems Covered: Node System, Tower Assembly
一致性问题 (Consistency Issues)
警告级 (Warnings)
⚠️ TryDisassembleTower 未实现但 UI 可调用
- GDD:
tower-assembly.mdOpen Question #1 - 问题:
node-system.mdR3 规定"组装后可以免费拆解",Assembly Phase UI 也提供 Disassemble 选项。但tower-assembly.md明确标注TryDisassembleTower方法不存在。玩家看到可点击的 Disassemble 按钮但无法使用,属于误导性 UI。 - 建议:
tower-assembly.md应将 Open Question #1 从 "OPEN" 改为标注为 "Blocking — GDD 自洽性受损",直至方法实现
游戏设计问题 (Game Design Issues)
阻塞级 (Blocking)
🔴 Boss 难度曲线可能无法追赶 — 威胁两大系统核心幻想
位置: node-system.md Boss Difficulty Scaling 公式;tower-assembly.md Stat Scaling
问题描述:
- Boss HP 增长:
BossEffectiveHp = DRLevel.BaseHp × 2^(completedLoopCount)— 指数增长 - 玩家战力增长: Tower Assembly 提供线性成长(每场战斗最多 8 次升级事件,每次
baseValue + perLevel * i) - 在某个 loop 阈值后,玩家数学上无法击败 Boss
设计后果:
node-system.mdPlayer Fantasy: "whether I survive depends on how I prepare" — 若准备永远不够,此幻想崩塌tower-assembly.mdPlayer Fantasy: "arrange pieces to solve it" — 若 puzzle 解不开,此幻想崩塌- 两大系统的核心幻想共享同一个前提:玩家准备应当是充分的
未知依赖: DRMuzzleComp、DRBearingComp、DRBaseComp 数据表值未知,无法验证实际成长率
设计建议:
- 在 Boss 战中引入 catch-up 机制(每 loop 玩家获得临时增益)
- 让 Tower Assembly 存在超线性成长路径(tag synergy、combo 机制)
- 降低 Boss 的指数系数(从 ×2 改为 ×1.3~1.5)
- 在
node-system.md中明确说明"Boss 的设计意图是部分玩家无法一次通关"以调整预期
🔴 无 Gold 消耗强制机制 — 经济回路开放无界
位置: node-system.md 经济表格(1100 gold 上限);tower-assembly.md 无 gold sink 定义
问题描述:
- 6 场 Combat 节点共 600 gold,Boss 胜利额外 500 gold,最大总量 1100 gold/run
- Shop Node 4 和 8 奖励 0 gold,不强制消费
- 无任何机制(修理费、强制升级、门票等)要求消耗 gold
- Shop System GDD(待编写)必须定义强制消耗场景,否则 Shop 节点沦为 UI 空操作
风险: Shop 节点存在但内容空洞,玩家跳过购买不打 Boss —— 浪费了 2 个节点的设计价值
警告级 (Warnings)
⚠️ 塔组装存在显然的最优策略
位置: tower-assembly.md R7(无组件兼容性约束)
问题: 任意 Muzzle+Bearing+Base 组合均可。Rarity Resolution 取算术均值:
- Red(5)+Red(5)+Red(5) → 均值 5.0 → Red Tower
- Red(5)+Green(2)+White(1) → 均值 2.67 → 向下取整 → Green Tower(比单 Red 差)
结论: 贪婪地堆最高稀有度组件永远是最优策略,无任何权衡代价。塔组装的最优解是排序后取 top 3,无需战术思考。
建议: 引入稀有度以外的优化维度:
- Tag synergy 机制(Fire+Ice 组合产生额外效果)
- Endurance 配平(3 高稀有度 = 3 高损耗率,混合可延长功能性)
- Roster slot 约束下的边际收益(分散稀有度可在 4 槽位限制下覆盖更多敌人类型)
⚠️ 节点选择若两条路径难度不同,最优路径显而易见
位置: node-system.md 节点选择流程
问题: 每 junction 显示 2 个目的节点类型。若两条路径在难度/奖励上存在差异(比如两 Combat 但一个是 L1 一个是 L3),"战术决策"退化为"比较两个数字"。
建议: 确保两条分支在难度和奖励上等价,或引入隐藏变量(敌人波次、特殊条件)使玩家无法在选择前判断哪个更有利。
⚠️ 玩家注意力预算已达上限,无扩展空间
当前 Assembly Phase + Node Choice 时活跃系统: 4 个
- Tower Assembly 决策(选 3 组件组合)
- Roster 管理(4 槽位分配)
- 下个节点威胁评估(已知类型 + 难度)
- 节点二选一(强制决策)
设计阈值: 技能定义 >4 时触发警告,当前 = 4(刚好达标)
风险: Event System(待设计)若在 Assembly Phase 窗口引入额外主动决策(如事件影响当前备战),预算立即超标。
⚠️ Pillar 轻微漂移
| GDD | Pillar 声明 | 实际行为 | 漂移程度 |
|---|---|---|---|
node-system.md |
"players drive their own path" | 节点类型序列固定(Plain 主题下所有玩家路径相同);Junction 处只选顺序不选类型 | 轻微 — "path" 实为"choice order" |
tower-assembly.md |
"adaptation to known threats" | Shop/Event 节点无需塔组装决策;"adaptation" 对 30% 节点不适用 | 轻微 — pillar 覆盖部分场景 |
跨系统场景问题 (Cross-System Scenario Issues)
场景走过: 3 个
🔴 场景1: 战斗结束 → 组件掉落 → 塔组装(数据流歧义)
涉及系统: Combat → Inventory → Tower Assembly
问题描述:
Combat 节点完成后,组件掉落通过 InventoryComponent.AddItem 进入 inventory。接口未定义:
- 掉落的是全新组件实例(InstanceId 新生成)?
- 还是对现有组件的修改(如
IsAssembledIntoTower标记改变)?
隐患: 若为后者,而玩家在 Assembly Phase 前一步已组装了某些塔,战损标记可能与已组装组件的状态产生歧义。
需确认: InventoryComponent.AddItem 的精确语义,建议在 node-system.md Dependencies 或接口协议中明确定义。
⚠️ 场景2: Boss 前夕的 Assembly Phase(难度曲线验证)
涉及系统: Node System + Tower Assembly + Combat
问题描述:
玩家在 Node 9 完成后进入 Assembly Phase,此时 BossEffectiveHp 是可计算的(因 completedLoopCount 已知)。玩家可以提前计算胜率。
风险:
- 若计算结果为正 → Boss 战是仪式感结局,fantasy 得到验证
- 若计算结果为负 → 玩家感受到"数值碾压"而非"战术压力",两大系统的核心幻想同时受损
需验证:
BossEffectiveHp是否对玩家 UI 可见(建议:仅在 Boss 血条上显示,不显示计算公式)- 实际 tower DPT(每秒伤害)是否能与指数增长的 Boss HP 达到动态平衡
ℹ️ 场景3: Degraded 塔在战斗开始时的处理
涉及系统: Tower Assembly + Combat
问题描述:
tower-assembly.md 明确:"mid-combat 降级不会自动从 roster 移除"。但 CombatNodeComponent 的 roster 验证逻辑未定义。
两种处理方式的后果:
- 若验证在战斗开始时:degraded 塔被筛除,玩家以 <4 塔对抗预期敌人规模
- 若验证在战斗进行中:塔在战斗中失效,战斗难度非线性上升
建议: 在 tower-assembly.md Acceptance Criteria 中补充:CombatNodeComponent 必须在战斗开始前调用 CombatParticipantTowerValidationService.ValidateParticipantTowers,拒绝 degraded 塔入战。
GDD 标记需修订
| GDD | 原因 | 类型 | 优先级 |
|---|---|---|---|
tower-assembly.md |
TryDisassembleTower 未实现但 UI 可调用;Open Question #1 应更新状态为 Blocking |
设计完整性 | Warning |
node-system.md |
Boss catchability 需在 GDD 中明确设计意图;建议补充"战斗开始前 roster 验证逻辑"的跨系统约定 | 难度曲线 | Warning |
systems-index.md |
Combat System 标注"Designed"但 GDD 在 docs/CombatNodeArchitecture.md 而非 design/gdd/,文档位置不统一 |
文档管理 | Warning |
Verdict: CONCERNS
存在 2 个阻塞级问题(Boss catchability + 无 gold sink)和多个警告级问题。阻塞问题不会阻止架构设计,但应在 /create-architecture 前明确设计意图。
Next Steps
/design-system shop— 编写 Shop System GDD(阻塞项:gold sink 定义)/design-system event— 编写 Event System GDD(阻塞项:EventContext 合约)/design-system progression— 编写 Progression GDD(阻塞项:RunEnd 数据持久化)/design-review tower-assembly— 修订 Open Question #1 并更新 TryDisassembleTower 状态/create-architecture— 在所有 MVP GDD 完成后开始架构设计(Verdict 为 CONCERNS 但非 FAIL)