19.8K Views
June 17, 24
スライド概要
2024/6/14に開催された、UnrealEngine勉強会 UE Tokyo .dev #3 の登壇スライドです。
State TreeはBehavior Treeよりも汎用的な状態管理機能ということで、ゲームフローの管理に使えると思い実験的にやってみました。
State Treeを使って クエストの進行管理をしてみた UE Tokyo .dev #3 いーちゃん
自己紹介 いーちゃん :@nbz_ff14 ノンゲームUEエンジニア FFとkey作品が好きです
State Treeってなんだ?
State Treeとは 状態管理を行う、 階層構造を持つステートマシン
State Treeとは 公式:City Sampleの群衆AI razupiさんの「ざっくりとMass Framework」
State Treeとは 公式チュートリアル 撃って壊せるターゲット
UEのAI制御といえば Behavior Treeがあるじゃん
State Treeは キャラクターAI以外にも使える!
RPGでよくあるお使いクエスト ・進行状況を「状態」として定義して管理 受注 お使い1 ・・・ お使い2 お使いN 達成
画面例 動画
使用した機能と役割 状態管理 State Tree 状態遷移条件 Gameplay Tag
Gameplay Tagの構成 Quest Acceptable Accepted Progress Task 1 Complete Task 2
初期値設定 • State Treeで定義した変数は、親Actorから初期値を設定できる • 今回は、クエスト達成に必要なお使いタスクを設定
状態遷移 • • トリガー:On Event イベントタグ:Quest.Accepted.aaa →「Send State Tree Event」ノードを使用
状態遷移 • トリガー:On State Completed →Taskの中で「Finish Task」ノードを使用
STT_Acceptの中身
状態遷移 • • トリガー:On Tick 遷移条件:Has Tags →毎フレーム、遷移条件を満たしているかチェック
State Tree Tips その1 Debugger最高! 毎フレームの状態遷移や条件判定を追える!
State Tree Tips その2 変数のCategoryめちゃ使う ・Context:State Treeコンポーネントを持つActor ・Input ・Output 普段からもCategory分けやろう
State Tree Tips その3 親Actorで変更したParametersが、エディター再起動しない と反映されない
State Tree Tips その4 Has TagsでMatch Typeを「All」にしても正常に動作しない
まとめ やったこと ⇒State Treeでクエスト進行管理をしてみた 感想 ⇒量産や非エンジニアが触ることを考えると実用性は… 設計こうしてみたら、俺ならこう作るね、 などなどご意見ください! 他にも○○に使えそうとか活用案もお待ちしてます