---
title: State Treeを使ってクエストの進行管理をしてみた
tags:  #unreal engine #ue #ue5 #uetokyo  
author: [いーちゃん](https://www.docswell.com/user/nbz16)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YE6YPGV6JV.jpg?width=480
description: 2024/6/14に開催された、UnrealEngine勉強会 UE Tokyo .dev #3 の登壇スライドです。 State TreeはBehavior Treeよりも汎用的な状態管理機能ということで、ゲームフローの管理に使えると思い実験的にやってみました。
published: June 17, 24
canonical: https://www.docswell.com/s/nbz16/ZNR44G-2024-06-17-204321
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YE6YPGV6JV.jpg)

State Treeを使って
クエストの進行管理をしてみた
UE Tokyo .dev #3
いーちゃん


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GE5GKVD5E4.jpg)

自己紹介
いーちゃん
：@nbz_ff14
ノンゲームUEエンジニア
FFとkey作品が好きです


# Page. 3

![Page Image](https://bcdn.docswell.com/page/972YW38G7R.jpg)

State Treeってなんだ？


# Page. 4

![Page Image](https://bcdn.docswell.com/page/DJYGL16GJM.jpg)

State Treeとは
状態管理を行う、
階層構造を持つステートマシン


# Page. 5

![Page Image](https://bcdn.docswell.com/page/V7NG42Z8E8.jpg)

State Treeとは
公式：City Sampleの群衆AI
razupiさんの「ざっくりとMass Framework」


# Page. 6

![Page Image](https://bcdn.docswell.com/page/YJ9WQ1ZXJ3.jpg)

State Treeとは
公式チュートリアル
撃って壊せるターゲット


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GJ8NG419ED.jpg)

UEのAI制御といえば
Behavior Treeがあるじゃん


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LJLPG6QMER.jpg)

State Treeは
キャラクターAI以外にも使える！


# Page. 9

![Page Image](https://bcdn.docswell.com/page/47M4Q516EW.jpg)

RPGでよくあるお使いクエスト
・進行状況を「状態」として定義して管理
受注
お使い1
・・・
お使い2
お使いN
達成


# Page. 10

![Page Image](https://bcdn.docswell.com/page/P7RW83LNE9.jpg)

画面例
動画


# Page. 11

![Page Image](https://bcdn.docswell.com/page/PJXP84W8EX.jpg)

使用した機能と役割
状態管理
State Tree
状態遷移条件
Gameplay Tag


# Page. 12

![Page Image](https://bcdn.docswell.com/page/3JKDKZVL7D.jpg)

Gameplay Tagの構成
Quest
Acceptable
Accepted
Progress
Task 1
Complete
Task 2


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LE3RZDM675.jpg)



# Page. 14

![Page Image](https://bcdn.docswell.com/page/8EDYRP6MEG.jpg)

初期値設定
• State Treeで定義した変数は、親Actorから初期値を設定できる
• 今回は、クエスト達成に必要なお使いタスクを設定


# Page. 15

![Page Image](https://bcdn.docswell.com/page/V7P6WNYQJ8.jpg)



# Page. 16

![Page Image](https://bcdn.docswell.com/page/2JV38KGPEQ.jpg)

状態遷移
•
•
トリガー：On Event
イベントタグ：Quest.Accepted.aaa
→「Send State Tree Event」ノードを使用


# Page. 17

![Page Image](https://bcdn.docswell.com/page/5EG35Q8Q7L.jpg)



# Page. 18

![Page Image](https://bcdn.docswell.com/page/4JQ5ZK9W7P.jpg)

状態遷移
•
トリガー：On State Completed
→Taskの中で「Finish Task」ノードを使用


# Page. 19

![Page Image](https://bcdn.docswell.com/page/K7493PX1E1.jpg)

STT_Acceptの中身


# Page. 20

![Page Image](https://bcdn.docswell.com/page/LJ1K19N57G.jpg)



# Page. 21

![Page Image](https://bcdn.docswell.com/page/GJWD8Q4W72.jpg)

状態遷移
•
•
トリガー：On Tick
遷移条件：Has Tags
→毎フレーム、遷移条件を満たしているかチェック


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4EZG8W22J3.jpg)

State Tree Tips その1
Debugger最高！
毎フレームの状態遷移や条件判定を追える！


# Page. 23

![Page Image](https://bcdn.docswell.com/page/Y76YPX66EV.jpg)

State Tree Tips その2
変数のCategoryめちゃ使う
・Context：State Treeコンポーネントを持つActor
・Input
・Output
普段からもCategory分けやろう


# Page. 24

![Page Image](https://bcdn.docswell.com/page/G75GKX6574.jpg)

State Tree Tips その3
親Actorで変更したParametersが、エディター再起動しない
と反映されない


# Page. 25

![Page Image](https://bcdn.docswell.com/page/9J2YWXMGJR.jpg)

State Tree Tips その4
Has TagsでMatch Typeを「All」にしても正常に動作しない


# Page. 26

![Page Image](https://bcdn.docswell.com/page/DEYGL8XGEM.jpg)

まとめ
やったこと
⇒State Treeでクエスト進行管理をしてみた
感想
⇒量産や非エンジニアが触ることを考えると実用性は…
設計こうしてみたら、俺ならこう作るね、
などなどご意見ください！
他にも○○に使えそうとか活用案もお待ちしてます


