Unity

【Unity】Game Creator 2 Quests(クエスト・ミッション管理)完全解説

【Unity】Game Creator 2 Quests(クエスト・ミッション管理)完全解説

当サイトを閲覧いただきありがとうございます。

本記事では、Game Creator 2のモジュールのひとつである「Quests」(クエスト・ミッション管理)について詳しく解説します。

Questsはメインクエスト/サイドクエスト/アチーブメントといったゲーム進行の管理を、Task階層・状態機械・ミニマップ/コンパス/インジケータで一気通貫に扱える拡張アセットです。

公式ドキュメント:Game Creator 2 Documentation


Questsとは

Game Creator 2のモジュールとして提供されるクエスト管理システムです。

主な特徴:

  • 「Quest(クエスト)」は複数の「Task(タスク)」を持ち、すべて(あるいは一部)のTask完了でクエスト完了になる
  • Taskは子Task(Subtask)を持てる再帰的な階層構造
  • プレイヤー側は「Journal(日誌)」コンポーネントで自分の受注中/完了済みクエストを保持
  • 世界に置いた「Points of Interest」(POI)は、関連するTaskがActiveな間だけ自動で表示される
  • 標準UIにMinimap/Compass/Indicators/Quest List/Quest Detailが同梱

導入

  1. Asset StoreからQuestsモジュールを購入
  2. Window > Package Manager からインストール
  3. Game Creator > Install... のサンプル:
    • Examples:シナリオ別シーン集
    • UI:Minimap/Compass/Indicators/Quest List/Journal画面などのUIバンドル
  4. ExamplesはUI/スキン類に依存(自動解決)
  5. インストール先:Assets/Plugins/GameCreator/Installs/Quests.Examples/

Questアセット

作成方法

Project右クリック → Create > Game Creator > Quests > Quest で作成します。

3つのセクション

(a) 一般情報(トップ)

  • Name / Description / Color / Sprite:UI表示用
  • Type
    • Normal:通常クエスト
    • Hidden:UI非表示クエスト。アチーブメントや内部トラッキングに利用
  • Sorting Order:UIリストでの表示優先度(値が大きいほど上)
  • ID:一意識別子。衝突時は Regenerate ボタンで再生成可能

(b) Tasks Hierarchy(中央)

Taskの階層ツリーです。詳細は次節で解説します。

(c) Instructions(末尾)

Questの状態変化時に実行される命令リスト:

  • On Activate:QuestがActiveになったとき
  • On Complete:Questが完了したとき(報酬付与・通知表示に定石)
  • On Abandon:Questが放棄されたとき
  • On Fail:Questが失敗したとき
  • On Deactivate:QuestがInactiveになったとき

Questの状態遷移

  • 初期状態:Inactive
  • Quest ActivateActive化。最初のRoot Taskも自動でActiveになり、そのSubtasksも連鎖Active
  • Active → Completed / Abandoned / Failed / Inactive
  • Root Taskがすべて順次完了 → Questが自動でCompleted
  • Root TaskのどれかがAbandoned / Failed → Questも同じ状態に遷移
  • Quest Deactivate でいつでもInactiveに戻せる

分割のすすめ

1 Quest内にTaskを大量に詰め込むと管理が難しくなるため、メインストーリーは複数Questに分割し、前QuestのOn Completeで次Questを Activateするパターンが推奨されています。


Tasks(タスク階層)

Taskの作成

Tasks Hierarchyパネル左上の2ボタン:

  • 左ボタン:現選択の**兄弟(Sibling)**として新規Task
  • 右ボタン:現選択の**子(Child)**として新規Task

ドラッグ&ドロップで階層の並び替えが可能です。右上のボタンでTask Inspectorを開閉します。

Taskの状態(5種)

  • Inactive:初期状態
  • Active:実行中
  • Completed / Abandoned / Failed(まとめて “Finished” 状態)

状態遷移ルール

  • Inactive → Activeのみ
  • Active → Inactiveまたは任意のFinished状態
  • Finished → Inactiveのみ
  • 不正な遷移(Inactive → Completed等)は無視される(エラーにはならない)

Task Inspectorの構成

Settings

  • Completion Mode:Subtaskの完了判定方式(後述)
  • Is Hidden:UIのTask行を隠す
  • Name / Description / Color / Sprite:UI表示用

Instructions

Task状態変化時の命令リスト:

  • On Activate / On Complete / On Abandon / On Fail / On Deactivate

TaskのCounters(カウンタ付き自動完了)

TaskのUse Counterで、手動完了(Task Complete)に加え、数値カウンタによる自動完了を設定できます。

None(カウンタなし)

Task Complete 命令を明示的に呼ぶまで完了しません。標準モードです。

Value Counter

  • Count To:目標値
  • Task作成時は0。Task Value 命令で加算/減算/セットを行う
  • Count Toに到達した瞬間に自動でCompleted
  • 例:「猪を5匹倒す」でCount To = 5、撃破ごとに Task Value +1

Property Counter

  • Count To:目標値
  • Value From:動的プロパティ(Global Variable、Inventoryの所持数、Statsの値など)
  • Detect When:値の変化を検知するイベント(Global Variable変化、Bag変化など)
  • 他モジュールとシームレスに連動できる強力なモード
  • 例:「ポーションを10個集める」をInventoryの所持数に直結させる

TaskのSubtasks Completionモード

子Subtaskを持つTaskでは、「Completion Mode」が進行を決めます。

Sequence(順次)

  • Activate時に最初のSubtaskのみActive、他はInactive
  • あるSubtaskがCompletedになると次の兄弟がActiveに
  • 全Subtask完了で親TaskもCompleted
  • いずれかのSubtaskがAbandoned/Failedになると、親Taskも同状態に遷移
  • :「魔剣を探す → 依頼人に届ける」のような順序あり手順

Combination(組合せ)

  • Activate時にすべてのSubtaskをActive
  • 順不同で完了させ、全部終わったら親Task Completed
  • 失敗/放棄は親にも波及
  • :事件現場で「目撃者聴取/足跡調査/検視」を任意順に全部やる

Any(いずれか)

  • Activate時にすべてのSubtaskをActive
  • どれか1つがCompletedになった瞬間、親Task Completed。残りのSubtaskはActiveのまま残る
  • :「敵を殺す/見逃す」のような分岐選択

Manual(手動)

  • ActivateしてもSubtaskをActiveにしない
  • 完全に手動で状態を制御する上級者向けモード

Journal(日誌コンポーネント)

用途

プレイヤーが保持するクエスト状態を管理するコンポーネントです。通常Playerにアタッチしますが、どのGameObjectにも付けられます(複数キャラがそれぞれ日誌を持つことも可能)。

設定

  • Tracking ModeSingle Quest(1つだけ)/Multiple Quests(複数同時)
    • Singleならトラック追加時に既存のトラックを自動解除

デバッグ表示

Playモード中はInspectorが切り替わり、QuestとTaskの現在状態をリアルタイムで確認可能です。Quest/Task行はクリックで展開・収納できます。

セーブ/ロード

Journalコンポーネントと同じGameObjectに「Remember」を追加し、Journal memoryを登録すれば、QuestとTaskの状態が自動的にセーブ対象になります。


Tracking(追跡中クエスト)

用途

HUDは「トラック中のクエスト」を強調表示します。プレイヤーが「今は何を追いかけているか」を示す機能です。

操作

  • Quest Track Instruction:トラック開始(Activeクエスト限定)
  • Quest Untrack Instruction:単体解除
  • Quest Untrack All Instruction:すべて解除
  • UI側でトラックボタンを押したときも内部で同じ命令が発火される

Points of Interest(POI)

POIの種類

対象GameObjectに追加するコンポーネントです。

  • Task Point of Interest:特定Taskにひも付け。TaskがActiveのときだけ有効化
  • Custom Point of Interest:Taskに紐付かない固定POI(ショップ/セーブポイント/敵集団など)

表示用UIコンポーネント

Minimap UI/Compass UI/Indicators UI がシーン内のPOIを自動検出し、HUDに表示します。


User Interface

同梱UIテンプレがそのまま使えるように設計されています。

Quest List UI

Journalから Questを集めて並べるUIです。

フィルタ:

  • Show:状態フィルタ(Active/Inactive/Completed/Abandoned/Failedの組合せ)
  • Show Hidden:Hiddenクエストを含めるか
  • Hide Untracked:トラックしていないQuestを隠す
  • Filter:Global/Local List Variableに含まれるQuestのみ表示(アチーブ/特殊カテゴリ向け)

設定項目:

  • Content:Quest UI Prefabをインスタンス化するRectTransform(Layout Group必須)
  • Prefab:Quest UIコンポーネント付きPrefab

Quest UI

Listに並ぶ1件を表示するコンポーネントです。

  • Title / Description / Color / Sprite:自動反映
  • Style Graphics:Active/Inactive/Completed/Tracked等に応じた色変化
  • Active Elements:条件に応じて表示/非表示にするGameObject(例:Active if Trackingにブックマークアイコン)
  • Interactive Elements
    • Button Track:クリックでトラック切替
    • Select Quest:このQuestを選択状態にするボタン
  • Tasks Content + Task Prefab:このQuest配下のTaskを表示(要Task UI)

Task UI

Quest UIと類似の設計で、Task用に特化しています。

Selection UI

  • Selected Quest UI:現在選択中のQuestを表示(Quest UIと同じ構造)
  • Selected Task UI:現在選択中のTaskを表示
  • Quest/Taskが選択されると自動的にこれらが更新される

POI UI(Minimap/Compass/Indicators)

Minimap UI

  • 半径内のPOIを点で表示する矩形UI
  • PrefabはMinimap Item UIコンポーネント必須
  • Radiusはランタイム変更可能(高速移動中に拡大、スキル解放で恒久拡大、など)

Compass UI

  • 画面上部に横一本の帯を描き、カメラ前方を基準にPOIの方向を表示
  • Character:原点となるキャラ
  • Camera:前方基準になるカメラ
  • PrefabはCompass Item UIコンポーネント必須
  • 2.2.4以降:距離表示(単位付き)、距離/方向に応じたフェード

Indicators UI

  • 画面上にフローティングアイコンでPOI位置を示す
  • Keep in Bounds:ONなら画面外POIを画面端で止めて矢印方向を示す。OFFなら画面外で消える
  • PrefabはIndicator Item UIコンポーネント必須

Visual Scriptingリファレンス

Instructions(10)

カテゴリは Quests > ... です。

命令機能主なパラメータ
Quest ActivateQuestをActiveにJournal/Quest/Wait to Complete
Quest DeactivateQuestと配下TaskをInactiveにJournal/Quest/Wait to Complete
Quest TrackActive Questを追跡開始Journal/Quest
Quest Untrack追跡解除Journal/Quest
Quest Untrack All全追跡解除Journal
Set QuestQuest値を変数にセットSet/From
Task CompleteActive Taskを完了にJournal/Quest/Task/Wait to Complete
Task AbandonActive Taskを放棄にJournal/Quest/Task/Wait to Complete
Task FailActive Taskを失敗にJournal/Quest/Task/Wait to Complete
Task ValueTaskのカウンタ値を加算・減算・セットJournal/Quest/Task/値・モード

Conditions(13)

Quests(11)

条件判定
Are Quests Equal2つのQuestアセットが等しいか
Is Quest Active指定JournalのQuestがActiveか
Is Quest InactiveInactiveか
Is Quest CompletedCompletedか
Is Quest AbandonedAbandonedか
Is Quest FailedFailedか
Is Task ActiveTaskがActiveか
Is Task InactiveInactiveか
Is Task CompletedCompletedか
Is Task AbandonedAbandonedか
Is Task FailedFailedか

Quests > Groups(2)

条件判定
Are All Quests Completed指定リスト内の全QuestがCompletedか
Is Any Quest Completed指定リスト内のいずれか1 QuestがCompletedか

Events(13)

イベント発火タイミング
On Quest ActivateQuestがActive化された
On Quest DeactivateQuestがInactive化された
On Quest CompleteQuestがCompleted
On Quest AbandonQuestがAbandoned
On Quest FailQuestがFailed
On Any Quest TrackいずれかのQuestがトラック開始
On Any Quest UntrackいずれかのQuestがトラック解除
On Task ActivateTaskがActive化
On Task DeactivateTaskがInactive化
On Task CompleteTaskがCompleted
On Task AbandonTaskがAbandoned
On Task FailTaskがFailed
On Task Value ChangeActive Taskのカウンタ値が変化

Tipsと注意点

  • Quest分割の勘所:50 Task超えるQuestは、まず2〜3 Questに分割する。On Complete で次Questを Activateすれば体感的な挙動は同じ
  • Hidden + Counterがアチーブの基本形。HUDには出さず、バックグラウンドで条件達成を拾う
  • Property Counterの「Detect When」設定漏れに注意。検知イベントを間違えるとTaskが更新されない
  • JournalをPlayerに置くのが一般的。マルチパーティRPGなら各キャラに別Journalを持たせて分けて管理することも可能
  • POIはTaskのActiveと連動:Taskが終わるとPOIが自動消去されるため、手動削除は不要
  • トラック数はUI設計次第:HUDがゴチャつくならSingle、開放度重視のオープンワールドならMultiple
  • Taskの状態遷移ルールを把握していれば無効な命令で事故らない:Inactive → Completedは無視される。必要なら先にActivate
  • セーブの粒度:Journal memoryはQuest/Taskの現在状態+カウンタを保存。UI設定(選択中Quest等)は別途の仕組みで保存する必要あり
  • IndicatorsのKeep in Bounds:オープンワールドで遠方POIを常に画面端に出すと混雑する。距離フェードや数制限をUI側で検討
  • Questテキストは動的値化可能:Descriptionに {var} 風表記を組み合わせると、プレイヤー名入りのフレーバーが書ける(UI側でのレンダリング実装次第)

実践的な使い方 ― やりたいこと別の構成ガイド

「こういうクエスト構造を実現したい」場合にどの機能を使うか、パターン別にまとめます。

順番通りに進むメインクエスト

「魔法の剣を見つけて持ち帰る」のような連続構造です。

使うもの設定
QuestアセットrootのCompletion = Sequence
Task 1「魔法の剣を見つける」
Task 2「クエストギバーに届ける」
開始命令Quest Activate(Journalに登録し、最初のroot Taskを自動でActiveに)

Task 1完了 → Task 2開始 → Task 2完了でクエスト達成、という流れになります。

複数目標を任意の順番で達成する調査クエスト

証人に話す・証拠を調べる・現場を確認する、の3つをどの順番でもOKにするパターンです。

使うもの設定
親TaskCompletion = Combination
子Subtask群「証人に話す」「証拠を調べる」「現場を確認する」

すべてのSubtaskが同時にActiveになり、全部完了した時点で親TaskもCompletedになります。

二者択一の分岐クエスト

「敵を殺すか見逃すか」のように、どちらか一方を達成すればクエストが進むパターンです。

使うもの設定
親TaskCompletion = Any
子Subtask A「ターゲットを倒す」
子Subtask B「ターゲットを見逃す」

どちらか1つがCompletedになった瞬間、親Task Completedになり、分岐先が決まります。

アイテム収集クエスト

「薬草を5個集めよ」のように、Inventoryのアイテム所持数と連動して自動的にカウントが進むパターンです。

使うもの設定
TaskのCounterPropertyを選択
Count To5(目標数)
Value FromInventoryの所持数(動的プロパティ)
Detect Whenアイテム追加イベント

Property Counterにより、Inventoryの所持数と目標値がシームレスに連動します。

大規模メインクエストを分割して管理する

メインストーリーが長大なので管理しやすく分割するパターンです。

使うもの設定
Questアセット章ごとに別Questとして作成
連結方法前QuestのOn Completeで次Questの Quest Activate を実行

メインクエストが長大になっても、章ごとに分割すればインスペクタ上の管理が容易になります。

アチーブメントシステムをクエストで実装する

プレイヤーに表示せずバックグラウンドで条件達成を追跡するパターンです。

使うもの設定
QuestのTypeHidden
Quest List UIShow Hidden = false(通常UIには非表示)
別途アチーブUIFilterでHidden Questだけ表示する専用リスト

Hidden + Counterの組合せがアチーブメントの基本形です。

目的地にナビゲーションマーカーを表示する

アクティブなTaskの目標位置にコンパスや画面上のインジケーターを表示するパターンです。

使うもの設定
コンポーネントTask Point of Interest(目標地点のGameObjectに付ける)
連動TaskがActiveのとき自動で有効、Inactive/Completeで自動で無効
表示UICompass(画面上部のバー)またはIndicators(スクリーン上のアイコン)

TaskのActive状態と連動するため、Task完了後は自動で非表示になります。

Dialogueで会話からクエストを受注・報告する

NPCとの会話中にクエストを開始し、完了後に再び話しかけて報酬を受け取るパターンです。

使うもの設定
受注DialogueノードのOn Startに Quest Activate
報告条件DialogueのChoiceノードにCondition Is Quest Completed
報酬条件成立時の子ノードのOn Startで報酬配布(Add ItemChange Currency 等)

クエスト進行をセーブ・ロードに対応させる

ゲームを保存してもクエストの進行状態が失われないようにするパターンです。

使うもの設定
JournalがあるGameObjectRememberコンポーネントを追加
Rememberに追加Journal memory

Rememberを追加してJournal memoryを登録するだけで、QuestとTaskの状態が自動的にセーブ対象になります。

Minimapのレーダー半径をゲーム進行に応じて拡大する

スキル解放やレベルアップに応じてミニマップの表示範囲を広げるパターンです。

使うもの設定
Minimap UIRadiusフィールドをランタイムで変更可能
Stats連携Stat(例:explore-skill)の値をProperty参照でRadiusに紐付け

関連する他モジュール

  • Dialogue:Questの受注/報告はほぼDialogue連携。Quest Activate をノードのInstructionに置く
  • Inventory:Property Counterで所持数を目標値に直結
  • Stats:条件分岐に Compare Attribute / Check Formula
  • Behavior / Perception:敵エージェントをTaskの対象にし、On Die で Task Value
  • Cameras:Quest完了時の演出にCamera Shot切替
  • Save & Load:Journal memoryを利用して進行保存

公式リンク


まとめ

本記事では、Game Creator 2の「Quests」モジュールについて解説しました。

QuestsはQuest → Task階層 → Counter自動完了 → Journal管理 → POIナビゲーション → UI表示という一連のフローが整備されており、Sequence/Combination/Any/Manualの4種のCompletion Modeを使い分けることで、順次進行・並行目標・分岐選択など幅広いクエスト構造を実現できます。

Visual ScriptingではInstruction 10種・Condition 13種・Event 13種が用意されており、Dialogue・Inventory・Stats・Behaviorなど他モジュールとの連携も充実しています。

全記事一覧 ― Game Creator 2 完全ガイド シリーズ総合案内senkohome.com/gamecreator2-series-index/

それでは次の記事も閲覧いただけると幸いです。