『Turn-Based jRPG Template』の使い方 #6 イベントフラグ管理

Fabで販売されているコマンドRPGを制作するためのプロジェクト『Turn-Based jRPG Template』の第6回。

#6 イベントフラグ管理

RPGに欠かせないイベントフラグの管理。
レベル遷移後に再出現させたくないNPCをイベントフラグで管理します。
ビットマスクを使用しています。

環境

列挙型: E_MainEventを作成

ブループリント > 列挙型
名前: E_MainEvent
・新規作成。
エニュメレーター
  • MageJoins
  • PriestJoins
  • ArcherJoins

詳細設定のビットマスクフラグにチェックを入れてください。

セーブゲームの編集

『Turn-Based jRPG Template』のセーブゲームはBP_JRPGSaveGameです。
(場所: コンテンツ > TurnBasedJRPGTemplate > Blueprints > Controllers > BP_JRPGSaveGame)

変数追加

BP_JRPGSaveGameに変数を追加します。

変数
MainEvent – Integer
└詳細のビットマスクにチェックを入れて、ビットマスク列挙型をE_MainEventにする。

イベントグラフの編集
ノードの編集
カスタムイベント SaveJRPGPlayerController
しかありません。
セーブ項目にMainEventを加えるわけです。

カスタムイベント SaveJRPGPlayerControllerにインプットを追加。名前はMainEventで型はInteger。
関数の編集
LoadJRPGCharacterの編集
こちらはロード項目にMainEventを加えます。

リターンノードにアウトプットを追加。名前はMainEventで型はInteger。

プレイヤーコントローラーに変数追加

BP_JRPGPlayerControllerを開く。
(場所: コンテンツ > TurnBasedJRPGTemplate > Blueprints > Controllers > BP_JRPGPlayerController)

変数
MainEvent – Integer
└詳細のビットマスクにチェックを入れて、ビットマスク列挙型をE_MainEventにする。

ゲームインスタンスの編集

BP_JRPGGameInstanceを開く。
(場所: コンテンツ > TurnBasedJRPGTemplate > Blueprints > Controllers > BP_JRPGGameInstance)

GameInstanceはレベル遷移してもデータがリセットされません。
PlayerControllerはレベル遷移でデータがリセットされます。
ですから、レベル遷移前などにPlayerControllerからGameInstanceにセーブし、レベル遷移後にロードするわけです。

そのためのセーブとロードの項目にMainEventを追加します。

ノードの編集
カスタムイベント SavejRPGPlayerControllerを編集します。
ノードの編集
カスタムイベント LoadjRPGPlayerControllerを同じように編集します。

BP_TalkNPC_Player2でテスト

第4回で作成した仲間にできるNPC、BP_TalkNPC_Player2を編集します。

MainEvent – Integer
└詳細のビットマスクにチェックを入れて、ビットマスク列挙型をE_MainEventにする。そして「インスタンス編集可能」にチェックを入れてください。

カスタムイベント Select Yesの編集

・「はい」を選択後、BP_JRPGPlayerControllerのMain EventのMageJoinsをTrueにしています。Bitwise OR→セットのところがフラグをTrueにする処理です。
・MageJoinsの指定は、ブループリントをレベルに配置してから、デフォルト > Main EventのMageJoinsにチェックを入れます。

On Loadedにイベントをバインドの配置と編集
イベント BeginPlayの末尾にOn Loadedにイベントをバインドを配置します。On Interactedの後になるかと思います。

On Loadedにイベントをバインドのイベントから線を伸ばしてカスタムイベント OnLoaded Handlerを配置。これはレベル遷移後に再び読み込まれた時にどうするかの処理です。ここでイベントフラグを取得して、ブランチで分岐させます。MageJoinsがTrueなら、Destroy Actor。つまり、ロードされた瞬間に消えます。
・Bitwise AND→ブランチのところがフラグ確認です。
BP_TalkNPC_Player2をレベルに配置し、デフォルトのMain EventにMageJoinsを指定。
テストプレイしてBP_TalkNPC_Player2に話しかけてパーティーメンバーに加えた後、レベル遷移して戻って来ても消えています。
1つのビットマスク変数で32個のイベントフラグを管理できます。
33個目からは、新たにビットマスク変数と列挙型を作成する必要があります。

コメント

  1. […] ここは第6回でやった内容とほぼ同じです。 『Turn-Based jRPG Template』の使い方 #6 イベントフラグ管理 […]

タイトルとURLをコピーしました