UE4の勉強記録

UE4の勉強の記録です。個人用です。

10章3節 キャラクターにビヘイバーツリー(Behavior Tree)を結合する

<前文>

f:id:kazuhironagai77:20180902113251p:plain

で勉強しています。今回の節はHow to do it…の前に沢山の説明がされています。Getting Readyと言う部分です。この部分は本来ならば訳さずに進む箇所ですが、この章の内容があまりに詐欺的なので、如何にUnrealC++と関係ないのかを示すための証拠として簡略化した訳を載せる事にしました。

<本文>

<目的>

今回は、「10章3節 キャラクターにビヘイバーツリー(Behavior Tree)を結合する」を勉強します。

<理論>

まず、前書きでビヘイバーツリー(BehaviorTree)について説明しています。簡潔に言えば

  • キャラクターの振る舞いをAIを使ってコントロール出来る。
  • 使うのは簡単だが、使うために覚える事が結構ある。

と言っています。教科書以外の説明も見てみたいと思ってグーグルで検索してみた所、こんな質問がありました。どうもビヘイバーツリー(BehaviorTree)をC++からコントロールするのはスピードの観点からかなり大切みたいですね。しかし今もってそれをどうすれば出来るのかを説明したチュートリアルはないみたいです。

ビヘイバーツリー(BehaviorTree)そのものの説明については、Unrealのドキュメントのページに、これがありました。

f:id:kazuhironagai77:20180909115539p:plain

ビヘイバーツリー(Behavior Trees)は、Unreal Engine 4においてAIを作成するのに強力なツールです。

AIの作成用のツールと説明しています。これって、湊和久氏の著作である「Unreal Engine4で極めるゲーム開発」の23章でまるまる解説されている奴ですよね。Unreal Engine4で極めるゲーム開発」は対象の読者はUnrealの初心者でレベルデザイナーを目指す人用もしくはUnrealの総括的な知識がほしい初心者に向けて書かれた本です。そこでビヘイバーツリー(BehaviorTree)の紹介がされていると言う事は、この分野は基礎にあたると言う事でしょう。その基礎をUnrealC++を勉強しているプログラマーに今更説明する必要があるのでしょうか?この後にビヘイバーツリー(BehaviorTree)のC++の作成方法が説明されているならば復習的な意味で納得出来るのですがそうでもなさそうです。やっぱりこの教科書(Unreal Engine 4  scripting with C++ Cookbook)の10章は詐欺です。

全然関係ない話ですが私はUnreal Engine 4が全く分からない時に湊和久氏の著作である「Unreal Engine4で極めるゲーム開発」を読みまくって勉強しました。大変優れたUE4の教科書だと思います。特に付属のビデオ講座が非常に役立ったのを覚えています。

以下の部分は教科書のGetting Readyに当たります。全部訳してもよかったのですがブログ的に少しでもオリジナルな部分がほしいので簡単なまとめにします。

  1. Characterクラスの派生物のブループリントが必要。
  2. ビヘイバーツリーをコントロールするカスタム化したAIコントローラーのオブジェクトが必要
  3. そのビヘイバーツリーがMeleeの攻撃用のキャラクターをコントロールする。
  4. ビヘイバーツリーは黒板(blackboard)と呼ばれるデータストラクチャーを持っている。
  5. 黒板(blackboard)はビヘイバーツリーのためにデータを保存します。
  6. ビヘイバーツリーは以下に示す6種類のノードをホストします。

f:id:kazuhironagai77:20180909115835p:plain

f:id:kazuhironagai77:20180909115848p:plain

f:id:kazuhironagai77:20180909115858p:plain

f:id:kazuhironagai77:20180909115907p:plain

f:id:kazuhironagai77:20180909115918p:plain

f:id:kazuhironagai77:20180909115933p:plain

f:id:kazuhironagai77:20180909115943p:plain

ふーんという感想です。あまりUE4のAIについて知らない私は、この教科書がC++の教科書でなければ、単純になるほどと思って読んでいったと思います。ちなみにこの話はどの程度UE4の操作において基礎に当たる内容なのか疑問に思ったので、「Unreal Engine4で極めるゲーム開発」の23章を見直した所、タスク、シーケンス、セレクター、デコレーター(デコレイター?)についての簡単な解説が載っていたのでUE4のAIにおいては非常に基礎的な内容なのでしょう。

<方法>

Step.0

前回作成したプロジェクトをそのまま使用します。

Step.1

f:id:kazuhironagai77:20180909120135p:plain

しました。

f:id:kazuhironagai77:20180909120156p:plain

Meleeとは何でしょうか?ここに説明がありました。

f:id:kazuhironagai77:20180909120216p:plain

もしあるキャラクターがmeleeのダメージのディラーから一定の距離にいればMeleeは単純にそのキャラクターにダメージを与えます。

だそうです。

Step.2

f:id:kazuhironagai77:20180909120404p:plain

f:id:kazuhironagai77:20180909120447p:plain

しました。

f:id:kazuhironagai77:20180909120505p:plain

Step.3

f:id:kazuhironagai77:20180909120533p:plain

しました。

f:id:kazuhironagai77:20180909120549p:plain

Step.4

f:id:kazuhironagai77:20180909120614p:plain

しました。

f:id:kazuhironagai77:20180909120635p:plain

Step.5

f:id:kazuhironagai77:20180909120702p:plain

BehaviorTree_FFA_MelleAttackerとはどれ何でしょうか?初めて出てくる名前ですが?まあ、本当は3.で作成したBehaviorTreeの事を指しているのは分かってますが。この10章は初心者向けの教材としても使えねーなと思いました。

3.で作成したBehaviorTreeのオブジェクトの名前をBehaviorTree_FFA_MelleAttackerに、Blackboardのオブジェクトの名前をBehaviorTreeBlackboardMeleeAttackerにそれぞれ変更しました。

<結果>

今回はここで終わりだそうです。結果の何も出て来ませんよね。これだけでは。

<考察>

以下に、How it works…を記します。

f:id:kazuhironagai77:20180909120831p:plain

これはこれでUnrealの使い方を教わる初心者には大切な内容かもしれませんが、やっぱりUnrealC++とは関係ありませんね。

<まとめ>

特にまとめる内容もありません。サッサと終わらせましょう!