> For the complete documentation index, see [llms.txt](https://rplaylive.gitbook.io/creatorguide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rplaylive.gitbook.io/creatorguide/zh-tw/storychat/storychat/samples/sample-ava.md).

# 2. 拆解 AVA

這是以**畫布模式**製作的範例，介紹數值升降並依數值改變故事的結構。

完成本章後，您將能夠：

* 將故事節點用作**故事階段**，不只作為起點
* 建立變數、以更新規則填入數值、透過觸發器切換場景
* 使用狀態視窗向使用者顯示數值
* 將成就連到觸發器，自動發放
* 分組圖片標籤，告訴 AI **何時使用哪些標籤**

## 結構一覽

```
                    ┌──── [工作模式] ────┐
[起始情境]* ────────┤                    ├──（進度 100 以上）──> [結局]
                    └──── [親近模式] ────┘                       └─> [成就] 完成實驗

四個故事皆連接：[人物] AVA · [使用者] · [巨集提示詞] · [更新規則] · [狀態視窗]
```

看似比第 1 章大很多，但**新學習的只有一組變數**。

## 故事節點不只有起點用途

共有四個故事，卻**只有一個起始節點**，另外三個是故事轉換的**階段**。

| 故事   | 起始節點 | 開場訊息  |
| ---- | ---- | ----- |
| 起始情境 | ✅    | 有     |
| 工作模式 |      | **無** |
| 親近模式 |      | **無** |
| 結局   |      | 無     |

{% hint style="info" %}
**用於階段切換的故事節點，不需要開場訊息。** 開場訊息是使用者初次開始對話時看到的場景，中途切換的節點沒有此欄位。
{% endhint %}

`重要資訊`也與第 1 章不同，四個節點**並非完全相同的副本**，而是保留共通規則，只替換「目前情境」。結局節點甚至停止輸出狀態視窗，改為成績單與收尾敘述。

{% hint style="info" %}
這是**相同人物與世界觀，卻能依階段以不同方式運作的方法**。增加故事節點來區分階段，並只在各節點的`重要資訊`修改該階段規則。
{% endhint %}

## 變數

只有三個。

| 名稱              | 類型 | 初始值        | 用途              |
| --------------- | -- | ---------- | --------------- |
| `현재_모드`（目前模式）   | 文字 | `대기중`（待命中） | 判斷工作或親近模式       |
| `현재_프리셋`（目前預設）  | 文字 | `미설정`（未設定） | 性格預設            |
| `테스트_진행도`（測試進度） | 數字 | `0`        | 從 0 增至 100 的計量條 |

{% hint style="info" %}
**變數不限於數字。** 將「工作模式」等詞語放入文字變數，就能讓觸發器依該詞語區分分支。

此範例的分支由**文字變數**決定，而非數字。
{% endhint %}

{% hint style="danger" %}
**變數重新命名後，可能失效卻沒有提示。**

觸發器條件、更新規則正文、狀態視窗顯示，都依**名稱**查找變數。更名時，三處必須一起修改；遺漏任何一處，都可能不顯示錯誤卻無法運作。

更名後，請一併修改相連的更新節點、觸發器節點、故事節點。
{% endhint %}

## 更新規則 — 讀取回覆並抄入數值

此範例只有**一個**更新規則，重點如下。

> 在每回合回覆末尾的狀態區塊，找到 `[AVA]` 部分，將其中數值**原樣抄入**同名變數。**不要重新計算。**

也明確要求「不要抄入沒有對應變數、僅供顯示的欄位」。

### 如何運作

不了解這個結構，就無法撰寫更新規則。

```
① 產生回覆的 AI 撰寫文字
   — 依重要資訊指定格式，在回覆末尾附上狀態視窗
              ↓
② 回合結束後，另行呼叫一次數值更新
   — 輸入最近對話、本次回覆、目前變數值、更新規則正文
              ↓
③ 將結果存入變數
              ↓
④ 下一回合從已反映該值的狀態開始
```

{% hint style="warning" %}
\*\*更新規則正文不會給撰寫回覆的 AI 看，\*\*而是第 ② 階段專用的指令。

因此，以下兩件事必須寫在**不同位置**。

* 要求**輸出狀態視窗** → 故事節點`重要資訊`
* 將數值**抄入變數** → 更新規則

此範例正是如此設計，只寫一邊無法運作。
{% endhint %}

{% hint style="info" %}
更新規則內引用變數時，使用 **`{{var_변수명}}`（請以實際變數名稱取代韓文預留文字）** 格式。若完全未提到相連變數，節點會顯示警告。

每個故事可附加 **7 個**更新規則，但此範例**一個規則就處理全部三個變數**，不必每個變數各建規則。
{% endhint %}

## 觸發器 — 符合條件就切換場景

三個觸發器的實際設定如下。

| 觸發器    | 監看故事        | 條件                                 | 目的地   |
| ------ | ----------- | ---------------------------------- | ----- |
| 切換工作模式 | 起始情境 · 親近模式 | 進度 **99 以下**，**且**模式＝`업무 모드`（工作模式） | 工作模式  |
| 切換親近模式 | 起始情境 · 工作模式 | 進度 **99 以下**，**且**模式＝`친근 모드`（親近模式） | 親近模式  |
| 結局     | 工作模式 · 親近模式 | 進度 **100 以上**                      | 結局＋成就 |

觸發器由三部分組成。

1. **監看範圍** — 將故事節點連到觸發器，代表「處於此場景時檢查條件」
2. **條件** — 連接變數後，**各變數會自動產生條件欄位**，只需填值
3. **目的地** — 將觸發器輸出連到故事、成就、預設備註等

{% hint style="info" %}

* `以上`**包含**該值（100 以上 → 100 時觸發）
* `以下`也一樣（99 以下 → 99 時觸發）
* 多個條件欄位必須**全部符合**才觸發。沒有「任一符合」，需要時請建立兩個觸發器
  {% endhint %}

### 此範例最重要的學習重點

為什麼模式切換觸發器要加上 **`進度 99 以下`**？

這是讓進度達 100 時，**模式切換觸發器自行退出**，該回合才只會留下結局觸發器。

沒有這道防護，應進入結局的回合，可能先被模式切換選中，**延後結局**。

{% hint style="success" %}
**有結束條件時，請為一般觸發器加上「低於結束門檻」的防護條件。**

有多個觸發器的結構，請記住這種模式。避免條件重疊是設計核心。
{% endhint %}

{% hint style="danger" %}
**中斷變數連接後，已填寫的條件值會直接消失，不會要求確認。** 變更變數類型也會重設。

整理連線前，請另外記下觸發器條件值。
{% endhint %}

## 狀態視窗

一個狀態視窗節點連到全部四個故事，使用基本模式，顯示三列內容。

| 標籤   | 顯示的值      |
| ---- | --------- |
| 目前模式 | `현재_모드`   |
| 性格預設 | `현재_프리셋`  |
| 測試進度 | `테스트_진행도` |

{% hint style="info" %}
**顯示標籤與變數名稱彼此獨立。** 變數叫 `현재_프리셋`，畫面可顯示為「性格預設」，不必直接露出變數名稱。

也不必顯示全部變數，請**只挑選要顯示的項目**並安排順序。

每個故事**只能附加一個**狀態視窗。
{% endhint %}

## 成就

只有一項`完成實驗`。這裡要學的是**兩件事彼此分開**。

| 目的         | 方式           |
| ---------- | ------------ |
| **顯示在清單中** | 將成就節點連到故事    |
| **實際發放**   | 將觸發器輸出連到成就節點 |

此範例將同一個結局觸發器的輸出**同時連到結局故事與成就**，不必再寫一次條件式，**只靠連線**就實作「到達結局＝成就」。

{% hint style="info" %}
不必提供獎勵點數，此範例為 0。

若要提供獎勵，必須先在作品設定開啟**獎勵池**，而且獎勵**僅在公開作品發放**。
{% endhint %}

## 依狀態拆分圖片

共有五個圖片節點，相較第 1 章的一個，是很大的進展。

| 圖片組    | 連接位置        | 標籤範例                                |
| ------ | ----------- | ----------------------------------- |
| 西裝情緒   | 人物的**情緒**   | `무표정+정장`（面無表情＋西裝）、`미소+정장`（微笑＋西裝）    |
| 機器女僕情緒 | 人物的**情緒**   | `웃음+로봇메이드`（大笑＋機器女僕）                 |
| 各模式情境  | 人物的**情境**   | `대화_업무모드`（工作模式對話）、`커피_친근모드`（親近模式咖啡） |
| 機器女僕情境 | 人物的**情境**   | `대화_로봇메이드`（機器女僕對話）                  |
| 結局背景   | **結局故事的背景** | `엔딩1_정식발매`（結局 1 正式發售）               |

這裡有兩個新重點。

1. **同一位置可連接多組圖片。** 依服裝或狀態拆分，方便管理，實際使用哪組由標籤決定
2. **圖片也可以連到故事，而非人物。** 結局背景只用於結局場景，因此沒有綁定人物

### 標籤分類 — 此範例的精華

可將標籤分組並加上**說明**。

| 分類   | 說明                 |
| ---- | ------------------ |
| 工作模式 | 「AVA 處於『工作模式』時可使用」 |
| 親近模式 | 「AVA 處於『親近模式』時可使用」 |
| 機器女僕 | 「AVA 是『機器女僕』時可使用」  |
| 其他   | 「必要時可使用」           |
| 結局   | 「僅在結局段落使用」         |

{% hint style="success" %}
**這不是整理用備忘，而是實際傳送給 AI 的使用指引。**

標籤名稱難以說明使用時機時，**分類說明就能補足**。圖片選錯時，請在修改標籤名稱前，先調整分類說明。

說明為必填，須保持簡短（25 Token 以內）。
{% endhint %}

## 動手試試

1. **新增一個變數** — 建立 `커피_횟수`（咖啡次數，數字、0），分別在 ① 故事`重要資訊`的狀態格式加一行、② 更新規則加一句抄寫指令、③ 狀態視窗顯示加一行。親自確認**三處都要修改才會運作**
2. **降低條件** — 將結局條件由 100 改為 30，快速走到結局
3. **移除防護條件實驗** — 從模式切換觸發器移除`進度 99 以下`，觀察進度達 100 的回合會發生什麼。確認後請還原
4. **調整狀態視窗** — 移除三列中的一列，或修改顯示標籤
5. **建立第三種模式** — 新增 `현재_모드` 為「休息模式」時前往的故事與觸發器，也要在`重要資訊`加入該模式說明
6. **修改分類說明** — 改變說明文字，觀察圖片選擇傾向是否不同

## 下一章

看看人物變多、結構擴大時有哪些差異。→ [3. 拆解 ORENTECH](/creatorguide/zh-tw/storychat/storychat/samples/sample-orentech.md)

***
