docs(huoshan): 重构为单源索引结构,core 与 _branches 拆分

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-12 13:44:24 +08:00
co-authored by Cursor
parent 69a5676dda
commit 4a025189d7
15 changed files with 283 additions and 745 deletions
+1 -1
View File
@@ -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
+34
View File
@@ -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 等与代码一致。
+3 -73
View File
@@ -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次维修/` 或类似路径
所有火山相关文档的统一索引与维护规则。
+7
View File
@@ -0,0 +1,7 @@
# 探索分支
本目录存放**非既定设计**、待验证或备选方向的内容。
- 不与 `core/` 冲突,不作为单源真相
- 若某分支被采纳,应合并回 `core/` 相应文件,并可从本目录移除或标注「已采纳」
- 新增探索时,文件名建议带 `[探索]``_建议`
@@ -0,0 +1,24 @@
# [探索] 优化建议 - 叙事与情感
## 叙事节奏
**问题**:Stage2 检查流程较长,玩家易疲劳。
**建议**
- 检查过程中增加火山情绪反应(如检查情绪时突然讲笑话)
- 关键发现点增加顿悟音效/画面
- 部分检查设为可选,核心路径:表达→滤波器→情绪
## 情感共鸣点
- **治疗记录**:旧照片式视觉,3 年前时间戳
- **释放 log**:每段释放时画面短暂变暗,火山声音从笑话包装渐变为真实
- **结束对话**:背景音乐变化,玩家可选安慰话
## 情感曲线(Stage6
```
LOG1 完成后:原来他一直很害怕 → 火山承认恐惧
LOG2 完成后:他在保护别人 → 火山说出英里的事
LOG3 完成后:他终于不逃避了 → 火山释放所有情绪,哭出来
```
@@ -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 |
## 后续优化
- 波形:音效、屏幕震动、色彩过渡
- 粒子:难度动态调整、音效反馈、视觉引导
@@ -0,0 +1,15 @@
# [探索] 优化建议 - 玩法与名词
## 游戏性
- **释放 log 小游戏**:难度曲线,火山焦躁程度影响干扰强度
- **调节 modify**:虽设计为失败,可让玩家尝试几次,不同错误提示
- **最终选择权**Stage7/8 玩家帮火山设定 modify 强度,影响结局台词
## 技术名词一致性
统一术语:
- 滤波器 / 情绪修改器 / modify → 功能用「情绪修改器」,参数用「modify」
- 波形 / 信号 → 技术语境可互换
- log / 表达请求 → log 技术化,表达请求通俗
- RAM / 缓存 / 堆积空间 → 统一用「RAM」
+20
View File
@@ -0,0 +1,20 @@
# 火山第一次维修 - 叙事
## 角色背景
火山是一个销售机器人,性格有点像《老友记》中的钱德勒——用笑话来伪装自己的真实情绪。设定:
- 火山原本说话太直接,不适合做销售
- 之前的医生发现火山有幽默潜质,做了一次改装,让火山可以用幽默填补
- 但火山过度依赖这个能力,所有负面情绪都被自动包装成笑话输出
- 导致无法表达真实情感,真实表达一直被堆积
- 今天遇到了让火山特别焦虑和恐惧的事情,再加上长时间问题的堆积,导致火山出了异常
## 故事主线
玩家作为维修医生,帮助火山:
1. **发现问题**:输入(情绪)和输出(笑话)完全对不上
2. **理解问题**:火山用笑话包装悲伤
3. **解决问题**:改变火山用笑话包装悲伤的模式,让他把积压的话说出来
4. **最终结果**:火山自己选择说出真话,体验到"说出来没那么可怕"
+34
View File
@@ -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 | 诊室开场 |
| 25 | Stage2 | 后脑检查(表达→销售→逻辑→情绪) |
| 610 | Stage3 | 销售模块深入、步进查看、modify、治疗记录 |
| 11 | Stage4 | 表达模块 RAM、报错表现 |
| 12 | Stage5 | 诊室对话 |
| 13 | Stage6 | 释放 RAM、log 小游戏 |
| 14 | Stage7 | 诊室最终谈话 |
+17
View File
@@ -0,0 +1,17 @@
# 火山第一次维修 - 世界观与设定
## 销售模块原理
- 销售模块原本用于对销售员的话做过滤(如不合适表达)
- 接受来自逻辑和情绪的波形,混合后做压限、屏蔽等操作
- 火山的销售模块新增**修改器**,可修改波形频率,将低沉的悲伤改为尖锐的幽默
## 火山的笑话(钱德勒式防御性幽默)
- 明显在用笑话掩饰不安
- 笑话内容往往暗示真实恐惧
- 笑话可能是对真实表达的包装
## 美术风格
复古,机械
+81
View File
@@ -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`
+20
View File
@@ -0,0 +1,20 @@
# 火山第一次维修 - 实现资源映射
路径变动时更新本文件。
## Yarn
- **主流程**`Assets/Resources/Yarn/Test_Huoshan/`
- Stage17.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`
-346
View File
@@ -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
- 配置步进进度UIstepProgressPanel, stepProgressText, stepProgressSlider
- 配置报错效果UIerrorContainer, 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
<<show_obj "waveform_emotion_sine">>
ChipModule: 波形类型:低频正弦波
<<hide_obj>>
```
### 报错效果
使用 `open_warning_window` 命令:
```yarn
<<open_warning_window "[ERROR] 表达模块RAM溢出">>
```
### 治疗记录
直接在对话中显示(当前已实现)
@@ -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/*
-233
View File
@@ -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
// 显示情绪波形(低频正弦波)
<<show_waveform "emotion" 1.5>>
// 屏蔽词检测效果(横向扫描)
<<check_waveform_sweep 2 0.25>>
<<check_waveform_pass>>
// 限幅检测效果(探测峰值)
<<check_waveform_range 2 0.12>>
<<check_waveform_pass>>
// 核心:波形被篡改的变换
<<modify_waveform "emotion" "joke" 2.5>>
<<check_waveform_fail>>
```
---
## 三、粒子语言优化(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
// 第一次:打开视图并启动
<<open_expression>>
<<start_expression "干扰词" "目标句子" "完成节点">>
// 后续:重启系统(新配置)
<<restart_expression "干扰词" "目标句子" "完成节点">>
// 全部完成后关闭
<<close_expression>>
```
### 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. **音乐变化**:背景音乐随情感递进而变化