目次
はじめに
注意
UE5.0.2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
解説
⓪AIとは
NPCとはプレイヤーに操作されずに動くキャラクターのことです。
このNPCを動かすギミックにAIを使用します。
はじめは単純なプレイヤーを追いかけるNPCを作成して、徐々に周りの状態から行動を判断できるAIを作ってみたいと思います。
アンリアルエンジンにはAIを作成するための機能が備わっています。特に行動を決定するビヘイビアツリーは非常に優秀で、これを理解することが強力なAIを作る何よりもの近道となります。
それではやってみましょう。
この記事から始める人のために1からプロジェクトを作成しますので、前後のシリーズを読んでいない方でもNPCを作成できますので、よろしくお願いいたします。
①プロジェクトの作成
プロジェクト名はNPCSample、
TPSテンプレートを使いブループリントで作成します。
②フォルダの作成
コンテンツブラウザからコンテンツを右クリックして新規フォルダから名前をNPCとしておきます。
以後NPC用のアセットはこちらのフォルダにまとめるようにします。
③AIControllerの作成
コンテンツ右クリックからブループリント、AIControllerを検索して作成します。
名前はBP_NPC_Controllerにします。
AIControllerはその名の通りPlayerControllerのAI版です。
Pawn(キャラクター)を制御するのがプレイヤーか?AIか?の制御系をControllerに記載します。ただし、管理が大変になるので小規模制作ではControllerではなくPawnに直書きしがちです。
④キャラクターの複製とコントローラーの適応
キャラクターは所有される側なので同じBP_ThirdPersonCharacterをAIに制御させたり、プレイヤーが操作することも可能です。
しかし、NPCが不必要なプレイヤー用の関数を持つとパフォーマンスに影響が出るので、今回は別ブループリントとして作成します。
ある程度仕様が固まっているのであればキャラクターのスーパークラスを定義して基本的なロジックはそこに記述。そして、プレイヤー、NPC、ボスキャラを派生クラスで作成してそれぞれに必要なコンポーネントを追加するのも有効な設計です。
BP_ThirdPersonCharacterを複製します。
名前をBP_NPC_Characterにします。
作成したBP_NPC_Characterを開いて
クラスのデフォルトからAIControllerClassに先ほど作成したNPCControllerを割り当てます。
これでこのキャラクターはNPCControllerに制御されるようになりました。
試しにレベル上に配置してみましょう。
実行してみてキーを入力してみてください。
どちらも同じブループリントですが、NPC_CharacterのほうはAIコントローラーに制御されているため、プレイヤーの入力を受け付けません。
⑤ビヘイビアツリーとブラックボードの作成と解説
ついにAIの思考決定の仕組みを作っていきます。
コンテンツ右クリックからビヘイビアツリーとブラックボードを作成しましょう。
ビヘイビアツリーには頭文字のBT_を、
ブラックボードにも頭文字のBB_を付けておきました。
ビヘイビアツリーを開いてみましょう。
詳細にブラックボードを割り当てる場所があります。
BB_NPCが割当たっていない場合は設定しましょう。
ビヘイビアツリーは木のように枝分かれさせて行動決定を行う場所です。
セレクターやシーケンスと呼ばれる条件分岐に従ってタスク(行動)を決定します。
ブラックボードはビヘイビアツリーの中で自由に扱うことができる変数を定義する場所です。脳の一時記憶のような場所で、受け取った情報を設定したりリセットしたりすることで、人間らしい立ち振る舞いのAIを作成することができます。
次回、プレイヤーを追いかけるAIを作ろう!お楽しみに
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。