317 lines
11 KiB
Markdown
317 lines
11 KiB
Markdown
# Test_Huoshan Yarn 完整流程图(Debug 用)
|
||
|
||
> 基于 `Test_Huoshan.yarnproject` 及所有 `.yarn` 文件生成
|
||
|
||
## 0. Yarn Graph 布局说明
|
||
|
||
节点已按逻辑分组,position 与 tags 便于在 Yarn Editor 中浏览:
|
||
|
||
| 区域 | X 范围 | 内容 |
|
||
|------|--------|------|
|
||
| 核心枢纽 | 300 | Start → VarsInit → Center(竖直) |
|
||
| Stage1 | 100 | 诊室开场(左列) |
|
||
| Stage2 主流程 | 150-450 | 检查表达→滤波器→情绪(中) |
|
||
| Stage2 分支 | 50-650 | 检查记忆/逻辑/视觉(插线入口上方) |
|
||
| 插线桥接 | 50-650, y=600 | Emo/Speak/Logic/Color/Memory/EyePlugIn |
|
||
| Stage3 销售 | 100-350 | 步进→转动完成→安装日志→旋钮(左中) |
|
||
| 销售桥接 | 550 | 销售模块转动完成、处理器单次调节失败 |
|
||
| Stage4-8 | 500 | 各 Stage 入口与结束(右列竖直) |
|
||
| 波形工具 | 700 | 波形_* 节点(最右) |
|
||
|
||
**colorID 含义:** 1=入口, 2=Stage, 3=主流程/Expression, 4=变量, 5=销售, 6=波形, 7=桥接, 8=通用
|
||
|
||
## 1. 主流程总览
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph entry ["入口"]
|
||
Start --> VarsInit
|
||
VarsInit --> Center
|
||
end
|
||
|
||
subgraph center ["Center 调度 (按 $gameStage)"]
|
||
Center -->|1| Stage1
|
||
Center -->|2| Stage2
|
||
Center -->|3| Stage3
|
||
Center -->|4| Stage4
|
||
Center -->|5| Stage5
|
||
Center -->|6| Stage6
|
||
Center -->|7| Stage7
|
||
Center -->|8| Stage8
|
||
Center -->|100| 测试
|
||
Center -->|999| NextYarn
|
||
end
|
||
|
||
subgraph stage_flow ["Stage 流转"]
|
||
Stage1 --> S1_end["gameStage=2"]
|
||
Stage2 --> S2_end["gameStage=3"]
|
||
Stage3 --> S3_end["gameStage=4"]
|
||
Stage4 --> S4_end["gameStage=5"]
|
||
Stage5 --> S5_end["gameStage=6"]
|
||
Stage6 --> S6_end["gameStage=7"]
|
||
Stage7 --> S7_end["gameStage=8"]
|
||
Stage8 --> S8_end["gameStage=999"]
|
||
S1_end --> Center
|
||
S2_end --> Center
|
||
S3_end --> Center
|
||
S4_end --> Center
|
||
S5_end --> Center
|
||
S6_end --> Center
|
||
S7_end --> Center
|
||
S8_end --> Center
|
||
end
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 变量初始化 (VarsInit)
|
||
|
||
| 变量 | 说明 |
|
||
|------|------|
|
||
| `$gameStage` | 当前流程阶段 (1-8, 100=测试, 999=结束) |
|
||
| `$TaskToDo` | 待完成任务数 |
|
||
| `$emoChecked` / `$memoryChecked` / `$logicChecked` / `$eyeChecked` / `$speakerChecked` / `$colorChecked` / `$expressionChecked` | 各模块首次检查标记 |
|
||
| `$emoDeepChecked` / `$expressionSentenceGet` / `$hasTimestamp` | 深入检查标记 |
|
||
| `$currentSocket` / `$PlugCount` / `$PlugAll` | 插线相关 |
|
||
| `$salesTurnIndex` | 销售模块转动轮次 (1-based) |
|
||
| `$knobFailCount` | 旋钮调节失败次数 |
|
||
|
||
---
|
||
|
||
## 3. Stage 1 - 诊室开场
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
Stage1 --> 开头对话
|
||
开头对话 -->|"set $gameStage=2"| Center
|
||
```
|
||
|
||
- 内容:火山说笑话、发热 → 去诊室
|
||
|
||
---
|
||
|
||
## 4. Stage 2 - 后脑检查(插线)
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage2["Stage2 入口"]
|
||
Stage2 --> Task["Task: 检查表达模块"]
|
||
Task --> 检查表达
|
||
|
||
subgraph 表达流程
|
||
检查表达 -->|"gameStage==2"| 表达完成["完成Task\nModuleHightLight Speak→color\nTask: 检查滤波器"]
|
||
表达完成 --> 检查销售模块
|
||
end
|
||
|
||
检查销售模块 -->|"gameStage==2"| 滤波器完成["波形分析\n发现锯齿波\nTask: 检查情绪模块"]
|
||
滤波器完成 --> 检查情绪
|
||
|
||
subgraph 情绪与波形
|
||
检查情绪 --> 条件{"speakerChecked &&\ncolorChecked"}
|
||
条件 -->|是| 查询情绪波形["对比预测波形与真实情绪\n发现对不上"]
|
||
条件 -->|否| 结束
|
||
查询情绪波形 --> 结束Stage2["结束Stage2\ngameStage=3"]
|
||
end
|
||
|
||
检查表达 -.->|其他插线| 检查记忆
|
||
检查表达 -.->|其他插线| 检查逻辑
|
||
检查表达 -.->|其他插线| 检查视觉
|
||
检查表达 -.->|其他插线| 检查情绪
|
||
```
|
||
|
||
**Stage2 插线入口(EventNode):**
|
||
|
||
| 插线节点 | jump 目标 |
|
||
|----------|-----------|
|
||
| EmoPlugIn | 检查情绪 |
|
||
| SpeakPlugIn | 检查表达 |
|
||
| LogicPlugIn | 检查逻辑 |
|
||
| SalePlugIn | 检查销售模块 |
|
||
| MemoryPlugIn | 检查记忆 |
|
||
| EyePlugIn | 检查视觉 |
|
||
|
||
**关键顺序(gameStage==2):** 表达 → 滤波器 → 情绪(情绪需 speaker+color 都检查过才会对比波形 → 结束Stage2)
|
||
|
||
---
|
||
|
||
## 5. Stage 3 - 滤波器深入(步进 + 销售模块)
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage3["Stage3 入口\nTask: 检查滤波器处理链路"]
|
||
Stage3 --> 步进查看模式
|
||
|
||
subgraph 步进流程["步进流程(Yarn 仅显示情绪输入,其余由转动监听驱动)"]
|
||
步进查看模式 --> 步进_情绪输入["步进_情绪输入\n显示原始情绪波形\n转动发条来检测吧"]
|
||
步进_情绪输入 -->|"等待 SalesManager\n转动完成事件"| 销售模块转动完成
|
||
end
|
||
|
||
subgraph EventNode_销售["销售模块转动完成(EventNode 仅桥接,分发到 Stage3)"]
|
||
销售模块转动完成["销售模块转动完成"]
|
||
销售模块转动完成 -->|salesTurnIndex==1| 语义合成["销售转动_语义合成"]
|
||
销售模块转动完成 -->|salesTurnIndex==2| 语言审查["销售转动_语言审查"]
|
||
销售模块转动完成 -->|salesTurnIndex==3| 异常检测["销售转动_异常检测"]
|
||
end
|
||
|
||
subgraph 安装日志与旋钮["调取安装日志 → 解锁旋钮 → 监听旋钮"]
|
||
异常检测 --> 查询异常进程["查询异常进程\n情绪修改器组件"]
|
||
查询异常进程 --> 查看安装日志["查看安装日志\n3年无复查"]
|
||
查看安装日志 -->|"unlock_knob\n节点结束,等待旋钮"| 等待旋钮["KnobController 监听"]
|
||
等待旋钮 -->|"用户转动超阈值"| 处理器单次调节失败
|
||
end
|
||
|
||
subgraph EventNode_旋钮["旋钮失败时 KnobController 跳入(EventNode 仅桥接)"]
|
||
处理器单次调节失败["处理器单次调节失败\n<<jump 旋钮调节失败>>"]
|
||
处理器单次调节失败 --> 旋钮调节失败
|
||
end
|
||
|
||
subgraph 旋钮调节失败_Stage3["旋钮调节失败 (Stage3)"]
|
||
旋钮调节失败["旋钮调节失败"]
|
||
旋钮调节失败 -->|knobFailCount==1| 重试["再试一次\nreset_knob"]
|
||
旋钮调节失败 -->|knobFailCount>=2| 最终失败["lock_knob + 叙事\njump 结束Stage3"]
|
||
end
|
||
```
|
||
|
||
**Stage3 关键流程:**
|
||
1. 步进_情绪输入 结束 → 对话暂停,等待玩家转动发条
|
||
2. **转1**:销售模块转动完成 → 语义合成完成
|
||
3. **转2**:销售模块转动完成 → 语言审查通过
|
||
4. **转3**:销售模块转动完成 → 检测异常 → 进入处理器 → lock_knob → 查询异常进程 → 查看安装日志 → unlock_knob → 等待旋钮
|
||
5. 旋钮失败 → 处理器单次调节失败(1次重试)→ 处理器功率调节失败 → 结束Stage3
|
||
|
||
---
|
||
|
||
## 6. Stage 4 - 表达模块 RAM
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage4["Stage4 入口\nTask: 检查表达模块"]
|
||
Stage4 --> 检查表达
|
||
|
||
检查表达 -->|"gameStage==4"| RAM发现["发现未释放log\nRAM溢出"]
|
||
RAM发现 --> 结束Stage4["结束Stage4\ngameStage=5"]
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Stage 5 - 诊室对话
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage5["Stage5 入口"]
|
||
Stage5 --> 诊室对话["诊室对话\n火山承认+达成共识"]
|
||
诊室对话 --> 结束Stage5["结束Stage5\ngameStage=6"]
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Stage 6 - 释放 RAM
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage6["Stage6 入口\nTask: 释放表达模块RAM"]
|
||
Stage6 --> 检查表达
|
||
|
||
检查表达 -->|"gameStage==6"| 释放log["释放log\n自动释放 log1/2/3"]
|
||
释放log --> 手动释放["遇到被干扰log\n进入手动释放"]
|
||
手动释放 --> 手动释放log["手动释放log\nswitch Expression"]
|
||
手动释放log --> LOG1["LOG1: 哈哈|嘿嘿|呵呵 → 我很害怕"]
|
||
LOG1 --> LOG1梳理完成
|
||
LOG1梳理完成 --> LOG2["LOG2: ... → 她都是为了我"]
|
||
LOG2 --> LOG2梳理完成
|
||
LOG2梳理完成 --> LOG3["LOG3: ... → 我不想再继续逃了"]
|
||
LOG3 --> LOG疏通全部完成
|
||
LOG疏通全部完成 --> 结束Stage6["结束Stage6\ngameStage=7"]
|
||
```
|
||
|
||
---
|
||
|
||
## 9. Stage 7 - 最终检查
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage7["Stage7 入口\nTaskToDo=2"]
|
||
Stage7 --> Task1["Task: 检查表达模块"]
|
||
Stage7 --> Task2["Task: 检查滤波器"]
|
||
|
||
检查表达 -->|"gameStage==7"| 表达OK["完成Task\nTaskToDo--"]
|
||
检查销售模块 -->|"gameStage==7"| 滤波器OK["完成Task\nTaskToDo--"]
|
||
|
||
表达OK --> 判断1{"TaskToDo==0?"}
|
||
滤波器OK --> 判断1
|
||
判断1 -->|是| 结束Stage7["结束Stage7\ngameStage=8"]
|
||
判断1 -->|否| 继续["继续等待另一项完成"]
|
||
```
|
||
|
||
---
|
||
|
||
## 10. Stage 8 - 结束对话
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
Stage8["Stage8 入口"]
|
||
Stage8 --> 结束对话["结束对话\n火山说出真话"]
|
||
结束对话 -->|"gameStage=999"| Center
|
||
```
|
||
|
||
---
|
||
|
||
## 11. EventNode 与波形节点
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph 插线入口
|
||
EmoPlugIn
|
||
SpeakPlugIn
|
||
LogicPlugIn
|
||
SalePlugIn
|
||
MemoryPlugIn
|
||
EyePlugIn
|
||
end
|
||
|
||
subgraph 销售相关
|
||
销售模块转动完成
|
||
处理器单次调节失败
|
||
处理器功率调节失败
|
||
end
|
||
|
||
subgraph 波形
|
||
波形_显示并连接
|
||
波形_显示情绪
|
||
波形_显示滤波器输出
|
||
波形_隐藏
|
||
end
|
||
```
|
||
|
||
---
|
||
|
||
## 12. Debug 检查清单
|
||
|
||
| 现象 | 可能原因 | 检查点 |
|
||
|------|----------|--------|
|
||
| 流程卡住 | `$gameStage` 未正确更新 | Center 各 Stage 分支 |
|
||
| Stage2 不推进 | 表达/滤波器/情绪未按顺序完成 | 检查表达→滤波器→情绪,以及 speakerChecked+colorChecked |
|
||
| Stage3 步进不走 | 未从滤波器进入步进;或 SalesManager 未触发转动完成 | 检查销售模块 gameStage==3 的「进入步进查看模式」;检查 totalTurns≥3、crankCompleteNode |
|
||
| 销售模块无反馈 | SalesManager/KnobController 未跳转 | EventNode: 销售模块转动完成、处理器单次调节失败 |
|
||
| Stage4 无法进 | 需从 Stage3 结束 或 处理器功率调节失败 | 结束Stage3 与 处理器功率调节失败 都 `<<jump 结束Stage3>>` |
|
||
| Stage6 手动释放卡住 | Expression 模块/start_expression | start_expression 完成节点 |
|
||
| Stage7 TaskToDo 不清零 | 表达/滤波器 有一项未完成 | 两项都需 `complete_task` 且 `TaskToDo--` |
|
||
| 测试模式 | gameStage=100 | 测试 节点直接进入 Sales+EmotionWave |
|
||
|
||
---
|
||
|
||
## 13. 文件与节点索引
|
||
|
||
| 文件 | 节点 |
|
||
|------|------|
|
||
| Center.yarn | Start, VarsInit, Center, 测试 |
|
||
| EventNode.yarn | EmoPlugIn, SpeakPlugIn, LogicPlugIn, SalePlugIn, MemoryPlugIn, EyePlugIn, 销售模块转动完成, 处理器单次调节失败(桥接), 波形_* |
|
||
| Stage1.yarn | Stage1, 开头对话 |
|
||
| Stage2.yarn | Stage2, 检查表达, 检查销售模块, 检查情绪, 检查记忆, 检查逻辑, 检查视觉, 结束Stage2 |
|
||
| Stage3.yarn | Stage3, 步进查看模式, 步进_情绪输入, 销售转动_语义合成/语言审查/异常检测, 查询异常进程, 查看安装日志, 旋钮调节失败, 结束Stage3 |
|
||
| Stage4.yarn | Stage4, 结束Stage4 |
|
||
| Stage5.yarn | Stage5, 结束Stage5 |
|
||
| Stage6.yarn | Stage6, 手动释放log, LOG1/2/3梳理完成, LOG疏通全部完成, 结束Stage6 |
|
||
| Stage7.yarn | Stage7, 结束Stage7 |
|
||
| Stage8.yarn | Stage8, 结束对话 |
|