恋愛シミュレーションを作ろう!
Part 2: シナリオ用のResourceの作成
Godot Engine バージョン4.4
このパートでは、恋愛シミュレーションのシナリオデータを柔軟に管理するために、Godotの
Resource
を使ってシナリオ情報と選択肢(分岐)を定義します。これにより、エディタ上で視覚的にデータを入力・管理でき、コードの可読性と拡張性が大きく向上します。
Step 1:選択肢用リソース ScenarioOption
の作成
まずは、シナリオの分岐を定義するためのシンプルな
Resource
クラスを作成します。📄 scenario_option.gd
class_name ScenarioOptionextends Resource
@export var option_text: String # 表示する選択肢のテキスト@export var option_value: String # 選択された場合に読み込むシナリオの名前
option_text:画面に表示される選択肢の文言です。
option_value:この選択肢が選ばれたときに分岐先となる
Scenario
の名前です。
Step 2:シナリオ本体のリソース Scenario
の作成
次に、シナリオデータ全体を管理するリソースを定義します。
📄 scenario.gd
class_name Scenarioextends 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.gd
と scenario_option.gd
を res://scripts/
などに保存。 FileSystem
から右クリック → New Resource を選択。 Scenario
または ScenarioOption
を選択して .tres
ファイルを作成。 各項目をInspectorから編集できます。
シナリオリソースの使い方と設計
✅ 基本概要
このシナリオリソースは、順番に再生したり、選択肢によって分岐したりするために使います。
prefix_scenario
と scenario_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)
- シナリオ名のルールを守ることで、柔軟なストーリー展開と分岐管理が可能に。
次回のパートでは、リソースの読み込み処理と選択肢表示の実装について解説します。
1
100%