ストーリーシステム
ストーリーシステムは Alfheim のコアモジュールで、ゲームのストーリーを執筆・整理・テストするために使用します。ビジュアルノードグラフエディター、内蔵の会話編集ツール、即時プレビュー機能を提供します。
機能概要
- Episode(章)単位でストーリーを整理
- 8種類のノードタイプをサポートするノードグラフのビジュアル編集
- 話者選択とスクリプト編集をサポートする内蔵会話エディター
- 条件分岐とランダム分岐
- 章レベルの変数システム
- フォルダによるグループ管理
- 即時テスト実行
3つの作業タブ
ストーリーパネル上部には3つのタブがあります:
ストーリー計画
ノードグラフキャンバスと関連パネルを含むメインのストーリー編集環境です。
世界樹(Yggdrasil)
タイムラインとカレンダーシステム。詳細は Yggdrasil タイムライン を参照してください。
テスト実行
プレイヤー視点で現在のストーリーを体験します。詳細は本ページの テスト実行 セクションを参照してください。
Episode 管理
Episode(章)はストーリーの基本組織単位です。各 Episode は独自のノードグラフと変数を持つ独立したストーリーファイルです。
Episode の作成
- ストーリー計画ページで、上部の ストーリーセレクター をクリックします。
- 新規ストーリー をクリックします。
- Episode 名を入力して作成を確認します。
切り替えと削除
- 上部のドロップダウンメニューで Episode 間を切り替えます。
- ストーリーセレクターで不要な Episode を削除できます。
フォルダグループ
ノードはフォルダでグループ化して整理できます:
- 左側の フォルダ パネルで新規フォルダをクリックします。
- フォルダに名前を付けます。
- ノードをフォルダにドラッグして分類します。
フォルダに割り当てられていないノードは「未分類」グループに表示されます。
ノードタイプ
ストーリーは異なるタイプのノードを接続して構成されます。ツールバーの ノードを追加 メニューから新しいノードを作成します。
開始ノード
各 Episode のエントリーポイントです。各 Episode には開始ノードが1つだけあり、ストーリーはここから実行を開始します。
会話ノード
キャラクターの会話とナレーションを担う最もよく使われるノードタイプです。会話ノードには複数行の台詞を含めることができ、各行には異なる話者を指定できます。
条件ノード
変数の値に基づいてストーリーの流れを決定します。条件を設定すると、条件ノードは異なる分岐パスを出力します。
ランダムノード
複数の出力分岐からランダムに1つのパスを選択して実行します。ランダム性が必要なシーンに適しています。
変数設定ノード
変数の値を変更します。整数、浮動小数、文字列、ブール値の変数に対して代入や演算操作を実行できます。
イベントノード
シーン切り替え、効果音の再生など、ゲーム内の特殊イベントをトリガーします。
コメントノード
ノードグラフにメモや説明を追加するために使用します。実際のゲーム実行には影響せず、クリエイターの参考用です。
終了ノード
ストーリーの終了点をマークします。1つの Episode に複数の終了ノードがあり、異なるエンディングを表すことができます。
ノードグラフ編集
ノードの接続
ノードの出力ポートを別のノードの入力ポートにドラッグして接続を確立します。接続はストーリーの流れの方向を表します。
編集モードと閲覧モード
ツールバーには2つのモード切り替えがあります:
- 編集モード:ノードの移動、接続の作成、内容の変更が可能です。
- 閲覧モード:キャンバスをロックし、閲覧のみ可能。レビュー時に適しています。
ノードインスペクター
任意のノードを選択すると、右側の インスペクター パネルにそのノードの詳細が表示されます:
- ノード ID(コピー可能)
- ノード名
- ノードタイプ
- 進入条件(オプション)
- 変数操作(オプション)
- 会話プレビュー(会話ノードのみ)
- 備考
会話編集
会話ノードをダブルクリックするか、インスペクターで 編集 をクリックすると会話エディターが開きます。
ライターモード
ストーリークリエイター向けの WYSIWYG 編集環境:
- 台詞を1行ずつ執筆
- 各行に話者(キャラクターまたはナレーター)を選択
- 分岐オプションを追加
プログラムモード
細かい制御が必要な上級ユーザー向け:
- スクリプトエディターで会話データを直接編集
- シンタックスハイライトとオートコンプリートをサポート
章変数
各 Episode は、その章内の条件分岐と状態追跡のために独自のローカル変数を定義できます。
- インスペクターの 章変数 エリアで追加をクリックします。
- 変数名を入力し、タイプ(整数、浮動小数、文字列、ブール値)を選択します。
- デフォルト値を設定します。
章変数はグローバル変数とは独立しています。章をまたいで共有する変数が必要な場合は、変数システム のグローバル変数を使用してください。
章キャラクター
ストーリー計画ページで、現在の Episode で使用するキャラクターを管理できます:
- 章キャラクター パネルを開きます。
- プロジェクト内の既存キャラクターを検索して追加します。
- 追加したキャラクターは会話編集で話者として選択できます。
テスト実行
テスト実行 タブに切り替えると、プレイヤーと同じようにストーリーを体験できます。
インターフェース構成
- ダイアログボックス:現在の台詞を表示。クリックで会話を進めます。
- キャラクターステージ:話しているキャラクターの立ち絵を表示します。
- オプションパネル:分岐オプションが出現したときにプレイヤーが選択します。
- ノード情報パネル:現在のノードのデバッグ情報を表示します。
- 再生コントロール:早送り、一時停止、リセットなど。
- デバッグコンソール:変数状態と実行ログを確認します。
使用方法
- ストーリー計画でテストする Episode を選択します。
- テスト実行タブに切り替えます。
- ストーリーは開始ノードから自動的に実行され、ダイアログボックスをクリックして進行します。
- 分岐時はオプションパネルで選択します。
- デバッグコンソールで変数の変化を監視します。
ヒント
- コメントノードを活用してノードグラフに重要な情報をマークし、チーム協力を容易にします。
- 定期的にテスト実行でストーリーの流れを確認し、すべての分岐パスが正常に動作することを確認してください。
- フォルダグループは大規模プロジェクトでのノード管理効率を大幅に向上させます。
- ノード ID はインスペクターからコピーでき、スクリプトでの参照に便利です。