恋愛シミュレーションを作ろう!

Part 2: シナリオ用のResourceの作成


Godot Engine バージョン4.4

このパートでは、恋愛シミュレーションのシナリオデータを柔軟に管理するために、GodotのResourceを使ってシナリオ情報と選択肢(分岐)を定義します。これにより、エディタ上で視覚的にデータを入力・管理でき、コードの可読性と拡張性が大きく向上します。



Step 1:選択肢用リソース ScenarioOption の作成

まずは、シナリオの分岐を定義するためのシンプルなResourceクラスを作成します。

📄 scenario_option.gd

class_name ScenarioOption
extends Resource

@export var option_text: String # 表示する選択肢のテキスト
@export var option_value: String # 選択された場合に読み込むシナリオの名前
option_text:画面に表示される選択肢の文言です。
option_value:この選択肢が選ばれたときに分岐先となるScenarioの名前です。



Step 2:シナリオ本体のリソース Scenario の作成

次に、シナリオデータ全体を管理するリソースを定義します。

📄 scenario.gd

class_name Scenario
extends Resource

@export var order: int # シナリオ内での順番
@export var prefix_scenario: String # シナリオグループ(A, AA, ABなど)
@export var scenario_name: String # 一意のシナリオ名(1, 2, 3など)
@export var text_name: String # 発言者の名前
@export var text_speak: String # セリフの内容
@export var text_audio: String # ボイス再生用の音声ファイルのパス
@export var text_bgm: String # BGMのパス
@export var background: CompressedTexture2D # 背景画像
@export var exp_pos_left: CompressedTexture2D # 左側の立ち絵
@export var exp_pos_center: CompressedTexture2D# 中央の立ち絵
@export var exp_pos_right: CompressedTexture2D # 右側の立ち絵
@export var option_list: Array[ScenarioOption] = [] # 選択肢のリスト
@export var ending_scenario: String # このシナリオでエンディングに遷移する場合の名前



🛠️ Step 3:リソースの作成方法

Godotエディタで scenario.gdscenario_option.gdres://scripts/ などに保存。
FileSystem から右クリック → New Resource を選択。
Scenario または ScenarioOption を選択して .tres ファイルを作成。
各項目をInspectorから編集できます。



シナリオリソースの使い方と設計

✅ 基本概要

このシナリオリソースは、順番に再生したり、選択肢によって分岐したりするために使います。
prefix_scenarioscenario_name によって、チャプター単位のグループ化や分岐先の管理が可能です。



シナリオ構造のルール

フィールド
説明
prefix_scenario
シナリオグループ名(A、B、C、AAなど)。チャプターのように使います。
scenario_name
各グループ内でのシナリオの順番や識別名(1、2、3 など)。



📘 進行と分岐の構成図

以下のように、初期シナリオ → 選択肢で分岐 → 各ルートのシナリオ → さらに分岐 or エンディング といった流れで構築されます。
textコピーする編集する(prefix_scenarioなし)
┌───────┐
│ 1 │
└──┬────┘
┌───────┐
│ 2 │
└──┬────┘
┌───────┐
│ 3 │
└──┬────┘
┌───────┐
│ 4 │ ←ここで選択肢分岐
└─┬─┬─┬─┘
│ │ │
↓ ↓ ↓
(prefix_scenario: A) (prefix_scenario: B) (prefix_scenario: C)
┌────┐ ┌────┐ ┌────┐
│ A-1│ │ B-1│ │ C-1│
└─┬──┘ └─┬──┘ └─┬──┘
↓ ↓ ↓
│ A-2│ │ B-2│ │ C-2│
↓ ↓ ↓
│ A-3│ │ B-3│ │ C-3│
↓ ↓ ↓
分岐 END B END C
┌────┬────┬────┐
│AA-1│AB-1│AC-1│(prefix_scenario: AA, AB, AC)
↓ ↓ ↓
│AA-2│AB-2│AC-2│
↓ ↓ ↓
│AA-3│AB-3│AC-3│
↓ ↓ ↓
END AA END AB END AC



🔧 実装ポイント

  • prefix_scenario"A", "B" などに設定してルートを分岐。
  • scenario_name"1", "2", "3" に設定して順番を定義。
  • シナリオマネージャー はこの順番と分岐情報をもとに、正しく読み込み・再生・分岐制御を行います。



💡まとめ

  • 最初のシナリオ群は prefix_scenario なしで作成。
  • 選択肢後は prefix_scenario を設定して分岐先ルートを管理。
  • 分岐の中でさらに細かい分岐が可能(例:A → AA、AB、AC)
  • シナリオ名のルールを守ることで、柔軟なストーリー展開と分岐管理が可能に。


次回のパートでは、リソースの読み込み処理と選択肢表示の実装について解説します。

最終更新日: 2025/06/04 07:27

コメント