忍者ブログ

非現実的な話

ゲーム、UnrealEngine4などの話題を取り扱います。取り扱う内容は個人の範囲で調べたものなのでご利用は自己責任でお願いします。

【UE4】AIについて(その2)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【UE4】AIについて(その2)


前回は準備するものについてでしたが、
今回は公式ドキュメントのクイックスタートに従って実際にAIを作成してみます。
で、作成してみました。

ドキュメントの内容を見れば確かに作れるのですが、
詳細な説明が省略されているため、それぞれ詳しくみてみます。


1.AIの挙動
まずは、クイックスタートで作成したAIの挙動について簡単に纏めます。

【AIの挙動】
①:AIキャラクターにプレイヤーが近づくと、AIキャラクターがプレイヤーに接近する。
②:AIキャラクターが一定距離以上プレイヤーに近づいた場合、移動を停止する。
③:AIキャラクターが接近中にプレイヤーとの距離が一定以上広がった場合、
  AIキャラクターは暫くの間その場で待機する。
④:③で暫く待機したのち、最初にいた地点まで戻る。

以上です。
次にこれらを構成しているアセットの中身についてみていきます。


2.BlackBoard
BlackBoard(以下BB)にはAIで使い回すデータを入れておきます。
クイックスタートでは以下のKeyを設定しておきます。
変数などのようにKeyも「EntryName」に名前を登録しますが、
変数とは違ってKeyへのアクセスをName型指定で行うこともあるので
誤入力しないように注意が必要です。

【FollowerBlackBoard】



3.AIController
AIキャラクターに設定するAIControllerの中身です。
AIControllerで、AIを走らせる前に必要な情報の設定を行っています。
ここでは、BBの指定とAIキャラクターが戻って来る位置を設定しています。
必要な情報の設定が完了したら「RunBehaviorTree」でAIの処理を開始します。

【Follower_AI_CON】



4.ビヘイビアツリー
ビヘイビアツリー(以下、BT)に処理をフローで示します。

【FollowerBT】


4.1.サービス
BTのAgroCheck(緑箇所)がサービスで、BTが走り続ける度にコールされます。
作成したAgroCheckを見てみましょう。

長いので3つに分けてあります。
処理は、AIキャラクターの付近にプレイヤーがいるか検索になります。
プレイヤーを発見した場合は、プレイヤーのオブジェクトと現在位置をBBに登録します。

【AgroCheck】





4.2.デコレータ
デコレータは次フローに進むかどうかの判定を行います。
作成したCloseEnoughを見てみましょう。

 【CloseEnough】


ここではプレイヤーとAIキャラクターの距離をチェックしています。
距離が100UUnit未満かどうかの結果を返す処理となります。


4.3.タスク
1.の各項について、AIキャラクターの動作を制御するのがBTのタスクになります。
タスクは基本ノードが幾つか用意されており、以下のドキュメントにUtilノードがあります。
Behavior Tree Node Reference: Tasks(公式ドキュメント)

作成したタスクのうち①が独自に作成したタスクで、②~④は用意されているノードです。



クイックスタートで作成した独自のタスク①(RapidMoveTo)についてみてみましょう。
ContentBrowserからタスクアセットをダブルクリックして開いても良いですし、
BTのタスクを選択してダブルクリックでも開くことができます。

RapidMoveToではプレイヤーに近づく処理が書かれています。
プレイヤーの半径50UUnitまで接近したらタスク終了で接近処理を止めます。



補足、忘れていました。
BlackBoardKey型変数の"TargetToFollow"が公開設定となっていますが、
BlackBoardKeyの変数を公開することで、BTから値を設定することができます。
BTに公開されたBlackBoardKey型変数は、BlackBoardのKeyを設定することができます。


他のタスクも同様にパラメータを設定することができます。例えば、Waitタスクでは指定した時間だけ何もしない(待機)挙動となりますが、待ち時間”2.5”を設定しています。




以上がクイックスタートで作成した処理の内容となります。
AIの挙動に関しては単純な動作ですが、フレームワークの構築から実装までに
やることが多いので、慣れるまでが大変かと思います。
寧ろ単純な動作で済むようであれば、AIとBTで実装する必要もないと思います。
ただし、シーケンシャルに動いていることがBTを使うことで分かりやすくなるため
複雑なAIを実現する場合などは是非こちらのやり方で実装すると良いと思います。
その3につづく。

コメント

プロフィール

UnrealEngine4について調べる。
ゲームはそんなに得意ではない。

ブログ内検索

カレンダー

11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

リンク

  • [PR]
    PR