From 4a025189d71cfc14b8810479305be980d33d2d08 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Thu, 12 Feb 2026 13:44:24 +0800 Subject: [PATCH] =?UTF-8?q?docs(huoshan):=20=E9=87=8D=E6=9E=84=E4=B8=BA?= =?UTF-8?q?=E5=8D=95=E6=BA=90=E7=B4=A2=E5=BC=95=E7=BB=93=E6=9E=84=EF=BC=8C?= =?UTF-8?q?core=20=E4=B8=8E=20=5Fbranches=20=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- CLAUDE.md | 2 +- Docs/HuoShan/INDEX.md | 34 ++ Docs/HuoShan/README.md | 76 +--- Docs/HuoShan/_branches/README.md | 7 + Docs/HuoShan/_branches/优化建议_叙事与情感.md | 24 ++ Docs/HuoShan/_branches/优化建议_波形与效果.md | 27 ++ Docs/HuoShan/_branches/优化建议_玩法与名词.md | 15 + Docs/HuoShan/core/01_narrative.md | 20 + Docs/HuoShan/core/02_flow.md | 34 ++ Docs/HuoShan/core/03_worldbuilding.md | 17 + Docs/HuoShan/core/04_implementation.md | 81 ++++ Docs/HuoShan/core/05_resources.md | 20 + Docs/HuoShan/功能需求文档.md | 346 ------------------ Docs/HuoShan/火山第一次维修_设计文档.md | 92 ----- Docs/HuoShan/设计优化文档.md | 233 ------------ 15 files changed, 283 insertions(+), 745 deletions(-) create mode 100644 Docs/HuoShan/INDEX.md create mode 100644 Docs/HuoShan/_branches/README.md create mode 100644 Docs/HuoShan/_branches/优化建议_叙事与情感.md create mode 100644 Docs/HuoShan/_branches/优化建议_波形与效果.md create mode 100644 Docs/HuoShan/_branches/优化建议_玩法与名词.md create mode 100644 Docs/HuoShan/core/01_narrative.md create mode 100644 Docs/HuoShan/core/02_flow.md create mode 100644 Docs/HuoShan/core/03_worldbuilding.md create mode 100644 Docs/HuoShan/core/04_implementation.md create mode 100644 Docs/HuoShan/core/05_resources.md delete mode 100644 Docs/HuoShan/功能需求文档.md delete mode 100644 Docs/HuoShan/火山第一次维修_设计文档.md delete mode 100644 Docs/HuoShan/设计优化文档.md diff --git a/CLAUDE.md b/CLAUDE.md index a9edc7679..a6b919328 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,7 +41,7 @@ Located in `web-prototype/` and `WebPrototype/` directories, these contain HTML/ ### Design Documentation Located in `Docs/`, scenario design documents for character repair flows: -- `Docs/HuoShan/` - 火山维修场景设计(第一次维修等),含步骤映射与实现索引 +- `Docs/HuoShan/` - 火山维修场景,单源索引见 `INDEX.md`,核心在 `core/`,探索在 `_branches/` ## Key Development Commands diff --git a/Docs/HuoShan/INDEX.md b/Docs/HuoShan/INDEX.md new file mode 100644 index 000000000..a3f1b417d --- /dev/null +++ b/Docs/HuoShan/INDEX.md @@ -0,0 +1,34 @@ +# 火山(HuoShan)文档索引 + +**原则:单源真相。所有内容只维护一份,不重复描述。探索性内容放入 `_branches/` 并标注。** + +--- + +## 文档地图 + +| 文件 | 内容 | 更新时 | +|------|------|--------| +| [core/01_narrative.md](./core/01_narrative.md) | 故事梗概、角色背景、主线 | 叙事改动 | +| [core/02_flow.md](./core/02_flow.md) | 14 步流程、步骤↔Stage 映射 | 流程/关卡改动 | +| [core/03_worldbuilding.md](./core/03_worldbuilding.md) | 销售模块原理、笑话设定、美术风格 | 世界观设定改动 | +| [core/04_implementation.md](./core/04_implementation.md) | 实现状态、Yarn 命令、波形定义、配置清单 | 技术实现改动 | +| [core/05_resources.md](./core/05_resources.md) | 实现资源映射(Yarn/脚本/场景路径) | 路径变动时 | + +## 探索分支 `_branches/` + +非既定设计、待验证或备选方向的内容放在 `_branches/` 下,**不与 core 冲突**。 + +| 文件 | 说明 | +|------|------| +| [_branches/优化建议_叙事与情感.md](./_branches/优化建议_叙事与情感.md) | 叙事节奏、情感共鸣点等建议 | +| [_branches/优化建议_波形与效果.md](./_branches/优化建议_波形与效果.md) | 波形可视化、RAM 报错等增强建议 | +| [_branches/优化建议_玩法与名词.md](./_branches/优化建议_玩法与名词.md) | 游戏性、技术名词一致性等 | + +--- + +## 维护规则 + +1. **新增内容** → 优先合并到既有 core 片段,不单独开新文档。 +2. **探索/实验** → 放入 `_branches/`,文件名带 `[探索]` 或 `_建议` 等标注。 +3. **流程变更** → 只改 `02_flow.md`,其他文档引用步骤编号,不复制流程表。 +4. **实现变更** → 只改 `04_implementation.md`,保持 Yarn 命令、波形 ID 等与代码一致。 diff --git a/Docs/HuoShan/README.md b/Docs/HuoShan/README.md index bdc4bb37c..e78e00894 100644 --- a/Docs/HuoShan/README.md +++ b/Docs/HuoShan/README.md @@ -1,75 +1,5 @@ -# 火山(HuoShan)维修场景 - 文档索引 +# 火山(HuoShan)文档 -本目录集中存放火山相关**全部文档**:设计、需求、优化。Yarn 目录只保留对话脚本,不存放文档。 +**入口** → [INDEX.md](./INDEX.md) -## 目录结构 - -``` -Docs/HuoShan/ -├── README.md # 本索引文件 -├── 火山第一次维修_设计文档.md # 故事梗概、流程、设定(叙事层) -├── 功能需求文档.md # 波形/治疗记录/RAM 等功能的实现需求 -├── 设计优化文档.md # 波形探测、粒子语言的玩法优化 -└── (未来可扩展) - └── 火山第二次维修_设计文档.md -``` - -## 文档清单 - -| 文档 | 说明 | 层级 | -|------|------|------| -| [火山第一次维修_设计文档.md](./火山第一次维修_设计文档.md) | 第一次维修完整设计:用笑话包装悲伤、RAM 堆积、释放表达 | 叙事 | -| [功能需求文档.md](./功能需求文档.md) | 波形、治疗记录、RAM 报错、步进 UI 等技术需求与 Yarn 命令 | 实现 | -| [设计优化文档.md](./设计优化文档.md) | 波形探测、粒子语言的玩法优化与情感曲线 | 玩法 | - -## 实现资源映射 - -火山第一次维修的实现分布在以下位置: - -### Yarn 对话(仅 .yarn 与 .yarnproject) - -- **主流程**:`Assets/Resources/Yarn/Test_Huoshan/` - - `Stage1.yarn` - 诊室开场 - - `Stage2.yarn` - 后脑检查(表达/销售/逻辑/情绪) - - `Stage3.yarn` - 销售模块深入、modify 发现 - - `Stage4.yarn` - RAM 堆积、报错表现 - - `Stage5.yarn` - 诊室对话 - - `Stage6.yarn` - 释放 RAM、log 小游戏 - - `Stage7.yarn` - 最终谈话 - - `EventNode.yarn` / `Center.yarn` - 流程控制 - -### 脚本与系统 - -- **波形系统**:`Assets/Scripts/MiniGame/HuoShan/Waveform/` -- **销售/情绪**:`Assets/Scripts/MiniGame/HuoShan/SalesSystem/`、`Emo/` -- **维修框架**:`Assets/Scripts/FixSystemNew/`(BodyModule、Clinic、Screen 等) - -### 场景 - -- **主场景**:`Assets/Scenes/HuoShanFixScene.unity` -- **粒子语言测试**:`Assets/Scenes/HuoShanExpressionTest.unity` - -## 设计步骤 ↔ Stage 对应表 - -| 设计文档步骤 | 场景 | Stage / 节点 | -|-------------|------|--------------| -| 1 | 诊室 | Stage1 | -| 2 | 后脑检查 | Stage2 - 检查表达模块 | -| 3 | 后脑检查 | Stage2 - 销售模块波形 | -| 4 | 后脑检查 | Stage2 - 逻辑/情绪波形 | -| 5 | 后脑检查 | Stage2 - 情绪 log | -| 6-8 | 销售模块深入 | Stage3 - 滤波过程、modify | -| 9 | 信息面板 | Stage3 - 治疗记录 | -| 10 | 销售模块深入 | Stage3 - 调节 modify 失败 | -| 11 | 后脑检查 | Stage4 - RAM 报错 | -| 12 | 诊室 | Stage5 | -| 13 | 后脑检查 | Stage6 - 释放 RAM | -| 14 | 诊室 | Stage7 | - -## 扩展说明 - -新增维修场景时: - -1. 在本目录创建 `火山第N次维修_设计文档.md` -2. 更新本 README 的文档清单和映射表 -3. 若需新建 Yarn 工程,建议放在 `Assets/Resources/Yarn/HuoShan_第N次维修/` 或类似路径 +所有火山相关文档的统一索引与维护规则。 diff --git a/Docs/HuoShan/_branches/README.md b/Docs/HuoShan/_branches/README.md new file mode 100644 index 000000000..d6dbcc847 --- /dev/null +++ b/Docs/HuoShan/_branches/README.md @@ -0,0 +1,7 @@ +# 探索分支 + +本目录存放**非既定设计**、待验证或备选方向的内容。 + +- 不与 `core/` 冲突,不作为单源真相 +- 若某分支被采纳,应合并回 `core/` 相应文件,并可从本目录移除或标注「已采纳」 +- 新增探索时,文件名建议带 `[探索]` 或 `_建议` diff --git a/Docs/HuoShan/_branches/优化建议_叙事与情感.md b/Docs/HuoShan/_branches/优化建议_叙事与情感.md new file mode 100644 index 000000000..e1cf5704f --- /dev/null +++ b/Docs/HuoShan/_branches/优化建议_叙事与情感.md @@ -0,0 +1,24 @@ +# [探索] 优化建议 - 叙事与情感 + +## 叙事节奏 + +**问题**:Stage2 检查流程较长,玩家易疲劳。 + +**建议**: +- 检查过程中增加火山情绪反应(如检查情绪时突然讲笑话) +- 关键发现点增加顿悟音效/画面 +- 部分检查设为可选,核心路径:表达→滤波器→情绪 + +## 情感共鸣点 + +- **治疗记录**:旧照片式视觉,3 年前时间戳 +- **释放 log**:每段释放时画面短暂变暗,火山声音从笑话包装渐变为真实 +- **结束对话**:背景音乐变化,玩家可选安慰话 + +## 情感曲线(Stage6) + +``` +LOG1 完成后:原来他一直很害怕 → 火山承认恐惧 +LOG2 完成后:他在保护别人 → 火山说出英里的事 +LOG3 完成后:他终于不逃避了 → 火山释放所有情绪,哭出来 +``` diff --git a/Docs/HuoShan/_branches/优化建议_波形与效果.md b/Docs/HuoShan/_branches/优化建议_波形与效果.md new file mode 100644 index 000000000..4ae8a4b83 --- /dev/null +++ b/Docs/HuoShan/_branches/优化建议_波形与效果.md @@ -0,0 +1,27 @@ +# [探索] 优化建议 - 波形与效果 + +## 波形可视化增强 + +- 动态波形渲染:LineRenderer/Shader,正弦/方波/锯齿各有节奏 +- 波形变换动画:modify 时正弦波逐渐尖锐化,配合频率变化音效 +- 波形比对:分屏显示,不匹配处高亮 + +## RAM 报错效果增强 + +- 报错窗口堆叠 +- 屏幕边缘过热(红色渐变) +- 点击后短暂卡顿 +- 火山同步:发热、声音卡顿 + +## 粒子语言递进参数 + +| 参数 | LOG1 | LOG2 | LOG3 | +|------|------|------|------| +| connectionDistance | 2.0 | 1.8 | 1.5 | +| separationForce | 2.0 | 2.5 | 3.0 | +| autoPropagationInterval | 3.0 | 2.0 | 1.5 | + +## 后续优化 + +- 波形:音效、屏幕震动、色彩过渡 +- 粒子:难度动态调整、音效反馈、视觉引导 diff --git a/Docs/HuoShan/_branches/优化建议_玩法与名词.md b/Docs/HuoShan/_branches/优化建议_玩法与名词.md new file mode 100644 index 000000000..66f77a051 --- /dev/null +++ b/Docs/HuoShan/_branches/优化建议_玩法与名词.md @@ -0,0 +1,15 @@ +# [探索] 优化建议 - 玩法与名词 + +## 游戏性 + +- **释放 log 小游戏**:难度曲线,火山焦躁程度影响干扰强度 +- **调节 modify**:虽设计为失败,可让玩家尝试几次,不同错误提示 +- **最终选择权**:Stage7/8 玩家帮火山设定 modify 强度,影响结局台词 + +## 技术名词一致性 + +统一术语: +- 滤波器 / 情绪修改器 / modify → 功能用「情绪修改器」,参数用「modify」 +- 波形 / 信号 → 技术语境可互换 +- log / 表达请求 → log 技术化,表达请求通俗 +- RAM / 缓存 / 堆积空间 → 统一用「RAM」 diff --git a/Docs/HuoShan/core/01_narrative.md b/Docs/HuoShan/core/01_narrative.md new file mode 100644 index 000000000..67cf46612 --- /dev/null +++ b/Docs/HuoShan/core/01_narrative.md @@ -0,0 +1,20 @@ +# 火山第一次维修 - 叙事 + +## 角色背景 + +火山是一个销售机器人,性格有点像《老友记》中的钱德勒——用笑话来伪装自己的真实情绪。设定: + +- 火山原本说话太直接,不适合做销售 +- 之前的医生发现火山有幽默潜质,做了一次改装,让火山可以用幽默填补 +- 但火山过度依赖这个能力,所有负面情绪都被自动包装成笑话输出 +- 导致无法表达真实情感,真实表达一直被堆积 +- 今天遇到了让火山特别焦虑和恐惧的事情,再加上长时间问题的堆积,导致火山出了异常 + +## 故事主线 + +玩家作为维修医生,帮助火山: + +1. **发现问题**:输入(情绪)和输出(笑话)完全对不上 +2. **理解问题**:火山用笑话包装悲伤 +3. **解决问题**:改变火山用笑话包装悲伤的模式,让他把积压的话说出来 +4. **最终结果**:火山自己选择说出真话,体验到"说出来没那么可怕" diff --git a/Docs/HuoShan/core/02_flow.md b/Docs/HuoShan/core/02_flow.md new file mode 100644 index 000000000..c7cfec652 --- /dev/null +++ b/Docs/HuoShan/core/02_flow.md @@ -0,0 +1,34 @@ +# 火山第一次维修 - 流程 + +流程定义唯一来源。其他文档引用步骤编号(如「步骤 9」),不复制本表。 + +## 14 步流程 + +| 步骤 | 场景 | 内容 | +|------|------|------| +| 1 | 诊室 | 老说笑话——表达模块有问题,可能的问题是笑话生成存在 bug | +| 2 | 后脑检查 | 检查表达模块——很健康,笑话生成也很正常,只是总是被触发 | +| 3 | 后脑检查 | 去销售模块看,发现波形很多毛刺(笑话);对波形反向分析,发现应属于情绪模块 | +| 4 | 后脑检查 | 逻辑模块找到了对应波形,情绪模块没找到,波形对不上 | +| 5 | 后脑检查 | 查情绪的 log,log 对得上,但波形和笑话波形不匹配,说明波形在内部被改变 | +| 6 | 销售模块深入 | 检查该 log 的滤波过程 | +| 7 | 销售模块深入 | 发现在滤波过程中,一个奇怪进程把波形从悲伤修改为幽默 | +| 8 | 销售模块深入 | 进程篡改是之前添加的 modify,来源:另一医生的治疗——火山避免谈论当时为何就医 | +| 9 | 信息面板 | 查看治疗记录:目的、随诊、副作用(RAM 堆积) | +| 10 | 销售模块深入 | 尝试调节 modify 强度,失败,表达模块拒绝接受信号 | +| 11 | 后脑检查 | 打开表达模块 RAM,大量未处理 log,报错弹窗把系统卡死 | +| 12 | 诊室 | 理解问题后的对话(火山:想变强… / 我:不能逃避…) | +| 13 | 后脑检查 | 插线表达模块,释放 RAM;部分 log 被笑话干扰需手动处理 | +| 14 | 诊室 | 最终谈话 | + +## 步骤 ↔ Stage 映射 + +| 步骤 | Stage | 场景/节点 | +|------|-------|-----------| +| 1 | Stage1 | 诊室开场 | +| 2–5 | Stage2 | 后脑检查(表达→销售→逻辑→情绪) | +| 6–10 | Stage3 | 销售模块深入、步进查看、modify、治疗记录 | +| 11 | Stage4 | 表达模块 RAM、报错表现 | +| 12 | Stage5 | 诊室对话 | +| 13 | Stage6 | 释放 RAM、log 小游戏 | +| 14 | Stage7 | 诊室最终谈话 | diff --git a/Docs/HuoShan/core/03_worldbuilding.md b/Docs/HuoShan/core/03_worldbuilding.md new file mode 100644 index 000000000..91195b3d7 --- /dev/null +++ b/Docs/HuoShan/core/03_worldbuilding.md @@ -0,0 +1,17 @@ +# 火山第一次维修 - 世界观与设定 + +## 销售模块原理 + +- 销售模块原本用于对销售员的话做过滤(如不合适表达) +- 接受来自逻辑和情绪的波形,混合后做压限、屏蔽等操作 +- 火山的销售模块新增**修改器**,可修改波形频率,将低沉的悲伤改为尖锐的幽默 + +## 火山的笑话(钱德勒式防御性幽默) + +- 明显在用笑话掩饰不安 +- 笑话内容往往暗示真实恐惧 +- 笑话可能是对真实表达的包装 + +## 美术风格 + +复古,机械 diff --git a/Docs/HuoShan/core/04_implementation.md b/Docs/HuoShan/core/04_implementation.md new file mode 100644 index 000000000..639b33903 --- /dev/null +++ b/Docs/HuoShan/core/04_implementation.md @@ -0,0 +1,81 @@ +# 火山第一次维修 - 实现状态 + +**唯一技术真相来源。** 与代码保持一致,Yarn 命令、波形 ID 等以本文件为准。 + +## 波形类型定义 + +| 波形类型 | 视觉特征 | 代表含义 | 使用场景 | +|---------|---------|---------|---------| +| 正弦波(低频) | 圆润、缓慢起伏 | 悲伤/焦虑/恐惧 | 情绪模块输出 | +| 方波 | 方正、规则 | 逻辑/理性 | 逻辑模块输出 | +| 锯齿波(高频) | 尖锐、快速 | 幽默/笑话 | 滤波器输出(被 modify 后)| +| 混合波形 | 多种叠加 | 正常表达信号 | 滤波器最终输出 | + +## 波形 ID(配置用) + +| 波形 ID | 描述 | 状态 | +|--------|------|------| +| `emotion_sine` | 情绪模块输出 | 待配置 | +| `logic_square` | 逻辑模块输出 | 待配置 | +| `filter_sawtooth` | 滤波器输出(锯齿为主)| 待配置 | +| `filter_normal` | 滤波器正常混合 | 待配置 | + +## 已实现的 Yarn 命令 + +**波形:** +- `show_waveform "id"` / `hide_waveform` +- `check_waveform_sweep` / `check_waveform_range` / `check_waveform_pass` / `check_waveform_fail` +- `modify_waveform "from" "to" duration` + +**粒子语言:** +- `open_expression` / `close_expression` / `reset_expression` +- `start_expression "干扰词" "目标句子" "完成节点"` +- `restart_expression "干扰词" "目标句子" "完成节点"` + +## Stage 与功能 + +| Stage | 主要内容 | 所需功能 | +|-------|----------|----------| +| 1 | 诊室开场 | 基础对话 | +| 2 | 后脑检查 | 波形显示、波形比对 | +| 3 | 滤波器深入 | 步进进度、波形变换、治疗记录 | +| 4 | RAM 堆积 | 报错弹窗 | +| 5 | 诊室理解 | 基础对话 | +| 6 | 释放 RAM | 粒子语言小游戏 | +| 7 | 诊室结束 | 基础对话 | + +## Stage3 步进流程(4 步) + +| 步骤 | 内容 | 视觉效果 | +|------|------|----------| +| 1/4 | 情绪信号接收 | 低频波形,蓝紫色 | +| 2/4 | 屏蔽词检测 | 青色光带横扫 | +| 3/4 | 限幅检测 | 黄色脉冲检测峰值 | +| 4/4 | 异常介入 | 波形变形:低频→高频 | + +## Stage6 粒子语言配置 + +| 阶段 | 目标句子 | 干扰词示例 | +|------|----------|------------| +| LOG1 | 我很害怕 | 哈哈、嘿嘿、呵呵 | +| LOG2 | 她都是为了我 | 哈哈哈、嘿嘿嘿、笑死了、好好笑 | +| LOG3 | 我不想再继续逃了 | 哈哈哈哈、笑死我了、太好笑了、绷不住了 | + +## 治疗记录(步骤 9)内容 + +``` +════════ 安装记录 ════════ +患者:火山 +症状:语言生成模块存在缺陷,无法自然处理负面情绪表达 + 患者经常因说话太直接而丢失客户 +处理方案:安装情绪滤波器 v0.7(临时) + 将部分悲伤/焦虑波形转化为幽默波形辅助表达 +随诊安排:每月复查调整参数 +副作用:未转化的情绪信号可能造成RAM堆积 +!!重要:此为过渡方案!! +``` + +## 波形系统路径 + +`Assets/Scripts/MiniGame/HuoShan/Waveform/` +详见 `README_WaveformSetup.md`。 diff --git a/Docs/HuoShan/core/05_resources.md b/Docs/HuoShan/core/05_resources.md new file mode 100644 index 000000000..86e0119ee --- /dev/null +++ b/Docs/HuoShan/core/05_resources.md @@ -0,0 +1,20 @@ +# 火山第一次维修 - 实现资源映射 + +路径变动时更新本文件。 + +## Yarn + +- **主流程**:`Assets/Resources/Yarn/Test_Huoshan/` + - Stage1–7.yarn, EventNode.yarn, Center.yarn + - Test_Huoshan.yarnproject + +## 脚本 + +- 波形:`Assets/Scripts/MiniGame/HuoShan/Waveform/` +- 销售/情绪:`Assets/Scripts/MiniGame/HuoShan/SalesSystem/`、`Emo/` +- 维修框架:`Assets/Scripts/FixSystemNew/` + +## 场景 + +- 主场景:`Assets/Scenes/HuoShanFixScene.unity` +- 粒子语言测试:`Assets/Scenes/HuoShanExpressionTest.unity` diff --git a/Docs/HuoShan/功能需求文档.md b/Docs/HuoShan/功能需求文档.md deleted file mode 100644 index 75ec983b2..000000000 --- a/Docs/HuoShan/功能需求文档.md +++ /dev/null @@ -1,346 +0,0 @@ -# 火山修复流程 - 功能需求文档 - -## 一、波形显示系统 - -### 1.1 需求概述 -设计方案中多次提到波形的可视化展示,需要实现一个波形显示系统来呈现: -- 情绪模块输出波形(低频正弦波 - 悲伤信号) -- 逻辑模块输出波形(方波 - 逻辑信号) -- 滤波器输出波形(锯齿波 - 幽默信号) -- 波形修改过程的动态展示 - -### 1.2 波形类型定义 - -| 波形类型 | 视觉特征 | 代表含义 | 使用场景 | -|---------|---------|---------|---------| -| 正弦波(低频) | 圆润、缓慢起伏 | 悲伤/焦虑/恐惧等真实情绪 | 情绪模块输出 | -| 方波 | 方正、规则 | 逻辑/理性思考 | 逻辑模块输出 | -| 锯齿波(高频) | 尖锐、快速 | 幽默/笑话 | 滤波器输出(被修改后)| -| 混合波形 | 多种波形叠加 | 正常的表达信号 | 滤波器最终输出 | - -### 1.3 建议的Yarn命令 - -```csharp -// 显示波形 -[YarnCommand("show_waveform")] -public static IEnumerator ShowWaveform(string waveformType, float duration = 0.5f) - -// 隐藏波形 -[YarnCommand("hide_waveform")] -public static IEnumerator HideWaveform(float duration = 0.3f) - -// 波形变换动画(用于展示modify过程) -[YarnCommand("transform_waveform")] -public static IEnumerator TransformWaveform(string fromType, string toType, float duration = 1f) - -// 波形比对显示(双波形对比) -[YarnCommand("compare_waveforms")] -public static IEnumerator CompareWaveforms(string waveform1, string waveform2) -``` - -### 1.4 波形资源清单 - -需要制作的波形图片/动画资源: - -| 资源名称 | 描述 | 使用节点 | -|---------|------|---------| -| `waveform_emotion_sine` | 情绪模块输出 - 低频正弦波 | 检查情绪-波形检查 | -| `waveform_logic_square` | 逻辑模块输出 - 方波 | 检查逻辑-波形检查 | -| `waveform_filter_sawtooth` | 滤波器输出 - 锯齿波为主 | 检查滤波器-波形分析 | -| `waveform_filter_normal` | 滤波器输出 - 正常混合 | Stage7-最终检查 | -| `waveform_step1_input` | 步进查看-情绪输入 | Stage3-步进查看 | -| `waveform_step2_input` | 步进查看-逻辑输入 | Stage3-步进查看 | -| `waveform_step5_modified` | 步进查看-波形被修改 | Stage3-modify执行 | -| `waveform_transform_anim` | 波形变换动画 | Stage3-modify执行 | - ---- - -## 二、治疗记录展示系统 - -### 2.1 需求概述 -设计方案第9步要求展示治疗记录,需要一个专门的UI容器来呈现: -- 治疗目的 -- 随诊安排 -- 副作用说明 - -### 2.2 建议实现方式 - -可以复用现有的 `show_obj` 或 `open_warning_window` 命令,或者创建新的命令: - -```csharp -// 显示医疗记录面板 -[YarnCommand("show_medical_record")] -public static IEnumerator ShowMedicalRecord(string recordId) - -// 关闭医疗记录面板 -[YarnCommand("hide_medical_record")] -public static IEnumerator HideMedicalRecord() -``` - -### 2.3 记录内容 - -``` -════════ 安装记录 ════════ -患者:火山 -症状:语言生成模块存在缺陷,无法自然处理负面情绪表达 - 患者经常因说话太直接而丢失客户 -处理方案:安装情绪滤波器 v0.7(临时) - 将部分悲伤/焦虑波形转化为幽默波形辅助表达 -随诊安排:每月复查调整参数 -副作用:未转化的情绪信号可能造成RAM堆积 -!!重要:此为过渡方案!! -``` - ---- - -## 三、RAM堆积报错效果 - -### 3.1 需求概述 -设计方案第11步提到"报错不停地弹出,把系统卡死了"的效果。 - -### 3.2 建议实现方式 - -```csharp -// 显示连续报错弹窗效果 -[YarnCommand("show_error_flood")] -public static IEnumerator ShowErrorFlood(int count = 5, float interval = 0.3f) - -// 清除所有报错 -[YarnCommand("clear_errors")] -public static void ClearErrors() -``` - -### 3.3 报错内容示例 - -``` -[ERROR] 悲伤表达单元:信号堆积溢出 -[ERROR] 焦虑表达单元:无法处理积压请求 -[ERROR] 恐惧表达单元:RAM不足 -[WARNING] 表达模块即将闭锁 -[CRITICAL] 系统响应超时 -``` - ---- - -## 四、步进查看模式UI - -### 4.1 需求概述 -Stage3中需要一步一步展示滤波器的信号处理过程。 - -### 4.2 建议实现方式 - -可以用现有的选项系统实现(已在Yarn中实现),但可以增加一个步进进度指示器: - -```csharp -// 显示步进进度 -[YarnCommand("show_step_progress")] -public static void ShowStepProgress(int currentStep, int totalSteps) - -// 更新步进进度 -[YarnCommand("update_step_progress")] -public static void UpdateStepProgress(int currentStep) - -// 隐藏步进进度 -[YarnCommand("hide_step_progress")] -public static void HideStepProgress() -``` - ---- - -## 五、流程总览 - -### Stage划分 - -| Stage | 场景 | 主要内容 | 需要的功能 | -|-------|------|---------|-----------| -| Stage1 | 诊室 | 开场对话,发现火山异常 | 基础对话 | -| Stage2 | 后脑检查 | 检查表达/滤波器/逻辑/情绪 | 波形显示、波形比对 | -| Stage3 | 滤波器深入 | 步进查看,发现modify | 步进进度、波形变换动画 | -| Stage4 | 表达模块RAM | 发现堆积的log | 报错弹窗效果 | -| Stage5 | 诊室 | 对话理解问题 | 基础对话 | -| Stage6 | 后脑检查 | 释放RAM,处理log | 表达模式小游戏 | -| Stage7 | 诊室 | 最终对话 | 基础对话 | - ---- - -## 六、实现优先级 - -### 高优先级(核心体验) -1. ✅ Yarn流程整理(已完成) -2. ✅ 波形显示基础功能(Yarn命令已集成) -3. ✅ 步进查看模式UI(Yarn命令已集成) - -### 中优先级(增强体验) -4. ✅ 波形变换动画(Yarn命令已集成) -5. ✅ 治疗记录展示(直接在对话中显示,已实现) -6. ✅ RAM报错效果(Yarn命令已集成) - -### 低优先级(可选优化) -7. ✅ 波形比对双屏显示(Yarn命令已集成) -8. ✅ 步进进度指示器(Yarn命令已集成) - ---- - -## 八、待配置/待完善的资源清单 - -### 8.1 波形资源(需要在Unity中配置) - -| 波形ID | 描述 | 状态 | -|--------|------|------| -| `emotion_sine` | 情绪模块输出 - 低频正弦波(蓝色/紫色) | 待配置 | -| `logic_square` | 逻辑模块输出 - 方波(绿色) | 待配置 | -| `filter_sawtooth` | 滤波器输出 - 锯齿波为主(橙色/红色) | 待配置 | -| `filter_normal` | 滤波器输出 - 正常混合波形 | 待配置 | - -### 8.2 需要在Unity中完成的配置 - -1. **WaveformDisplaySystem 预制体** - - 创建波形显示UI容器 - - 配置波形图像(primaryWaveformImage, secondaryWaveformImage) - - 配置步进进度UI(stepProgressPanel, stepProgressText, stepProgressSlider) - - 配置报错效果UI(errorContainer, errorPrefab) - -2. **WaveformData 数据配置** - - 在 WaveformDisplaySystem 组件的 waveformDataList 中添加波形数据 - - 每个波形需要配置:waveformId, waveformSprite, waveformColor, description - -3. **波形图片资源** - - 制作或获取波形可视化图片/动画 - - 建议使用 Shader 或 LineRenderer 实现动态波形效果 - -### 8.3 新波形读取设备系统 - -已创建基于 `RobotECGWave.cs` 的新波形系统,位于: -`Assets/Scripts/MiniGame/HuoShan/Waveform/` - -| 文件 | 说明 | -|------|------| -| `HuoshanWaveformConfig.cs` | 波形配置ScriptableObject | -| `HuoshanWaveformRenderer.cs` | 单个波形渲染器(基于LineRenderer) | -| `HuoshanWaveformDevice.cs` | 波形设备主控制器(DOTween动画、比对逻辑) | -| `WaveformYarnCommand.cs` | Yarn命令接口 | -| `README_WaveformSetup.md` | 配置指南 | - -**新功能特性:** -1. ✅ DOTween滑入/滑出动画 -2. ✅ 动态波形渲染(LineRenderer) -3. ✅ 波形比对拼图式动画 -4. ✅ 波形变换动画(正弦波→锯齿波) -5. ✅ 步进进度显示 -6. ✅ 可配置的波形参数 - -**使用方法:** -详见 `README_WaveformSetup.md` - -### 8.4 降级方案 - -如果新波形系统未配置,Yarn命令会自动降级: -1. 尝试使用旧的 `WaveformDisplaySystem` -2. 使用 `show_obj` 显示静态图片 -3. 使用 `open_warning_window` 显示报错 - ---- - -## 九、设计方案优化建议 - -### 9.1 叙事节奏优化 - -**当前问题:** Stage2阶段检查流程较长,玩家可能在技术检查中感到疲劳。 - -**建议:** -1. 在检查过程中增加火山的情绪反应,如: - - 检查情绪模块时,火山突然说一个不合时宜的笑话 - - 检查滤波器时,火山表现出紧张(但用笑话掩饰) -2. 在关键发现点增加"顿悟"音效和视觉效果 -3. 考虑将部分检查设为可选,核心路径只需要检查表达→滤波器→情绪三个模块 - -### 9.2 波形可视化增强 - -**当前状态:** 波形通过文字描述 + 静态图片展示 - -**建议升级方案:** -1. **动态波形渲染** - - 使用 LineRenderer 或 Shader 实现实时波形绘制 - - 正弦波、方波、锯齿波各有不同的动画节奏 - - 波形颜色编码:悲伤=蓝色、逻辑=绿色、幽默=橙色/红色 - -2. **波形变换动画** - - modify 执行时:正弦波逐渐"尖锐化"变成锯齿波 - - 添加频率变化音效,低频→高频 - -3. **波形比对模式** - - 上下或左右分屏显示两个波形 - - 不匹配部分高亮闪烁 - -### 9.3 RAM报错效果增强 - -**当前状态:** 连续弹出报错窗口 - -**建议升级方案:** -1. 报错窗口堆叠效果,越积越多 -2. 屏幕边缘开始出现"过热"效果(红色渐变) -3. 系统响应延迟感(点击选项后有短暂卡顿) -4. 火山同步表现:发热、声音开始卡顿 - -### 9.4 情感共鸣点强化 - -**建议增加的细节:** - -1. **治疗记录展示**(Stage3) - - 可以添加一个"旧照片"式的视觉效果 - - 显示3年前的时间戳,强调时间跨度 - -2. **释放log过程**(Stage6) - - 每个log释放时,屏幕短暂变暗 - - 火山的声音从"笑话包装"逐渐变成真实声音 - - 考虑添加一些具体的回忆片段(可选阅读) - -3. **结束对话**(Stage8) - - 火山说出真话时,背景音乐变化 - - 可以让玩家选择一句安慰的话(增加代入感) - -### 9.5 游戏性优化建议 - -1. **手动释放log小游戏**(Stage6) - - 当前设计:清除笑话干扰 - - 可以增加难度曲线:第一个log简单,后面的越来越难 - - 火山的焦躁程度影响干扰强度 - -2. **调节modify强度** - - 虽然设计中调节失败,但可以让玩家尝试几次 - - 每次失败给出不同的错误提示,增加挫败感 - -3. **最终选择权** - - Stage7/8中,可以让玩家帮火山设定modify的最终强度 - - 不同选择影响结局台词(但不影响主线) - -### 9.6 技术名词一致性 - -确保以下术语在所有文件中保持一致: -- 滤波器 / 情绪修改器 / modify(统一用"情绪修改器"描述功能,"modify"描述参数) -- 波形 / 信号(在技术语境中可互换使用) -- log / 表达请求(log更技术化,表达请求更通俗) -- RAM / 缓存 / 堆积空间(统一用"RAM") - ---- - -## 七、临时替代方案 - -在功能开发完成前,可以使用以下方式作为占位: - -### 波形显示 -使用 `show_obj` 命令加载静态波形图片: -```yarn -<> -ChipModule: 波形类型:低频正弦波 -<> -``` - -### 报错效果 -使用 `open_warning_window` 命令: -```yarn -<> -``` - -### 治疗记录 -直接在对话中显示(当前已实现) diff --git a/Docs/HuoShan/火山第一次维修_设计文档.md b/Docs/HuoShan/火山第一次维修_设计文档.md deleted file mode 100644 index 691fc9f54..000000000 --- a/Docs/HuoShan/火山第一次维修_设计文档.md +++ /dev/null @@ -1,92 +0,0 @@ -# 火山第一次维修 - 设计文档 - -## 一、故事梗概 - -### 角色背景 - -火山是一个销售机器人,性格有点像《老友记》中的钱德勒——用笑话来伪装自己的真实情绪。设定: - -- 火山原本说话太直接,不适合做销售 -- 之前的医生发现火山有幽默潜质,做了一次改装,让火山可以用幽默填补 -- 但火山过度依赖这个能力,所有负面情绪都被自动包装成笑话输出 -- 导致无法表达真实情感,真实表达一直被堆积 -- 今天遇到了让火山特别焦虑和恐惧的事情,再加上长时间问题的堆积,导致火山出了异常 - -### 故事主线 - -玩家作为维修医生,帮助火山: - -1. **发现问题**:输入(情绪)和输出(笑话)完全对不上 -2. **理解问题**:火山用笑话包装悲伤 -3. **解决问题**:改变火山用笑话包装悲伤的模式,让他把积压的话说出来 -4. **最终结果**:火山自己选择说出真话,体验到"说出来没那么可怕" - ---- - -## 二、流程 - -| 步骤 | 场景 | 内容 | -|------|------|------| -| 1 | 【诊室】 | 老说笑话——表达模块有问题,可能的问题是笑话生成存在 bug | -| 2 | 【后脑检查】 | 检查表达模块——很健康,笑话生成也很正常,只是总是被触发 | -| 3 | 【后脑检查】 | 去销售模块看,发现波形很多毛刺(笑话)【销售模块波形的呈现】对波形进行反向分析,发现应该是属于情绪模块 | -| 4 | 【后脑检查】 | 逻辑模块找到了对应波形,情绪模块没找到,奇怪,这波形怎么对不上【逻辑和情绪的波形呈现】 | -| 5 | 【后脑检查】 | 查情绪的 log,发现 log 对得上,很奇怪,因为这个波形和生成的笑话波形不匹配,这意味着波形在内部被改变了 | -| 6 | 【销售模块深入】 | 检查这个 log 的滤波过程 | -| 7 | 【销售模块深入】 | 发现在滤波过程中,一个奇怪的进程把波形修改了,从悲伤的修改为幽默的 | -| 8 | 【销售模块深入】 | 深入检查发现,进程篡改是之前添加的一个 modify,来源是:一次另外一个医生的治疗——火山避免谈论当时为什么要去 | -| 9 | 【信息面板】 | 去看这个治疗的记录:1. 治疗目的是通过讲笑话的方式来避免输出情绪 2. 两个月后随诊 3. 副作用:RAM 堆积【需要一个呈现治疗记录的容器/载体/media】 | -| 10 | 【销售模块深入】 | 尝试调节 modify 的强度,但是失败了,表达模块拒绝接受信号 | -| 11 | 【后脑检查】 | 打开表达模块的 RAM,看到一大堆未处理的 log【一个重要表现:报错不停地弹出,把系统卡死了】(可以就用诊疗仪屏幕),看来是因为 RAM 堆积了太多未表达的话导致闭锁了,真实情绪已经无法被接受了 | -| 12 | 【诊室】 | 明白咋回事了,来聊聊吧 | -| 12.1 | | 火山:我当时只是想让自己变得更强… | -| 12.2 | | 我:你不能逃避那些地毯下的灰尘,虽然修改了波形但是信号依然发出了,那些话会被积压,我们一起解决吧 | -| 12.3 | | 解决后我可以恢复 modify 的强度控制,但是要你自己决定怎么使用 | -| 13 | 【后脑检查】 | 插线表达模块,释放 RAM,让悲伤表达单元能够正常工作 | -| 13.1 | | 释放的过程:处理过去的 log,全自动 | -| 13.2 | | 释放过程中有一些 log 出错需要手动处理:错误是:它们被笑话干扰了 | -| 13.2.1 | | 笑话产生的原因是 1. 火山曾经挣扎过想要说出悲伤,但混入了笑话,还是没说出来(这个自动过程无法理解笑话)或 2. 火山现在很焦躁不安,不自觉地想笑话,干扰了进程 | -| 14 | 【诊室】 | 谈话 | - ---- - -## 三、销售模块原理 - -- 销售模块原本是用来对销售员说的话做一些过滤,比如不合适的表达 -- 它接受来自逻辑和情绪的波形混合它们,并且做压限、屏蔽等操作 -- 火山的销售模块新增了一个不常见的**修改器**,可以对波形的频率进行修改,从而把低沉的悲伤改为尖锐的幽默 - ---- - -## 四、关于火山的笑话 - -参考:钱德勒式的防御性幽默特点: - -- 明显是在用笑话掩饰不安 -- 笑话内容往往暗示了真实恐惧 -- 笑话可能是对真实表达的包装 - ---- - -## 五、关于美术风格 - -复古,机械 - ---- - -## 六、实现对应关系 - -| 设计步骤 | Yarn 节点 / 场景 | 备注 | -|----------|------------------|------| -| 1 | Stage1 诊室 | 开场,发现异常 | -| 2-5 | Stage2 后脑检查 | 表达→销售→逻辑→情绪 波形检查 | -| 6-10 | Stage3 销售模块深入 | 步进查看、发现 modify、治疗记录 | -| 11 | Stage4 表达模块 RAM | 报错弹窗、RAM 堆积表现 | -| 12 | Stage5 诊室 | 对话理解 | -| 13 | Stage6 后脑检查 | 释放 RAM、log 处理小游戏 | -| 14 | Stage7 诊室 | 最终谈话 | - ---- - -*文档版本:火山第一次维修 v1.0* -*关联实现:Assets/Resources/Yarn/Test_Huoshan/* diff --git a/Docs/HuoShan/设计优化文档.md b/Docs/HuoShan/设计优化文档.md deleted file mode 100644 index d06ee605c..000000000 --- a/Docs/HuoShan/设计优化文档.md +++ /dev/null @@ -1,233 +0,0 @@ -# 火山修复流程 - 设计优化文档 - -## 一、优化概述 - -本文档记录了对波形探测和粒子语言两个核心玩法的优化设计。 - -### 核心理念 - -| 玩法 | 对应的叙事层面 | 玩家体验 | -|------|---------------|----------| -| **波形探测** | 从情绪到表达的过程 | 亲眼见证情绪被"吃掉" | -| **粒子语言** | 语言的生成/释放过程 | 帮助火山说出真心话 | - ---- - -## 二、波形探测优化(Stage2 & Stage3) - -### 2.1 设计目标 - -让玩家通过波形的变化,直观理解火山的问题: -1. **发现**:滤波器输出全是锯齿波(笑话) -2. **对比**:逻辑波形能找到,情绪波形找不到 -3. **揭示**:亲眼看到情绪波形被modify篡改 - -### 2.2 Stage2 波形扫描流程 - -``` -滤波器输出(锯齿波) - ↓ - 扫描逻辑波形 → 成功锁定 ✓ - ↓ - 扫描情绪波形 → 找不到 ✗ - ↓ - 产生疑问:情绪去哪了? -``` - -### 2.3 Stage3 步进查看模式(重点优化) - -优化后的步进流程更加戏剧化: - -| 步骤 | 内容 | 视觉效果 | 玩家感受 | -|------|------|----------|----------| -| 1/4 | 情绪信号接收 | 低频波形,蓝紫色 | 看到火山的悲伤 | -| 2/4 | 屏蔽词检测 | 青色光带横扫 | 检测通过,没问题 | -| 3/4 | 限幅检测 | 黄色脉冲检测峰值 | 检测通过,没问题 | -| 4/4 | ⚠️ 异常介入 | 波形变形!低频→高频 | **震惊!** | - -#### 核心戏剧时刻(步骤4) - -``` -原始波形(悲伤) 被篡改后(笑话) - ~~~ /\/\/\ - ~ ~ →→→ / \ - ~ ~ / \/\ -``` - -**视觉变化**: -- 频率:低频 → 高频 -- 形态:圆润 → 尖锐 -- 颜色:蓝紫色 → 橙红色 -- 幅度:平缓 → 剧烈 - -### 2.4 Yarn命令使用 - -```yarn -// 显示情绪波形(低频正弦波) -<> - -// 屏蔽词检测效果(横向扫描) -<> -<> - -// 限幅检测效果(探测峰值) -<> -<> - -// 核心:波形被篡改的变换 -<> -<> -``` - ---- - -## 三、粒子语言优化(Stage6) - -### 3.1 设计目标 - -让玩家帮助火山释放积压的情绪log,通过**递进难度**增强体验: -- 从简单到困难 -- 从表层恐惧到深层自责 -- 随着难度增加,情感释放也更深入 - -### 3.2 递进设计 - -| 阶段 | 目标粒子 | 目标句子 | 干扰词 | 难度 | -|------|----------|----------|--------|------| -| LOG1 | 4个 | "我很害怕" | 哈哈\|嘿嘿\|呵呵(2字) | ⭐ 简单 | -| LOG2 | 6个 | "她都是为了我" | 哈哈哈\|嘿嘿嘿\|呵呵呵\|笑死了\|好好笑(3字) | ⭐⭐ 中等 | -| LOG3 | 8个 | "我不想再继续逃了" | 哈哈哈哈\|笑死我了\|太好笑了\|绷不住了\|笑不活了\|真的太搞笑(4-5字) | ⭐⭐⭐ 困难 | - -### 3.3 叙事递进 - -``` -LOG1: 表层恐惧 -"我很害怕" - └── 怕被审查,怕不合格 - -LOG2: 关于他人 -"她都是为了我" - └── 英里为了保护我,得罪了上面的人 - -LOG3: 深层自责 -"我不想再继续逃了" - └── 不想再用笑话逃避 - └── 全部情绪释放 - └── 火山终于哭出来 -``` - -### 3.4 Yarn命令使用 - -```yarn -// 第一次:打开视图并启动 -<> -<> - -// 后续:重启系统(新配置) -<> - -// 全部完成后关闭 -<> -``` - -### 3.5 粒子系统参数建议 - -如果需要更细粒度的难度控制,可以在 `LanguageParticleManager` 中调整: - -| 参数 | LOG1 | LOG2 | LOG3 | 说明 | -|------|------|------|------|------| -| connectionDistance | 2.0 | 1.8 | 1.5 | 连接距离(越小越难) | -| separationForce | 2.0 | 2.5 | 3.0 | 分离力度(越大越散) | -| autoPropagationInterval | 3.0 | 2.0 | 1.5 | 自动传播间隔(越短干扰越频繁) | - ---- - -## 四、情感设计 - -### 4.1 整体情感曲线 - -``` -Stage2: 困惑 → 发现线索 - ↓ -Stage3: 追踪 → 震惊(看到篡改)→ 理解 - ↓ -Stage4: 发现RAM堆积 → 同情 - ↓ -Stage5: 对话 → 准备帮助 - ↓ -Stage6: 帮助释放 → 共情 → 感动 - ↓ -Stage7: 修复完成 → 释然 -``` - -### 4.2 Stage6 的情感递进 - -``` -LOG1 完成后: - 玩家:原来他一直很害怕 - 火山:承认恐惧 - -LOG2 完成后: - 玩家:他在保护别人 - 火山:说出英里的事 - -LOG3 完成后: - 玩家:他终于不逃避了 - 火山:释放所有情绪,哭出来 -``` - ---- - -## 五、技术实现备注 - -### 5.1 已实现的Yarn命令 - -**波形系统**: -- `show_waveform "id"` - 显示波形 -- `hide_waveform` - 隐藏波形 -- `check_waveform_sweep` - 屏蔽词检测效果 -- `check_waveform_range` - 限幅检测效果 -- `check_waveform_pass` - 检测通过效果 -- `check_waveform_fail` - 检测失败效果 -- `modify_waveform "from" "to" duration` - 波形变换 - -**粒子语言系统**: -- `open_expression` - 打开视图 -- `start_expression "干扰词" "目标句子" "完成节点"` - 启动系统 -- `restart_expression "干扰词" "目标句子" "完成节点"` - 重启系统 -- `close_expression` - 关闭系统 -- `reset_expression` - 重置系统 - -### 5.2 粒子数量计算 - -系统会根据目标句子长度自动设置目标粒子数: -```csharp -redParticleCount = Mathf.Min(sentence.Length, candidateCount); -``` - -因此: -- "我很害怕"(4字)→ 4个目标粒子 -- "她都是为了我"(6字)→ 6个目标粒子 -- "我不想再继续逃了"(8字)→ 8个目标粒子 - ---- - -## 六、后续优化建议 - -### 6.1 波形系统 - -1. **音效配合**:波形变换时添加频率变化音效(低频→高频) -2. **屏幕震动**:modify介入时轻微震动 -3. **色彩过渡**:变换过程中颜色渐变更平滑 - -### 6.2 粒子语言系统 - -1. **难度动态调整**:根据玩家表现调整下一关难度 -2. **音效反馈**:连接/断开粒子时的音效 -3. **视觉引导**:困难模式时给予更多视觉提示 - -### 6.3 叙事增强 - -1. **火山的反应**:每个log完成后,火山的状态变化(从紧张到放松) -2. **环境变化**:随着释放进度,场景氛围从压抑到明亮 -3. **音乐变化**:背景音乐随情感递进而变化