From 643f062653bbbcaa4e2cadded9faa55401ddab22 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 9 Nov 2026 07:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=88=E6=89=BF=E8=BD=BD=E6=8D=A2?= =?UTF-8?q?=E4=BB=A3(=E6=96=87=E6=A1=A3=E8=AE=BE=E8=AE=A1=E6=AE=B5):=20?= =?UTF-8?q?=E7=8E=A9=E5=AE=B6=E5=8F=AF=E8=A7=81=E6=96=87=E6=A1=88=E6=89=BF?= =?UTF-8?q?=E8=BD=BD=E8=A3=81=E5=86=B3=E6=8D=A2=E4=BB=A3=E2=80=94=E2=80=94?= =?UTF-8?q?=E6=96=87=E6=A1=88=E5=80=BC=E5=BD=92=20data/l10n/strings.csv?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E8=A1=A8=E4=B8=8E=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8F=AA=E6=8C=81=E6=96=87=E6=A1=88=20key(code-conventions=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=C2=A72.5=20=E7=A1=AC=E7=BA=AA=E5=BE=8B;?= =?UTF-8?q?=20AGENTS.md=20=E7=BA=A2=E7=BA=BF=E5=8C=BA=E5=8A=A0=E6=96=87?= =?UTF-8?q?=E6=A1=88=E5=8D=95=E4=B8=80=E4=BA=8B=E5=AE=9E=E6=BA=90=E5=8D=95?= =?UTF-8?q?=E8=A1=8C+=E8=A7=84=E8=8C=83=E5=AF=BC=E8=88=AA=E6=8C=87?= =?UTF-8?q?=E8=B7=AF);=20=E4=B8=83=E5=A4=84=20gdd=20=E5=90=8C=E6=AD=A5:=20?= =?UTF-8?q?=E6=88=98=E6=96=97=E7=BB=93=E7=AE=97=20v2.1(:87=20=E6=9D=A1?= =?UTF-8?q?=E6=AC=BE=E6=94=B9=E5=86=99)/=E5=A2=9E=E7=9B=8A=E7=8A=B6?= =?UTF-8?q?=E6=80=81=20v1.8(display=5Fkey)/=E6=95=8C=E4=BA=BA=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=20v2.0(display=5Fkey)/=E9=94=BB=E9=80=A0=E5=B7=A5?= =?UTF-8?q?=E5=9D=8A=20v0.14/=E7=A7=98=E5=AE=9D=20v1.5(desc=5Fkey)/?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=8E=E6=9C=AC=E5=9C=B0=E5=8C=96=20v1.3(?= =?UTF-8?q?=E5=BE=85=E8=AE=BE=E8=AE=A1=E9=97=AE=E9=A2=984=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E9=94=AE=E5=8D=8A=E8=BE=B9=E9=97=AD=E5=90=88)/?= =?UTF-8?q?=E6=9C=AF=E8=AF=AD=E8=A1=A8=20v1.30(=E6=96=87=E6=A1=88=E6=89=BF?= =?UTF-8?q?=E8=BD=BD=E6=96=B0=E8=8A=82=E4=B8=A4=E8=AF=8D=E6=9D=A1);=20?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=B8=85=E5=8D=95=E6=9D=A1=E7=9B=AE=E6=8E=A8?= =?UTF-8?q?=E8=BF=9B=E6=96=87=E6=A1=A3=E8=AE=BE=E8=AE=A1=E5=B7=B2=E9=97=AD?= =?UTF-8?q?=E5=90=88+=E5=BE=85=E5=86=99=E5=8D=A1=E3=80=82=E5=8C=BA?= =?UTF-8?q?=E5=86=85=E5=87=AD=E6=8D=AE:=20=E6=B5=81=E6=B0=B4=E7=BA=BF?= =?UTF-8?q?=E9=97=B8=20PASS(36=E6=9D=A1=E7=9B=AE/57=E8=A1=8C/2=E9=93=BE/5?= =?UTF-8?q?=E5=8D=A1=E5=85=A8=E8=BF=87)=E3=80=81=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=9F=9F=E9=97=B8=E3=80=90=E9=AA=8C=E6=94=B6=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E3=80=91=E6=97=A0=E6=96=B0=E5=A2=9E=E7=BA=A2(doc=5Flink=20?= =?UTF-8?q?=E6=AD=BB=E9=93=BE4=E5=A4=84=E6=94=B9=E9=9D=9E=E5=8F=8D?= =?UTF-8?q?=E5=BC=95=E5=8F=B7=E6=96=87=E6=9C=AC+=E8=83=BD=E5=8A=9B?= =?UTF-8?q?=E5=AE=A1=E8=AE=A1=E7=BA=AF=E5=BA=A62=E5=A4=84=E5=8E=BB?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E7=94=A8=E5=BD=A2=E6=80=81=E5=90=8E?= =?UTF-8?q?=E5=BD=92=E7=BB=BF)=E3=80=81grep=20=E6=A0=B8=E5=AF=B9=E6=97=A7?= =?UTF-8?q?=E6=8F=90=E6=B3=95=E9=9B=B6=E6=AE=8B=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 3 ++- design/engineering/code-conventions.md | 3 +++ design/gdd/systems/战斗循环/增益状态.md | 4 ++-- design/gdd/systems/战斗循环/战斗结算.md | 4 ++-- design/gdd/systems/战斗循环/敌人系统.md | 4 ++-- design/gdd/systems/表现与支撑/设置与本地化.md | 6 +++--- design/gdd/systems/跨局循环/秘宝.md | 4 ++-- design/gdd/systems/跨局循环/锻造工坊.md | 4 ++-- design/gdd/术语表.md | 9 ++++++++- 待办清单.md | 5 ++--- 10 files changed, 28 insertions(+), 18 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 5bf5ddbb..5a66625f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -49,7 +49,7 @@ | 概念切分与互链 | `design/engineering/concept-conventions.md`——概念封装 / 跨文档引用 / 归档与事实源 | | 系统设计 / 增删文档 | `design/gdd/02-系统清单.md`——根索引 + 中文规范名↔英文代号对照 | | 架构(唯一事实源) | `design/engineering/architecture/architecture.md`(只写依赖规则面:分层/目录归属/数据流/架构原则;模块级归属归代码头注,闸清单归 `game/tests/README.md`)——历史决策沿革查 git commit log,不另设决策文档;修订须用户发令 | -| 术语与已锁数值 | 规范名与定义 = `design/gdd/术语表.md`(全库唯一对照表,仅 owner 文档可修订);现行数值 = `game/data/tables/*.tres`;规则(概念面)= 各系统 owner 文档;取值域与字段契约 = `game/data/schemas/*.gd`。冲突须显式提出,禁默默改值 | +| 术语与已锁数值 | 规范名与定义 = `design/gdd/术语表.md`(全库唯一对照表,仅 owner 文档可修订);现行数值 = `game/data/tables/*.tres`;玩家可见文案 = `game/data/l10n/strings.csv`(key→文案,细则 = code-conventions §2.5);规则(概念面)= 各系统 owner 文档;取值域与字段契约 = `game/data/schemas/*.gd`。冲突须显式提出,禁默默改值 | | 现在做什么 / 待办与待裁 | 根 `roadmap.md` 顶部「当前位」节+迭代总表六列 · 待办唯一登记处 `待办清单.md` · 批次过程与结论查 git 提交信息与 `reports/` | ## 回答风格规则(只管对话输出;文档写作归 doc-conventions §2–§4) @@ -121,6 +121,7 @@ - 真人检测只登记不阻塞——登记进体验验证清单/实现报告即完成义务,禁以等目检为停工理由或当作合回的前置条件 - 文件头 = `##` 文档注释,介绍本模块是什么;禁写变更叙事(改动史查 git log);禁文档反向链接(code-conventions §1.4.1) - 数值单一事实源——玩法数值只存 `data/tables/`(.tres)经 ConfigDB 单点读取;禁数值字面量与自建 `load()` 表路径 +- 文案单一事实源——玩家可见文案值只存 `data/l10n/strings.csv`(key→文案),数据表行与代码只持文案 key、取文案只经 `tr()`/`atr()`;禁文案字面量与文案入数值表;诊断日志豁免(细则 = code-conventions §2.5) - RNG 单点——禁 `randomize()`/自建 RandomNumberGenerator,随机只经 `RngService` 统一流 - 架构事实唯一源——架构事实只认 `design/engineering/architecture/architecture.md`(只写依赖规则面:分层/目录归属/数据流/架构原则;模块级归属归代码头注);禁立第二架构文档或决策文档体系,历史决策记录只进 git commit log;架构文档写权限=用户专属,agent 与技能只读(2026-11-07 用户裁) - Core 层零 UI 依赖——完整战斗必须可 `--headless --script` 跑通;fail-fast——数据校验错误一律致命中止,无软回退 diff --git a/design/engineering/code-conventions.md b/design/engineering/code-conventions.md index e7824c1b..52245518 100644 --- a/design/engineering/code-conventions.md +++ b/design/engineering/code-conventions.md @@ -56,6 +56,9 @@ ### 2.4 状态字段语义显式 跨战斗/跨场景携带或恢复的状态字段,其语义来源必须显式(表值 / 明确入参),禁止用入参隐式定义。 +### 2.5 玩家可见文案承载——key 单点,文案值住翻译文件 +玩家看得见的文字(界面标签、toast、明细行显示名、卡面摘要等)一律两件分离:**文案值只住 `game/data/l10n/strings.csv`**(key 列+`zh_CN` 列,加语言=加列),代码与数据表行只持**文案 key**(全库唯一,点分命名如 `clear_reward.title`);取文案只经 `tr()`(Node 语境)/`atr()`(非 Node 语境),禁在 `.gd`/`.tscn` 内联写死文案字串,禁把文案值塞进 `data/tables/*.tres`(数值表只管数值)。场景静态 `text` 按 key 写入、经 Godot 场景自动翻译解析;数据表文案字段更名 `display_key`/`desc_key`(值域=文案 key,不是文案本身)。豁免面:开发者诊断文字(`push_error`/`assert`/日志)与 `game/sim`/`game/probe`/`game/tests` 的文字不属玩家可见面,不受本条约束。 + --- ## 3. 测试纪律 diff --git a/design/gdd/systems/战斗循环/增益状态.md b/design/gdd/systems/战斗循环/增益状态.md index 9115f451..745dc040 100644 --- a/design/gdd/systems/战斗循环/增益状态.md +++ b/design/gdd/systems/战斗循环/增益状态.md @@ -1,7 +1,7 @@ # 增益状态 > 一句话:增益/减益的状态池、叠层与衰减 -> 状态:已定稿;现行为 v1.7 +> 状态:已定稿;现行为 v1.8 ## 设计目的 @@ -159,7 +159,7 @@ | 字段 | 取值 | 说明 | |---|---|---| | effect_id | 文本,全表唯一 | 状态标识 | -| display_name | 文本 | 界面与结算明细用名 | +| display_key | 文案 key | 界面与结算明细用名的索引,文案值住 strings.csv(code-conventions §2.5) | | target_side | hero / enemy | 作用侧 | | magnitude | 整数 | 幅度:百分比行 ∈ [−100,100] 且非 0;固定值行 ≥ 1;护甲等级行 ∈ [−20,20] 且非 0 | | unit | percent / flat / ac | 百分比修正 / 固定值 / 护甲等级(掷点折扣判定阈值轴) | diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index 9ae0c78f..90919a7a 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -1,7 +1,7 @@ # 战斗结算 > 一句话:轮末结算的编排与逐行兑现 -> 状态:已定稿;现行为 v2.0 +> 状态:已定稿;现行为 v2.1 ## 设计目的 @@ -84,7 +84,7 @@ | 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 | | 高光行 | 完美封印成立时一行,只记实际有效兑付 | -每行还携带公共字段:来源类别、来源格、轮次、显示名、数值,以及可空的高光标记(用于强调封印标中、清图奖励这类值得高亮的结果)。**显示名等玩家可见文案是数据面字段:文案值登记在数据表行,代码按来源类别与效果身份读表拼行,不在代码里写死文案字串**(2026-11-06 用户裁——文案归属数据表承载;承载表与字段形态归表结构设计段定,设计闭合后由实装批落表)。奖励直伤行的数值字段沿用 `effectiveness` 键名、值为整数点数——键名与量纲是数据导出与分析工具的兼容契约,改动须连动分析工具面。没生效也要留痕:奖励未生效行如实记录四类合法例外(reason 键封闭:full_layers/full_hp/no_enemy_alive/hero_down),呈现面按 reason 归因(聚合计数呈现已随明细带退役)。**日志落盘零文案:text 与 display_name 不落盘**,玩家可见文案仅呈现面消费。 +每行还携带公共字段:来源类别、来源格、轮次、显示名、数值,以及可空的高光标记(用于强调封印标中、清图奖励这类值得高亮的结果)。**显示名等玩家可见文案是数据面字段:数据表行只登记文案 key,文案值登记在 strings.csv(data/l10n/),代码按 key 从翻译文件取文案拼行,不在代码里写死文案字串**(2026-11-09 用户裁——文案值归 strings.csv 承载;承载细则与字段形态 = `design/engineering/code-conventions.md` §2.5,实装批落表)。奖励直伤行的数值字段沿用 `effectiveness` 键名、值为整数点数——键名与量纲是数据导出与分析工具的兼容契约,改动须连动分析工具面。没生效也要留痕:奖励未生效行如实记录四类合法例外(reason 键封闭:full_layers/full_hp/no_enemy_alive/hero_down),呈现面按 reason 归因(聚合计数呈现已随明细带退役)。**日志落盘零文案:text 与 display_key 不落盘**,玩家可见文案仅呈现面消费。 任何一行找不到来源即断言失败——宁可返回错误,也不让"合并到看不出来源"的呈现混过数据层。但有些行天然没有棋盘来源,断言为此留了两层豁免,豁免集合是封闭清单,改动同样走本文修订。 diff --git a/design/gdd/systems/战斗循环/敌人系统.md b/design/gdd/systems/战斗循环/敌人系统.md index a2b474a4..40e3d97b 100644 --- a/design/gdd/systems/战斗循环/敌人系统.md +++ b/design/gdd/systems/战斗循环/敌人系统.md @@ -1,7 +1,7 @@ # 敌人系统 > 一句话:敌人数据、技能池出招、意图呈现 -> 状态:已定稿;现行为 v1.9 +> 状态:已定稿;现行为 v2.0 ## 设计目的 @@ -97,7 +97,7 @@ | 字段 | 适用类型 | 说明 | |---|---|---| | skill_id | 全部 | 主键,池条目引用键 | -| display_name | 全部 | 玩家可见名(明细行与动画共用) | +| display_key | 全部 | 玩家可见名的文案 key(明细行与动画共用),文案值住 strings.csv(code-conventions §2.5) | | type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益, 妨害}(现行事实源=敌人系统.md 词汇表/增益状态.md;多段命中经用户拍板退役不入枚举);新类型走本文修订 | | damage_mult | 仅伤害 | 伤害倍率;域 [1.1, 16] provisional。普通攻击恒 1、不可配 | | rider_mult | 仅伤害、可省 | **必中附加分量**:域 (0, 1],缺省无字段 = 无附加;分量值 = max(伤害下限, floor(攻击基线 × rider_mult))——随施放者攻击基线缩放,后置加法、必中全额、不进乘区、不出暴击(后置加法同族);价位锚 0.75 = AC 折扣档最轻档"不掉档的稳定伤害" | diff --git a/design/gdd/systems/表现与支撑/设置与本地化.md b/design/gdd/systems/表现与支撑/设置与本地化.md index 3995e453..af8efec4 100644 --- a/design/gdd/systems/表现与支撑/设置与本地化.md +++ b/design/gdd/systems/表现与支撑/设置与本地化.md @@ -1,7 +1,7 @@ # 设置与本地化 > 一句话:设置项与多语言 -> 状态:范围草案·最小设置面已兑现;现行为 v1.2 +> 状态:范围草案·最小设置面已兑现;现行为 v1.3 ## 设计目的 @@ -20,7 +20,7 @@ | 设置项清单与语义 | 收拢全游戏的可调选项;目前能确证的输入见核心规则一节,全集待设计 | | 减动效开关 | 可访问性基线已承诺的选项:开启后动画有时长减半或直达终态的通路 | | 音量控制入口 | 音量在设置里调(接口位,白话:给对方预留的接入位置;生效侧归音频系统) | -| 多语言生产流程 | 全部玩家可见文案的翻译生产与语言切换——教学引导已在"不负责"表登记归本文 | +| 多语言生产流程 | 全部玩家可见文案的翻译生产与语言切换——教学引导已在"不负责"表登记归本文;文案承载细则(key 单点、strings.csv 承载)已闭合,归 `design/engineering/code-conventions.md` §2.5 | | 调试面板退役后的常规设置 | 切片调试面板 TunePanel 正式版退役,其常规设置部分归本文(见核心规则) | 不负责: @@ -119,6 +119,6 @@ MVP 不要求本系统的闭环:[不做清单](../../05-不做清单.md)把设 1. 设置项全集:画面、键位、可访问性、语言各类别各收哪些项——目前有来源的只有减动效与音量入口两条。 2. 设置持久化(已拍板 2026-09-19):独立存储,不随存档——系统级设置一安装一份;具体文件格式与读写时机随存档序列化对齐(设置域归本系统所有)。 3. 语言清单与字体覆盖:做哪些语言,字体对相应字符集的覆盖怎么保证。 -4. 文案生产流程:文本键(每条文案在工程里的唯一编号,机器据此找到译文)怎么管理、谁负责校对、翻译在流程的哪一步介入。 +4. 文案生产流程:文本键(每条文案在工程里的唯一编号,机器据此找到译文)的管理规则已闭合——文案 key 单点、文案值住 strings.csv(data/l10n/),细则 = `design/engineering/code-conventions.md` §2.5;尚待设计的是谁负责校对、翻译在流程的哪一步介入。 5. 设置界面的入口与形态:从哪里打开、什么时刻可以打开——与 HUD 框架协作定。 6. 键位映射表是否转化为改键设置项。 diff --git a/design/gdd/systems/跨局循环/秘宝.md b/design/gdd/systems/跨局循环/秘宝.md index a2c261c9..d2bbbc99 100644 --- a/design/gdd/systems/跨局循环/秘宝.md +++ b/design/gdd/systems/跨局循环/秘宝.md @@ -1,7 +1,7 @@ # 秘宝 > 一句话:营地装配、整局冒险生效的角色机能件——操作包络加强(视野/行动点/刷新/挖掘距离等),不出角色战斗属性值、不改战斗结算机制(经济与操作参数——视野/距离/行动点/刷新/转存率——属操作包络;分界规则归[核心循环](../../01-核心循环.md)「道具三层职责与分界」节) -> 状态:已定稿(现行形态=局外同调件);现行为 v1.4 +> 状态:已定稿(现行形态=局外同调件);现行为 v1.5 > 定位与形态:见下节 > 术语:本文件的项目术语(同调位/RAP/GP/真视/危险格/整图等)定义见[术语表](../../术语表.md) @@ -225,7 +225,7 @@ 结构冻结(非调参项,改动走本文修订流程):真视窄域护栏、零信息目标不消耗、边缘窗口照常受理、使用零行动点成本、同调位装配与充能每冒险重置、用后不可逆、零随机。 -效果声明形态(在役沿用):被动件的效果行为=**订阅行**——行内声明**订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)**,由效果引擎统一解释执行;主动件按效果类型通用分发(受理闸=使用事件订阅);常时参数面件(阔视野带/储备罐/远程镐/信标网络/刷新练习/刷新执照六件)effect_kinds 挂参数 kind、由注入面按装配集分发读取;试炼镐=自动兑付(ap_charge_safe 满 charge_n 直接 grant_ap)。事件/效果类型/条件事实/算子四词表封闭(效果引擎单一事实源);卡面效果摘要=行 `desc` 字段直读(文案表值化)。现行目录 14 件的效果行已落地登记。 +效果声明形态(在役沿用):被动件的效果行为=**订阅行**——行内声明**订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)**,由效果引擎统一解释执行;主动件按效果类型通用分发(受理闸=使用事件订阅);常时参数面件(阔视野带/储备罐/远程镐/信标网络/刷新练习/刷新执照六件)effect_kinds 挂参数 kind、由注入面按装配集分发读取;试炼镐=自动兑付(ap_charge_safe 满 charge_n 直接 grant_ap)。事件/效果类型/条件事实/算子四词表封闭(效果引擎单一事实源);卡面效果摘要=行 `desc_key` 经 strings.csv 取文案(code-conventions §2.5)。现行目录 14 件的效果行已落地登记。 playtest 预警(预注册,归难度曲线与Boss): diff --git a/design/gdd/systems/跨局循环/锻造工坊.md b/design/gdd/systems/跨局循环/锻造工坊.md index 3712b0df..c843fa1d 100644 --- a/design/gdd/systems/跨局循环/锻造工坊.md +++ b/design/gdd/systems/跨局循环/锻造工坊.md @@ -1,7 +1,7 @@ # 锻造工坊 > 一句话:营地的武器与护甲成长——武器锻造区三条路线、护甲锻造区三条路线各练各的,钥石消费,一次冒险各选一件,满级特效留位本期不做 -> 状态:**v0.13**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕 +> 状态:**v0.14**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕 ## 设计目的 用户原案(playnote 2026-10-06):把现役"营地花钱买攻击 +1"改造成有等级、有成长、有满级特效的**武器升级路线**;新增长枪(穿刺)与法杖(魔法)实现武器间差异化;护甲同理——初始只有轻甲(升级只提 AC),最高等级后解锁重甲/魔法护甲,基础 AC 各异、各带满级特效。 @@ -126,7 +126,7 @@ - **奇物属性件**:分层并存,互不侵入。武器/护甲锻造动的是**账号层基础值**(营地永久强化,冒险开始时经参数面传入);奇物属性件动的是**单次冒险加算区**(关间不清零、冒险结束清零)。本设计不扩奇物"生命/AC/攻击"三轴封闭分类、不动渠道开关表、不往局内池加任何东西。入战 AC 的三层语义清晰可加:甲型基础 AC + 营地甲路线等级加值 + 局内加算区累加。 - **克制矩阵(2a 裁:伪裁点消解)**:**伤害结算只有一套,类型不是待仲裁的槽位**。每份伤害单据自带攻击类型栏——主角基础攻击单据取当前武器的攻击类型,棋盘格面直伤件(穿刺弹 / 魔法矢)取奖励表自身的类型——各自按**同一张 3×3 克制矩阵**取克制修正。因此"叠加 / 替代 / 互斥"三分法不成立:两根参数之间无冲突可裁,也不需要任何共存规则。二者的真实差异只在**单据形态与生命周期**(主角基础攻击走掷点折扣 + 暴击;棋盘克制直伤走必中全额不掷点;且前者 = 账号层永久、后者 = 局内一次性)——那是两条不同的伤害来源,不是两种类型语义。矩阵九格满格结构冻结(2b 随 3a 自动消解:魔法护甲 = 现役 ward,不存在第四甲型)。 - **工作间两区定名 + 路线行名(8a 裁)**:锻造工坊工作间内先立两个分区,各装三条锻造路线(路线行名统一为"件名 + 锻造")——①**武器锻造区**:长剑锻造 / 长枪锻造 / 法杖锻造;②**护甲锻造区**:轻甲锻造 / 重甲锻造 / 魔法护甲锻造。两区并列、机制层面零顺序门槛(A③ 裁),区内路线各自独立升级。 -- **局内不存在武器/护甲的提升(8a 裁连带核结)**:用户指出"局内没有可以提升武器的地方"——**属实**。查实:局内商店货架的三行(现名"攻击祝福 / 生命祝福 / 护甲祝福"),**正是奇物「属性值提升」三轴(攻击 / 生命上限 / AC)的货架前台标签**——`shop.tres` pool_shelf 六行用种类字段指向冒险表的奇物种类词表(其中凭证行为显式豁免种、不入该词表,六行中五行命中),`display_name` 只是这层的前台名;买到的东西进**冒险加算区**、冒险结束清零。所以它们是**奇物属性件**,既不是武器也不是护甲,局内不改变任何锻造等级。命名上的隐患确凿:行名里的"锻"字与营地锻造同字,是误读的直接来源。**命名(2026-10-12 用户裁)**:三行按「属性 + 后缀」改名,后缀取 **祝福** ⇒ **攻击祝福 / 生命祝福 / 护甲祝福**(D&D 参照调研:Blessing 为"神赐恩惠"义;用户同时裁定——参考书目里出现过「祝福」一词不构成禁用)。**改名后这三条在语感上彻底脱离"锻造"一词,与营地工作间不再有字面关联**,而结构关系不变(仍是奇物「属性值提升」三轴,机制分类名不动,只改玩家向显示名)。改名已执行完毕(shop.tres 六行锻升→祝福;reward.tres / status_effects.tres 护甲强化→盾牌加护)。 +- **局内不存在武器/护甲的提升(8a 裁连带核结)**:用户指出"局内没有可以提升武器的地方"——**属实**。查实:局内商店货架的三行(现名"攻击祝福 / 生命祝福 / 护甲祝福"),**正是奇物「属性值提升」三轴(攻击 / 生命上限 / AC)的货架前台标签**——`shop.tres` pool_shelf 六行用种类字段指向冒险表的奇物种类词表(其中凭证行为显式豁免种、不入该词表,六行中五行命中),`display_key` 只是这层的前台名索引(文案值住 strings.csv,code-conventions §2.5);买到的东西进**冒险加算区**、冒险结束清零。所以它们是**奇物属性件**,既不是武器也不是护甲,局内不改变任何锻造等级。命名上的隐患确凿:行名里的"锻"字与营地锻造同字,是误读的直接来源。**命名(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 唯一入口=本系统路线加值(只按当前选中武器/甲生效)。 - **冒险前资源配比预设批(挂起冻结中)**:本设计不预设该批的重启口径、不占用其任何冻结裁决、不改其冻结文本。该批重启时须显式核对两处交汇面:①预算包络是否把武器类型计入克制注;②容量柜台与锻造工坊工作间(同在营地)的资源竞争关系。 diff --git a/design/gdd/术语表.md b/design/gdd/术语表.md index e5ac1317..d10cba02 100644 --- a/design/gdd/术语表.md +++ b/design/gdd/术语表.md @@ -1,7 +1,7 @@ # 术语表 > 全库专用术语的唯一对照表(2026-10-11 用户令建立)。规矩:新术语先登记本表、再在文档使用;退役词见文末对照表,文档正文一律使用现行词。文档中遇到看不懂的词,查本表。用词纪律(禁用词、替换值、豁免范围)见「用语规范」节。 -> 状态:**现行 v1.29**——2026-10-11 建立;历次升版明细见 git 提交史。 +> 状态:**现行 v1.30**——2026-10-11 建立;历次升版明细见 git 提交史。 ## 格与棋盘 @@ -122,6 +122,13 @@ | 逐需求点验收清单 | 需求卡片验证闸的必备清单:每个需求点列明测什么(具体断言或行为)/怎么测(测试落点与注入方式)/谁验(自动闸或用户目检);查不出验收条目的需求点=卡片不成立(规矩见 req-card 技能,测试落码写法见 [code-conventions](../engineering/code-conventions.md) §3.5) | | 测试方式两分法 | 能力验证与体验验证分开走(2026-10-11 用户定):能力验证=通过调试接口直接修改游戏数据(改钥石/槽位/解锁状态等,不走正常资源积累流程);体验验证=用户目检完整流程,登记体验验证清单观测项 | +## 文案承载(2026-11-09 用户裁立) + +| 术语 | 定义 | +|---|---| +| 文案 key | 玩家可见文案的唯一索引键(点分命名如 `clear_reward.title`):数据表行与代码只持 key,文案值住 strings.csv(data/l10n/,key 列+`zh_CN` 列),取文案走承载细则的单点接口;硬纪律原文 = [code-conventions](../engineering/code-conventions.md) §2.5 | +| strings.csv | 文案值的唯一承载文件(data/l10n/strings.csv):第一列文案 key、第二列中文文案,Alpha 单中文列;加语言=加列,多语言生产仍归[设置与本地化](systems/表现与支撑/设置与本地化.md)后置排期 | + ## 用语规范(2026-10-15 用户令立) 词面纪律的登记处。通用禁用词与选词以**简明技术中文(STC)词表**为权威:外部同名词表,约 170 条,配检查脚本。 diff --git a/待办清单.md b/待办清单.md index 8c68f912..b300f37c 100644 --- a/待办清单.md +++ b/待办清单.md @@ -87,10 +87,9 @@ #### 结算明细文案入表(2026-11-07 登记,来源=批次移交) -**实况**:结算期文字列表退役批(迭代 56 已落地,git 提交 d234a547)落地后,剩余玩家可见文案(清图奖励/Boss 解锁技名等 toast 与明细行显示名)的承载面换代——文案从代码字面量迁数据表,与 [战斗结算](design/gdd/systems/战斗循环/战斗结算.md) v2.0 :87「显示名等玩家可见文案是数据面字段」对齐。 -**缺口**:还差一次文档设计讨论——入哪张表、哪些文案入表、日志零文案后 toast 文案的承载形态。 +**实况**:玩家可见文案承载换代设计闭合——承载规则=code-conventions.md §2.5(文案 key 单点、文案值住 data/l10n/strings.csv);同步修订 design/gdd/systems/表现与支撑/设置与本地化.md v1.3、战斗循环/战斗结算.md v2.1(:87 条款)、战斗循环/增益状态.md v1.8、战斗循环/敌人系统.md v2.0、跨局循环/锻造工坊.md v0.14、跨局循环/秘宝.md v1.5、术语表.md v1.30(文案 key 词条);字段更名 display_key/desc_key。 **改动面**:文档+游戏代码 -**状态**:待文档设计 +**状态**:文档设计已闭合+待写卡 #### UI 贴图重构批——元进度件仍是程序化占位(2026-10-13 登记,来源=审计发现)