ロジック設定パターン集 (Tips)
import { Tabs, TabItem } from ‘@astrojs/starlight/components’;
シナリオ制作でよくある「やりたいこと」別に、条件判定 (Condition) と アクション を使った実装例を紹介します。
1. シーンの出し分け・制限
Section titled “1. シーンの出し分け・制限”シーンの出現条件を工夫するパターンです。
一度きりのイベント (Once-only)
Section titled “一度きりのイベント (Once-only)”「宝箱を開ける」など、二度目は表示したくないイベントです。
* 「条件を追加」→「**既読/未読**」* 「**未読 (Not Seen)**」を選択* 対象シーン: **自分自身のシーンID** を選択既読スキップ (Read Skip)
Section titled “既読スキップ (Read Skip)”「初回は詳しい説明をするが、2回目は省略する」パターンです。
**シーンA (詳細版)*** 開始条件: 「**シーンAをまだ見ていない**」 (hasNotSeen: scene_A)* 完了アクション: 次のシーンへ
**シーンB (簡易版)*** 開始条件: 「**シーンAを見たことがある**」 (hasSeen: scene_A)* 完了アクション: 次のシーンへ# 詳細版- id: scene_long title: "詳しい説明" dialogue: - text: "これは長い説明です..." on_complete: next_scene: scene_next
# 省略版- id: scene_short title: "省略版" dialogue: - text: "はい、例の件ですね。" on_complete: next_scene: scene_next2. 進行管理・フラグ応用
Section titled “2. 進行管理・フラグ応用”「変数」や「複数条件」を使ったパターンです。
複数条件での解放 (Multi-condition)
Section titled “複数条件での解放 (Multi-condition)”「3人の村人全員と話すと、村長が出てくる」パターンです。
1. 条件追加 → 既読 → 「村人A」2. 条件追加 → 既読 → 「村人B」3. 条件追加 → 既読 → 「村人C」
※デフォルトで「すべての条件を満たす (AND)」として扱われます。スタンプラリー (Stamp Rally)
Section titled “スタンプラリー (Stamp Rally)”「特定のスポットを3箇所以上回る」パターンです。 変数をカウンターとして使います。
2. **景品交換所のシーン**: * 開始条件: 「ポイント」 * 変数 `stamp_count` が `3` `以上`# ゴール- id: scene_goal condition: points: [{ name: "stamp_count", operator: ">=", value: 3 }]3. 高度なギミック
Section titled “3. 高度なギミック”GPSや時間を活用した、少し特殊なパターンです。
場所の解放 (Location Unlock)
Section titled “場所の解放 (Location Unlock)”「古地図を手に入れたら、地図上に隠しダンジョンが表示される」パターンです。
場所データ (locations) 側の設定を使用します。
1. 隠し場所にしたいロケーションを選ぶ。2. 「**公開条件 (Reveal Condition)**」を設定する。3. 条件で「**既読**」→「古地図入手シーン」を指定する。
これ設定すると、条件を満たすまでは地図上にマーカー自体が表示されなくなります。(※「隠しスポット(Secret)」機能とは異なり、マーカーそのものを隠します) # この条件を満たすまで地図に表示されない reveal_condition: has_seen: ["scene_get_map"]
# ※注意: 手動で記述する場合、空の項目は省略可能です(例: actions: [] は不要)。時限タイマー (Timer)
Section titled “時限タイマー (Timer)”「時限爆弾のスイッチを入れてから、3分後に爆発する」パターンです。 「経過時間条件」を使用します。
1. **時間・期間条件** を開く。2. 「**経過時間 (Timer)**」を設定。3. **トリガー**: 「スイッチ起動シーン」4. **最小時間**: `3` 分
これで、スイッチ起動から3分経過すると、現在地に「爆発」シーンが出現します。(※プレイヤーがその場所を開く必要がありますが、強制イベントとして実装される場合もあります)4. エンディング分岐
Section titled “4. エンディング分岐”称号・マルチエンディング
Section titled “称号・マルチエンディング”クリア実績を分けたり、エンディング後に飛ばすURLを変えたりする方法です。
1. **アクション1 (完全クリア)** * 条件: 変数 `score` >= 100 * 実行: 「**ゲームクリア**」 * 称号: 「伝説の探偵」 * 完了後: 「URLを開く」 (特典サイトへ)
2. **アクション2 (通常クリア)** * 条件: なし (その他すべて) * 実行: 「**ゲームクリア**」 * 称号: 「見習い探偵」 * 完了後: 「トップに戻る」 # 通常クリア - do: - type: game_clear game_clear: label: "見習い探偵" next_action: back_to_top