ティアキンは“returnさせない設計”でできている


> 「祠ひとつだけ」と言ったな？ あれは嘘だ。

---

### はじめに

祠を一つクリアして終わる予定だったんです。
でも素材を拾って、道具を作って、島が見えたから飛んでみて、祠があったから入って…。
そうして3時間が溶けていました。

この現象、プレイヤーの意志の弱さではなく、**設計の強さ**に起因します。
本記事では、**ティアキンの“returnできない構造”** を、設計・実装視点で解剖します。

---

## プレイヤーは何に巻き込まれているのか？

### 1. スタックベースの問い再帰構造

ティアキンにおける「やること」は、命令ではなく**問いとして自然発生**します。

```ts
function tick(player: Player) {
  if (player.seesSomethingWeird()) {
    player.stack.push(() => investigate());
  }

  if (player.picksUp(Material.MysteriousLeaf)) {
    player.stack.push(() => tryFuse(Material.MysteriousLeaf));
  }

  if (player.hears(Sound.ShimmeringBell)) {
    player.stack.push(() => glideTowardSound());
  }

  player.stack.executeNext(); // ← returnが消える瞬間
}
```

これが1回のtickごとに走っていると思えばいい。
しかも `stack.push()` される内容は**小さく、軽く、気になる**ものばかり。

---

### 2. タスク設計が再帰可能

プレイヤーの行動は**すべて次の問いを返すように設計**されています。
言い換えれば、**一つの行動がreturnではなく、再帰呼び出しになる**。

```ts
function investigate() {
  const discovery = scanEnvironment();

  if (discovery.type === "shrine") {
    return enterShrine();
  }

  if (discovery.type === "material") {
    return tryFuse(discovery);
  }

  if (discovery.type === "npc") {
    return startSideQuest(discovery);
  }

  return explore(); // ← 謎の再帰構造
}
```

つまり、プレイヤーが「やめよう」と決断するには、**stackが空かつ新しい問いが見えない状態**が必要。
でも、ティアキンにはそれがほとんど訪れない。

---

### 3. システム側の“快適トラップ”

プレイヤーのスタック実行環境は、**ストレスが最小化されるよう設計**されています。

```ts
const ExecutionContext = {
  loadingTime: nearZero,
  visualCueDensity: high,
  interactionFriction: low,
  ambientCuriosityLevel: sustained,
};
```

この実行コンテキストの中で `stack.executeNext()` が走り続ける。
**プレイヤーはタスクをこなしているつもりで、設計に巻き込まれている。**

---

## 設計的な要点まとめ

| 設計要素     | 実装メタファー                    | 効果                   |
| -------- | -------------------------- | -------------------- |
| 自発的動機    | `player.stack.push()`の自然発火 | “やらされ感”の排除           |
| 粒度の非対称構造 | 小〜特大サイズの非同期イベント            | プレイのスキマに“適当な何か”が常に入る |
| 再帰的連鎖設計  | `return explore()`         | 明示的な中断点が存在しない        |
| 快適な実行文脈  | `ExecutionContext`の最適化     | 誘導されているのに快に感じる       |

---

## 応用アイデア（マジで使えるやつ）

### 1. 学習アプリ

```ts
function onUserSolvesProblem() {
  suggestNext(() => {
    if (userCurious()) {
      push(similarConcept());
    } else {
      push("didYouKnow"Trivia());
    }
  });
}
```

→ 明示的に「次へ」と言わず、**自然な知的スタックを促す**

---

### 2. プロダクトツアー設計

```ts
function onFeatureDiscovery() {
  if (user.engaged) {
    stack.push(() => tryAdvancedUsage());
  }
}
```

→ スキップ可能に見せて、**興味だけで操作が進むUI導線**

---

### 3. メンタルUX設計（瞑想・日記系）

```ts
function afterUserWritesThought() {
  suggest("whatDoesThisConnectTo?");
}
```

→ 思考の“return”を遅らせ、**問いの連鎖によって内省を深める**

---

## 結論：ティアキンは人間イベントループを設計している

ティアキンは「プレイヤーの選択の自由」ではなく、**スタックと問いと快の連鎖**によって、
**“returnを書かせないUX設計”** を成立させている。

この構造は、**フロー状態・学習設計・情報探索**などにも応用可能。
要するに、「やめどき」が見えないというUX設計は、
**実装可能だし、応用可能だし、実際楽しい。**

---

**next:**

* `How Zelda Fused My Brain`
* `ティアキンの祠に学ぶ、ミニマルな関数設計`
* `クラフト＝自己帰属性のUXモデル`（予定）

---

## 注釈

この記事は、QSAループを用いた「ティアキン ゲームレビュー」生成実験のその2です。

- ゲームレビューその1：[やめようと思ったそのときに、やめられなかった](https://masatler.hatenablog.com/entry/2025/05/16/212703)
- ゲームレビューその3：[時間が溶ける設計について]()
- QSAループを用いた「ティアキン ゲームレビュー」生成実験：
    - [QSAループでLLMが覚醒！「ゼルダの伝説TotK」レビュー記事で体験する思考の劇的進化](https://masatler.hatenablog.com/entry/2025/05/16/212507)