Files
aibis-dream/Docs/选项已探索追踪设计讨论.md
T

154 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 选项已探索追踪说明
> **状态**:方案已定,运行时已实现(内存态)
> **读者**:剧情策划、关卡策划、写 Yarn 的同学
> **参考脚本**[FP_Day1_sleep.yarn](../Assets/Yarn/FP/FP_Day1_sleep/FP_Day1_sleep.yarn)
## 1. 用途
用于可反复探索的选项列表。玩家点过某个选项后,该选项会显示为**已探索**;如果相关剧情变量变化,选项可以重新变回未探索,提示玩家这里可能有新内容。
## 2. 基本规则
| 写法 | 含义 |
| --- | --- |
| `tags: hub` / `tags: detour` | 节点内选项默认追踪 |
| `tags: linear` / 无 tags | 节点内选项默认不追踪 |
| `#deps:变量名` | 变量变化后,取消该选项的已探索状态 |
| `#track` | 强制追踪 |
| `#notrack` | 强制不追踪,适合“返回 / 走开 / 下楼”等操作按钮 |
`#deps:` 里的变量名不写 `$`,多个变量用英文逗号分隔:
```yarn
->女孩 #deps:ppStage,scj
```
`<<if>>` 只控制选项是否显示;`#deps:` 才表示“变量变化后这里有新内容”。
```yarn
->地上 <<if $gameStage < 2>> #deps:gameStage
<<detour 检查地上>>
<<jump 天台>>
```
优先级:
```text
#notrack > #track / #deps:... > 节点 tags 默认规则
```
## 3. 常见写法
### 3.1 普通探索菜单
`hub` 里的选项默认会追踪,不需要额外写标记。
```yarn
title: 教室
tags: hub
---
->观察
<<detour 观察>>
<<jump 教室>>
->趴回去再睡会
<<detour 趴回去再睡会>>
<<jump 教室>>
->离开教室 #notrack
<<jump 走廊>>
===
```
### 3.2 内容随剧情阶段变化
如果选项内容会随变量变化,就写 `#deps:`
```yarn
title: 走廊
tags: hub
---
->女孩 #deps:ppStage,scj
<<detour 女孩>>
<<jump 走廊>>
->窗外 <<if $gameStage == 0>>
<<detour 走廊窗外>>
<<jump 走廊>>
===
```
这里“女孩”会在 `$ppStage``$scj` 变化后重新变成未探索;“窗外”只是受条件控制显示,不会因为 `$gameStage` 变化自动刷新已探索状态。
### 3.3 父入口和子选项
父入口不会自动汇总子选项。进入过“女孩”只代表外层“女孩”已探索,不代表里面的“交谈”也已探索。
```yarn
title: 走廊
tags: hub
---
->女孩 #deps:ppStage,scj
<<detour 女孩>>
<<jump 走廊>>
===
title: 女孩
tags: detour
---
->交谈 #deps:ppStage,scj
<<detour 女孩_交谈>>
->走开 #notrack
===
```
### 3.4 同名选项的不同分支
同一个选项文字在不同条件下可以代表不同内容。内容会变的分支写 `#deps:` 即可。
```yarn
title: 天文台
tags: hub
---
->往里看 <<if $wyjStage == 3>>
<<jump 海边>>
->往里看 <<if $wyjStage != 3>> #deps:wyjStage
<<detour 往里看_还不能进入>>
<<jump 天文台>>
===
```
### 3.5 线性剧情里的选择
`linear` 默认不追踪,适合一次性选择。
```yarn
title: 教室苏醒
tags: linear
---
->梦到机器人
me: 我梦见我是一个机器人......
->梦到我是医生
me: 我梦见我成了一个医生......
->不记得了
me: 我不记得梦的内容了。
<<jump 教室>>
===
```
如果线性节点里某个选项确实需要标记,可以单独加 `#track`
## 4. 写作检查
- 可反复返回的探索列表,优先放在 `hub``detour`
- 普通探索选项不用额外标记。
- 内容会随变量变化的选项,加 `#deps:变量名`
- `#deps:` 只写真正会让内容变新的变量,不要把所有相关变量都塞进去。
- `<<if>>` 管显示,`#deps:` 管刷新已探索状态。
- 纯操作按钮优先加 `#notrack`
- 父入口和子选项各自独立。
- 不要手写或复制 `#line:` 标签;行标签交给 Yarn / 本地化流程生成和维护。
## 5. 运行时补充
本期已探索状态只保存在内存里,不进存档。开始新的 Yarn project、回主界面、执行 `<<NextYarn>>` 或退出游戏时会清空。同一段探索内在 `hub` / `detour` 之间来回跳转不会清空。